From 22161983c38fe19b393e5b983f4945dc527ccb1b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Mon, 12 Aug 2013 16:07:07 +0300 Subject: [PATCH] i965/hsw: Populate MOCS for STATE_BASE_ADDRESS (v2) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Just spotted these unpopulated MOCS fields when comparing the code against BSpec. Set the MOCS to the same as everywhere else in Haswell: L3-cacheable. v2: Annotate state packet fields (chadv). Signed-off-by: Ville Syrjälä Reviewed-by: Chad Versace --- src/mesa/drivers/dri/i965/brw_misc_state.c | 7 +++++-- src/mesa/drivers/dri/i965/gen6_blorp.cpp | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 3bf37b9561c..f24fdaf4900 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -1038,13 +1038,16 @@ static void upload_state_base_address( struct brw_context *brw ) */ if (brw->gen >= 6) { + uint8_t mocs = brw->is_haswell ? GEN7_MOCS_L3 : 0; + if (brw->gen == 6) intel_emit_post_sync_nonzero_flush(brw); BEGIN_BATCH(10); OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (10 - 2)); - /* General state base address: stateless DP read/write requests */ - OUT_BATCH(1); + OUT_BATCH(mocs << 8 | /* General State Memory Object Control State */ + mocs << 4 | /* Stateless Data Port Access Memory Object Control State */ + 1); /* General State Base Address Modify Enable */ /* Surface state base address: * BINDING_TABLE_STATE * SURFACE_STATE diff --git a/src/mesa/drivers/dri/i965/gen6_blorp.cpp b/src/mesa/drivers/dri/i965/gen6_blorp.cpp index 129c11361a6..b47466abfea 100644 --- a/src/mesa/drivers/dri/i965/gen6_blorp.cpp +++ b/src/mesa/drivers/dri/i965/gen6_blorp.cpp @@ -74,9 +74,14 @@ void gen6_blorp_emit_state_base_address(struct brw_context *brw, const brw_blorp_params *params) { + uint8_t mocs = brw->is_haswell ? GEN7_MOCS_L3 : 0; + BEGIN_BATCH(10); OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (10 - 2)); - OUT_BATCH(1); /* GeneralStateBaseAddressModifyEnable */ + OUT_BATCH(mocs << 8 | /* GeneralStateMemoryObjectControlState */ + mocs << 4 | /* StatelessDataPortAccessMemoryObjectControlState */ + 1); /* GeneralStateBaseAddressModifyEnable */ + /* SurfaceStateBaseAddress */ OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, 1); /* DynamicStateBaseAddress */ -- 2.30.2