mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
panvk/csf: Emit INDEX_BUFFER[_SIZE] even for non-indexed draws
The index buffer and index buffer size don't affect whether or not we're actually doing indexed rendering so we should just emit them whenever they change. Otherwise, if someone sets an index buffer and then does a non-indexed draw and then an indexed draw, the first draw will clear the dirty bits without setting the index buffer registers and the second draw won't know to re-emit them. Fixes:5544d39f44("panvk: Add a CSF backend for panvk_queue/cmd_buffer") Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Reviewed-by: Marc Alcala Prieto <marc.alcalaprieto@arm.com> (cherry picked from commit9c8e8ed655) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41268>
This commit is contained in:
parent
7553e83098
commit
0dd2d4368b
2 changed files with 4 additions and 5 deletions
|
|
@ -1404,7 +1404,7 @@
|
|||
"description": "panvk/csf: Emit INDEX_BUFFER[_SIZE] even for non-indexed draws",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "5544d39f4420da88c53aaf8dd48d86ac92bd0eaa",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -2101,13 +2101,12 @@ prepare_dcd(struct panvk_cmd_buffer *cmdbuf,
|
|||
}
|
||||
|
||||
static void
|
||||
prepare_index_buffer(struct panvk_cmd_buffer *cmdbuf,
|
||||
struct panvk_draw_info *draw)
|
||||
prepare_index_buffer(struct panvk_cmd_buffer *cmdbuf)
|
||||
{
|
||||
struct cs_builder *b =
|
||||
panvk_get_cs_builder(cmdbuf, PANVK_SUBQUEUE_VERTEX_TILER);
|
||||
|
||||
if (draw->index.size && gfx_state_dirty(cmdbuf, IB)) {
|
||||
if (gfx_state_dirty(cmdbuf, IB)) {
|
||||
cs_move32_to(b, cs_sr_reg32(b, IDVS, INDEX_BUFFER_SIZE),
|
||||
cmdbuf->state.gfx.ib.size);
|
||||
|
||||
|
|
@ -2300,7 +2299,7 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw)
|
|||
return result;
|
||||
|
||||
cs_update_vt_ctx(b) {
|
||||
prepare_index_buffer(cmdbuf, draw);
|
||||
prepare_index_buffer(cmdbuf);
|
||||
|
||||
set_tiler_idvs_flags(b, cmdbuf, draw);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue