summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/gen8_sf_state.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2015-10-26 00:52:14 -0700
committerKenneth Graunke <kenneth@whitecape.org>2015-10-28 22:05:08 -0700
commit5392328a3218c0a69301badefe8fed79ca0d8642 (patch)
treecf375f1e60fbe0c2a49e18910a9557ea0521f990 /src/mesa/drivers/dri/i965/gen8_sf_state.c
parentb3d19d20f27c9169641051ac6f855481e58623b3 (diff)
downloadexternal_mesa3d-5392328a3218c0a69301badefe8fed79ca0d8642.zip
external_mesa3d-5392328a3218c0a69301badefe8fed79ca0d8642.tar.gz
external_mesa3d-5392328a3218c0a69301badefe8fed79ca0d8642.tar.bz2
i965: Make calculate_attr_overrides return the URB read offset.
Traditionally, we've hardcoded "URB Entry Read Offset" to 1 (which represents 2 vec4 varying slots) to skip over the 8 DWord VUE header. In order to support ARB_fragment_layer_viewport, we'll need to read from that header. This patch adds the basic plumbing necessary to calculate a value dynamically and hook it up in the SBE packets. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen8_sf_state.c')
-rw-r--r--src/mesa/drivers/dri/i965/gen8_sf_state.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/gen8_sf_state.c b/src/mesa/drivers/dri/i965/gen8_sf_state.c
index 6b655ee..8b6f31f 100644
--- a/src/mesa/drivers/dri/i965/gen8_sf_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_sf_state.c
@@ -37,6 +37,7 @@ upload_sbe(struct brw_context *brw)
uint32_t num_outputs = brw->wm.prog_data->num_varying_inputs;
uint16_t attr_overrides[VARYING_SLOT_MAX];
uint32_t urb_entry_read_length;
+ uint32_t urb_entry_read_offset;
uint32_t point_sprite_enables;
uint32_t flat_enables;
int sbe_cmd_length;
@@ -66,7 +67,8 @@ upload_sbe(struct brw_context *brw)
calculate_attr_overrides(brw, attr_overrides,
&point_sprite_enables,
&flat_enables,
- &urb_entry_read_length);
+ &urb_entry_read_length,
+ &urb_entry_read_offset);
/* Typically, the URB entry read length and offset should be programmed in
* 3DSTATE_VS and 3DSTATE_GS; SBE inherits it from the last active stage
@@ -78,7 +80,7 @@ upload_sbe(struct brw_context *brw)
*/
dw1 |=
urb_entry_read_length << GEN7_SBE_URB_ENTRY_READ_LENGTH_SHIFT |
- BRW_SF_URB_ENTRY_READ_OFFSET << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT |
+ urb_entry_read_offset << GEN8_SBE_URB_ENTRY_READ_OFFSET_SHIFT |
GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH |
GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET;