mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 01:10:16 +01:00
radeonsi: fix VM faults due NULL internal const buffers on CIK
They are harmless, but the interrupts do decrease performance. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97039 Cc: 12.0 <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
577f85e2bb
commit
2c13abb491
1 changed files with 11 additions and 2 deletions
|
|
@ -251,8 +251,8 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
|
|||
si_begin_new_cs(sctx);
|
||||
r600_query_init_backend_mask(&sctx->b); /* this emits commands and must be last */
|
||||
|
||||
/* CIK cannot unbind a constant buffer (S_BUFFER_LOAD is buggy
|
||||
* with a NULL buffer). We need to use a dummy buffer instead. */
|
||||
/* CIK cannot unbind a constant buffer (S_BUFFER_LOAD doesn't skip loads
|
||||
* if NUM_RECORDS == 0). We need to use a dummy buffer instead. */
|
||||
if (sctx->b.chip_class == CIK) {
|
||||
sctx->null_const_buf.buffer = pipe_buffer_create(screen, PIPE_BIND_CONSTANT_BUFFER,
|
||||
PIPE_USAGE_DEFAULT, 16);
|
||||
|
|
@ -267,6 +267,15 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
|
|||
}
|
||||
}
|
||||
|
||||
si_set_rw_buffer(sctx, SI_HS_CONST_DEFAULT_TESS_LEVELS,
|
||||
&sctx->null_const_buf);
|
||||
si_set_rw_buffer(sctx, SI_VS_CONST_CLIP_PLANES,
|
||||
&sctx->null_const_buf);
|
||||
si_set_rw_buffer(sctx, SI_PS_CONST_POLY_STIPPLE,
|
||||
&sctx->null_const_buf);
|
||||
si_set_rw_buffer(sctx, SI_PS_CONST_SAMPLE_POSITIONS,
|
||||
&sctx->null_const_buf);
|
||||
|
||||
/* Clear the NULL constant buffer, because loads should return zeros. */
|
||||
sctx->b.clear_buffer(&sctx->b.b, sctx->null_const_buf.buffer, 0,
|
||||
sctx->null_const_buf.buffer->width0, 0,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue