diff options
author | Jason Ekstrand <[email protected]> | 2017-11-03 15:20:08 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-11-13 19:40:10 -0800 |
commit | bc933d0e8462871e19328f66182c35543e334013 (patch) | |
tree | 1d4bc129dc020daa81e97a8fb5fa7b0c33086f35 /src/mesa | |
parent | deec84fd771876b5c0755293376df11bc95b473b (diff) |
intel/blorp: Make the MOCS setting part of blorp_address
This makes our MOCS settings significantly more flexible.
Cc: "17.3" <[email protected]>
Tested-by: Lyude Paul <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.c | 31 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/genX_blorp_exec.c | 10 |
2 files changed, 26 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index 58e1f8a09f3..5a86af8b4ac 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -88,15 +88,9 @@ brw_blorp_init(struct brw_context *brw) brw->blorp.exec = gen5_blorp_exec; break; case 6: - brw->blorp.mocs.tex = 0; - brw->blorp.mocs.rb = 0; - brw->blorp.mocs.vb = 0; brw->blorp.exec = gen6_blorp_exec; break; case 7: - brw->blorp.mocs.tex = GEN7_MOCS_L3; - brw->blorp.mocs.rb = GEN7_MOCS_L3; - brw->blorp.mocs.vb = GEN7_MOCS_L3; if (devinfo->is_haswell) { brw->blorp.exec = gen75_blorp_exec; } else { @@ -104,21 +98,12 @@ brw_blorp_init(struct brw_context *brw) } break; case 8: - brw->blorp.mocs.tex = BDW_MOCS_WB; - brw->blorp.mocs.rb = BDW_MOCS_PTE; - brw->blorp.mocs.vb = BDW_MOCS_WB; brw->blorp.exec = gen8_blorp_exec; break; case 9: - brw->blorp.mocs.tex = SKL_MOCS_WB; - brw->blorp.mocs.rb = SKL_MOCS_PTE; - brw->blorp.mocs.vb = SKL_MOCS_WB; brw->blorp.exec = gen9_blorp_exec; break; case 10: - brw->blorp.mocs.tex = CNL_MOCS_WB; - brw->blorp.mocs.rb = CNL_MOCS_PTE; - brw->blorp.mocs.vb = CNL_MOCS_WB; brw->blorp.exec = gen10_blorp_exec; break; default: @@ -129,6 +114,20 @@ brw_blorp_init(struct brw_context *brw) brw->blorp.upload_shader = brw_blorp_upload_shader; } +static uint32_t tex_mocs[] = { + [7] = GEN7_MOCS_L3, + [8] = BDW_MOCS_WB, + [9] = SKL_MOCS_WB, + [10] = CNL_MOCS_WB, +}; + +static uint32_t rb_mocs[] = { + [7] = GEN7_MOCS_L3, + [8] = BDW_MOCS_PTE, + [9] = SKL_MOCS_PTE, + [10] = CNL_MOCS_PTE, +}; + static void blorp_surf_for_miptree(struct brw_context *brw, struct blorp_surf *surf, @@ -159,6 +158,7 @@ blorp_surf_for_miptree(struct brw_context *brw, .buffer = mt->bo, .offset = mt->offset, .reloc_flags = is_render_target ? EXEC_OBJECT_WRITE : 0, + .mocs = is_render_target ? rb_mocs[devinfo->gen] : tex_mocs[devinfo->gen], }; surf->aux_usage = aux_usage; @@ -186,6 +186,7 @@ blorp_surf_for_miptree(struct brw_context *brw, surf->aux_surf = aux_surf; surf->aux_addr = (struct blorp_address) { .reloc_flags = is_render_target ? EXEC_OBJECT_WRITE : 0, + .mocs = surf->addr.mocs, }; if (mt->mcs_buf) { diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c index 3c7a7b47dbd..3bf6fd61567 100644 --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c @@ -152,6 +152,16 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size, *addr = (struct blorp_address) { .buffer = brw->batch.state_bo, .offset = offset, + +#if GEN_GEN == 10 + .mocs = CNL_MOCS_WB, +#elif GEN_GEN == 9 + .mocs = SKL_MOCS_WB, +#elif GEN_GEN == 8 + .mocs = BDW_MOCS_WB, +#elif GEN_GEN == 7 + .mocs = GEN7_MOCS_L3, +#endif }; return data; |