Module: Mesa Branch: main Commit: 8b178f9ce47dc73c097731b387a30832ae3c997f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b178f9ce47dc73c097731b387a30832ae3c997f
Author: George Ouzounoudis <[email protected]> Date: Mon Aug 21 20:32:22 2023 +0300 nvk: Support extended dynamic state for alpha to coverage/one 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 | 5 ----- src/nouveau/vulkan/nvk_physical_device.c | 4 ++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_draw.c b/src/nouveau/vulkan/nvk_cmd_draw.c index 518b89e91dd..f1a555b9edf 100644 --- a/src/nouveau/vulkan/nvk_cmd_draw.c +++ b/src/nouveau/vulkan/nvk_cmd_draw.c @@ -1344,6 +1344,15 @@ nvk_flush_ms_state(struct nvk_cmd_buffer *cmd) const struct vk_dynamic_graphics_state *dyn = &cmd->vk.dynamic_graphics_state; + if (BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_MS_ALPHA_TO_COVERAGE_ENABLE) || + BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_MS_ALPHA_TO_ONE_ENABLE)) { + struct nv_push *p = nvk_cmd_buffer_push(cmd, 2); + P_IMMD(p, NV9097, SET_ANTI_ALIAS_ALPHA_CONTROL, { + .alpha_to_coverage = dyn->ms.alpha_to_coverage_enable, + .alpha_to_one = dyn->ms.alpha_to_one_enable, + }); + } + if (BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_MS_SAMPLE_LOCATIONS) || BITSET_TEST(dyn->dirty, MESA_VK_DYNAMIC_MS_SAMPLE_LOCATIONS_ENABLE)) { const struct vk_sample_locations_state *sl; diff --git a/src/nouveau/vulkan/nvk_graphics_pipeline.c b/src/nouveau/vulkan/nvk_graphics_pipeline.c index f28f2cedb81..d4f3269db72 100644 --- a/src/nouveau/vulkan/nvk_graphics_pipeline.c +++ b/src/nouveau/vulkan/nvk_graphics_pipeline.c @@ -70,11 +70,6 @@ emit_pipeline_ms_state(struct nv_push *p, const struct vk_multisample_state *ms, bool force_max_samples) { - P_IMMD(p, NV9097, SET_ANTI_ALIAS_ALPHA_CONTROL, { - .alpha_to_coverage = ms->alpha_to_coverage_enable, - .alpha_to_one = ms->alpha_to_one_enable, - }); - 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 d68906f537c..b7222678484 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -394,8 +394,8 @@ nvk_get_device_features(const struct nv_device_info *info, .extendedDynamicState3PolygonMode = true, .extendedDynamicState3RasterizationSamples = false, .extendedDynamicState3SampleMask = true, - .extendedDynamicState3AlphaToCoverageEnable = false, - .extendedDynamicState3AlphaToOneEnable = false, + .extendedDynamicState3AlphaToCoverageEnable = true, + .extendedDynamicState3AlphaToOneEnable = true, .extendedDynamicState3LogicOpEnable = true, .extendedDynamicState3ColorBlendEnable = true, .extendedDynamicState3ColorBlendEquation = true,
