radv: use vk_dynamic_graphics_state for the discard rectangles state

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20314>
This commit is contained in:
Samuel Pitoiset
2022-12-14 09:23:09 +01:00
committed by Marge Bot
parent 104a564920
commit 3bc248e564
3 changed files with 12 additions and 21 deletions

View File

@@ -152,7 +152,7 @@ radv_bind_dynamic_state(struct radv_cmd_buffer *cmd_buffer, const struct radv_dy
uint64_t copy_mask = src->mask; uint64_t copy_mask = src->mask;
uint64_t dest_mask = 0; uint64_t dest_mask = 0;
dest->discard_rectangle.count = src->discard_rectangle.count; dest->vk.dr.rectangle_count = src->vk.dr.rectangle_count;
dest->sample_location.count = src->sample_location.count; dest->sample_location.count = src->sample_location.count;
if (copy_mask & RADV_DYNAMIC_VIEWPORT) { if (copy_mask & RADV_DYNAMIC_VIEWPORT) {
@@ -190,10 +190,9 @@ radv_bind_dynamic_state(struct radv_cmd_buffer *cmd_buffer, const struct radv_dy
} }
if (copy_mask & RADV_DYNAMIC_DISCARD_RECTANGLE) { if (copy_mask & RADV_DYNAMIC_DISCARD_RECTANGLE) {
if (memcmp(&dest->discard_rectangle.rectangles, &src->discard_rectangle.rectangles, if (memcmp(&dest->vk.dr.rectangles, &src->vk.dr.rectangles,
src->discard_rectangle.count * sizeof(VkRect2D))) { src->vk.dr.rectangle_count * sizeof(VkRect2D))) {
typed_memcpy(dest->discard_rectangle.rectangles, src->discard_rectangle.rectangles, typed_memcpy(dest->vk.dr.rectangles, src->vk.dr.rectangles, src->vk.dr.rectangle_count);
src->discard_rectangle.count);
dest_mask |= RADV_DYNAMIC_DISCARD_RECTANGLE; dest_mask |= RADV_DYNAMIC_DISCARD_RECTANGLE;
} }
} }
@@ -2079,13 +2078,13 @@ radv_emit_discard_rectangle(struct radv_cmd_buffer *cmd_buffer)
{ {
const struct radv_dynamic_state *d = &cmd_buffer->state.dynamic; const struct radv_dynamic_state *d = &cmd_buffer->state.dynamic;
if (!d->discard_rectangle.count) if (!d->vk.dr.rectangle_count)
return; return;
radeon_set_context_reg_seq(cmd_buffer->cs, R_028210_PA_SC_CLIPRECT_0_TL, radeon_set_context_reg_seq(cmd_buffer->cs, R_028210_PA_SC_CLIPRECT_0_TL,
d->discard_rectangle.count * 2); d->vk.dr.rectangle_count * 2);
for (unsigned i = 0; i < d->discard_rectangle.count; ++i) { for (unsigned i = 0; i < d->vk.dr.rectangle_count; ++i) {
VkRect2D rect = d->discard_rectangle.rectangles[i]; VkRect2D rect = d->vk.dr.rectangles[i];
radeon_emit(cmd_buffer->cs, S_028210_TL_X(rect.offset.x) | S_028210_TL_Y(rect.offset.y)); radeon_emit(cmd_buffer->cs, S_028210_TL_X(rect.offset.x) | S_028210_TL_Y(rect.offset.y));
radeon_emit(cmd_buffer->cs, S_028214_BR_X(rect.offset.x + rect.extent.width) | radeon_emit(cmd_buffer->cs, S_028214_BR_X(rect.offset.x + rect.extent.width) |
S_028214_BR_Y(rect.offset.y + rect.extent.height)); S_028214_BR_Y(rect.offset.y + rect.extent.height));
@@ -6308,8 +6307,8 @@ radv_CmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer, uint32_t firstDisc
assert(firstDiscardRectangle < MAX_DISCARD_RECTANGLES); assert(firstDiscardRectangle < MAX_DISCARD_RECTANGLES);
assert(total_count >= 1 && total_count <= MAX_DISCARD_RECTANGLES); assert(total_count >= 1 && total_count <= MAX_DISCARD_RECTANGLES);
typed_memcpy(&state->dynamic.discard_rectangle.rectangles[firstDiscardRectangle], typed_memcpy(&state->dynamic.vk.dr.rectangles[firstDiscardRectangle], pDiscardRectangles,
pDiscardRectangles, discardRectangleCount); discardRectangleCount);
state->dirty |= RADV_CMD_DIRTY_DYNAMIC_DISCARD_RECTANGLE; state->dirty |= RADV_CMD_DIRTY_DYNAMIC_DISCARD_RECTANGLE;
} }

View File

@@ -1637,10 +1637,9 @@ radv_pipeline_init_dynamic_state(struct radv_graphics_pipeline *pipeline,
} }
if (needed_states & RADV_DYNAMIC_DISCARD_RECTANGLE) { if (needed_states & RADV_DYNAMIC_DISCARD_RECTANGLE) {
dynamic->discard_rectangle.count = state->dr->rectangle_count; dynamic->vk.dr.rectangle_count = state->dr->rectangle_count;
if (states & RADV_DYNAMIC_DISCARD_RECTANGLE) { if (states & RADV_DYNAMIC_DISCARD_RECTANGLE) {
typed_memcpy(dynamic->discard_rectangle.rectangles, state->dr->rectangles, typed_memcpy(dynamic->vk.dr.rectangles, state->dr->rectangles, state->dr->rectangle_count);
state->dr->rectangle_count);
} }
} }

View File

@@ -1298,11 +1298,6 @@ struct radv_streamout_state {
bool streamout_enabled; bool streamout_enabled;
}; };
struct radv_discard_rectangle_state {
uint32_t count;
VkRect2D rectangles[MAX_DISCARD_RECTANGLES];
};
struct radv_sample_locations_state { struct radv_sample_locations_state {
VkSampleCountFlagBits per_pixel; VkSampleCountFlagBits per_pixel;
VkExtent2D grid_size; VkExtent2D grid_size;
@@ -1372,8 +1367,6 @@ struct radv_dynamic_state {
uint32_t back; uint32_t back;
} stencil_reference; } stencil_reference;
struct radv_discard_rectangle_state discard_rectangle;
struct radv_sample_locations_state sample_location; struct radv_sample_locations_state sample_location;
struct { struct {