mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 13:10:10 +01:00
radeonsi: Fix draws using user index buffer.
Was broken since commit bf469f4edc
('gallium: add void *user_buffer in pipe_index_buffer').
Fixes 11 piglit tests and lots of missing geometry e.g. in TORCS.
NOTE: This is a candidate for the 9.1 branch.
This commit is contained in:
parent
1bb52bab9e
commit
a8a5055f2d
1 changed files with 3 additions and 4 deletions
|
|
@ -524,10 +524,8 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
|||
struct pipe_index_buffer ib = {};
|
||||
uint32_t cp_coher_cntl;
|
||||
|
||||
if ((!info->count && (info->indexed || !info->count_from_stream_output)) ||
|
||||
(info->indexed && !rctx->index_buffer.buffer)) {
|
||||
if (!info->count && (info->indexed || !info->count_from_stream_output))
|
||||
return;
|
||||
}
|
||||
|
||||
if (!rctx->ps_shader || !rctx->vs_shader)
|
||||
return;
|
||||
|
|
@ -538,13 +536,14 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
|
|||
if (info->indexed) {
|
||||
/* Initialize the index buffer struct. */
|
||||
pipe_resource_reference(&ib.buffer, rctx->index_buffer.buffer);
|
||||
ib.user_buffer = rctx->index_buffer.user_buffer;
|
||||
ib.index_size = rctx->index_buffer.index_size;
|
||||
ib.offset = rctx->index_buffer.offset + info->start * ib.index_size;
|
||||
|
||||
/* Translate or upload, if needed. */
|
||||
r600_translate_index_buffer(rctx, &ib, info->count);
|
||||
|
||||
if (ib.user_buffer) {
|
||||
if (ib.user_buffer && !ib.buffer) {
|
||||
r600_upload_index_buffer(rctx, &ib, info->count);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue