From 5b32fccd3f1635bef04b1621caa32a1f59e75041 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 22 Jun 2021 05:06:36 +1000 Subject: [PATCH] crocus/gen8: add SBE swiz support Part-of: --- src/gallium/drivers/crocus/crocus_state.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/crocus/crocus_state.c b/src/gallium/drivers/crocus/crocus_state.c index 01dcf85..18810a2 100644 --- a/src/gallium/drivers/crocus/crocus_state.c +++ b/src/gallium/drivers/crocus/crocus_state.c @@ -4475,13 +4475,18 @@ calculate_attr_overrides( } #endif -#if GFX_VER == 7 +#if GFX_VER >= 7 static void crocus_emit_sbe(struct crocus_batch *batch, const struct crocus_context *ice) { const struct crocus_rasterizer_state *cso_rast = ice->state.cso_rast; const struct brw_wm_prog_data *wm_prog_data = (void *) ice->shaders.prog[MESA_SHADER_FRAGMENT]->prog_data; +#if GFX_VER >= 8 + struct GENX(SF_OUTPUT_ATTRIBUTE_DETAIL) attr_overrides[16] = { { 0 } }; +#else +#define attr_overrides sbe.Attribute +#endif uint32_t urb_entry_read_length; uint32_t urb_entry_read_offset; @@ -4493,7 +4498,7 @@ crocus_emit_sbe(struct crocus_batch *batch, const struct crocus_context *ice) sbe.PointSpriteTextureCoordinateOrigin = cso_rast->cso.sprite_coord_mode; calculate_attr_overrides(ice, - sbe.Attribute, + attr_overrides, &point_sprite_enables, &urb_entry_read_length, &urb_entry_read_offset); @@ -4501,7 +4506,17 @@ crocus_emit_sbe(struct crocus_batch *batch, const struct crocus_context *ice) sbe.VertexURBEntryReadLength = urb_entry_read_length; sbe.ConstantInterpolationEnable = wm_prog_data->flat_inputs; sbe.PointSpriteTextureCoordinateEnable = point_sprite_enables; +#if GFX_VER >= 8 + sbe.ForceVertexURBEntryReadLength = true; + sbe.ForceVertexURBEntryReadOffset = true; +#endif } +#if GFX_VER >= 8 + crocus_emit_cmd(batch, GENX(3DSTATE_SBE_SWIZ), sbes) { + for (int i = 0; i < 16; i++) + sbes.Attribute[i] = attr_overrides[i]; + } +#endif } #endif -- 2.7.4