There are only a handful of distinct cache domains (less than 16), and internally the kernel simply doesn't differentiate between the GPU cache domains - for recent kernels we just pass in whether the object is being written to (for read/write busyness tracking) and whether it requires the global GTT workaround, essentially 2 bits of information. We can therefore trim a parameter by coalescing the relocation domains to a single unsigned bitfield (i.e. 32 bits of read/write domains rather than 64 bits) without loss of generality.
Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> --- src/intel/blorp/blorp.h | 3 +- src/mesa/drivers/dri/i965/brw_batch.c | 13 +++---- src/mesa/drivers/dri/i965/brw_batch.h | 19 +++++----- src/mesa/drivers/dri/i965/brw_binding_tables.c | 8 ++-- src/mesa/drivers/dri/i965/brw_blorp.c | 12 +++--- src/mesa/drivers/dri/i965/brw_cc.c | 2 +- src/mesa/drivers/dri/i965/brw_clip_state.c | 2 +- src/mesa/drivers/dri/i965/brw_compute.c | 12 +++--- src/mesa/drivers/dri/i965/brw_conditional_render.c | 6 +-- src/mesa/drivers/dri/i965/brw_context.h | 2 +- src/mesa/drivers/dri/i965/brw_curbe.c | 4 +- src/mesa/drivers/dri/i965/brw_draw.c | 14 +++---- src/mesa/drivers/dri/i965/brw_draw_upload.c | 16 +++----- src/mesa/drivers/dri/i965/brw_misc_state.c | 41 +++++++++------------ src/mesa/drivers/dri/i965/brw_pipe_control.c | 8 ++-- src/mesa/drivers/dri/i965/brw_pipelined_register.c | 43 +++++++++------------- src/mesa/drivers/dri/i965/brw_pipelined_register.h | 4 +- src/mesa/drivers/dri/i965/brw_sampler_state.c | 2 +- src/mesa/drivers/dri/i965/brw_sf_state.c | 3 +- src/mesa/drivers/dri/i965/brw_vs_state.c | 4 +- src/mesa/drivers/dri/i965/brw_wm_state.c | 4 +- src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 27 ++++++-------- src/mesa/drivers/dri/i965/gen6_constant_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_depth_state.c | 12 ++---- src/mesa/drivers/dri/i965/gen6_gs_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_vs_state.c | 2 +- src/mesa/drivers/dri/i965/gen6_wm_state.c | 2 +- src/mesa/drivers/dri/i965/gen7_cs_state.c | 6 +-- src/mesa/drivers/dri/i965/gen7_ds_state.c | 2 +- src/mesa/drivers/dri/i965/gen7_gs_state.c | 2 +- src/mesa/drivers/dri/i965/gen7_hs_state.c | 2 +- src/mesa/drivers/dri/i965/gen7_misc_state.c | 13 ++----- src/mesa/drivers/dri/i965/gen7_sol_state.c | 7 ++-- src/mesa/drivers/dri/i965/gen7_vs_state.c | 2 +- src/mesa/drivers/dri/i965/gen7_wm_state.c | 2 +- src/mesa/drivers/dri/i965/gen8_depth_state.c | 9 ++--- src/mesa/drivers/dri/i965/gen8_draw_upload.c | 2 +- src/mesa/drivers/dri/i965/gen8_ds_state.c | 2 +- src/mesa/drivers/dri/i965/gen8_gs_state.c | 2 +- src/mesa/drivers/dri/i965/gen8_hs_state.c | 2 +- src/mesa/drivers/dri/i965/gen8_ps_state.c | 2 +- src/mesa/drivers/dri/i965/gen8_sol_state.c | 4 +- src/mesa/drivers/dri/i965/gen8_vs_state.c | 2 +- src/mesa/drivers/dri/i965/genX_blorp_exec.c | 7 ++-- src/mesa/drivers/dri/i965/hsw_queryobj.c | 20 ++++------ src/mesa/drivers/dri/i965/hsw_sol.c | 8 ++-- src/mesa/drivers/dri/i965/intel_blit.c | 28 ++++---------- 47 files changed, 164 insertions(+), 229 deletions(-) diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h index 823475b607..bbe1655da5 100644 --- a/src/intel/blorp/blorp.h +++ b/src/intel/blorp/blorp.h @@ -90,8 +90,7 @@ void blorp_batch_finish(struct blorp_batch *batch); struct blorp_address { void *buffer; - uint32_t read_domains; - uint32_t write_domain; + uint32_t domains; uint32_t offset; }; diff --git a/src/mesa/drivers/dri/i965/brw_batch.c b/src/mesa/drivers/dri/i965/brw_batch.c index 515a81bf89..e4d0d4c8b2 100644 --- a/src/mesa/drivers/dri/i965/brw_batch.c +++ b/src/mesa/drivers/dri/i965/brw_batch.c @@ -848,8 +848,7 @@ uint64_t __brw_batch_reloc(struct brw_batch *batch, uint32_t batch_offset, struct brw_bo *target_bo, uint64_t target_offset, - unsigned read_domains, - unsigned write_domain) + unsigned domains) { assert(batch->inside_begin_count); assert(target_bo->refcnt); @@ -953,8 +952,8 @@ uint64_t __brw_batch_reloc(struct brw_batch *batch, batch->reloc[n].delta = target_offset; batch->reloc[n].target_handle = target_bo->target_handle; batch->reloc[n].presumed_offset = target_bo->offset; - batch->reloc[n].read_domains = read_domains; - batch->reloc[n].write_domain = write_domain; + batch->reloc[n].read_domains = domains & 0xffff; + batch->reloc[n].write_domain = domains >> 16; /* If we haven't added the batch to the execobject array yet, we * will have to process all the relocations pointing to the @@ -973,7 +972,7 @@ uint64_t __brw_batch_reloc(struct brw_batch *batch, * can optimised reading the buffer on the CPU whilst it is only being * read by the GPU. */ - if (write_domain && !target_bo->dirty) { + if (domains >> 16 && !target_bo->dirty) { __DBG(("%d:%s: dirty handle=%d\n", gettid(), __func__, target_bo->handle)); assert(target_bo != batch->bo); @@ -986,7 +985,7 @@ uint64_t __brw_batch_reloc(struct brw_batch *batch, target_bo->dirty = true; if (has_lut(batch)) { target_bo->exec->flags |= EXEC_OBJECT_WRITE; - if (write_domain == I915_GEM_DOMAIN_INSTRUCTION && + if ((domains >> 16) == I915_GEM_DOMAIN_INSTRUCTION && batch->needs_pipecontrol_ggtt_wa) target_bo->exec->flags |= EXEC_OBJECT_NEEDS_GTT; } @@ -1041,7 +1040,7 @@ static uint32_t __brw_batch_emit_seqno(struct brw_batch *batch, __brw_batch_reloc(batch, (char *)out - (char *)batch->map, batch->seqno_bo, offset, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); if (batch->needs_pipecontrol_ggtt_wa) batch->seqno_bo->exec->flags |= EXEC_OBJECT_NEEDS_GTT; if (gen >= 8) { diff --git a/src/mesa/drivers/dri/i965/brw_batch.h b/src/mesa/drivers/dri/i965/brw_batch.h index 074a13f550..c8fa0fa531 100644 --- a/src/mesa/drivers/dri/i965/brw_batch.h +++ b/src/mesa/drivers/dri/i965/brw_batch.h @@ -213,25 +213,26 @@ brw_reloc_address(brw_bo *bo, uint64_t offset) /** Add a relocation entry to the current batch * XXX worth specialising 32bit variant? */ +#define __BRW_DOMAINS(read, write) (((write) << 16) | (read)) +#define BRW_DOMAINS(read, write) \ + __BRW_DOMAINS(I915_GEM_DOMAIN_##read, write ? I915_GEM_DOMAIN_##read : 0) uint64_t __brw_batch_reloc(struct brw_batch *batch, uint32_t batch_offset, struct brw_bo *target_bo, uint64_t target_offset, - unsigned read_domains, - unsigned write_domain); + unsigned domains); static inline uint64_t brw_batch_reloc(struct brw_batch *batch, uint32_t batch_offset, struct brw_bo *target_bo, uint64_t target_offset, - unsigned read_domains, - unsigned write_domain) + unsigned domains) { if (target_bo == NULL) return target_offset; return __brw_batch_reloc(batch, batch_offset, target_bo, target_offset, - read_domains, write_domain); + domains); } int brw_batch_get_reset_stats(struct brw_batch *batch, @@ -476,14 +477,14 @@ static inline uint32_t float_as_int(float f) uint32_t *__map = __brw_batch_check(&brw->batch, n, BLT_RING) #define OUT_BATCH(dw) *__map++ = (dw) #define OUT_BATCH_F(f) *__map++ = float_as_int(f) -#define OUT_RELOC(bo, read, write, delta) \ +#define OUT_RELOC(bo, domains, delta) \ *__map = brw_batch_reloc(&brw->batch, \ 4*(__map - brw->batch.map), \ - bo, delta, read, write), __map++ -#define OUT_RELOC64(bo, read, write, delta) \ + bo, delta, domains), __map++ +#define OUT_RELOC64(bo, domains, delta) \ *(uint64_t *)__map = brw_batch_reloc(&brw->batch, \ 4*(__map - brw->batch.map), \ - bo, delta, read, write), __map += 2 + bo, delta, domains), __map += 2 #define ADVANCE_BATCH() assert(__map == brw->batch.tail); } while(0) #ifdef __cplusplus diff --git a/src/mesa/drivers/dri/i965/brw_binding_tables.c b/src/mesa/drivers/dri/i965/brw_binding_tables.c index 5a21b695c2..df9f97aa21 100644 --- a/src/mesa/drivers/dri/i965/brw_binding_tables.c +++ b/src/mesa/drivers/dri/i965/brw_binding_tables.c @@ -410,12 +410,12 @@ gen7_enable_hw_binding_tables(struct brw_context *brw) BEGIN_BATCH(pkt_len); OUT_BATCH(_3DSTATE_BINDING_TABLE_POOL_ALLOC << 16 | (pkt_len - 2)); if (brw->gen >= 8) { - OUT_RELOC64(brw->hw_bt_pool.bo, I915_GEM_DOMAIN_SAMPLER, 0, dw1); + OUT_RELOC64(brw->hw_bt_pool.bo, BRW_DOMAINS(SAMPLER, false), dw1); OUT_BATCH(brw->hw_bt_pool.bo->size); } else { - OUT_RELOC(brw->hw_bt_pool.bo, I915_GEM_DOMAIN_SAMPLER, 0, dw1); - OUT_RELOC(brw->hw_bt_pool.bo, I915_GEM_DOMAIN_SAMPLER, 0, - brw->hw_bt_pool.bo->size); + OUT_RELOC(brw->hw_bt_pool.bo, BRW_DOMAINS(SAMPLER, false), dw1); + OUT_RELOC(brw->hw_bt_pool.bo, BRW_DOMAINS(SAMPLER, false), + brw->hw_bt_pool.bo->size); } ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index 8d58616f59..957bc5b7ce 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -165,9 +165,9 @@ blorp_surf_for_miptree(struct brw_context *brw, surf->addr = (struct blorp_address) { .buffer = mt->bo, .offset = mt->offset, - .read_domains = is_render_target ? I915_GEM_DOMAIN_RENDER : - I915_GEM_DOMAIN_SAMPLER, - .write_domain = is_render_target ? I915_GEM_DOMAIN_RENDER : 0, + .domains = (is_render_target ? + BRW_DOMAINS(RENDER, true) : + BRW_DOMAINS(SAMPLER, false)), }; if (brw->gen == 6 && mt->format == MESA_FORMAT_S_UINT8 && @@ -234,9 +234,9 @@ blorp_surf_for_miptree(struct brw_context *brw, surf->aux_surf = aux_surf; surf->aux_addr = (struct blorp_address) { - .read_domains = is_render_target ? I915_GEM_DOMAIN_RENDER : - I915_GEM_DOMAIN_SAMPLER, - .write_domain = is_render_target ? I915_GEM_DOMAIN_RENDER : 0, + .domains = (is_render_target ? + BRW_DOMAINS(RENDER, true) : + BRW_DOMAINS(SAMPLER, false)), }; if (mt->mcs_buf) { diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index af095c5713..19aded0ce9 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -235,7 +235,7 @@ static void upload_cc_unit(struct brw_context *brw) brw->cc.state_offset + offsetof(struct brw_cc_unit_state, cc4), brw->batch.bo, brw->cc.vp_offset, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); brw->ctx.NewDriverState |= BRW_NEW_GEN4_UNIT_STATE; } diff --git a/src/mesa/drivers/dri/i965/brw_clip_state.c b/src/mesa/drivers/dri/i965/brw_clip_state.c index d933b0aebb..cba1093f98 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_state.c +++ b/src/mesa/drivers/dri/i965/brw_clip_state.c @@ -138,7 +138,7 @@ brw_upload_clip_unit(struct brw_context *brw) brw->clip.state_offset + offsetof(struct brw_clip_unit_state, clip6), brw->batch.bo, brw->clip.vp_offset, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); } /* _NEW_TRANSFORM */ diff --git a/src/mesa/drivers/dri/i965/brw_compute.c b/src/mesa/drivers/dri/i965/brw_compute.c index da10c6fba6..0c5f76ab00 100644 --- a/src/mesa/drivers/dri/i965/brw_compute.c +++ b/src/mesa/drivers/dri/i965/brw_compute.c @@ -41,13 +41,13 @@ prepare_indirect_gpgpu_walker(struct brw_context *brw) brw_bo *bo = brw->compute.num_work_groups_bo; brw_load_register_mem(brw, GEN7_GPGPU_DISPATCHDIMX, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), indirect_offset + 0); brw_load_register_mem(brw, GEN7_GPGPU_DISPATCHDIMY, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), indirect_offset + 4); brw_load_register_mem(brw, GEN7_GPGPU_DISPATCHDIMZ, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), indirect_offset + 8); if (brw->gen > 7) @@ -66,7 +66,7 @@ prepare_indirect_gpgpu_walker(struct brw_context *brw) /* Load compute_dispatch_indirect_x_size into SRC0 */ brw_load_register_mem(brw, MI_PREDICATE_SRC0, bo, - I915_GEM_DOMAIN_INSTRUCTION, 0, + BRW_DOMAINS(INSTRUCTION, false), indirect_offset + 0); /* predicate = (compute_dispatch_indirect_x_size == 0); */ @@ -79,7 +79,7 @@ prepare_indirect_gpgpu_walker(struct brw_context *brw) /* Load compute_dispatch_indirect_y_size into SRC0 */ brw_load_register_mem(brw, MI_PREDICATE_SRC0, bo, - I915_GEM_DOMAIN_INSTRUCTION, 0, + BRW_DOMAINS(INSTRUCTION, false), indirect_offset + 4); /* predicate |= (compute_dispatch_indirect_y_size == 0); */ @@ -92,7 +92,7 @@ prepare_indirect_gpgpu_walker(struct brw_context *brw) /* Load compute_dispatch_indirect_z_size into SRC0 */ brw_load_register_mem(brw, MI_PREDICATE_SRC0, bo, - I915_GEM_DOMAIN_INSTRUCTION, 0, + BRW_DOMAINS(INSTRUCTION, false), indirect_offset + 8); /* predicate |= (compute_dispatch_indirect_z_size == 0); */ diff --git a/src/mesa/drivers/dri/i965/brw_conditional_render.c b/src/mesa/drivers/dri/i965/brw_conditional_render.c index 2c73697d5b..63fd8776ac 100644 --- a/src/mesa/drivers/dri/i965/brw_conditional_render.c +++ b/src/mesa/drivers/dri/i965/brw_conditional_render.c @@ -68,14 +68,12 @@ set_predicate_for_result(struct brw_context *brw, brw_load_register_mem64(brw, MI_PREDICATE_SRC0, query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - 0, /* write domain */ + BRW_DOMAINS(INSTRUCTION, false), 8*query->index /* offset */); brw_load_register_mem64(brw, MI_PREDICATE_SRC1, query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - 0, /* write domain */ + BRW_DOMAINS(INSTRUCTION, false), 8*(query->index+1) /* offset */); if (inverted) diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index cd31b730f5..ee934f6bd2 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -1577,7 +1577,7 @@ brw_program_reloc(struct brw_context *brw, uint32_t state_offset, return brw_batch_reloc(&brw->batch, state_offset, brw->cache.bo, prog_offset, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); } bool brw_do_cubemap_normalize(struct exec_list *instructions); diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index fc10062c98..72a1ac8217 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -301,8 +301,8 @@ emit: } else { OUT_BATCH((CMD_CONST_BUFFER << 16) | (1 << 8) | (2 - 2)); OUT_RELOC(brw->curbe.curbe_bo, - I915_GEM_DOMAIN_INSTRUCTION, 0, - (brw->curbe.total_size - 1) + brw->curbe.curbe_offset); + BRW_DOMAINS(INSTRUCTION, false), + (brw->curbe.total_size - 1) + brw->curbe.curbe_offset); } ADVANCE_BATCH(); diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index e2007774d7..5ebecff87e 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -205,7 +205,7 @@ brw_emit_prim(struct brw_context *brw, brw_load_register_mem(brw, GEN7_3DPRIM_VERTEX_COUNT, xfb_obj->prim_count_bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), stream * sizeof(uint32_t)); BEGIN_BATCH(9); OUT_BATCH(MI_LOAD_REGISTER_IMM | (9 - 2)); @@ -227,25 +227,25 @@ brw_emit_prim(struct brw_context *brw, indirect_flag = GEN7_3DPRIM_INDIRECT_PARAMETER_ENABLE; brw_load_register_mem(brw, GEN7_3DPRIM_VERTEX_COUNT, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 0); brw_load_register_mem(brw, GEN7_3DPRIM_INSTANCE_COUNT, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 4); brw_load_register_mem(brw, GEN7_3DPRIM_START_VERTEX, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 8); if (prim->indexed) { brw_load_register_mem(brw, GEN7_3DPRIM_BASE_VERTEX, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 12); brw_load_register_mem(brw, GEN7_3DPRIM_START_INSTANCE, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 16); } else { brw_load_register_mem(brw, GEN7_3DPRIM_START_INSTANCE, bo, - I915_GEM_DOMAIN_VERTEX, 0, + BRW_DOMAINS(VERTEX, false), prim->indirect_offset + 12); brw_load_register_imm32(brw, GEN7_3DPRIM_BASE_VERTEX, 0); } diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index 8f94f6f265..7b84b3be3a 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -750,7 +750,7 @@ brw_emit_vertex_buffer_state(struct brw_context *brw, stride); OUT_BATCH(dw0 | (stride << BRW_VB0_PITCH_SHIFT)); if (brw->gen >= 8) { - OUT_RELOC64(bo, I915_GEM_DOMAIN_VERTEX, 0, start_offset); + OUT_RELOC64(bo, BRW_DOMAINS(VERTEX, false), start_offset); /* From the BSpec: 3D Pipeline Stages - 3D Pipeline Geometry - * Vertex Fetch (VF) Stage - State * @@ -761,7 +761,7 @@ brw_emit_vertex_buffer_state(struct brw_context *brw, */ OUT_BATCH(end_offset - start_offset); } else if (brw->gen >= 5) { - OUT_RELOC(bo, I915_GEM_DOMAIN_VERTEX, 0, start_offset); + OUT_RELOC(bo, BRW_DOMAINS(VERTEX, false), start_offset); /* From the BSpec: 3D Pipeline Stages - 3D Pipeline Geometry - * Vertex Fetch (VF) Stage - State * @@ -770,10 +770,10 @@ brw_emit_vertex_buffer_state(struct brw_context *brw, * last valid byte of the buffer is determined by * "VBState.EndAddress + 1". */ - OUT_RELOC(bo, I915_GEM_DOMAIN_VERTEX, 0, end_offset - 1); + OUT_RELOC(bo, BRW_DOMAINS(VERTEX, false), end_offset - 1); OUT_BATCH(step_rate); } else { - OUT_RELOC(bo, I915_GEM_DOMAIN_VERTEX, 0, start_offset); + OUT_RELOC(bo, BRW_DOMAINS(VERTEX, false), start_offset); OUT_BATCH(0); OUT_BATCH(step_rate); } @@ -1152,12 +1152,8 @@ brw_emit_index_buffer(struct brw_context *brw) cut_index_setting | brw_get_index_type(index_buffer->type) | 1); - OUT_RELOC(brw->ib.bo, - I915_GEM_DOMAIN_VERTEX, 0, - 0); - OUT_RELOC(brw->ib.bo, - I915_GEM_DOMAIN_VERTEX, 0, - brw->ib.size - 1); + OUT_RELOC(brw->ib.bo, BRW_DOMAINS(VERTEX, false), 0); + OUT_RELOC(brw->ib.bo, BRW_DOMAINS(VERTEX, false), brw->ib.size - 1); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 9197057e49..4e4dc8a1bf 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -86,20 +86,20 @@ upload_pipelined_state_pointers(struct brw_context *brw) BEGIN_BATCH(7); OUT_BATCH(_3DSTATE_PIPELINED_POINTERS << 16 | (7 - 2)); - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->vs.base.state_offset); if (brw->ff_gs.prog_active) - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->ff_gs.state_offset | 1); else OUT_BATCH(0); - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->clip.state_offset | 1); - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->sf.state_offset); - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->wm.base.state_offset); - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), brw->cc.state_offset); ADVANCE_BATCH(); @@ -612,7 +612,7 @@ brw_emit_depth_stencil_hiz(struct brw_context *brw, if (depth_mt) { OUT_RELOC(depth_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), depth_offset); } else { OUT_BATCH(0); @@ -649,7 +649,7 @@ brw_emit_depth_stencil_hiz(struct brw_context *brw, OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); OUT_BATCH(hiz_mt->pitch - 1); OUT_RELOC(hiz_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), brw->depthstencil.hiz_offset); ADVANCE_BATCH(); } else { @@ -671,7 +671,7 @@ brw_emit_depth_stencil_hiz(struct brw_context *brw, */ OUT_BATCH(2 * stencil_mt->pitch - 1); OUT_RELOC(stencil_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), brw->depthstencil.stencil_offset); ADVANCE_BATCH(); } else { @@ -1057,18 +1057,14 @@ brw_upload_state_base_address(struct brw_context *brw) OUT_BATCH(0); OUT_BATCH(mocs_wb << 16); /* Surface state base address: */ - OUT_RELOC64(brw->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, - mocs_wb << 4 | 1); + OUT_RELOC64(brw->batch.bo, BRW_DOMAINS(SAMPLER, false), mocs_wb << 4 | 1); /* Dynamic state base address: */ - OUT_RELOC64(brw->batch.bo, - I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0, - mocs_wb << 4 | 1); + OUT_RELOC64(brw->batch.bo, BRW_DOMAINS(RENDER, false), mocs_wb << 4 | 1); /* Indirect object base address: MEDIA_OBJECT data */ OUT_BATCH(mocs_wb << 4 | 1); OUT_BATCH(0); /* Instruction base address: shader kernels (incl. SIP) */ - OUT_RELOC64(brw->cache.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, - mocs_wb << 4 | 1); + OUT_RELOC64(brw->cache.bo, BRW_DOMAINS(INSTRUCTION, 0), mocs_wb << 4 | 1); /* General state buffer size */ OUT_BATCH(0xfffff001); @@ -1096,7 +1092,7 @@ brw_upload_state_base_address(struct brw_context *brw) * BINDING_TABLE_STATE * SURFACE_STATE */ - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, 1); + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(SAMPLER, false), 1); /* Dynamic state base address: * SAMPLER_STATE * SAMPLER_BORDER_COLOR_STATE @@ -1107,11 +1103,10 @@ brw_upload_state_base_address(struct brw_context *brw) * Push constants (when INSTPM: CONSTANT_BUFFER Address Offset * Disable is clear, which we rely on) */ - OUT_RELOC(brw->batch.bo, (I915_GEM_DOMAIN_RENDER | - I915_GEM_DOMAIN_INSTRUCTION), 0, 1); + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(INSTRUCTION, false), 1); OUT_BATCH(1); /* Indirect object base address: MEDIA_OBJECT data */ - OUT_RELOC(brw->cache.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->cache.bo, BRW_DOMAINS(INSTRUCTION, false), 1); /* Instruction base address: shader kernels (incl. SIP) */ OUT_BATCH(1); /* General state upper bound */ @@ -1128,10 +1123,10 @@ brw_upload_state_base_address(struct brw_context *brw) BEGIN_BATCH(8); OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (8 - 2)); OUT_BATCH(1); /* General state base address */ - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(SAMPLER, false), 1); /* Surface state base address */ OUT_BATCH(1); /* Indirect object base address */ - OUT_RELOC(brw->cache.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + OUT_RELOC(brw->cache.bo, BRW_DOMAINS(INSTRUCTION, false), 1); /* Instruction base address */ OUT_BATCH(0xfffff001); /* General state upper bound */ OUT_BATCH(1); /* Indirect object upper bound */ @@ -1141,7 +1136,7 @@ brw_upload_state_base_address(struct brw_context *brw) BEGIN_BATCH(6); OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (6 - 2)); OUT_BATCH(1); /* General state base address */ - OUT_RELOC(brw->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, + OUT_RELOC(brw->batch.bo, BRW_DOMAINS(SAMPLER, false), 1); /* Surface state base address */ OUT_BATCH(1); /* Indirect object base address */ OUT_BATCH(1); /* General state upper bound */ diff --git a/src/mesa/drivers/dri/i965/brw_pipe_control.c b/src/mesa/drivers/dri/i965/brw_pipe_control.c index 40102f9aa6..c33e9ea31e 100644 --- a/src/mesa/drivers/dri/i965/brw_pipe_control.c +++ b/src/mesa/drivers/dri/i965/brw_pipe_control.c @@ -212,8 +212,7 @@ brw_emit_pipe_control_write(struct brw_context *brw, uint32_t flags, BEGIN_BATCH(6); OUT_BATCH(_3DSTATE_PIPE_CONTROL | (6 - 2)); OUT_BATCH(flags); - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset); OUT_BATCH(lower_32_bits(imm)); OUT_BATCH(upper_32_bits(imm)); ADVANCE_BATCH(); @@ -228,15 +227,14 @@ brw_emit_pipe_control_write(struct brw_context *brw, uint32_t flags, BEGIN_BATCH(5); OUT_BATCH(_3DSTATE_PIPE_CONTROL | (5 - 2)); OUT_BATCH(flags); - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - gen6_gtt | offset); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), gen6_gtt | offset); OUT_BATCH(lower_32_bits(imm)); OUT_BATCH(upper_32_bits(imm)); ADVANCE_BATCH(); } else { BEGIN_BATCH(4); OUT_BATCH(_3DSTATE_PIPE_CONTROL | flags | (4 - 2)); - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), PIPE_CONTROL_GLOBAL_GTT_WRITE | offset); OUT_BATCH(lower_32_bits(imm)); OUT_BATCH(upper_32_bits(imm)); diff --git a/src/mesa/drivers/dri/i965/brw_pipelined_register.c b/src/mesa/drivers/dri/i965/brw_pipelined_register.c index 86ec3cd3bd..128f2e0eb3 100644 --- a/src/mesa/drivers/dri/i965/brw_pipelined_register.c +++ b/src/mesa/drivers/dri/i965/brw_pipelined_register.c @@ -29,7 +29,7 @@ static void load_sized_register_mem(struct brw_context *brw, uint32_t reg, brw_bo *bo, - uint32_t read_domains, uint32_t write_domain, + unsigned domains, uint32_t offset, int size) { @@ -43,7 +43,7 @@ load_sized_register_mem(struct brw_context *brw, for (i = 0; i < size; i++) { OUT_BATCH(GEN7_MI_LOAD_REGISTER_MEM | (4 - 2)); OUT_BATCH(reg + i * 4); - OUT_RELOC64(bo, read_domains, write_domain, offset + i * 4); + OUT_RELOC64(bo, domains, offset + i * 4); } ADVANCE_BATCH(); } else { @@ -51,7 +51,7 @@ load_sized_register_mem(struct brw_context *brw, for (i = 0; i < size; i++) { OUT_BATCH(GEN7_MI_LOAD_REGISTER_MEM | (3 - 2)); OUT_BATCH(reg + i * 4); - OUT_RELOC(bo, read_domains, write_domain, offset + i * 4); + OUT_RELOC(bo, domains, offset + i * 4); } ADVANCE_BATCH(); } @@ -61,20 +61,20 @@ void brw_load_register_mem(struct brw_context *brw, uint32_t reg, brw_bo *bo, - uint32_t read_domains, uint32_t write_domain, + unsigned domains, uint32_t offset) { - load_sized_register_mem(brw, reg, bo, read_domains, write_domain, offset, 1); + load_sized_register_mem(brw, reg, bo, domains, offset, 1); } void brw_load_register_mem64(struct brw_context *brw, uint32_t reg, brw_bo *bo, - uint32_t read_domains, uint32_t write_domain, + unsigned domains, uint32_t offset) { - load_sized_register_mem(brw, reg, bo, read_domains, write_domain, offset, 2); + load_sized_register_mem(brw, reg, bo, domains, offset, 2); } /* @@ -90,15 +90,13 @@ brw_store_register_mem32(struct brw_context *brw, BEGIN_BATCH(4); OUT_BATCH(MI_STORE_REGISTER_MEM | (4 - 2)); OUT_BATCH(reg); - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset); ADVANCE_BATCH(); } else { BEGIN_BATCH(3); OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2)); OUT_BATCH(reg); - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset); ADVANCE_BATCH(); } } @@ -119,23 +117,20 @@ brw_store_register_mem64(struct brw_context *brw, BEGIN_BATCH(8); OUT_BATCH(MI_STORE_REGISTER_MEM | (4 - 2)); OUT_BATCH(reg); - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset); OUT_BATCH(MI_STORE_REGISTER_MEM | (4 - 2)); OUT_BATCH(reg + sizeof(uint32_t)); - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset + sizeof(uint32_t)); ADVANCE_BATCH(); } else { BEGIN_BATCH(6); OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2)); OUT_BATCH(reg); - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset); OUT_BATCH(MI_STORE_REGISTER_MEM | (3 - 2)); OUT_BATCH(reg + sizeof(uint32_t)); - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset + sizeof(uint32_t)); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset + sizeof(uint32_t)); ADVANCE_BATCH(); } } @@ -217,12 +212,10 @@ brw_store_data_imm32(struct brw_context *brw, brw_bo *bo, BEGIN_BATCH(4); OUT_BATCH(MI_STORE_DATA_IMM | (4 - 2)); if (brw->gen >= 8) - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset); else { OUT_BATCH(0); /* MBZ */ - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset); } OUT_BATCH(imm); ADVANCE_BATCH(); @@ -240,12 +233,10 @@ brw_store_data_imm64(struct brw_context *brw, brw_bo *bo, BEGIN_BATCH(5); OUT_BATCH(MI_STORE_DATA_IMM | (5 - 2)); if (brw->gen >= 8) - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset); else { OUT_BATCH(0); /* MBZ */ - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, - offset); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset); } OUT_BATCH(imm & 0xffffffffu); OUT_BATCH(imm >> 32); diff --git a/src/mesa/drivers/dri/i965/brw_pipelined_register.h b/src/mesa/drivers/dri/i965/brw_pipelined_register.h index 208654c2e5..dbccc3fdea 100644 --- a/src/mesa/drivers/dri/i965/brw_pipelined_register.h +++ b/src/mesa/drivers/dri/i965/brw_pipelined_register.h @@ -31,12 +31,12 @@ extern "C" { void brw_load_register_mem(struct brw_context *brw, uint32_t reg, brw_bo *bo, - uint32_t read_domains, uint32_t write_domain, + unsigned domains, uint32_t offset); void brw_load_register_mem64(struct brw_context *brw, uint32_t reg, brw_bo *bo, - uint32_t read_domains, uint32_t write_domain, + unsigned domains, uint32_t offset); void brw_store_register_mem32(struct brw_context *brw, brw_bo *bo, uint32_t reg, uint32_t offset); diff --git a/src/mesa/drivers/dri/i965/brw_sampler_state.c b/src/mesa/drivers/dri/i965/brw_sampler_state.c index e247ff66f1..97ca4c0a39 100644 --- a/src/mesa/drivers/dri/i965/brw_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_sampler_state.c @@ -103,7 +103,7 @@ brw_emit_sampler_state(struct brw_context *brw, if (brw->gen < 6) { ss[2] = brw_batch_reloc(&brw->batch, batch_offset_for_sampler_state + 8, brw->batch.bo, border_color_offset, - I915_GEM_DOMAIN_SAMPLER, 0); + BRW_DOMAINS(SAMPLER, false)); } else ss[2] = border_color_offset; diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index f8c4209d1d..f61a7e0633 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -202,8 +202,7 @@ static void upload_sf_unit( struct brw_context *brw ) offsetof(struct brw_sf_unit_state, sf5), brw->batch.bo, brw->sf.vp_offset | sf->dw5, - I915_GEM_DOMAIN_INSTRUCTION, 0); - + BRW_DOMAINS(INSTRUCTION, false)); /* _NEW_POLYGON */ switch (ctx->Polygon.CullFlag ? ctx->Polygon.CullFaceMode : GL_NONE) { diff --git a/src/mesa/drivers/dri/i965/brw_vs_state.c b/src/mesa/drivers/dri/i965/brw_vs_state.c index d4ef06fd1d..fa82d0fa39 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_state.c @@ -88,7 +88,7 @@ brw_upload_vs_unit(struct brw_context *brw) offsetof(struct brw_vs_unit_state, thread2), stage_state->scratch_bo, ffs(stage_state->per_thread_scratch) - 11, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); vs->thread3.urb_entry_read_length = vue_prog_data->urb_read_length; vs->thread3.const_urb_entry_read_length = prog_data->curb_read_length; @@ -161,7 +161,7 @@ brw_upload_vs_unit(struct brw_context *brw) offsetof(struct brw_vs_unit_state, vs5), brw->batch.bo, stage_state->sampler_offset | sampler_count, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); } brw->ctx.NewDriverState |= BRW_NEW_GEN4_UNIT_STATE; diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 5054674db5..4f813f5ac0 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -137,7 +137,7 @@ brw_upload_wm_unit(struct brw_context *brw) offsetof(struct brw_wm_unit_state, thread2), brw->wm.base.scratch_bo, ffs(brw->wm.base.per_thread_scratch) - 11, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); wm->thread3.dispatch_grf_start_reg = prog_data->base.dispatch_grf_start_reg; @@ -163,7 +163,7 @@ brw_upload_wm_unit(struct brw_context *brw) offsetof(struct brw_wm_unit_state, wm4), brw->batch.bo, brw->wm.base.sampler_offset | wm->dw4, - I915_GEM_DOMAIN_INSTRUCTION, 0); + BRW_DOMAINS(INSTRUCTION, false)); } /* BRW_NEW_FRAGMENT_PROGRAM */ diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 6a7f88dcee..5844e512d2 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -76,7 +76,7 @@ brw_emit_surface_state(struct brw_context *brw, struct intel_mipmap_tree *mt, uint32_t flags, GLenum target, struct isl_view view, uint32_t mocs, uint32_t *surf_offset, int surf_index, - unsigned read_domains, unsigned write_domains) + unsigned domains) { uint32_t tile_x = mt->level[0].slice[0].x_offset; uint32_t tile_y = mt->level[0].slice[0].y_offset; @@ -165,7 +165,7 @@ brw_emit_surface_state(struct brw_context *brw, .address = brw_batch_reloc(&brw->batch, *surf_offset + brw->isl_dev.ss.addr_offset, mt->bo, offset, - read_domains, write_domains), + domains), .aux_surf = aux_surf, .aux_usage = aux_usage, .aux_address = aux_offset, .mocs = mocs, .clear_color = clear_color, @@ -183,7 +183,7 @@ brw_emit_surface_state(struct brw_context *brw, brw_batch_reloc(&brw->batch, *surf_offset + brw->isl_dev.ss.aux_addr_offset, aux_bo, *aux_addr & 0xfff, - read_domains, write_domains); + domains); } } @@ -228,8 +228,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw, brw_emit_surface_state(brw, mt, flags, mt->target, view, rb_mocs[brw->gen], &offset, surf_index, - I915_GEM_DOMAIN_RENDER, - I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); return offset; } @@ -637,7 +636,7 @@ brw_update_texture_surface(struct gl_context *ctx, brw_emit_surface_state(brw, mt, flags, mt->target, view, tex_mocs[brw->gen], surf_offset, surf_index, - I915_GEM_DOMAIN_SAMPLER, 0); + BRW_DOMAINS(SAMPLER, false)); } } @@ -660,8 +659,7 @@ brw_emit_buffer_surface_state(struct brw_context *brw, .address = brw_batch_reloc(&brw->batch, *out_offset + brw->isl_dev.ss.addr_offset, bo, buffer_offset, - I915_GEM_DOMAIN_SAMPLER, - (rw ? I915_GEM_DOMAIN_SAMPLER : 0)), + BRW_DOMAINS(SAMPLER, rw)), .size = buffer_size, .format = surface_format, .stride = pitch, @@ -811,7 +809,7 @@ brw_update_sol_surface(struct brw_context *brw, BRW_SURFACE_RC_READ_WRITE; surf[1] = brw_batch_reloc(&brw->batch, *out_offset + 4, bo, offset_bytes, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); surf[2] = (width << BRW_SURFACE_WIDTH_SHIFT | height << BRW_SURFACE_HEIGHT_SHIFT); surf[3] = (depth << BRW_SURFACE_DEPTH_SHIFT | @@ -928,7 +926,7 @@ brw_emit_null_surface_state(struct brw_context *brw, } surf[1] = brw_batch_reloc(&brw->batch, *out_offset + 4, bo, 0, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); surf[2] = ((width - 1) << BRW_SURFACE_WIDTH_SHIFT | (height - 1) << BRW_SURFACE_HEIGHT_SHIFT); @@ -1000,7 +998,7 @@ gen4_update_renderbuffer_surface(struct brw_context *brw, mt->bo, mt->offset + intel_renderbuffer_get_tile_offsets(irb, &tile_x, &tile_y), - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); + BRW_DOMAINS(RENDER, true)); surf[2] = ((rb->Width - 1) << BRW_SURFACE_WIDTH_SHIFT | (rb->Height - 1) << BRW_SURFACE_HEIGHT_SHIFT); @@ -1190,7 +1188,7 @@ update_renderbuffer_read_surfaces(struct brw_context *brw) brw_emit_surface_state(brw, irb->mt, flags, target, view, tex_mocs[brw->gen], surf_offset, surf_index, - I915_GEM_DOMAIN_SAMPLER, 0); + BRW_DOMAINS(SAMPLER, false)); } else { brw->vtbl.emit_null_surface_state( @@ -1736,9 +1734,8 @@ update_image_surface(struct brw_context *brw, brw_emit_surface_state(brw, mt, flags, mt->target, view, tex_mocs[brw->gen], surf_offset, surf_index, - I915_GEM_DOMAIN_SAMPLER, - access == GL_READ_ONLY ? 0 : - I915_GEM_DOMAIN_SAMPLER); + BRW_DOMAINS(SAMPLER, + access != GL_READ_ONLY)); } update_texture_image_param(brw, u, surface_idx, param); diff --git a/src/mesa/drivers/dri/i965/gen6_constant_state.c b/src/mesa/drivers/dri/i965/gen6_constant_state.c index 3aeafcf3b2..717aa1a64b 100644 --- a/src/mesa/drivers/dri/i965/gen6_constant_state.c +++ b/src/mesa/drivers/dri/i965/gen6_constant_state.c @@ -69,7 +69,7 @@ gen7_upload_constant_state(struct brw_context *brw, /* XXX: When using buffers other than 0, you need to specify the * graphics virtual address regardless of INSPM/debug bits */ - OUT_RELOC64(brw->batch.bo, I915_GEM_DOMAIN_RENDER, 0, + OUT_RELOC64(brw->batch.bo, BRW_DOMAINS(RENDER, false), stage_state->push_const_offset); OUT_BATCH(0); OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen6_depth_state.c b/src/mesa/drivers/dri/i965/gen6_depth_state.c index 89ba911e94..bf159a7933 100644 --- a/src/mesa/drivers/dri/i965/gen6_depth_state.c +++ b/src/mesa/drivers/dri/i965/gen6_depth_state.c @@ -122,9 +122,7 @@ gen6_emit_depth_stencil_hiz(struct brw_context *brw, /* 3DSTATE_DEPTH_BUFFER dw2 */ if (depth_mt) { - OUT_RELOC(depth_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - 0); + OUT_RELOC(depth_mt->bo, BRW_DOMAINS(RENDER, true), 0); } else { OUT_BATCH(0); } @@ -173,9 +171,7 @@ gen6_emit_depth_stencil_hiz(struct brw_context *brw, BEGIN_BATCH(3); OUT_BATCH((_3DSTATE_HIER_DEPTH_BUFFER << 16) | (3 - 2)); OUT_BATCH(hiz_mt->pitch - 1); - OUT_RELOC(hiz_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - offset); + OUT_RELOC(hiz_mt->bo, BRW_DOMAINS(RENDER, true), offset); ADVANCE_BATCH(); } else { BEGIN_BATCH(3); @@ -214,9 +210,7 @@ gen6_emit_depth_stencil_hiz(struct brw_context *brw, * the stencil buffer is stored with two rows interleaved. */ OUT_BATCH(2 * stencil_mt->pitch - 1); - OUT_RELOC(stencil_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - offset); + OUT_RELOC(stencil_mt->bo, BRW_DOMAINS(RENDER, true), offset); ADVANCE_BATCH(); } else { BEGIN_BATCH(3); diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c b/src/mesa/drivers/dri/i965/gen6_gs_state.c index df5f9e8c3b..6ea54ff828 100644 --- a/src/mesa/drivers/dri/i965/gen6_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c @@ -144,7 +144,7 @@ upload_gs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); /* no scratch space */ diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index 3694b3b141..631b4a1f57 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -129,7 +129,7 @@ upload_vs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 31f873241c..2257a4ebc8 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -221,7 +221,7 @@ gen6_upload_wm_state(struct brw_context *brw, OUT_BATCH(dw2); if (prog_data->base.total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen7_cs_state.c b/src/mesa/drivers/dri/i965/gen7_cs_state.c index 7572fec30f..2fff78ab90 100644 --- a/src/mesa/drivers/dri/i965/gen7_cs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_cs_state.c @@ -69,21 +69,21 @@ brw_upload_cs_state(struct brw_context *brw) * where 0 = 1k, 1 = 2k, 2 = 4k, ..., 11 = 2M. */ OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else if (brw->is_haswell) { /* Haswell's Per Thread Scratch Space is in the range [0, 10] * where 0 = 2k, 1 = 4k, 2 = 8k, ..., 10 = 2M. */ OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 12); } else { /* Earlier platforms use the range [0, 11] to mean [1kB, 12kB] * where 0 = 1kB, 1 = 2kB, 2 = 3kB, ..., 11 = 12kB. */ OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), stage_state->per_thread_scratch / 1024 - 1); } } else { diff --git a/src/mesa/drivers/dri/i965/gen7_ds_state.c b/src/mesa/drivers/dri/i965/gen7_ds_state.c index 25e13d265e..73ea55efb1 100644 --- a/src/mesa/drivers/dri/i965/gen7_ds_state.c +++ b/src/mesa/drivers/dri/i965/gen7_ds_state.c @@ -84,7 +84,7 @@ gen7_upload_ds_state(struct brw_context *brw) GEN7_DS_BINDING_TABLE_ENTRY_COUNT)); if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen7_gs_state.c b/src/mesa/drivers/dri/i965/gen7_gs_state.c index 12f54b8a78..aac97d0622 100644 --- a/src/mesa/drivers/dri/i965/gen7_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_gs_state.c @@ -67,7 +67,7 @@ upload_gs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen7_hs_state.c b/src/mesa/drivers/dri/i965/gen7_hs_state.c index 851af15e96..5e8e8bada6 100644 --- a/src/mesa/drivers/dri/i965/gen7_hs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_hs_state.c @@ -86,7 +86,7 @@ gen7_upload_hs_state(struct brw_context *brw) OUT_BATCH(stage_state->prog_offset); if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen7_misc_state.c b/src/mesa/drivers/dri/i965/gen7_misc_state.c index c46eb72206..e5440d7a5c 100644 --- a/src/mesa/drivers/dri/i965/gen7_misc_state.c +++ b/src/mesa/drivers/dri/i965/gen7_misc_state.c @@ -113,9 +113,7 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, /* 3DSTATE_DEPTH_BUFFER dw2 */ if (depth_mt) { - OUT_RELOC(depth_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - 0); + OUT_RELOC(depth_mt->bo, BRW_DOMAINS(RENDER, true), 0); } else { OUT_BATCH(0); } @@ -151,10 +149,7 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (3 - 2)); OUT_BATCH((mocs << 25) | (hiz_buf->aux_base.pitch - 1)); - OUT_RELOC(hiz_buf->aux_base.bo, - I915_GEM_DOMAIN_RENDER, - I915_GEM_DOMAIN_RENDER, - 0); + OUT_RELOC(hiz_buf->aux_base.bo, BRW_DOMAINS(RENDER, true), 0); ADVANCE_BATCH(); } @@ -183,9 +178,7 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, OUT_BATCH(enabled | mocs << 25 | (2 * stencil_mt->pitch - 1)); - OUT_RELOC(stencil_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - 0); + OUT_RELOC(stencil_mt->bo, BRW_DOMAINS(RENDER, true), 0); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen7_sol_state.c b/src/mesa/drivers/dri/i965/gen7_sol_state.c index 7e00d9fd0f..1af2a5039f 100644 --- a/src/mesa/drivers/dri/i965/gen7_sol_state.c +++ b/src/mesa/drivers/dri/i965/gen7_sol_state.c @@ -81,8 +81,8 @@ upload_3dstate_so_buffers(struct brw_context *brw) BEGIN_BATCH(4); OUT_BATCH(_3DSTATE_SO_BUFFER << 16 | (4 - 2)); OUT_BATCH((i << SO_BUFFER_INDEX_SHIFT) | stride); - OUT_RELOC(bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, start); - OUT_RELOC(bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, end); + OUT_RELOC(bo, BRW_DOMAINS(RENDER, true), start); + OUT_RELOC(bo, BRW_DOMAINS(RENDER, true), end); ADVANCE_BATCH(); } } @@ -603,8 +603,7 @@ gen7_resume_transform_feedback(struct gl_context *ctx, brw_load_register_mem(brw, GEN7_SO_WRITE_OFFSET(i), brw_obj->offset_bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, true), i * sizeof(uint32_t)); } } diff --git a/src/mesa/drivers/dri/i965/gen7_vs_state.c b/src/mesa/drivers/dri/i965/gen7_vs_state.c index b6c2a9788e..f7762efb16 100644 --- a/src/mesa/drivers/dri/i965/gen7_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen7_vs_state.c @@ -57,7 +57,7 @@ upload_vs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen7_wm_state.c b/src/mesa/drivers/dri/i965/gen7_wm_state.c index aa964da48e..59fc4a74e1 100644 --- a/src/mesa/drivers/dri/i965/gen7_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen7_wm_state.c @@ -236,7 +236,7 @@ gen7_upload_ps_state(struct brw_context *brw, OUT_BATCH(dw2); if (prog_data->base.total_scratch) { OUT_RELOC(brw->wm.base.scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen8_depth_state.c b/src/mesa/drivers/dri/i965/gen8_depth_state.c index 30f0f11432..76f67e02ab 100644 --- a/src/mesa/drivers/dri/i965/gen8_depth_state.c +++ b/src/mesa/drivers/dri/i965/gen8_depth_state.c @@ -69,8 +69,7 @@ emit_depth_packets(struct brw_context *brw, depthbuffer_format << 18 | (depth_mt ? depth_mt->pitch - 1 : 0)); if (depth_mt) { - OUT_RELOC64(depth_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); + OUT_RELOC64(depth_mt->bo, BRW_DOMAINS(RENDER, true), 0); } else { OUT_BATCH(0); OUT_BATCH(0); @@ -94,8 +93,7 @@ emit_depth_packets(struct brw_context *brw, BEGIN_BATCH(5); OUT_BATCH(GEN7_3DSTATE_HIER_DEPTH_BUFFER << 16 | (5 - 2)); OUT_BATCH((depth_mt->hiz_buf->aux_base.pitch - 1) | mocs_wb << 25); - OUT_RELOC64(depth_mt->hiz_buf->aux_base.bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); + OUT_RELOC64(depth_mt->hiz_buf->aux_base.bo, BRW_DOMAINS(RENDER, true), 0); OUT_BATCH(depth_mt->hiz_buf->aux_base.qpitch >> 2); ADVANCE_BATCH(); } @@ -127,8 +125,7 @@ emit_depth_packets(struct brw_context *brw, */ OUT_BATCH(HSW_STENCIL_ENABLED | mocs_wb << 22 | (2 * stencil_mt->pitch - 1)); - OUT_RELOC64(stencil_mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); + OUT_RELOC64(stencil_mt->bo, BRW_DOMAINS(RENDER, true), 0); OUT_BATCH(stencil_mt ? stencil_mt->qpitch >> 2 : 0); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen8_draw_upload.c b/src/mesa/drivers/dri/i965/gen8_draw_upload.c index 64599103e0..c761bf421f 100644 --- a/src/mesa/drivers/dri/i965/gen8_draw_upload.c +++ b/src/mesa/drivers/dri/i965/gen8_draw_upload.c @@ -375,7 +375,7 @@ gen8_emit_index_buffer(struct brw_context *brw) BEGIN_BATCH(5); OUT_BATCH(CMD_INDEX_BUFFER << 16 | (5 - 2)); OUT_BATCH(brw_get_index_type(index_buffer->type) | mocs_wb); - OUT_RELOC64(brw->ib.bo, I915_GEM_DOMAIN_VERTEX, 0, 0); + OUT_RELOC64(brw->ib.bo, BRW_DOMAINS(VERTEX, false), 0); OUT_BATCH(brw->ib.size); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen8_ds_state.c b/src/mesa/drivers/dri/i965/gen8_ds_state.c index 6c3f9469ce..7469f367b9 100644 --- a/src/mesa/drivers/dri/i965/gen8_ds_state.c +++ b/src/mesa/drivers/dri/i965/gen8_ds_state.c @@ -52,7 +52,7 @@ gen8_upload_ds_state(struct brw_context *brw) GEN7_DS_BINDING_TABLE_ENTRY_COUNT)); if (prog_data->total_scratch) { OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen8_gs_state.c b/src/mesa/drivers/dri/i965/gen8_gs_state.c index ba32ab82d1..cbb8b4933b 100644 --- a/src/mesa/drivers/dri/i965/gen8_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen8_gs_state.c @@ -59,7 +59,7 @@ gen8_upload_gs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen8_hs_state.c b/src/mesa/drivers/dri/i965/gen8_hs_state.c index dce44e2892..c34e3ae307 100644 --- a/src/mesa/drivers/dri/i965/gen8_hs_state.c +++ b/src/mesa/drivers/dri/i965/gen8_hs_state.c @@ -53,7 +53,7 @@ gen8_upload_hs_state(struct brw_context *brw) OUT_BATCH(0); if (prog_data->total_scratch) { OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen8_ps_state.c b/src/mesa/drivers/dri/i965/gen8_ps_state.c index 2d7bfb60be..85836ba01e 100644 --- a/src/mesa/drivers/dri/i965/gen8_ps_state.c +++ b/src/mesa/drivers/dri/i965/gen8_ps_state.c @@ -265,7 +265,7 @@ gen8_upload_ps_state(struct brw_context *brw, OUT_BATCH(dw3); if (prog_data->base.total_scratch) { OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/gen8_sol_state.c b/src/mesa/drivers/dri/i965/gen8_sol_state.c index 5fbb7c2344..230ffbee6a 100644 --- a/src/mesa/drivers/dri/i965/gen8_sol_state.c +++ b/src/mesa/drivers/dri/i965/gen8_sol_state.c @@ -78,10 +78,10 @@ gen8_upload_3dstate_so_buffers(struct brw_context *brw) GEN8_SO_BUFFER_OFFSET_WRITE_ENABLE | GEN8_SO_BUFFER_OFFSET_ADDRESS_ENABLE | (mocs_wb << 22)); - OUT_RELOC64(bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, start); + OUT_RELOC64(bo, BRW_DOMAINS(RENDER, true), start); OUT_BATCH(xfb_obj->Size[i] / 4 - 1); OUT_RELOC64(brw_obj->offset_bo, - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, true), i * sizeof(uint32_t)); if (brw_obj->zero_offsets) OUT_BATCH(0); /* Zero out the offset and write that to offset_bo */ diff --git a/src/mesa/drivers/dri/i965/gen8_vs_state.c b/src/mesa/drivers/dri/i965/gen8_vs_state.c index ee09dd7577..da3634394d 100644 --- a/src/mesa/drivers/dri/i965/gen8_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen8_vs_state.c @@ -58,7 +58,7 @@ upload_vs_state(struct brw_context *brw) if (prog_data->total_scratch) { OUT_RELOC64(stage_state->scratch_bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), ffs(stage_state->per_thread_scratch) - 11); } else { OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c index 6f40c44e3d..0d34aca45e 100644 --- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c +++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c @@ -49,7 +49,7 @@ blorp_emit_reloc(struct blorp_batch *batch, return __brw_batch_reloc(&brw->batch, (char *)location - (char *)brw->batch.map, address.buffer, address.offset + delta, - address.read_domains, address.write_domain); + address.domains); } static void @@ -62,7 +62,7 @@ blorp_surface_reloc(struct blorp_batch *batch, uint32_t ss_offset, uint64_t reloc_val = __brw_batch_reloc(&brw->batch, ss_offset, address.buffer, address.offset + delta, - address.read_domains, address.write_domain); + address.domains); void *reloc_ptr = (void *)brw->batch.map + ss_offset; #if GEN_GEN >= 8 @@ -119,8 +119,7 @@ blorp_alloc_vertex_buffer(struct blorp_batch *batch, uint32_t size, *addr = (struct blorp_address) { .buffer = brw->batch.bo, - .read_domains = I915_GEM_DOMAIN_VERTEX, - .write_domain = 0, + .domains = BRW_DOMAINS(VERTEX, false), .offset = offset, }; diff --git a/src/mesa/drivers/dri/i965/hsw_queryobj.c b/src/mesa/drivers/dri/i965/hsw_queryobj.c index 357e57bd9b..d15a554270 100644 --- a/src/mesa/drivers/dri/i965/hsw_queryobj.c +++ b/src/mesa/drivers/dri/i965/hsw_queryobj.c @@ -201,8 +201,7 @@ hsw_result_to_gpr0(struct gl_context *ctx, struct brw_query_object *query, brw_load_register_mem64(brw, HSW_CS_GPR(0), query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, false), (query->index + 2) * sizeof(uint64_t)); return; } @@ -220,21 +219,18 @@ hsw_result_to_gpr0(struct gl_context *ctx, struct brw_query_object *query, brw_load_register_mem64(brw, HSW_CS_GPR(0), query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, false), (query->index + 0) * sizeof(uint64_t)); } else { brw_load_register_mem64(brw, HSW_CS_GPR(1), query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, false), (query->index + 0) * sizeof(uint64_t)); brw_load_register_mem64(brw, HSW_CS_GPR(2), query->bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, false), (query->index + 1) * sizeof(uint64_t)); BEGIN_BATCH(5); @@ -305,7 +301,7 @@ set_predicate(struct brw_context *brw, struct brw_query_object *query) /* Load query availability into SRC0 */ brw_load_register_mem64(brw, MI_PREDICATE_SRC0, query->bo, - I915_GEM_DOMAIN_INSTRUCTION, 0, + BRW_DOMAINS(INSTRUCTION, false), (query->index + 2) * sizeof(uint64_t)); /* predicate = !(query_availability == 0); */ @@ -338,11 +334,9 @@ store_query_result_reg(struct brw_context *brw, brw_bo *bo, (cmd_size - 2)); OUT_BATCH(reg + 4 * i); if (brw->gen >= 8) { - OUT_RELOC64(bo, I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, offset + 4 * i); + OUT_RELOC64(bo, BRW_DOMAINS(INSTRUCTION, true), offset + 4 * i); } else { - OUT_RELOC(bo, I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, offset + 4 * i); + OUT_RELOC(bo, BRW_DOMAINS(INSTRUCTION, true), offset + 4 * i); } } ADVANCE_BATCH(); diff --git a/src/mesa/drivers/dri/i965/hsw_sol.c b/src/mesa/drivers/dri/i965/hsw_sol.c index aa27585e94..04f5bbf595 100644 --- a/src/mesa/drivers/dri/i965/hsw_sol.c +++ b/src/mesa/drivers/dri/i965/hsw_sol.c @@ -92,14 +92,12 @@ tally_prims_written(struct brw_context *brw, /* GPR0 = Tally */ brw_load_register_imm32(brw, HSW_CS_GPR(0) + 4, 0); brw_load_register_mem(brw, HSW_CS_GPR(0), obj->prim_count_bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, true), TALLY_OFFSET + i * sizeof(uint32_t)); if (!obj->base.Paused) { /* GPR1 = Start Snapshot */ brw_load_register_mem64(brw, HSW_CS_GPR(1), obj->prim_count_bo, - I915_GEM_DOMAIN_INSTRUCTION, - I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, true), START_OFFSET + i * sizeof(uint64_t)); /* GPR2 = Ending Snapshot */ brw_load_register_reg64(brw, GEN7_SO_NUM_PRIMS_WRITTEN(i), HSW_CS_GPR(2)); @@ -247,7 +245,7 @@ hsw_resume_transform_feedback(struct gl_context *ctx, OUT_BATCH(GEN7_MI_LOAD_REGISTER_MEM | (3 - 2)); OUT_BATCH(GEN7_SO_WRITE_OFFSET(i)); OUT_RELOC(brw_obj->offset_bo, - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + BRW_DOMAINS(INSTRUCTION, true), i * sizeof(uint32_t)); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/intel_blit.c b/src/mesa/drivers/dri/i965/intel_blit.c index 825643cf0c..0e865797c3 100644 --- a/src/mesa/drivers/dri/i965/intel_blit.c +++ b/src/mesa/drivers/dri/i965/intel_blit.c @@ -724,24 +724,16 @@ intelEmitCopyBlit(struct brw_context *brw, OUT_BATCH(SET_FIELD(dst_y, BLT_Y) | SET_FIELD(dst_x, BLT_X)); OUT_BATCH(SET_FIELD(dst_y2, BLT_Y) | SET_FIELD(dst_x2, BLT_X)); if (brw->gen >= 8) { - OUT_RELOC64(dst_buffer, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - dst_offset); + OUT_RELOC64(dst_buffer, BRW_DOMAINS(RENDER, true), dst_offset); } else { - OUT_RELOC(dst_buffer, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - dst_offset); + OUT_RELOC(dst_buffer, BRW_DOMAINS(RENDER, true), dst_offset); } OUT_BATCH(SET_FIELD(src_y, BLT_Y) | SET_FIELD(src_x, BLT_X)); OUT_BATCH((uint16_t)src_pitch); if (brw->gen >= 8) { - OUT_RELOC64(src_buffer, - I915_GEM_DOMAIN_RENDER, 0, - src_offset); + OUT_RELOC64(src_buffer, BRW_DOMAINS(RENDER, false), src_offset); } else { - OUT_RELOC(src_buffer, - I915_GEM_DOMAIN_RENDER, 0, - src_offset); + OUT_RELOC(src_buffer, BRW_DOMAINS(RENDER, false), src_offset); } ADVANCE_BATCH_TILED(dst_y_tiled, src_y_tiled); @@ -810,13 +802,9 @@ intelEmitImmediateColorExpandBlit(struct brw_context *brw, OUT_BATCH((0 << 16) | 0); /* clip x1, y1 */ OUT_BATCH((100 << 16) | 100); /* clip x2, y2 */ if (brw->gen >= 8) { - OUT_RELOC64(dst_buffer, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - dst_offset); + OUT_RELOC64(dst_buffer, BRW_DOMAINS(RENDER, true), dst_offset); } else { - OUT_RELOC(dst_buffer, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, - dst_offset); + OUT_RELOC(dst_buffer, BRW_DOMAINS(RENDER, true), dst_offset); } OUT_BATCH(0); /* bg */ OUT_BATCH(fg_color); /* fg */ @@ -958,11 +946,11 @@ intel_miptree_set_alpha_to_one(struct brw_context *brw, SET_FIELD(x + chunk_x + chunk_w, BLT_X)); if (brw->gen >= 8) { OUT_RELOC64(mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), offset); } else { OUT_RELOC(mt->bo, - I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + BRW_DOMAINS(RENDER, true), offset); } OUT_BATCH(0xffffffff); /* white, but only alpha gets written */ -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev