i965: Upload 3DSTATE_BINDING_TABLE_POINTERS_HS when !TCS on Gen9+.
Gen9+ requires us to emit 3DSTATE_BINDING_TABLE_POINTERS_HS for the hull shader push constants to take effect. The passthrough TCS uses push constants for the default tessellation levels. So, when those change, we need to re-upload the binding table as well. Fixes five Piglit tests on Skylake: - spec/arb_tessellation_shader/vs-tes-vertex - spec/arb_tessellation_shader/vs-tes-tessinner-tessouter-inputs-quads - spec/arb_tessellation_shader/vs-tes-tessinner-tessouter-inputs-tris - spec/arb_tessellation_shader/tes-read-texture - spec/arb_tessellation_shader/tess_with_geometry Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
@@ -196,12 +196,12 @@ const struct brw_tracked_state brw_wm_binding_table = {
|
|||||||
.emit = brw_upload_wm_binding_table,
|
.emit = brw_upload_wm_binding_table,
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Upload the TCS binding table (if TCS is active). */
|
/** Upload the TCS binding table (if tessellation stages are active). */
|
||||||
static void
|
static void
|
||||||
brw_tcs_upload_binding_table(struct brw_context *brw)
|
brw_tcs_upload_binding_table(struct brw_context *brw)
|
||||||
{
|
{
|
||||||
/* If there's no TCS, skip changing anything. */
|
/* Skip if the tessellation stages are disabled. */
|
||||||
if (brw->tess_ctrl_program == NULL)
|
if (brw->tess_eval_program == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* BRW_NEW_TCS_PROG_DATA */
|
/* BRW_NEW_TCS_PROG_DATA */
|
||||||
@@ -216,6 +216,7 @@ const struct brw_tracked_state brw_tcs_binding_table = {
|
|||||||
.dirty = {
|
.dirty = {
|
||||||
.mesa = 0,
|
.mesa = 0,
|
||||||
.brw = BRW_NEW_BATCH |
|
.brw = BRW_NEW_BATCH |
|
||||||
|
BRW_NEW_DEFAULT_TESS_LEVELS |
|
||||||
BRW_NEW_SURFACES |
|
BRW_NEW_SURFACES |
|
||||||
BRW_NEW_TCS_CONSTBUF |
|
BRW_NEW_TCS_CONSTBUF |
|
||||||
BRW_NEW_TCS_PROG_DATA,
|
BRW_NEW_TCS_PROG_DATA,
|
||||||
|
Reference in New Issue
Block a user