mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-11 06:28:09 +02:00
i965/skl: Update 3DSTATE_SBE for Skylake.
This commands has seen the addition of 2 dwords that allow to specify which channels of which attributes need to be forwarded to the fragment shader. v2: Rebase forward a year (done by Ken). Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
parent
2b7f73af9c
commit
48157b904a
2 changed files with 34 additions and 2 deletions
|
|
@ -1904,6 +1904,12 @@ enum brw_message_target {
|
|||
/* DW12: attr 0-7 wrap shortest enables */
|
||||
/* DW13: attr 8-16 wrap shortest enables */
|
||||
|
||||
/* DW4-5: Attribute active components (gen9) */
|
||||
#define GEN9_SBE_ACTIVE_COMPONENT_NONE 0
|
||||
#define GEN9_SBE_ACTIVE_COMPONENT_XY 1
|
||||
#define GEN9_SBE_ACTIVE_COMPONENT_XYZ 2
|
||||
#define GEN9_SBE_ACTIVE_COMPONENT_XYZW 3
|
||||
|
||||
#define _3DSTATE_SBE_SWIZ 0x7851 /* GEN8+ */
|
||||
|
||||
#define _3DSTATE_RASTER 0x7850 /* GEN8+ */
|
||||
|
|
|
|||
|
|
@ -39,10 +39,13 @@ upload_sbe(struct brw_context *brw)
|
|||
uint32_t urb_entry_read_length;
|
||||
uint32_t point_sprite_enables;
|
||||
uint32_t flat_enables;
|
||||
int sbe_cmd_length;
|
||||
|
||||
uint32_t dw1 =
|
||||
GEN7_SBE_SWIZZLE_ENABLE |
|
||||
num_outputs << GEN7_SBE_NUM_OUTPUTS_SHIFT;
|
||||
uint32_t dw4 = 0;
|
||||
uint32_t dw5 = 0;
|
||||
|
||||
/* _NEW_BUFFERS */
|
||||
bool render_to_fbo = _mesa_is_user_fbo(ctx->DrawBuffer);
|
||||
|
|
@ -79,11 +82,34 @@ upload_sbe(struct brw_context *brw)
|
|||
GEN8_SBE_FORCE_URB_ENTRY_READ_LENGTH |
|
||||
GEN8_SBE_FORCE_URB_ENTRY_READ_OFFSET;
|
||||
|
||||
BEGIN_BATCH(4);
|
||||
OUT_BATCH(_3DSTATE_SBE << 16 | (4 - 2));
|
||||
if (brw->gen == 8) {
|
||||
sbe_cmd_length = 4;
|
||||
} else {
|
||||
sbe_cmd_length = 6;
|
||||
|
||||
/* prepare the active component dwords */
|
||||
int input_index = 0;
|
||||
for (int attr = 0; attr < VARYING_SLOT_MAX; attr++) {
|
||||
if (!(brw->fragment_program->Base.InputsRead & BITFIELD64_BIT(attr)))
|
||||
continue;
|
||||
|
||||
if (input_index < 16)
|
||||
dw4 |= (GEN9_SBE_ACTIVE_COMPONENT_XYZW << (input_index << 1));
|
||||
else
|
||||
dw5 |= (GEN9_SBE_ACTIVE_COMPONENT_XYZW << (input_index << 1));
|
||||
|
||||
++input_index;
|
||||
}
|
||||
}
|
||||
BEGIN_BATCH(sbe_cmd_length);
|
||||
OUT_BATCH(_3DSTATE_SBE << 16 | (sbe_cmd_length - 2));
|
||||
OUT_BATCH(dw1);
|
||||
OUT_BATCH(point_sprite_enables);
|
||||
OUT_BATCH(flat_enables);
|
||||
if (sbe_cmd_length >= 6) {
|
||||
OUT_BATCH(dw4);
|
||||
OUT_BATCH(dw5);
|
||||
}
|
||||
ADVANCE_BATCH();
|
||||
|
||||
BEGIN_BATCH(11);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue