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,

Reply via email to