Module: Mesa
Branch: main
Commit: a3b3a7d36a4a9e487d7ae4e71a97fda4e1ad58d6
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a3b3a7d36a4a9e487d7ae4e71a97fda4e1ad58d6

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Wed Nov 29 17:39:52 2023 +0100

radv: remove unused code for compiling PS epilogs as part of pipelines

Since we switched to the "on-demand" path for GPL, this is dead code.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26398>

---

 src/amd/vulkan/radv_cmd_buffer.c        | 16 ++-----
 src/amd/vulkan/radv_pipeline_cache.c    | 61 ++++-----------------------
 src/amd/vulkan/radv_pipeline_compute.c  |  2 +-
 src/amd/vulkan/radv_pipeline_graphics.c | 75 +++------------------------------
 src/amd/vulkan/radv_private.h           |  7 +--
 src/amd/vulkan/radv_shader.h            |  1 -
 6 files changed, 22 insertions(+), 140 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 8f6dd0a4db9..c2946712ffa 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -1680,11 +1680,6 @@ radv_emit_prefetch_L2(struct radv_cmd_buffer 
*cmd_buffer, bool first_stage_only)
 
    if (mask & RADV_PREFETCH_PS) {
       radv_emit_shader_prefetch(cmd_buffer, 
cmd_buffer->state.shaders[MESA_SHADER_FRAGMENT]);
-      if (cmd_buffer->state.ps_epilog) {
-         struct radv_shader_part *ps_epilog = cmd_buffer->state.ps_epilog;
-
-         si_cp_dma_prefetch(cmd_buffer, ps_epilog->va, ps_epilog->code_size);
-      }
    }
 
    state->prefetch_L2_mask &= ~mask;
@@ -6529,7 +6524,6 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, 
VkPipelineBindPoint pipeline
       }
 
       cmd_buffer->state.gs_copy_shader = 
graphics_pipeline->base.gs_copy_shader;
-      cmd_buffer->state.ps_epilog = graphics_pipeline->ps_epilog;
       cmd_buffer->state.last_vgt_shader = 
graphics_pipeline->base.shaders[graphics_pipeline->last_vgt_api_stage];
 
       cmd_buffer->state.graphics_pipeline = graphics_pipeline;
@@ -8838,12 +8832,10 @@ radv_emit_all_graphics_states(struct radv_cmd_buffer 
*cmd_buffer, const struct r
 
    if (cmd_buffer->state.shaders[MESA_SHADER_FRAGMENT] &&
        cmd_buffer->state.shaders[MESA_SHADER_FRAGMENT]->info.has_epilog) {
-      if (cmd_buffer->state.ps_epilog) {
-         ps_epilog = cmd_buffer->state.ps_epilog;
-      } else if ((cmd_buffer->state.emitted_graphics_pipeline != 
cmd_buffer->state.graphics_pipeline ||
-                  (cmd_buffer->state.dirty &
-                   (RADV_CMD_DIRTY_DYNAMIC_COLOR_WRITE_MASK | 
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_ENABLE |
-                    RADV_CMD_DIRTY_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE | 
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_EQUATION)))) {
+      if ((cmd_buffer->state.emitted_graphics_pipeline != 
cmd_buffer->state.graphics_pipeline ||
+           (cmd_buffer->state.dirty &
+            (RADV_CMD_DIRTY_DYNAMIC_COLOR_WRITE_MASK | 
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_ENABLE |
+             RADV_CMD_DIRTY_DYNAMIC_ALPHA_TO_COVERAGE_ENABLE | 
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_EQUATION)))) {
          ps_epilog = lookup_ps_epilog(cmd_buffer);
          if (!ps_epilog) {
             vk_command_buffer_set_error(&cmd_buffer->vk, 
VK_ERROR_OUT_OF_HOST_MEMORY);
diff --git a/src/amd/vulkan/radv_pipeline_cache.c 
b/src/amd/vulkan/radv_pipeline_cache.c
index 2b139149fea..bb68462900f 100644
--- a/src/amd/vulkan/radv_pipeline_cache.c
+++ b/src/amd/vulkan/radv_pipeline_cache.c
@@ -230,9 +230,7 @@ struct radv_pipeline_cache_object {
    struct vk_pipeline_cache_object base;
    unsigned num_shaders;
    unsigned num_stack_sizes;
-   unsigned ps_epilog_binary_size;
-   struct radv_shader_part *ps_epilog;
-   void *data; /* pointer to stack sizes or ps epilog binary */
+   void *data; /* pointer to stack sizes */
    uint8_t sha1[SHA1_DIGEST_LENGTH];
    struct radv_shader *shaders[];
 };
@@ -241,11 +239,10 @@ const struct vk_pipeline_cache_object_ops 
radv_pipeline_ops;
 
 static struct radv_pipeline_cache_object *
 radv_pipeline_cache_object_create(struct vk_device *device, unsigned 
num_shaders, const void *hash,
-                                  unsigned num_stack_sizes, unsigned 
ps_epilog_binary_size)
+                                  unsigned num_stack_sizes)
 {
-   assert(num_stack_sizes == 0 || ps_epilog_binary_size == 0);
    const size_t size = sizeof(struct radv_pipeline_cache_object) + 
(num_shaders * sizeof(struct radv_shader *)) +
-                       ps_epilog_binary_size + (num_stack_sizes * 
sizeof(uint32_t));
+                       (num_stack_sizes * sizeof(uint32_t));
 
    struct radv_pipeline_cache_object *object = vk_alloc(&device->alloc, size, 
8, VK_SYSTEM_ALLOCATION_SCOPE_CACHE);
    if (!object)
@@ -254,8 +251,6 @@ radv_pipeline_cache_object_create(struct vk_device *device, 
unsigned num_shaders
    vk_pipeline_cache_object_init(device, &object->base, &radv_pipeline_ops, 
object->sha1, SHA1_DIGEST_LENGTH);
    object->num_shaders = num_shaders;
    object->num_stack_sizes = num_stack_sizes;
-   object->ps_epilog_binary_size = ps_epilog_binary_size;
-   object->ps_epilog = NULL;
    object->data = &object->shaders[num_shaders];
    memcpy(object->sha1, hash, SHA1_DIGEST_LENGTH);
    memset(object->shaders, 0, sizeof(object->shaders[0]) * num_shaders);
@@ -273,8 +268,6 @@ radv_pipeline_cache_object_destroy(struct vk_device 
*_device, struct vk_pipeline
       if (pipeline_obj->shaders[i])
          radv_shader_unref(device, pipeline_obj->shaders[i]);
    }
-   if (pipeline_obj->ps_epilog)
-      radv_shader_part_unref(device, pipeline_obj->ps_epilog);
 
    vk_pipeline_cache_object_finish(&pipeline_obj->base);
    vk_free(&_device->alloc, pipeline_obj);
@@ -289,11 +282,9 @@ radv_pipeline_cache_object_deserialize(struct 
vk_pipeline_cache *cache, const vo
    unsigned total_size = blob->end - blob->current;
    unsigned num_shaders = blob_read_uint32(blob);
    unsigned num_stack_sizes = blob_read_uint32(blob);
-   unsigned ps_epilog_binary_size = blob_read_uint32(blob);
 
    struct radv_pipeline_cache_object *object;
-   object =
-      radv_pipeline_cache_object_create(&device->vk, num_shaders, key_data, 
num_stack_sizes, ps_epilog_binary_size);
+   object = radv_pipeline_cache_object_create(&device->vk, num_shaders, 
key_data, num_stack_sizes);
    if (!object)
       return NULL;
 
@@ -315,20 +306,9 @@ radv_pipeline_cache_object_deserialize(struct 
vk_pipeline_cache *cache, const vo
       object->shaders[i] = container_of(shader, struct radv_shader, base);
    }
 
-   const size_t data_size = ps_epilog_binary_size + (num_stack_sizes * 
sizeof(uint32_t));
+   const size_t data_size = num_stack_sizes * sizeof(uint32_t);
    blob_copy_bytes(blob, object->data, data_size);
 
-   if (ps_epilog_binary_size) {
-      assert(num_stack_sizes == 0);
-      struct radv_shader_part_binary *binary = object->data;
-      object->ps_epilog = radv_shader_part_create(device, binary, 
device->physical_device->ps_wave_size);
-
-      if (!object->ps_epilog) {
-         vk_pipeline_cache_object_unref(&device->vk, &object->base);
-         return NULL;
-      }
-   }
-
    return &object->base;
 }
 
@@ -339,12 +319,11 @@ radv_pipeline_cache_object_serialize(struct 
vk_pipeline_cache_object *object, st
 
    blob_write_uint32(blob, pipeline_obj->num_shaders);
    blob_write_uint32(blob, pipeline_obj->num_stack_sizes);
-   blob_write_uint32(blob, pipeline_obj->ps_epilog_binary_size);
 
    for (unsigned i = 0; i < pipeline_obj->num_shaders; i++)
       blob_write_bytes(blob, pipeline_obj->shaders[i]->hash, 
sizeof(pipeline_obj->shaders[i]->hash));
 
-   const size_t data_size = pipeline_obj->ps_epilog_binary_size + 
(pipeline_obj->num_stack_sizes * sizeof(uint32_t));
+   const size_t data_size = pipeline_obj->num_stack_sizes * sizeof(uint32_t);
    blob_write_bytes(blob, pipeline_obj->data, data_size);
 
    return true;
@@ -390,22 +369,13 @@ radv_pipeline_cache_search(struct radv_device *device, 
struct vk_pipeline_cache
       }
    }
 
-   if (pipeline_obj->ps_epilog) {
-      struct radv_shader_part *ps_epilog = 
radv_shader_part_ref(pipeline_obj->ps_epilog);
-
-      if (pipeline->type == RADV_PIPELINE_GRAPHICS)
-         radv_pipeline_to_graphics(pipeline)->ps_epilog = ps_epilog;
-      else
-         radv_pipeline_to_graphics_lib(pipeline)->base.ps_epilog = ps_epilog;
-   }
-
    pipeline->cache_object = object;
    return true;
 }
 
 void
 radv_pipeline_cache_insert(struct radv_device *device, struct 
vk_pipeline_cache *cache, struct radv_pipeline *pipeline,
-                           struct radv_shader_part_binary *ps_epilog_binary, 
const unsigned char *sha1)
+                           const unsigned char *sha1)
 {
    if (radv_is_cache_disabled(device))
       return;
@@ -419,10 +389,8 @@ radv_pipeline_cache_insert(struct radv_device *device, 
struct vk_pipeline_cache
       num_shaders += pipeline->shaders[i] ? 1 : 0;
    num_shaders += pipeline->gs_copy_shader ? 1 : 0;
 
-   unsigned ps_epilog_binary_size = ps_epilog_binary ? 
ps_epilog_binary->total_size : 0;
-
    struct radv_pipeline_cache_object *pipeline_obj;
-   pipeline_obj = radv_pipeline_cache_object_create(&device->vk, num_shaders, 
sha1, 0, ps_epilog_binary_size);
+   pipeline_obj = radv_pipeline_cache_object_create(&device->vk, num_shaders, 
sha1, 0);
 
    if (!pipeline_obj)
       return;
@@ -438,17 +406,6 @@ radv_pipeline_cache_insert(struct radv_device *device, 
struct vk_pipeline_cache
 
    assert(idx == num_shaders);
 
-   if (ps_epilog_binary) {
-      memcpy(pipeline_obj->data, ps_epilog_binary, ps_epilog_binary_size);
-      struct radv_shader_part *ps_epilog;
-      if (pipeline->type == RADV_PIPELINE_GRAPHICS)
-         ps_epilog = radv_pipeline_to_graphics(pipeline)->ps_epilog;
-      else
-         ps_epilog = radv_pipeline_to_graphics_lib(pipeline)->base.ps_epilog;
-
-      pipeline_obj->ps_epilog = radv_shader_part_ref(ps_epilog);
-   }
-
    /* Add the object to the cache */
    pipeline->cache_object = vk_pipeline_cache_add_object(cache, 
&pipeline_obj->base);
 }
@@ -533,7 +490,7 @@ radv_ray_tracing_pipeline_cache_insert(struct radv_device 
*device, struct vk_pip
       num_shaders += radv_ray_tracing_stage_is_compiled(&pipeline->stages[i]) 
? 1 : 0;
 
    struct radv_pipeline_cache_object *pipeline_obj =
-      radv_pipeline_cache_object_create(&device->vk, num_shaders, sha1, 
pipeline->stage_count, 0);
+      radv_pipeline_cache_object_create(&device->vk, num_shaders, sha1, 
pipeline->stage_count);
 
    unsigned idx = 0;
    if (pipeline->base.base.shaders[MESA_SHADER_INTERSECTION])
diff --git a/src/amd/vulkan/radv_pipeline_compute.c 
b/src/amd/vulkan/radv_pipeline_compute.c
index c89a74e50b8..a3bbb92b58a 100644
--- a/src/amd/vulkan/radv_pipeline_compute.c
+++ b/src/amd/vulkan/radv_pipeline_compute.c
@@ -230,7 +230,7 @@ radv_compute_pipeline_compile(struct radv_compute_pipeline 
*pipeline, struct rad
    cs_stage.feedback.duration += os_time_get_nano() - stage_start;
 
    if (!keep_executable_info) {
-      radv_pipeline_cache_insert(device, cache, &pipeline->base, NULL, hash);
+      radv_pipeline_cache_insert(device, cache, &pipeline->base, hash);
    }
 
    free(cs_binary);
diff --git a/src/amd/vulkan/radv_pipeline_graphics.c 
b/src/amd/vulkan/radv_pipeline_graphics.c
index 2e2fa477d95..b788896c642 100644
--- a/src/amd/vulkan/radv_pipeline_graphics.c
+++ b/src/amd/vulkan/radv_pipeline_graphics.c
@@ -261,8 +261,8 @@ radv_format_meta_fs_key(struct radv_device *device, 
VkFormat format)
 }
 
 static bool
-radv_pipeline_needs_dynamic_ps_epilog(const struct radv_graphics_pipeline 
*pipeline,
-                                      VkGraphicsPipelineLibraryFlagBitsEXT 
lib_flags)
+radv_pipeline_needs_ps_epilog(const struct radv_graphics_pipeline *pipeline,
+                              VkGraphicsPipelineLibraryFlagBitsEXT lib_flags)
 {
    /* Use a PS epilog when the fragment shader is compiled without the 
fragment output interface. */
    if ((pipeline->active_stages & VK_SHADER_STAGE_FRAGMENT_BIT) &&
@@ -286,15 +286,11 @@ radv_pipeline_init_blend_state(struct 
radv_graphics_pipeline *pipeline, const st
    struct radv_blend_state blend = {0};
    unsigned spi_shader_col_format = 0;
 
-   if (radv_pipeline_needs_dynamic_ps_epilog(pipeline, lib_flags))
+   if (radv_pipeline_needs_ps_epilog(pipeline, lib_flags))
       return blend;
 
    if (ps) {
-      if (ps->info.has_epilog) {
-         spi_shader_col_format = pipeline->ps_epilog->spi_shader_col_format;
-      } else {
-         spi_shader_col_format = ps->info.ps.spi_shader_col_format;
-      }
+      spi_shader_col_format = ps->info.ps.spi_shader_col_format;
    }
 
    blend.cb_shader_mask = ac_get_cb_shader_mask(spi_shader_col_format);
@@ -796,12 +792,6 @@ radv_graphics_pipeline_import_lib(const struct radv_device 
*device, struct radv_
          assert(!pipeline->base.gs_copy_shader);
          pipeline->base.gs_copy_shader = 
radv_shader_ref(lib->base.base.gs_copy_shader);
       }
-
-      /* Import the PS epilog if present. */
-      if (lib->base.ps_epilog) {
-         assert(!pipeline->ps_epilog);
-         pipeline->ps_epilog = radv_shader_part_ref(lib->base.ps_epilog);
-      }
    }
 
    /* Import the pipeline layout. */
@@ -1931,17 +1921,8 @@ radv_generate_graphics_pipeline_key(const struct 
radv_device *device, const stru
    if (device->primitives_generated_query)
       key.primitives_generated_query = true;
 
-   if (radv_pipeline_needs_dynamic_ps_epilog(pipeline, lib_flags))
-      key.ps.dynamic_ps_epilog = true;
-
-   /* The fragment shader needs an epilog when both:
-    * - it's compiled without the fragment output interface with GPL
-    * - it's compiled on-demand because some dynamic states are enabled
-    */
-   key.ps.has_epilog = (pipeline->active_stages & 
VK_SHADER_STAGE_FRAGMENT_BIT) &&
-                       (((lib_flags & 
VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT) &&
-                         !(lib_flags & 
VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT)) ||
-                        key.ps.dynamic_ps_epilog);
+   if (radv_pipeline_needs_ps_epilog(pipeline, lib_flags))
+      key.ps.has_epilog = true;
 
    /* Disable MRT compaction when it's not possible to know both the written 
color outputs and the
     * color blend attachments.
@@ -2395,36 +2376,6 @@ radv_pipeline_load_retained_shaders(const struct 
radv_device *device, struct rad
    }
 }
 
-static bool
-radv_pipeline_create_ps_epilog(struct radv_device *device, struct 
radv_graphics_pipeline *pipeline,
-                               const struct radv_pipeline_key *pipeline_key,
-                               VkGraphicsPipelineLibraryFlagBitsEXT lib_flags,
-                               struct radv_shader_part_binary 
**ps_epilog_binary)
-{
-   bool needs_ps_epilog = false;
-
-   /* Do not compile a PS epilog as part of the pipeline when it needs to be 
dynamic. */
-   if (pipeline_key->ps.dynamic_ps_epilog)
-      return true;
-
-   if (pipeline->base.type == RADV_PIPELINE_GRAPHICS) {
-      needs_ps_epilog = pipeline->base.shaders[MESA_SHADER_FRAGMENT] &&
-                        
pipeline->base.shaders[MESA_SHADER_FRAGMENT]->info.has_epilog && 
!pipeline->ps_epilog;
-   } else {
-      assert(pipeline->base.type == RADV_PIPELINE_GRAPHICS_LIB);
-      needs_ps_epilog = (lib_flags & 
VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT) &&
-                        !(lib_flags & 
VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT);
-   }
-
-   if (needs_ps_epilog) {
-      pipeline->ps_epilog = radv_create_ps_epilog(device, 
&pipeline_key->ps.epilog, ps_epilog_binary);
-      if (!pipeline->ps_epilog)
-         return false;
-   }
-
-   return true;
-}
-
 static unsigned
 radv_get_rasterization_prim(const struct radv_shader_stage *stages, const 
struct radv_pipeline_key *pipeline_key)
 {
@@ -2460,11 +2411,6 @@ radv_skip_graphics_pipeline_compile(const struct 
radv_device *device, const stru
    if (!fast_linking_enabled)
       return false;
 
-   /* Do not skip when the PS epilog needs to be compiled. */
-   if (!radv_pipeline_needs_dynamic_ps_epilog(pipeline, lib_flags) && 
pipeline->base.shaders[MESA_SHADER_FRAGMENT] &&
-       pipeline->base.shaders[MESA_SHADER_FRAGMENT]->info.has_epilog && 
!pipeline->ps_epilog)
-      return false;
-
    /* Determine which shader stages have been imported. */
    if (pipeline->base.shaders[MESA_SHADER_MESH]) {
       binary_stages |= VK_SHADER_STAGE_MESH_BIT_EXT;
@@ -2666,7 +2612,6 @@ radv_graphics_pipeline_compile(struct 
radv_graphics_pipeline *pipeline, const Vk
 {
    struct radv_shader_binary *binaries[MESA_VULKAN_SHADER_STAGES] = {NULL};
    struct radv_shader_binary *gs_copy_binary = NULL;
-   struct radv_shader_part_binary *ps_epilog_binary = NULL;
    unsigned char hash[20];
    bool keep_executable_info = radv_pipeline_capture_shaders(device, 
pipeline->base.create_flags);
    bool keep_statistic_info = radv_pipeline_capture_shader_stats(device, 
pipeline->base.create_flags);
@@ -2767,15 +2712,11 @@ radv_graphics_pipeline_compile(struct 
radv_graphics_pipeline *pipeline, const Vk
                                  pipeline->base.is_internal, retained_shaders, 
noop_fs, pipeline->base.shaders,
                                  binaries, &pipeline->base.gs_copy_shader, 
&gs_copy_binary);
 
-   if (!radv_pipeline_create_ps_epilog(device, pipeline, pipeline_key, 
lib_flags, &ps_epilog_binary))
-      return VK_ERROR_OUT_OF_DEVICE_MEMORY;
-
    if (!skip_shaders_cache) {
-      radv_pipeline_cache_insert(device, cache, &pipeline->base, 
ps_epilog_binary, hash);
+      radv_pipeline_cache_insert(device, cache, &pipeline->base, hash);
    }
 
    free(gs_copy_binary);
-   free(ps_epilog_binary);
    for (int i = 0; i < MESA_VULKAN_SHADER_STAGES; ++i) {
       free(binaries[i]);
       if (stages[i].nir) {
@@ -4106,8 +4047,6 @@ radv_destroy_graphics_pipeline(struct radv_device 
*device, struct radv_graphics_
 
    if (pipeline->base.gs_copy_shader)
       radv_shader_unref(device, pipeline->base.gs_copy_shader);
-   if (pipeline->ps_epilog)
-      radv_shader_part_unref(device, pipeline->ps_epilog);
 
    vk_free(&device->vk.alloc, pipeline->state_data);
 }
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 0e35eaa5f0e..85996eb944f 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -439,8 +439,7 @@ bool radv_pipeline_cache_search(struct radv_device *device, 
struct vk_pipeline_c
                                 bool *found_in_application_cache);
 
 void radv_pipeline_cache_insert(struct radv_device *device, struct 
vk_pipeline_cache *cache,
-                                struct radv_pipeline *pipeline, struct 
radv_shader_part_binary *ps_epilog_binary,
-                                const unsigned char *sha1);
+                                struct radv_pipeline *pipeline, const unsigned 
char *sha1);
 
 struct radv_ray_tracing_pipeline;
 bool radv_ray_tracing_pipeline_cache_search(struct radv_device *device, struct 
vk_pipeline_cache *cache,
@@ -1648,7 +1647,6 @@ struct radv_cmd_state {
    VkShaderStageFlags active_stages;
    struct radv_shader *shaders[MESA_VULKAN_SHADER_STAGES];
    struct radv_shader *gs_copy_shader;
-   struct radv_shader_part *ps_epilog;
    struct radv_shader *last_vgt_shader;
    struct radv_shader *rt_prolog;
 
@@ -2337,9 +2335,6 @@ struct radv_graphics_pipeline {
    /* For vk_graphics_pipeline_state */
    void *state_data;
 
-   /* Not NULL if graphics pipeline uses a PS epilog. */
-   struct radv_shader_part *ps_epilog;
-
    /* Custom blend mode for internal operations. */
    unsigned custom_blend_mode;
 
diff --git a/src/amd/vulkan/radv_shader.h b/src/amd/vulkan/radv_shader.h
index bd68c183c52..aa549282b10 100644
--- a/src/amd/vulkan/radv_shader.h
+++ b/src/amd/vulkan/radv_shader.h
@@ -135,7 +135,6 @@ struct radv_pipeline_key {
       /* Used to export alpha through MRTZ for alpha-to-coverage (GFX11+). */
       bool alpha_to_coverage_via_mrtz;
 
-      bool dynamic_ps_epilog;
       bool has_epilog;
 
       bool line_smooth_enabled;

Reply via email to