util/prim_restart: revert part of bad fix

When drawing using util_translate_prim_restart_ib, zink explicitly
ignores pipe_draw_start_count_bias::start, because
util_translate_prim_restart_ib used to create a new index-buffer without
padding at the start.

This makes a lot of sense, because creating a padded index buffer is
just wasteful.

So let's walk back on the choice of starting to pad the output buffer.

Fixes: 1272c2e052 ("util/prim_restart: fix util_translate_prim_restart_ib")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4851
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11059>
(cherry picked from commit 05bb449610)
This commit is contained in:
Erik Faye-Lund 2021-05-28 12:14:46 +02:00 committed by Eric Engestrom
parent 524341f109
commit c53194d876
2 changed files with 4 additions and 5 deletions

View file

@ -661,7 +661,7 @@
"description": "util/prim_restart: revert part of bad fix",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "1272c2e05246cad647324ffdccf56435b97dec1c"
},

View file

@ -125,14 +125,13 @@ util_translate_prim_restart_ib(struct pipe_context *context,
/* Create new index buffer */
*dst_buffer = pipe_buffer_create(screen, PIPE_BIND_INDEX_BUFFER,
PIPE_USAGE_STREAM,
(start + count) * dst_index_size);
count * dst_index_size);
if (!*dst_buffer)
goto error;
/* Map new / dest index buffer */
dst_map = pipe_buffer_map_range(context, *dst_buffer,
start * dst_index_size, count * dst_index_size,
PIPE_MAP_WRITE, &dst_transfer);
dst_map = pipe_buffer_map(context, *dst_buffer,
PIPE_MAP_WRITE, &dst_transfer);
if (!dst_map)
goto error;