Mesa (main): radv: use radv_dynamic_state for saving/restoring meta operations

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 5 08:12:31 UTC 2022


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Mon Apr  4 08:11:40 2022 +0200

radv: use radv_dynamic_state for saving/restoring meta operations

Instead of duplicating every fields.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15729>

---

 src/amd/vulkan/radv_meta.c | 192 ++++++++++++++++++++++-----------------------
 src/amd/vulkan/radv_meta.h |  81 +------------------
 2 files changed, 97 insertions(+), 176 deletions(-)

diff --git a/src/amd/vulkan/radv_meta.c b/src/amd/vulkan/radv_meta.c
index ae23f5d5b70..7211e80789a 100644
--- a/src/amd/vulkan/radv_meta.c
+++ b/src/amd/vulkan/radv_meta.c
@@ -84,88 +84,88 @@ radv_meta_save(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_
       state->old_pipeline = cmd_buffer->state.pipeline;
 
       /* Save all viewports. */
-      state->viewport.count = cmd_buffer->state.dynamic.viewport.count;
-      typed_memcpy(state->viewport.viewports, cmd_buffer->state.dynamic.viewport.viewports,
+      state->dynamic.viewport.count = cmd_buffer->state.dynamic.viewport.count;
+      typed_memcpy(state->dynamic.viewport.viewports, cmd_buffer->state.dynamic.viewport.viewports,
                    MAX_VIEWPORTS);
-      typed_memcpy(state->viewport.xform, cmd_buffer->state.dynamic.viewport.xform,
+      typed_memcpy(state->dynamic.viewport.xform, cmd_buffer->state.dynamic.viewport.xform,
                    MAX_VIEWPORTS);
 
       /* Save all scissors. */
-      state->scissor.count = cmd_buffer->state.dynamic.scissor.count;
-      typed_memcpy(state->scissor.scissors, cmd_buffer->state.dynamic.scissor.scissors,
+      state->dynamic.scissor.count = cmd_buffer->state.dynamic.scissor.count;
+      typed_memcpy(state->dynamic.scissor.scissors, cmd_buffer->state.dynamic.scissor.scissors,
                    MAX_SCISSORS);
 
-      state->line_stipple.factor = cmd_buffer->state.dynamic.line_stipple.factor;
-      state->line_stipple.pattern = cmd_buffer->state.dynamic.line_stipple.pattern;
+      state->dynamic.line_stipple.factor = cmd_buffer->state.dynamic.line_stipple.factor;
+      state->dynamic.line_stipple.pattern = cmd_buffer->state.dynamic.line_stipple.pattern;
 
-      state->cull_mode = cmd_buffer->state.dynamic.cull_mode;
-      state->front_face = cmd_buffer->state.dynamic.front_face;
+      state->dynamic.cull_mode = cmd_buffer->state.dynamic.cull_mode;
+      state->dynamic.front_face = cmd_buffer->state.dynamic.front_face;
 
-      state->primitive_topology = cmd_buffer->state.dynamic.primitive_topology;
+      state->dynamic.primitive_topology = cmd_buffer->state.dynamic.primitive_topology;
 
-      state->depth_test_enable = cmd_buffer->state.dynamic.depth_test_enable;
-      state->depth_write_enable = cmd_buffer->state.dynamic.depth_write_enable;
-      state->depth_compare_op = cmd_buffer->state.dynamic.depth_compare_op;
-      state->depth_bounds_test_enable = cmd_buffer->state.dynamic.depth_bounds_test_enable;
-      state->stencil_test_enable = cmd_buffer->state.dynamic.stencil_test_enable;
+      state->dynamic.depth_test_enable = cmd_buffer->state.dynamic.depth_test_enable;
+      state->dynamic.depth_write_enable = cmd_buffer->state.dynamic.depth_write_enable;
+      state->dynamic.depth_compare_op = cmd_buffer->state.dynamic.depth_compare_op;
+      state->dynamic.depth_bounds_test_enable = cmd_buffer->state.dynamic.depth_bounds_test_enable;
+      state->dynamic.stencil_test_enable = cmd_buffer->state.dynamic.stencil_test_enable;
 
-      state->stencil_op.front.compare_op = cmd_buffer->state.dynamic.stencil_op.front.compare_op;
-      state->stencil_op.front.fail_op = cmd_buffer->state.dynamic.stencil_op.front.fail_op;
-      state->stencil_op.front.pass_op = cmd_buffer->state.dynamic.stencil_op.front.pass_op;
-      state->stencil_op.front.depth_fail_op =
+      state->dynamic.stencil_op.front.compare_op = cmd_buffer->state.dynamic.stencil_op.front.compare_op;
+      state->dynamic.stencil_op.front.fail_op = cmd_buffer->state.dynamic.stencil_op.front.fail_op;
+      state->dynamic.stencil_op.front.pass_op = cmd_buffer->state.dynamic.stencil_op.front.pass_op;
+      state->dynamic.stencil_op.front.depth_fail_op =
          cmd_buffer->state.dynamic.stencil_op.front.depth_fail_op;
 
-      state->stencil_op.back.compare_op = cmd_buffer->state.dynamic.stencil_op.back.compare_op;
-      state->stencil_op.back.fail_op = cmd_buffer->state.dynamic.stencil_op.back.fail_op;
-      state->stencil_op.back.pass_op = cmd_buffer->state.dynamic.stencil_op.back.pass_op;
-      state->stencil_op.back.depth_fail_op =
+      state->dynamic.stencil_op.back.compare_op = cmd_buffer->state.dynamic.stencil_op.back.compare_op;
+      state->dynamic.stencil_op.back.fail_op = cmd_buffer->state.dynamic.stencil_op.back.fail_op;
+      state->dynamic.stencil_op.back.pass_op = cmd_buffer->state.dynamic.stencil_op.back.pass_op;
+      state->dynamic.stencil_op.back.depth_fail_op =
          cmd_buffer->state.dynamic.stencil_op.back.depth_fail_op;
 
-      state->line_width = cmd_buffer->state.dynamic.line_width;
+      state->dynamic.line_width = cmd_buffer->state.dynamic.line_width;
 
-      state->depth_bias.bias = cmd_buffer->state.dynamic.depth_bias.bias;
-      state->depth_bias.clamp = cmd_buffer->state.dynamic.depth_bias.clamp;
-      state->depth_bias.slope = cmd_buffer->state.dynamic.depth_bias.slope;
+      state->dynamic.depth_bias.bias = cmd_buffer->state.dynamic.depth_bias.bias;
+      state->dynamic.depth_bias.clamp = cmd_buffer->state.dynamic.depth_bias.clamp;
+      state->dynamic.depth_bias.slope = cmd_buffer->state.dynamic.depth_bias.slope;
 
-      memcpy(state->blend_constants, cmd_buffer->state.dynamic.blend_constants,
-             sizeof(state->blend_constants));
+      memcpy(state->dynamic.blend_constants, cmd_buffer->state.dynamic.blend_constants,
+             sizeof(state->dynamic.blend_constants));
 
-      state->depth_bounds.min = cmd_buffer->state.dynamic.depth_bounds.min;
-      state->depth_bounds.max = cmd_buffer->state.dynamic.depth_bounds.max;
+      state->dynamic.depth_bounds.min = cmd_buffer->state.dynamic.depth_bounds.min;
+      state->dynamic.depth_bounds.max = cmd_buffer->state.dynamic.depth_bounds.max;
 
-      state->stencil_compare_mask.front = cmd_buffer->state.dynamic.stencil_compare_mask.front;
-      state->stencil_compare_mask.back = cmd_buffer->state.dynamic.stencil_compare_mask.back;
+      state->dynamic.stencil_compare_mask.front = cmd_buffer->state.dynamic.stencil_compare_mask.front;
+      state->dynamic.stencil_compare_mask.back = cmd_buffer->state.dynamic.stencil_compare_mask.back;
 
-      state->stencil_write_mask.front = cmd_buffer->state.dynamic.stencil_write_mask.front;
-      state->stencil_write_mask.back = cmd_buffer->state.dynamic.stencil_write_mask.back;
+      state->dynamic.stencil_write_mask.front = cmd_buffer->state.dynamic.stencil_write_mask.front;
+      state->dynamic.stencil_write_mask.back = cmd_buffer->state.dynamic.stencil_write_mask.back;
 
-      state->stencil_reference.front = cmd_buffer->state.dynamic.stencil_reference.front;
-      state->stencil_reference.back = cmd_buffer->state.dynamic.stencil_reference.back;
+      state->dynamic.stencil_reference.front = cmd_buffer->state.dynamic.stencil_reference.front;
+      state->dynamic.stencil_reference.back = cmd_buffer->state.dynamic.stencil_reference.back;
 
-      state->fragment_shading_rate.size = cmd_buffer->state.dynamic.fragment_shading_rate.size;
-      state->fragment_shading_rate.combiner_ops[0] =
+      state->dynamic.fragment_shading_rate.size = cmd_buffer->state.dynamic.fragment_shading_rate.size;
+      state->dynamic.fragment_shading_rate.combiner_ops[0] =
          cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[0];
-      state->fragment_shading_rate.combiner_ops[1] =
+      state->dynamic.fragment_shading_rate.combiner_ops[1] =
          cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[1];
 
-      state->depth_bias_enable = cmd_buffer->state.dynamic.depth_bias_enable;
+      state->dynamic.depth_bias_enable = cmd_buffer->state.dynamic.depth_bias_enable;
 
-      state->primitive_restart_enable = cmd_buffer->state.dynamic.primitive_restart_enable;
+      state->dynamic.primitive_restart_enable = cmd_buffer->state.dynamic.primitive_restart_enable;
 
-      state->rasterizer_discard_enable = cmd_buffer->state.dynamic.rasterizer_discard_enable;
+      state->dynamic.rasterizer_discard_enable = cmd_buffer->state.dynamic.rasterizer_discard_enable;
 
-      state->logic_op = cmd_buffer->state.dynamic.logic_op;
+      state->dynamic.logic_op = cmd_buffer->state.dynamic.logic_op;
 
-      state->color_write_enable = cmd_buffer->state.dynamic.color_write_enable;
+      state->dynamic.color_write_enable = cmd_buffer->state.dynamic.color_write_enable;
 
-      state->discard_rectangle.count = cmd_buffer->state.dynamic.discard_rectangle.count;
-      typed_memcpy(state->discard_rectangle.rectangles,
+      state->dynamic.discard_rectangle.count = cmd_buffer->state.dynamic.discard_rectangle.count;
+      typed_memcpy(state->dynamic.discard_rectangle.rectangles,
                    cmd_buffer->state.dynamic.discard_rectangle.rectangles,
                    MAX_DISCARD_RECTANGLES);
    }
 
    if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
-      typed_memcpy(&state->sample_location, &cmd_buffer->state.dynamic.sample_location, 1);
+      typed_memcpy(&state->dynamic.sample_location, &cmd_buffer->state.dynamic.sample_location, 1);
    }
 
    if (state->flags & RADV_META_SAVE_COMPUTE_PIPELINE) {
@@ -209,83 +209,83 @@ radv_meta_restore(const struct radv_meta_saved_state *state, struct radv_cmd_buf
       cmd_buffer->state.dirty |= RADV_CMD_DIRTY_PIPELINE;
 
       /* Restore all viewports. */
-      cmd_buffer->state.dynamic.viewport.count = state->viewport.count;
-      typed_memcpy(cmd_buffer->state.dynamic.viewport.viewports, state->viewport.viewports,
+      cmd_buffer->state.dynamic.viewport.count = state->dynamic.viewport.count;
+      typed_memcpy(cmd_buffer->state.dynamic.viewport.viewports, state->dynamic.viewport.viewports,
                    MAX_VIEWPORTS);
-      typed_memcpy(cmd_buffer->state.dynamic.viewport.xform, state->viewport.xform,
+      typed_memcpy(cmd_buffer->state.dynamic.viewport.xform, state->dynamic.viewport.xform,
                    MAX_VIEWPORTS);
 
       /* Restore all scissors. */
-      cmd_buffer->state.dynamic.scissor.count = state->scissor.count;
-      typed_memcpy(cmd_buffer->state.dynamic.scissor.scissors, state->scissor.scissors,
+      cmd_buffer->state.dynamic.scissor.count = state->dynamic.scissor.count;
+      typed_memcpy(cmd_buffer->state.dynamic.scissor.scissors, state->dynamic.scissor.scissors,
                    MAX_SCISSORS);
 
-      cmd_buffer->state.dynamic.line_stipple.factor = state->line_stipple.factor;
-      cmd_buffer->state.dynamic.line_stipple.pattern = state->line_stipple.pattern;
+      cmd_buffer->state.dynamic.line_stipple.factor = state->dynamic.line_stipple.factor;
+      cmd_buffer->state.dynamic.line_stipple.pattern = state->dynamic.line_stipple.pattern;
 
-      cmd_buffer->state.dynamic.cull_mode = state->cull_mode;
-      cmd_buffer->state.dynamic.front_face = state->front_face;
+      cmd_buffer->state.dynamic.cull_mode = state->dynamic.cull_mode;
+      cmd_buffer->state.dynamic.front_face = state->dynamic.front_face;
 
-      cmd_buffer->state.dynamic.primitive_topology = state->primitive_topology;
+      cmd_buffer->state.dynamic.primitive_topology = state->dynamic.primitive_topology;
 
-      cmd_buffer->state.dynamic.depth_test_enable = state->depth_test_enable;
-      cmd_buffer->state.dynamic.depth_write_enable = state->depth_write_enable;
-      cmd_buffer->state.dynamic.depth_compare_op = state->depth_compare_op;
-      cmd_buffer->state.dynamic.depth_bounds_test_enable = state->depth_bounds_test_enable;
-      cmd_buffer->state.dynamic.stencil_test_enable = state->stencil_test_enable;
+      cmd_buffer->state.dynamic.depth_test_enable = state->dynamic.depth_test_enable;
+      cmd_buffer->state.dynamic.depth_write_enable = state->dynamic.depth_write_enable;
+      cmd_buffer->state.dynamic.depth_compare_op = state->dynamic.depth_compare_op;
+      cmd_buffer->state.dynamic.depth_bounds_test_enable = state->dynamic.depth_bounds_test_enable;
+      cmd_buffer->state.dynamic.stencil_test_enable = state->dynamic.stencil_test_enable;
 
-      cmd_buffer->state.dynamic.stencil_op.front.compare_op = state->stencil_op.front.compare_op;
-      cmd_buffer->state.dynamic.stencil_op.front.fail_op = state->stencil_op.front.fail_op;
-      cmd_buffer->state.dynamic.stencil_op.front.pass_op = state->stencil_op.front.pass_op;
+      cmd_buffer->state.dynamic.stencil_op.front.compare_op = state->dynamic.stencil_op.front.compare_op;
+      cmd_buffer->state.dynamic.stencil_op.front.fail_op = state->dynamic.stencil_op.front.fail_op;
+      cmd_buffer->state.dynamic.stencil_op.front.pass_op = state->dynamic.stencil_op.front.pass_op;
       cmd_buffer->state.dynamic.stencil_op.front.depth_fail_op =
-         state->stencil_op.front.depth_fail_op;
+         state->dynamic.stencil_op.front.depth_fail_op;
 
-      cmd_buffer->state.dynamic.stencil_op.back.compare_op = state->stencil_op.back.compare_op;
-      cmd_buffer->state.dynamic.stencil_op.back.fail_op = state->stencil_op.back.fail_op;
-      cmd_buffer->state.dynamic.stencil_op.back.pass_op = state->stencil_op.back.pass_op;
+      cmd_buffer->state.dynamic.stencil_op.back.compare_op = state->dynamic.stencil_op.back.compare_op;
+      cmd_buffer->state.dynamic.stencil_op.back.fail_op = state->dynamic.stencil_op.back.fail_op;
+      cmd_buffer->state.dynamic.stencil_op.back.pass_op = state->dynamic.stencil_op.back.pass_op;
       cmd_buffer->state.dynamic.stencil_op.back.depth_fail_op =
-         state->stencil_op.back.depth_fail_op;
+         state->dynamic.stencil_op.back.depth_fail_op;
 
-      cmd_buffer->state.dynamic.line_width = state->line_width;
+      cmd_buffer->state.dynamic.line_width = state->dynamic.line_width;
 
-      cmd_buffer->state.dynamic.depth_bias.bias = state->depth_bias.bias;
-      cmd_buffer->state.dynamic.depth_bias.clamp = state->depth_bias.clamp;
-      cmd_buffer->state.dynamic.depth_bias.slope = state->depth_bias.slope;
+      cmd_buffer->state.dynamic.depth_bias.bias = state->dynamic.depth_bias.bias;
+      cmd_buffer->state.dynamic.depth_bias.clamp = state->dynamic.depth_bias.clamp;
+      cmd_buffer->state.dynamic.depth_bias.slope = state->dynamic.depth_bias.slope;
 
-      memcpy(cmd_buffer->state.dynamic.blend_constants, state->blend_constants,
-             sizeof(state->blend_constants));
+      memcpy(cmd_buffer->state.dynamic.blend_constants, state->dynamic.blend_constants,
+             sizeof(state->dynamic.blend_constants));
 
-      cmd_buffer->state.dynamic.depth_bounds.min = state->depth_bounds.min;
-      cmd_buffer->state.dynamic.depth_bounds.max = state->depth_bounds.max;
+      cmd_buffer->state.dynamic.depth_bounds.min = state->dynamic.depth_bounds.min;
+      cmd_buffer->state.dynamic.depth_bounds.max = state->dynamic.depth_bounds.max;
 
-      cmd_buffer->state.dynamic.stencil_compare_mask.front = state->stencil_compare_mask.front;
-      cmd_buffer->state.dynamic.stencil_compare_mask.back = state->stencil_compare_mask.back;
+      cmd_buffer->state.dynamic.stencil_compare_mask.front = state->dynamic.stencil_compare_mask.front;
+      cmd_buffer->state.dynamic.stencil_compare_mask.back = state->dynamic.stencil_compare_mask.back;
 
-      cmd_buffer->state.dynamic.stencil_write_mask.front = state->stencil_write_mask.front;
-      cmd_buffer->state.dynamic.stencil_write_mask.back = state->stencil_write_mask.back;
+      cmd_buffer->state.dynamic.stencil_write_mask.front = state->dynamic.stencil_write_mask.front;
+      cmd_buffer->state.dynamic.stencil_write_mask.back = state->dynamic.stencil_write_mask.back;
 
-      cmd_buffer->state.dynamic.stencil_reference.front = state->stencil_reference.front;
-      cmd_buffer->state.dynamic.stencil_reference.back = state->stencil_reference.back;
+      cmd_buffer->state.dynamic.stencil_reference.front = state->dynamic.stencil_reference.front;
+      cmd_buffer->state.dynamic.stencil_reference.back = state->dynamic.stencil_reference.back;
 
-      cmd_buffer->state.dynamic.fragment_shading_rate.size = state->fragment_shading_rate.size;
+      cmd_buffer->state.dynamic.fragment_shading_rate.size = state->dynamic.fragment_shading_rate.size;
       cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[0] =
-         state->fragment_shading_rate.combiner_ops[0];
+         state->dynamic.fragment_shading_rate.combiner_ops[0];
       cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[1] =
-         state->fragment_shading_rate.combiner_ops[1];
+         state->dynamic.fragment_shading_rate.combiner_ops[1];
 
-      cmd_buffer->state.dynamic.depth_bias_enable = state->depth_bias_enable;
+      cmd_buffer->state.dynamic.depth_bias_enable = state->dynamic.depth_bias_enable;
 
-      cmd_buffer->state.dynamic.primitive_restart_enable = state->primitive_restart_enable;
+      cmd_buffer->state.dynamic.primitive_restart_enable = state->dynamic.primitive_restart_enable;
 
-      cmd_buffer->state.dynamic.rasterizer_discard_enable = state->rasterizer_discard_enable;
+      cmd_buffer->state.dynamic.rasterizer_discard_enable = state->dynamic.rasterizer_discard_enable;
 
-      cmd_buffer->state.dynamic.logic_op = state->logic_op;
+      cmd_buffer->state.dynamic.logic_op = state->dynamic.logic_op;
 
-      cmd_buffer->state.dynamic.color_write_enable = state->color_write_enable;
+      cmd_buffer->state.dynamic.color_write_enable = state->dynamic.color_write_enable;
 
-      cmd_buffer->state.dynamic.discard_rectangle.count = state->discard_rectangle.count;
+      cmd_buffer->state.dynamic.discard_rectangle.count = state->dynamic.discard_rectangle.count;
       typed_memcpy(cmd_buffer->state.dynamic.discard_rectangle.rectangles,
-                   state->discard_rectangle.rectangles,
+                   state->dynamic.discard_rectangle.rectangles,
                    MAX_DISCARD_RECTANGLES);
 
       cmd_buffer->state.dirty |=
@@ -307,7 +307,7 @@ radv_meta_restore(const struct radv_meta_saved_state *state, struct radv_cmd_buf
 
    if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
       typed_memcpy(&cmd_buffer->state.dynamic.sample_location.locations,
-                   &state->sample_location.locations, 1);
+                   &state->dynamic.sample_location.locations, 1);
 
       cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS;
    }
diff --git a/src/amd/vulkan/radv_meta.h b/src/amd/vulkan/radv_meta.h
index d48025bd6ce..854cd37766c 100644
--- a/src/amd/vulkan/radv_meta.h
+++ b/src/amd/vulkan/radv_meta.h
@@ -47,9 +47,7 @@ struct radv_meta_saved_state {
 
    struct radv_descriptor_set *old_descriptor_set0;
    struct radv_pipeline *old_pipeline;
-   struct radv_viewport_state viewport;
-   struct radv_scissor_state scissor;
-   struct radv_sample_locations_state sample_location;
+   struct radv_dynamic_state dynamic;
 
    char push_constants[MAX_PUSH_CONSTANTS_SIZE];
 
@@ -58,83 +56,6 @@ struct radv_meta_saved_state {
    struct radv_attachment_state *attachments;
    struct vk_framebuffer *framebuffer;
    VkRect2D render_area;
-
-   VkCullModeFlags cull_mode;
-   VkFrontFace front_face;
-
-   unsigned primitive_topology;
-
-   bool depth_test_enable;
-   bool depth_write_enable;
-   unsigned depth_compare_op;
-   bool depth_bounds_test_enable;
-   bool stencil_test_enable;
-
-   struct {
-      uint32_t front;
-      uint32_t back;
-   } stencil_write_mask;
-
-   struct {
-      struct {
-         VkStencilOp fail_op;
-         VkStencilOp pass_op;
-         VkStencilOp depth_fail_op;
-         VkCompareOp compare_op;
-      } front;
-
-      struct {
-         VkStencilOp fail_op;
-         VkStencilOp pass_op;
-         VkStencilOp depth_fail_op;
-         VkCompareOp compare_op;
-      } back;
-   } stencil_op;
-
-   struct {
-      uint32_t front;
-      uint32_t back;
-   } stencil_reference;
-
-   struct {
-      VkExtent2D size;
-      VkFragmentShadingRateCombinerOpKHR combiner_ops[2];
-   } fragment_shading_rate;
-
-   bool depth_bias_enable;
-   bool primitive_restart_enable;
-   bool rasterizer_discard_enable;
-
-   unsigned logic_op;
-
-   uint32_t color_write_enable;
-
-   float line_width;
-
-   struct {
-      float bias;
-      float clamp;
-      float slope;
-   } depth_bias;
-
-   float blend_constants[4];
-
-   struct {
-      float min;
-      float max;
-   } depth_bounds;
-
-   struct {
-      uint32_t front;
-      uint32_t back;
-   } stencil_compare_mask;
-
-   struct radv_discard_rectangle_state discard_rectangle;
-
-   struct {
-      uint32_t factor;
-      uint16_t pattern;
-   } line_stipple;
 };
 
 VkResult radv_device_init_meta_clear_state(struct radv_device *device, bool on_demand);



More information about the mesa-commit mailing list