[Mesa-dev] [PATCH 28/70] i965: Refactor batch buffer dumping
Chris Wilson
chris at chris-wilson.co.uk
Fri Aug 7 13:13:32 PDT 2015
Move the computation of the state offset into a smaller helper to reduce
churn later.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
src/mesa/drivers/dri/i965/brw_state_dump.c | 62 ++++++++++++++++--------------
1 file changed, 33 insertions(+), 29 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
index 620c7ca..a597c1f 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -66,6 +66,11 @@ static const char *surface_tiling[] = {
"Y-tiled"
};
+static void *batch_in(struct brw_context *brw, unsigned offset)
+{
+ return (void *)brw->batch.bo->virtual + offset;
+}
+
static void
batch_out(struct brw_context *brw, const char *name, uint32_t offset,
int index, char *fmt, ...) PRINTFLIKE(5, 6);
@@ -74,7 +79,7 @@ static void
batch_out(struct brw_context *brw, const char *name, uint32_t offset,
int index, char *fmt, ...)
{
- uint32_t *data = brw->batch.bo->virtual + offset;
+ uint32_t *data = batch_in(brw, offset);
va_list va;
fprintf(stderr, "0x%08x: 0x%08x: %8s: ",
@@ -88,7 +93,7 @@ static void
batch_out64(struct brw_context *brw, const char *name, uint32_t offset,
int index, char *fmt, ...)
{
- uint32_t *tmp = brw->batch.bo->virtual + offset;
+ uint32_t *tmp = batch_in(brw, offset);
/* Swap the dwords since we want to handle this as a 64b value, but the data
* is typically emitted as dwords.
@@ -120,7 +125,7 @@ get_965_surfacetype(unsigned int surfacetype)
static void dump_vs_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "VS_STATE";
- struct brw_vs_unit_state *vs = brw->batch.bo->virtual + offset;
+ struct brw_vs_unit_state *vs = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "thread0\n");
batch_out(brw, name, offset, 1, "thread1\n");
@@ -135,7 +140,7 @@ static void dump_vs_state(struct brw_context *brw, uint32_t offset)
static void dump_gs_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "GS_STATE";
- struct brw_gs_unit_state *gs = brw->batch.bo->virtual + offset;
+ struct brw_gs_unit_state *gs = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "thread0\n");
batch_out(brw, name, offset, 1, "thread1\n");
@@ -150,7 +155,7 @@ static void dump_gs_state(struct brw_context *brw, uint32_t offset)
static void dump_clip_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "CLIP_STATE";
- struct brw_clip_unit_state *clip = brw->batch.bo->virtual + offset;
+ struct brw_clip_unit_state *clip = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "thread0\n");
batch_out(brw, name, offset, 1, "thread1\n");
@@ -169,7 +174,7 @@ static void dump_clip_state(struct brw_context *brw, uint32_t offset)
static void dump_sf_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "SF_STATE";
- struct brw_sf_unit_state *sf = brw->batch.bo->virtual + offset;
+ struct brw_sf_unit_state *sf = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "thread0\n");
batch_out(brw, name, offset, 1, "thread1\n");
@@ -185,7 +190,7 @@ static void dump_sf_state(struct brw_context *brw, uint32_t offset)
static void dump_wm_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "WM_STATE";
- struct brw_wm_unit_state *wm = brw->batch.bo->virtual + offset;
+ struct brw_wm_unit_state *wm = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "thread0\n");
batch_out(brw, name, offset, 1, "thread1\n");
@@ -212,7 +217,7 @@ static void dump_wm_state(struct brw_context *brw, uint32_t offset)
static void dump_surface_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "SURF";
- uint32_t *surf = brw->batch.bo->virtual + offset;
+ uint32_t *surf = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "%s %s\n",
get_965_surfacetype(GET_FIELD(surf[0], BRW_SURFACE_TYPE)),
@@ -236,7 +241,7 @@ static void dump_surface_state(struct brw_context *brw, uint32_t offset)
static void dump_gen7_surface_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "SURF";
- uint32_t *surf = brw->batch.bo->virtual + offset;
+ uint32_t *surf = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "%s %s %s\n",
get_965_surfacetype(GET_FIELD(surf[0], BRW_SURFACE_TYPE)),
@@ -275,7 +280,7 @@ static float q_to_float(uint32_t data, int integer_end, int integer_start,
static void
dump_gen8_surface_state(struct brw_context *brw, uint32_t offset, int index)
{
- uint32_t *surf = brw->batch.bo->virtual + offset;
+ uint32_t *surf = batch_in(brw, offset);
int aux_mode = surf[6] & INTEL_MASK(2, 0);
const char *aux_str;
char *name;
@@ -349,8 +354,7 @@ dump_sdc(struct brw_context *brw, uint32_t offset)
const char *name = "SDC";
if (brw->gen >= 5 && brw->gen <= 6) {
- struct gen5_sampler_default_color *sdc = (brw->batch.bo->virtual +
- offset);
+ struct gen5_sampler_default_color *sdc = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "unorm rgba\n");
batch_out(brw, name, offset, 1, "r %f\n", sdc->f[0]);
batch_out(brw, name, offset, 2, "b %f\n", sdc->f[1]);
@@ -364,7 +368,7 @@ dump_sdc(struct brw_context *brw, uint32_t offset)
batch_out(brw, name, offset, 10, "s16 ba\n");
batch_out(brw, name, offset, 11, "s8 rgba\n");
} else {
- float *sdc = brw->batch.bo->virtual + offset;
+ float *sdc = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "r %f\n", sdc[0]);
batch_out(brw, name, offset, 1, "g %f\n", sdc[1]);
batch_out(brw, name, offset, 2, "b %f\n", sdc[2]);
@@ -376,7 +380,7 @@ static void dump_sampler_state(struct brw_context *brw,
uint32_t offset, uint32_t size)
{
int i;
- uint32_t *samp = brw->batch.bo->virtual + offset;
+ uint32_t *samp = batch_in(brw, offset);
for (i = 0; i < size / 16; i++) {
char name[20];
@@ -395,7 +399,7 @@ static void dump_sampler_state(struct brw_context *brw,
static void gen7_dump_sampler_state(struct brw_context *brw,
uint32_t offset, uint32_t size)
{
- const uint32_t *samp = brw->batch.bo->virtual + offset;
+ const uint32_t *samp = batch_in(brw, offset);
char name[20];
for (int i = 0; i < size / 16; i++) {
@@ -435,7 +439,7 @@ static void dump_sf_viewport_state(struct brw_context *brw,
uint32_t offset)
{
const char *name = "SF VP";
- struct brw_sf_viewport *vp = brw->batch.bo->virtual + offset;
+ struct brw_sf_viewport *vp = batch_in(brw, offset);
assert(brw->gen < 7);
@@ -456,7 +460,7 @@ static void dump_clip_viewport_state(struct brw_context *brw,
uint32_t offset)
{
const char *name = "CLIP VP";
- struct brw_clipper_viewport *vp = brw->batch.bo->virtual + offset;
+ struct brw_clipper_viewport *vp = batch_in(brw, offset);
assert(brw->gen < 7);
@@ -470,7 +474,7 @@ static void dump_sf_clip_viewport_state(struct brw_context *brw,
uint32_t offset)
{
const char *name = "SF_CLIP VP";
- struct gen7_sf_clip_viewport *vp = brw->batch.bo->virtual + offset;
+ struct gen7_sf_clip_viewport *vp = batch_in(brw, offset);
assert(brw->gen >= 7);
@@ -485,7 +489,7 @@ static void dump_sf_clip_viewport_state(struct brw_context *brw,
batch_out(brw, name, offset, 9, "guardband ymin = %f\n", vp->guardband.ymin);
batch_out(brw, name, offset, 10, "guardband ymax = %f\n", vp->guardband.ymax);
if (brw->gen >= 8) {
- float *cc_vp = brw->batch.bo->virtual + offset;
+ float *cc_vp = batch_in(brw, offset);
batch_out(brw, name, offset, 12, "Min extents: %.2fx%.2f\n",
cc_vp[12], cc_vp[14]);
batch_out(brw, name, offset, 14, "Max extents: %.2fx%.2f\n",
@@ -497,7 +501,7 @@ static void dump_sf_clip_viewport_state(struct brw_context *brw,
static void dump_cc_viewport_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "CC VP";
- struct brw_cc_viewport *vp = brw->batch.bo->virtual + offset;
+ struct brw_cc_viewport *vp = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "min_depth = %f\n", vp->min_depth);
batch_out(brw, name, offset, 1, "max_depth = %f\n", vp->max_depth);
@@ -506,7 +510,7 @@ static void dump_cc_viewport_state(struct brw_context *brw, uint32_t offset)
static void dump_depth_stencil_state(struct brw_context *brw, uint32_t offset)
{
const char *name = "D_S";
- struct gen6_depth_stencil_state *ds = brw->batch.bo->virtual + offset;
+ struct gen6_depth_stencil_state *ds = batch_in(brw, offset);
batch_out(brw, name, offset, 0,
"stencil %sable, func %d, write %sable\n",
@@ -540,7 +544,7 @@ static void dump_cc_state_gen4(struct brw_context *brw, uint32_t offset)
static void dump_cc_state_gen6(struct brw_context *brw, uint32_t offset)
{
const char *name = "CC";
- struct gen6_color_calc_state *cc = brw->batch.bo->virtual + offset;
+ struct gen6_color_calc_state *cc = batch_in(brw, offset);
batch_out(brw, name, offset, 0,
"alpha test format %s, round disable %d, stencil ref %d, "
@@ -567,7 +571,7 @@ static void dump_blend_state(struct brw_context *brw, uint32_t offset)
static void
gen8_dump_blend_state(struct brw_context *brw, uint32_t offset, uint32_t size)
{
- const uint32_t *blend = brw->batch.bo->virtual + offset;
+ const uint32_t *blend = batch_in(brw, offset);
const char *logicop[] =
{
"LOGICOP_CLEAR (BLACK)",
@@ -654,7 +658,7 @@ static void
dump_scissor(struct brw_context *brw, uint32_t offset)
{
const char *name = "SCISSOR";
- struct gen6_scissor_rect *scissor = brw->batch.bo->virtual + offset;
+ struct gen6_scissor_rect *scissor = batch_in(brw, offset);
batch_out(brw, name, offset, 0, "xmin %d, ymin %d\n",
scissor->xmin, scissor->ymin);
@@ -666,8 +670,8 @@ static void
dump_vs_constants(struct brw_context *brw, uint32_t offset, uint32_t size)
{
const char *name = "VS_CONST";
- uint32_t *as_uint = brw->batch.bo->virtual + offset;
- float *as_float = brw->batch.bo->virtual + offset;
+ uint32_t *as_uint = batch_in(brw, offset);
+ float *as_float = batch_in(brw, offset);
int i;
for (i = 0; i < size / 4; i += 4) {
@@ -682,8 +686,8 @@ static void
dump_wm_constants(struct brw_context *brw, uint32_t offset, uint32_t size)
{
const char *name = "WM_CONST";
- uint32_t *as_uint = brw->batch.bo->virtual + offset;
- float *as_float = brw->batch.bo->virtual + offset;
+ uint32_t *as_uint = batch_in(brw, offset);
+ float *as_float = batch_in(brw, offset);
int i;
for (i = 0; i < size / 4; i += 4) {
@@ -699,7 +703,7 @@ static void dump_binding_table(struct brw_context *brw, uint32_t offset,
{
char name[20];
int i;
- uint32_t *data = brw->batch.bo->virtual + offset;
+ uint32_t *data = batch_in(brw, offset);
for (i = 0; i < size / 4; i++) {
if (data[i] == 0)
--
2.5.0
More information about the mesa-dev
mailing list