mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 22:10:11 +01:00
r300g: fix geometry corruptions
PVS flush is needed before changing the vertex shader or vertex shader constants.
This commit is contained in:
parent
2db46af875
commit
3d73852121
1 changed files with 14 additions and 2 deletions
|
|
@ -652,7 +652,7 @@ void r300_emit_vertex_program_code(struct r300_context* r300,
|
|||
return;
|
||||
}
|
||||
|
||||
BEGIN_CS(11 + code->length);
|
||||
BEGIN_CS(9 + code->length);
|
||||
/* R300_VAP_PVS_CODE_CNTL_0
|
||||
* R300_VAP_PVS_CONST_CNTL
|
||||
* R300_VAP_PVS_CODE_CNTL_1
|
||||
|
|
@ -674,7 +674,6 @@ void r300_emit_vertex_program_code(struct r300_context* r300,
|
|||
R300_PVS_NUM_CNTLRS(5) |
|
||||
R300_PVS_NUM_FPUS(r300screen->caps->num_vert_fpus) |
|
||||
R300_PVS_VF_MAX_VTX_NUM(12));
|
||||
OUT_CS_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0x0);
|
||||
END_CS;
|
||||
}
|
||||
|
||||
|
|
@ -749,6 +748,15 @@ void r300_flush_textures(struct r300_context* r300)
|
|||
END_CS;
|
||||
}
|
||||
|
||||
static void r300_flush_pvs(struct r300_context* r300)
|
||||
{
|
||||
CS_LOCALS(r300);
|
||||
|
||||
BEGIN_CS(2);
|
||||
OUT_CS_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0x0);
|
||||
END_CS;
|
||||
}
|
||||
|
||||
/* Emit all dirty state. */
|
||||
void r300_emit_dirty_state(struct r300_context* r300)
|
||||
{
|
||||
|
|
@ -922,6 +930,10 @@ validate:
|
|||
r300->dirty_state &= ~R300_NEW_VERTEX_FORMAT;
|
||||
}
|
||||
|
||||
if (r300->dirty_state & (R300_NEW_VERTEX_SHADER | R300_NEW_VERTEX_SHADER_CONSTANTS)) {
|
||||
r300_flush_pvs(r300);
|
||||
}
|
||||
|
||||
if (r300->dirty_state & R300_NEW_VERTEX_SHADER) {
|
||||
r300_emit_vertex_shader(r300, r300->vs);
|
||||
r300->dirty_state &= ~R300_NEW_VERTEX_SHADER;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue