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:

committed by
Marge Bot

parent
104a564920
commit
3bc248e564
@@ -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 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;
|
||||
|
||||
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 (memcmp(&dest->discard_rectangle.rectangles, &src->discard_rectangle.rectangles,
|
||||
src->discard_rectangle.count * sizeof(VkRect2D))) {
|
||||
typed_memcpy(dest->discard_rectangle.rectangles, src->discard_rectangle.rectangles,
|
||||
src->discard_rectangle.count);
|
||||
if (memcmp(&dest->vk.dr.rectangles, &src->vk.dr.rectangles,
|
||||
src->vk.dr.rectangle_count * sizeof(VkRect2D))) {
|
||||
typed_memcpy(dest->vk.dr.rectangles, src->vk.dr.rectangles, src->vk.dr.rectangle_count);
|
||||
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;
|
||||
|
||||
if (!d->discard_rectangle.count)
|
||||
if (!d->vk.dr.rectangle_count)
|
||||
return;
|
||||
|
||||
radeon_set_context_reg_seq(cmd_buffer->cs, R_028210_PA_SC_CLIPRECT_0_TL,
|
||||
d->discard_rectangle.count * 2);
|
||||
for (unsigned i = 0; i < d->discard_rectangle.count; ++i) {
|
||||
VkRect2D rect = d->discard_rectangle.rectangles[i];
|
||||
d->vk.dr.rectangle_count * 2);
|
||||
for (unsigned i = 0; i < d->vk.dr.rectangle_count; ++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_028214_BR_X(rect.offset.x + rect.extent.width) |
|
||||
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(total_count >= 1 && total_count <= MAX_DISCARD_RECTANGLES);
|
||||
|
||||
typed_memcpy(&state->dynamic.discard_rectangle.rectangles[firstDiscardRectangle],
|
||||
pDiscardRectangles, discardRectangleCount);
|
||||
typed_memcpy(&state->dynamic.vk.dr.rectangles[firstDiscardRectangle], pDiscardRectangles,
|
||||
discardRectangleCount);
|
||||
|
||||
state->dirty |= RADV_CMD_DIRTY_DYNAMIC_DISCARD_RECTANGLE;
|
||||
}
|
||||
|
@@ -1637,10 +1637,9 @@ radv_pipeline_init_dynamic_state(struct radv_graphics_pipeline *pipeline,
|
||||
}
|
||||
|
||||
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) {
|
||||
typed_memcpy(dynamic->discard_rectangle.rectangles, state->dr->rectangles,
|
||||
state->dr->rectangle_count);
|
||||
typed_memcpy(dynamic->vk.dr.rectangles, state->dr->rectangles, state->dr->rectangle_count);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1298,11 +1298,6 @@ struct radv_streamout_state {
|
||||
bool streamout_enabled;
|
||||
};
|
||||
|
||||
struct radv_discard_rectangle_state {
|
||||
uint32_t count;
|
||||
VkRect2D rectangles[MAX_DISCARD_RECTANGLES];
|
||||
};
|
||||
|
||||
struct radv_sample_locations_state {
|
||||
VkSampleCountFlagBits per_pixel;
|
||||
VkExtent2D grid_size;
|
||||
@@ -1372,8 +1367,6 @@ struct radv_dynamic_state {
|
||||
uint32_t back;
|
||||
} stencil_reference;
|
||||
|
||||
struct radv_discard_rectangle_state discard_rectangle;
|
||||
|
||||
struct radv_sample_locations_state sample_location;
|
||||
|
||||
struct {
|
||||
|
Reference in New Issue
Block a user