diff options
author | Jordan Justen <jordan.l.justen@intel.com> | 2016-04-17 13:08:01 -0700 |
---|---|---|
committer | Jordan Justen <jordan.l.justen@intel.com> | 2016-05-04 11:23:10 -0700 |
commit | c54e5c2fb22795bcce1ff18f2a0a70d6a4c647a4 (patch) | |
tree | 725b0ed6b832f6a00a456544fc9bdcb319727051 /src/mesa/drivers/dri/i965/gen6_queryobj.c | |
parent | 77959ce07b75f83bff2aae30e4e78aa3c50ab70f (diff) | |
download | external_mesa3d-c54e5c2fb22795bcce1ff18f2a0a70d6a4c647a4.zip external_mesa3d-c54e5c2fb22795bcce1ff18f2a0a70d6a4c647a4.tar.gz external_mesa3d-c54e5c2fb22795bcce1ff18f2a0a70d6a4c647a4.tar.bz2 |
i965: Use offset instead of index in brw_store_register_mem64
This matches the byte based offset of brw_load_register_mem*.
The function is also moved into intel_batchbuffer.c like
brw_load_register_mem*.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen6_queryobj.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_queryobj.c | 57 |
1 files changed, 9 insertions, 48 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_queryobj.c b/src/mesa/drivers/dri/i965/gen6_queryobj.c index d508c4c..960ccfd 100644 --- a/src/mesa/drivers/dri/i965/gen6_queryobj.c +++ b/src/mesa/drivers/dri/i965/gen6_queryobj.c @@ -39,49 +39,6 @@ #include "intel_batchbuffer.h" #include "intel_reg.h" -/* - * Write an arbitrary 64-bit register to a buffer via MI_STORE_REGISTER_MEM. - * - * Only TIMESTAMP and PS_DEPTH_COUNT have special PIPE_CONTROL support; other - * counters have to be read via the generic MI_STORE_REGISTER_MEM. - * - * Callers must explicitly flush the pipeline to ensure the desired value is - * available. - */ -void -brw_store_register_mem64(struct brw_context *brw, - drm_intel_bo *bo, uint32_t reg, int idx) -{ - assert(brw->gen >= 6); - - /* MI_STORE_REGISTER_MEM only stores a single 32-bit value, so to - * read a full 64-bit register, we need to do two of them. - */ - if (brw->gen >= 8) { - 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, - idx * sizeof(uint64_t)); - 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, - sizeof(uint32_t) + idx * sizeof(uint64_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, - idx * sizeof(uint64_t)); - 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, - sizeof(uint32_t) + idx * sizeof(uint64_t)); - ADVANCE_BATCH(); - } -} - static void write_primitives_generated(struct brw_context *brw, drm_intel_bo *query_bo, int stream, int idx) @@ -90,9 +47,11 @@ write_primitives_generated(struct brw_context *brw, if (brw->gen >= 7 && stream > 0) { brw_store_register_mem64(brw, query_bo, - GEN7_SO_PRIM_STORAGE_NEEDED(stream), idx); + GEN7_SO_PRIM_STORAGE_NEEDED(stream), + idx * sizeof(uint64_t)); } else { - brw_store_register_mem64(brw, query_bo, CL_INVOCATION_COUNT, idx); + brw_store_register_mem64(brw, query_bo, CL_INVOCATION_COUNT, + idx * sizeof(uint64_t)); } } @@ -103,9 +62,11 @@ write_xfb_primitives_written(struct brw_context *brw, brw_emit_mi_flush(brw); if (brw->gen >= 7) { - brw_store_register_mem64(brw, bo, GEN7_SO_NUM_PRIMS_WRITTEN(stream), idx); + brw_store_register_mem64(brw, bo, GEN7_SO_NUM_PRIMS_WRITTEN(stream), + idx * sizeof(uint64_t)); } else { - brw_store_register_mem64(brw, bo, GEN6_SO_NUM_PRIMS_WRITTEN, idx); + brw_store_register_mem64(brw, bo, GEN6_SO_NUM_PRIMS_WRITTEN, + idx * sizeof(uint64_t)); } } @@ -159,7 +120,7 @@ emit_pipeline_stat(struct brw_context *brw, drm_intel_bo *bo, */ brw_emit_mi_flush(brw); - brw_store_register_mem64(brw, bo, reg, idx); + brw_store_register_mem64(brw, bo, reg, idx * sizeof(uint64_t)); } |