summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_tcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_tcs.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_tcs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_tcs.c b/src/mesa/drivers/dri/i965/brw_tcs.c
index b33a16d1710..b5eb4cdde5e 100644
--- a/src/mesa/drivers/dri/i965/brw_tcs.c
+++ b/src/mesa/drivers/dri/i965/brw_tcs.c
@@ -65,6 +65,8 @@ brw_tcs_debug_recompile(struct brw_context *brw,
return;
}
+ found |= key_debug(brw, "input vertices", old_key->input_vertices,
+ key->input_vertices);
found |= key_debug(brw, "TES primitive mode", old_key->tes_primitive_mode,
key->tes_primitive_mode);
found |= brw_debug_recompile_sampler_key(brw, &old_key->tex, &key->tex);
@@ -188,6 +190,7 @@ brw_upload_tcs_prog(struct brw_context *brw)
if (!brw_state_dirty(brw,
_NEW_TEXTURE,
+ BRW_NEW_PATCH_PRIMITIVE |
BRW_NEW_TESS_CTRL_PROGRAM |
BRW_NEW_TESS_EVAL_PROGRAM))
return;
@@ -207,6 +210,8 @@ brw_upload_tcs_prog(struct brw_context *brw)
key.program_string_id = tcp->id;
+ key.input_vertices = ctx->TessCtrlProgram.patch_vertices;
+
/* _NEW_TEXTURE */
brw_populate_sampler_prog_key_data(ctx, prog, stage_state->sampler_count,
&key.tex);
@@ -251,6 +256,9 @@ brw_tcs_precompile(struct gl_context *ctx,
key.program_string_id = btcp->id;
brw_setup_tex_for_precompile(brw, &key.tex, prog);
+ /* Guess that the input and output patches have the same dimensionality. */
+ key.input_vertices = shader_prog->TessCtrl.VerticesOut;
+
key.tes_primitive_mode = GL_TRIANGLES;
success = brw_codegen_tcs_prog(brw, shader_prog, btcp, &key);