Module: Mesa Branch: main Commit: c7135e94cb3fc73f7a925173ff3c0215196dae76 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7135e94cb3fc73f7a925173ff3c0215196dae76
Author: George Ouzounoudis <[email protected]> Date: Mon Aug 21 20:23:19 2023 +0300 nvk: Support extendedDynamicState3SampleMask This is needed for EXT_shader_object. Move to dynamic state. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24872> --- src/nouveau/vulkan/nvk_cmd_draw.c | 9 +++++++++ src/nouveau/vulkan/nvk_graphics_pipeline.c | 6 ------ src/nouveau/vulkan/nvk_physical_device.c | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index 78ce274c136..ce15fa824f6 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -1385,6 +1385,15 @@ nvk_flush_ms_state(struct nvk_cmd_buffer *cmd) } } } + + if (BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_MS_SAMPLE_MASK)) { + struct nv_push *p = nvk_cmd_buffer_push(cmd, 5); + P_MTHD(p, NV9097, SET_SAMPLE_MASK_X0_Y0); + P_NV9097_SET_SAMPLE_MASK_X0_Y0(p, dyn->ms.sample_mask & 0xffff); + P_NV9097_SET_SAMPLE_MASK_X1_Y0(p, dyn->ms.sample_mask & 0xffff); + P_NV9097_SET_SAMPLE_MASK_X0_Y1(p, dyn->ms.sample_mask & 0xffff); + P_NV9097_SET_SAMPLE_MASK_X1_Y1(p, dyn->ms.sample_mask & 0xffff); + } } static uint32_t diff --git a/src/nouveau/vulkan/nvk_graphics_pipeline.c b/src/nouveau/vulkan/nvk_graphics_pipeline.c index 577fc2dca02..b08ee4a1a3d 100644 --- a/src/nouveau/vulkan/nvk_graphics_pipeline.c +++ b/src/nouveau/vulkan/nvk_graphics_pipeline.c @@ -75,12 +75,6 @@ emit_pipeline_ms_state(struct nv_push *p, .alpha_to_one = ms->alpha_to_one_enable, }); - P_MTHD(p, NV9097, SET_SAMPLE_MASK_X0_Y0); - P_NV9097_SET_SAMPLE_MASK_X0_Y0(p, ms->sample_mask & 0xffff); - P_NV9097_SET_SAMPLE_MASK_X1_Y0(p, ms->sample_mask & 0xffff); - P_NV9097_SET_SAMPLE_MASK_X0_Y1(p, ms->sample_mask & 0xffff); - P_NV9097_SET_SAMPLE_MASK_X1_Y1(p, ms->sample_mask & 0xffff); - const float min_sample_shading = force_max_samples ? 1 : (ms->sample_shading_enable ? CLAMP(ms->min_sample_shading, 0, 1) : 0); uint32_t min_samples = ceilf(ms->rasterization_samples * min_sample_shading); diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 4e0d81ef06b..adc35d6a1bc 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -393,7 +393,7 @@ nvk_get_device_features(const struct nv_device_info *info, .extendedDynamicState3DepthClampEnable = true, .extendedDynamicState3PolygonMode = true, .extendedDynamicState3RasterizationSamples = false, - .extendedDynamicState3SampleMask = false, + .extendedDynamicState3SampleMask = true, .extendedDynamicState3AlphaToCoverageEnable = false, .extendedDynamicState3AlphaToOneEnable = false, .extendedDynamicState3LogicOpEnable = true,
