summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_binding_tables.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2015-09-30 15:42:54 -0700
committerKenneth Graunke <kenneth@whitecape.org>2015-12-11 13:11:15 -0800
commitf34c04fda69c6fc91e60633d41108e488af1f88a (patch)
tree351d922658900de8f2d028b8cca8b73392a21677 /src/mesa/drivers/dri/i965/brw_binding_tables.c
parent82455e5396753f034a946dc036443fabc8010464 (diff)
downloadexternal_mesa3d-f34c04fda69c6fc91e60633d41108e488af1f88a.zip
external_mesa3d-f34c04fda69c6fc91e60633d41108e488af1f88a.tar.gz
external_mesa3d-f34c04fda69c6fc91e60633d41108e488af1f88a.tar.bz2
i965: Add tessellation shader surface support.
This is brw_gs_surface_state.c copy and pasted twice with search and replace. brw_binding_table.c code is similarly copy and pasted. v2: Drop dword_pitch related fields. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Acked-by: Jason Ekstrand <jason.ekstrand@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_binding_tables.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_binding_tables.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_binding_tables.c b/src/mesa/drivers/dri/i965/brw_binding_tables.c
index d8226e0..80935cf 100644
--- a/src/mesa/drivers/dri/i965/brw_binding_tables.c
+++ b/src/mesa/drivers/dri/i965/brw_binding_tables.c
@@ -196,6 +196,60 @@ const struct brw_tracked_state brw_wm_binding_table = {
.emit = brw_upload_wm_binding_table,
};
+/** Upload the TCS binding table (if TCS is active). */
+static void
+brw_tcs_upload_binding_table(struct brw_context *brw)
+{
+ /* If there's no TCS, skip changing anything. */
+ if (brw->tess_ctrl_program == NULL)
+ return;
+
+ /* BRW_NEW_TCS_PROG_DATA */
+ const struct brw_stage_prog_data *prog_data = brw->tcs.base.prog_data;
+ brw_upload_binding_table(brw,
+ _3DSTATE_BINDING_TABLE_POINTERS_HS,
+ prog_data,
+ &brw->tcs.base);
+}
+
+const struct brw_tracked_state brw_tcs_binding_table = {
+ .dirty = {
+ .mesa = 0,
+ .brw = BRW_NEW_BATCH |
+ BRW_NEW_SURFACES |
+ BRW_NEW_TCS_CONSTBUF |
+ BRW_NEW_TCS_PROG_DATA,
+ },
+ .emit = brw_tcs_upload_binding_table,
+};
+
+/** Upload the TES binding table (if TES is active). */
+static void
+brw_tes_upload_binding_table(struct brw_context *brw)
+{
+ /* If there's no TES, skip changing anything. */
+ if (brw->tess_eval_program == NULL)
+ return;
+
+ /* BRW_NEW_TES_PROG_DATA */
+ const struct brw_stage_prog_data *prog_data = brw->tes.base.prog_data;
+ brw_upload_binding_table(brw,
+ _3DSTATE_BINDING_TABLE_POINTERS_DS,
+ prog_data,
+ &brw->tes.base);
+}
+
+const struct brw_tracked_state brw_tes_binding_table = {
+ .dirty = {
+ .mesa = 0,
+ .brw = BRW_NEW_BATCH |
+ BRW_NEW_SURFACES |
+ BRW_NEW_TES_CONSTBUF |
+ BRW_NEW_TES_PROG_DATA,
+ },
+ .emit = brw_tes_upload_binding_table,
+};
+
/** Upload the GS binding table (if GS is active). */
static void
brw_gs_upload_binding_table(struct brw_context *brw)