r300-gallium: Re-translate shaders if constants change.

This commit is contained in:
Corbin Simpson
2009-04-05 01:32:00 -07:00
parent ce7963f338
commit 50ee103cf0
2 changed files with 9 additions and 3 deletions
+7 -2
View File
@@ -153,8 +153,13 @@ static void
/* If the number of constants have changed, invalidate the shader. */
if (r300->shader_constants[shader].user_count != i) {
r300->fs->translated = FALSE;
r300_translate_fragment_shader(r300, r300->fs);
if (shader == PIPE_SHADER_FRAGMENT && r300->fs) {
r300->fs->translated = FALSE;
r300_translate_fragment_shader(r300, r300->fs);
} else if (shader == PIPE_SHADER_VERTEX && r300->vs) {
r300->vs->translated = FALSE;
r300_translate_vertex_shader(r300, r300->vs);
}
}
}
@@ -305,7 +305,8 @@ static void r300_update_rs_block(struct r300_context* r300)
void r300_update_derived_state(struct r300_context* r300)
{
if (r300->dirty_state & R300_NEW_FRAGMENT_SHADER) {
if (r300->dirty_state &
(R300_NEW_FRAGMENT_SHADER | R300_NEW_VERTEX_SHADER)) {
r300_update_vertex_layout(r300);
}