From f85b7e294b4c1b4512b07475102e06784740dba1 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 15 Sep 2022 13:36:51 +0200 Subject: [PATCH] radv: add radv_pipeline_key::dynamic_rasterization_samples With GPL, it's possible to build the main FS without the multisample state, but the number of rasterization samples is required for lowering interpolateAtSample(). In this rare situation, the number of samples will be passed through a new user SGPR. Signed-off-by: Samuel Pitoiset Reviewed-by: Rhys Perry Part-of: --- src/amd/vulkan/radv_pipeline.c | 3 +++ src/amd/vulkan/radv_shader.h | 1 + 2 files changed, 4 insertions(+) diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index e8a1dffb558..a1e05186a37 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -2818,6 +2818,9 @@ radv_generate_graphics_pipeline_key(const struct radv_graphics_pipeline *pipelin key.dynamic_patch_control_points = !!(pipeline->dynamic_states & RADV_DYNAMIC_PATCH_CONTROL_POINTS); + key.dynamic_rasterization_samples = + !!(pipeline->active_stages & VK_SHADER_STAGE_FRAGMENT_BIT) && !state->ms; + return key; } diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h index d81aafcee54..f0b9ed848ae 100644 --- a/src/amd/vulkan/radv_shader.h +++ b/src/amd/vulkan/radv_shader.h @@ -63,6 +63,7 @@ struct radv_pipeline_key { uint32_t image_2d_view_of_3d : 1; uint32_t primitives_generated_query : 1; uint32_t dynamic_patch_control_points : 1; + uint32_t dynamic_rasterization_samples : 1; struct { uint32_t instance_rate_inputs;