mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 13:50:09 +01:00
util/prim_restart: fix util_translate_prim_restart_ib
this was broken for the indirect case if the indirect draw count or firstIndex was nonzero and also would rewrite the index buffer onto the wrong offset of the dst buffer Fixes:0c85d6c523("gallium/util: factor out primitive-restart rewriting logic") Fixes:330d0607ed("gallium: remove pipe_index_buffer and set_index_buffer") Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10909>
This commit is contained in:
parent
77fcf70082
commit
1272c2e052
1 changed files with 5 additions and 4 deletions
|
|
@ -125,13 +125,14 @@ 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,
|
||||
count * dst_index_size);
|
||||
(start + count) * dst_index_size);
|
||||
if (!*dst_buffer)
|
||||
goto error;
|
||||
|
||||
/* Map new / dest index buffer */
|
||||
dst_map = pipe_buffer_map(context, *dst_buffer,
|
||||
PIPE_MAP_WRITE, &dst_transfer);
|
||||
dst_map = pipe_buffer_map_range(context, *dst_buffer,
|
||||
start * dst_index_size, count * dst_index_size,
|
||||
PIPE_MAP_WRITE, &dst_transfer);
|
||||
if (!dst_map)
|
||||
goto error;
|
||||
|
||||
|
|
@ -148,7 +149,7 @@ util_translate_prim_restart_ib(struct pipe_context *context,
|
|||
goto error;
|
||||
|
||||
util_translate_prim_restart_data(src_index_size, src_map, dst_map,
|
||||
draw->count, info->restart_index);
|
||||
count, info->restart_index);
|
||||
|
||||
if (src_transfer)
|
||||
pipe_buffer_unmap(context, src_transfer);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue