From 1307614ad02e1b41dd99a12fee15001df37acc75 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Sun, 30 Nov 2025 18:27:17 -0400 Subject: [PATCH] [gl, vk] Corroborating new helpers order --- .../renderer_vulkan/vk_compute_pipeline.cpp | 65 ++++++++++--------- .../renderer_vulkan/vk_graphics_pipeline.cpp | 63 +++++++++--------- 2 files changed, 65 insertions(+), 63 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp index f3e01959a5..5717b4a65d 100644 --- a/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_compute_pipeline.cpp @@ -18,6 +18,7 @@ #include "video_core/renderer_vulkan/vk_scheduler.h" #include "video_core/renderer_vulkan/vk_update_descriptor.h" #include "video_core/shader_notify.h" +#include "video_core/surface.h" #include "video_core/vulkan_common/vulkan_device.h" #include "video_core/vulkan_common/vulkan_wrapper.h" #include @@ -27,6 +28,38 @@ namespace Vulkan { using Shader::ImageBufferDescriptor; using Shader::Backend::SPIRV::RESCALING_LAYOUT_WORDS_OFFSET; using Tegra::Texture::TexturePair; +using VideoCore::Surface::PixelFormat; +using VideoCore::Surface::PixelFormatNumeric; + +std::optional NumericFromComponentType( + Shader::SamplerComponentType component_type) { + switch (component_type) { + case Shader::SamplerComponentType::Float: + return PixelFormatNumeric::Float; + case Shader::SamplerComponentType::Sint: + return PixelFormatNumeric::Sint; + case Shader::SamplerComponentType::Uint: + return PixelFormatNumeric::Uint; + default: + return std::nullopt; + } +} + +PixelFormat ResolveTexelBufferFormat(PixelFormat format, + Shader::SamplerComponentType component_type) { + const auto desired_numeric = NumericFromComponentType(component_type); + if (!desired_numeric) { + return format; + } + const auto current_numeric = VideoCore::Surface::GetPixelFormatNumericType(format); + if (*desired_numeric == current_numeric) { + return format; + } + if (const auto variant = VideoCore::Surface::FindPixelFormatVariant(format, *desired_numeric)) { + return *variant; + } + return format; +} ComputePipeline::ComputePipeline(const Device& device_, vk::PipelineCache& pipeline_cache_, DescriptorPool& descriptor_pool, @@ -41,38 +74,6 @@ ComputePipeline::ComputePipeline(const Device& device_, vk::PipelineCache& pipel if (shader_notify) { shader_notify->MarkShaderBuilding(); } - std::optional - NumericFromComponentType(Shader::SamplerComponentType component_type) { - using VideoCore::Surface::PixelFormatNumeric; - switch (component_type) { - case Shader::SamplerComponentType::Float: - return PixelFormatNumeric::Float; - case Shader::SamplerComponentType::Sint: - return PixelFormatNumeric::Sint; - case Shader::SamplerComponentType::Uint: - return PixelFormatNumeric::Uint; - default: - return std::nullopt; - } - } - - VideoCore::Surface::PixelFormat ResolveTexelBufferFormat( - VideoCore::Surface::PixelFormat format, Shader::SamplerComponentType component_type) { - const auto desired_numeric = NumericFromComponentType(component_type); - if (!desired_numeric) { - return format; - } - const auto current_numeric = VideoCore::Surface::GetPixelFormatNumericType(format); - if (*desired_numeric == current_numeric) { - return format; - } - if (const auto variant = - VideoCore::Surface::FindPixelFormatVariant(format, *desired_numeric)) { - return *variant; - } - return format; - } - std::copy_n(info.constant_buffer_used_sizes.begin(), uniform_buffer_sizes.size(), uniform_buffer_sizes.begin()); diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index dae4d042be..58ba162e36 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -29,6 +29,7 @@ #include "video_core/shader_notify.h" #include "video_core/texture_cache/samples_helper.h" #include "video_core/texture_cache/texture_cache.h" +#include "video_core/surface.h" #include "video_core/vulkan_common/vulkan_device.h" #if defined(_MSC_VER) && defined(NDEBUG) @@ -49,10 +50,41 @@ using Tegra::Texture::TexturePair; using VideoCore::Surface::PixelFormat; using VideoCore::Surface::PixelFormatFromDepthFormat; using VideoCore::Surface::PixelFormatFromRenderTargetFormat; +using VideoCore::Surface::PixelFormatNumeric; constexpr size_t NUM_STAGES = Maxwell::MaxShaderStage; constexpr size_t MAX_IMAGE_ELEMENTS = 64; +std::optional NumericFromComponentType( + Shader::SamplerComponentType component_type) { + switch (component_type) { + case Shader::SamplerComponentType::Float: + return PixelFormatNumeric::Float; + case Shader::SamplerComponentType::Sint: + return PixelFormatNumeric::Sint; + case Shader::SamplerComponentType::Uint: + return PixelFormatNumeric::Uint; + default: + return std::nullopt; + } +} + +PixelFormat ResolveTexelBufferFormat(PixelFormat format, + Shader::SamplerComponentType component_type) { + const auto desired_numeric = NumericFromComponentType(component_type); + if (!desired_numeric) { + return format; + } + const auto current_numeric = VideoCore::Surface::GetPixelFormatNumericType(format); + if (*desired_numeric == current_numeric) { + return format; + } + if (const auto variant = VideoCore::Surface::FindPixelFormatVariant(format, *desired_numeric)) { + return *variant; + } + return format; +} + DescriptorLayoutBuilder MakeBuilder(const Device& device, std::span infos) { DescriptorLayoutBuilder builder{device}; for (size_t index = 0; index < infos.size(); ++index) { @@ -65,37 +97,6 @@ DescriptorLayoutBuilder MakeBuilder(const Device& device, std::span - NumericFromComponentType(Shader::SamplerComponentType component_type) { - using VideoCore::Surface::PixelFormatNumeric; - switch (component_type) { - case Shader::SamplerComponentType::Float: - return PixelFormatNumeric::Float; - case Shader::SamplerComponentType::Sint: - return PixelFormatNumeric::Sint; - case Shader::SamplerComponentType::Uint: - return PixelFormatNumeric::Uint; - default: - return std::nullopt; - } - } - - VideoCore::Surface::PixelFormat ResolveTexelBufferFormat( - VideoCore::Surface::PixelFormat format, Shader::SamplerComponentType component_type) { - const auto desired_numeric = NumericFromComponentType(component_type); - if (!desired_numeric) { - return format; - } - const auto current_numeric = VideoCore::Surface::GetPixelFormatNumericType(format); - if (*desired_numeric == current_numeric) { - return format; - } - if (const auto variant = - VideoCore::Surface::FindPixelFormatVariant(format, *desired_numeric)) { - return *variant; - } - return format; - } return builder; }