summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
index 634bbb450..1334882b5 100644
--- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
@@ -127,6 +127,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, Tegra::Engines::Maxw
127 base_profile = Shader::Profile{ 127 base_profile = Shader::Profile{
128 .supported_spirv = device.IsKhrSpirv1_4Supported() ? 0x00010400U : 0x00010000U, 128 .supported_spirv = device.IsKhrSpirv1_4Supported() ? 0x00010400U : 0x00010000U,
129 .unified_descriptor_binding = true, 129 .unified_descriptor_binding = true,
130 .support_descriptor_aliasing = true,
130 .support_vertex_instance_id = false, 131 .support_vertex_instance_id = false,
131 .support_float_controls = true, 132 .support_float_controls = true,
132 .support_separate_denorm_behavior = float_control.denormBehaviorIndependence == 133 .support_separate_denorm_behavior = float_control.denormBehaviorIndependence ==
@@ -149,9 +150,11 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, Tegra::Engines::Maxw
149 device.IsExtShaderViewportIndexLayerSupported(), 150 device.IsExtShaderViewportIndexLayerSupported(),
150 .support_viewport_mask = device.IsNvViewportArray2Supported(), 151 .support_viewport_mask = device.IsNvViewportArray2Supported(),
151 .support_typeless_image_loads = device.IsFormatlessImageLoadSupported(), 152 .support_typeless_image_loads = device.IsFormatlessImageLoadSupported(),
153 .support_demote_to_helper_invocation = true,
152 .warp_size_potentially_larger_than_guest = device.IsWarpSizePotentiallyBiggerThanGuest(), 154 .warp_size_potentially_larger_than_guest = device.IsWarpSizePotentiallyBiggerThanGuest(),
153 .support_int64_atomics = device.IsExtShaderAtomicInt64Supported(), 155 .support_int64_atomics = device.IsExtShaderAtomicInt64Supported(),
154 .has_broken_spirv_clamp = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR, 156 .has_broken_spirv_clamp = driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR,
157 .has_broken_unsigned_image_offsets = false,
155 .generic_input_types{}, 158 .generic_input_types{},
156 .fixed_state_point_size{}, 159 .fixed_state_point_size{},
157 .alpha_test_func{}, 160 .alpha_test_func{},
@@ -312,7 +315,7 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
312 std::array<const Shader::Info*, Maxwell::MaxShaderStage> infos{}; 315 std::array<const Shader::Info*, Maxwell::MaxShaderStage> infos{};
313 std::array<vk::ShaderModule, Maxwell::MaxShaderStage> modules; 316 std::array<vk::ShaderModule, Maxwell::MaxShaderStage> modules;
314 317
315 u32 binding{0}; 318 Shader::Backend::SPIRV::Bindings binding;
316 for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram; ++index) { 319 for (size_t index = uses_vertex_a && uses_vertex_b ? 1 : 0; index < Maxwell::MaxShaderProgram; ++index) {
317 if (key.unique_hashes[index] == 0) { 320 if (key.unique_hashes[index] == 0) {
318 continue; 321 continue;
@@ -398,7 +401,7 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
398 401
399 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()}; 402 Shader::Maxwell::Flow::CFG cfg{env, pools.flow_block, env.StartAddress()};
400 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)}; 403 Shader::IR::Program program{TranslateProgram(pools.inst, pools.block, env, cfg)};
401 u32 binding{0}; 404 Shader::Backend::SPIRV::Bindings binding;
402 const std::vector<u32> code{EmitSPIRV(base_profile, program, binding)}; 405 const std::vector<u32> code{EmitSPIRV(base_profile, program, binding)};
403 device.SaveShader(code); 406 device.SaveShader(code);
404 vk::ShaderModule spv_module{BuildShader(device, code)}; 407 vk::ShaderModule spv_module{BuildShader(device, code)};