intel: improve command decoding
Decode both batch and state buffers. Decoding is enabled with
INTEL_DEBUG=batch for now. The functionality should be moved to the debug
layer in the future.
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index a810829..abd5cde 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -1000,7 +1000,8 @@
CMD_ASSERT(cmd, 6, 7.5);
STATIC_ASSERT(ARRAY_SIZE(state->cmd) >= cmd_len);
- return cmd_state_write(cmd, cmd_align, cmd_len, state->cmd);
+ return cmd_state_write(cmd, INTEL_CMD_ITEM_BLEND,
+ cmd_align, cmd_len, state->cmd);
}
static uint32_t gen6_DEPTH_STENCIL_STATE(struct intel_cmd *cmd,
@@ -1012,7 +1013,8 @@
CMD_ASSERT(cmd, 6, 7.5);
STATIC_ASSERT(ARRAY_SIZE(state->cmd) >= cmd_len);
- return cmd_state_write(cmd, cmd_align, cmd_len, state->cmd);
+ return cmd_state_write(cmd, INTEL_CMD_ITEM_DEPTH_STENCIL,
+ cmd_align, cmd_len, state->cmd);
}
static uint32_t gen6_COLOR_CALC_STATE(struct intel_cmd *cmd,
@@ -1025,7 +1027,8 @@
CMD_ASSERT(cmd, 6, 7.5);
- offset = cmd_state_pointer(cmd, cmd_align, cmd_len, &dw);
+ offset = cmd_state_pointer(cmd, INTEL_CMD_ITEM_COLOR_CALC,
+ cmd_align, cmd_len, &dw);
dw[0] = stencil_ref;
dw[1] = 0;
dw[2] = blend_color[0];
@@ -1296,7 +1299,8 @@
if (!viewport)
return;
- offset = cmd_state_write(cmd, viewport->cmd_align * 4,
+ offset = cmd_state_write(cmd, INTEL_CMD_ITEM_SF_VIEWPORT,
+ viewport->cmd_align * 4,
viewport->cmd_len, viewport->cmd);
gen6_3DSTATE_VIEWPORT_STATE_POINTERS(cmd,
@@ -1355,8 +1359,8 @@
if (!viewport)
return;
- offset = cmd_state_write(cmd, viewport->cmd_align * 4,
- viewport->cmd_len, viewport->cmd);
+ offset = cmd_state_write(cmd, INTEL_CMD_ITEM_SF_VIEWPORT,
+ viewport->cmd_align * 4, viewport->cmd_len, viewport->cmd);
gen7_3dstate_pointer(cmd,
GEN7_RENDER_OPCODE_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP,
@@ -1398,7 +1402,7 @@
const XGL_SIZE alignment = 32;
const XGL_SIZE size = u_align(sh->pcb_size, alignment);
- offset = cmd_state_pointer(cmd, alignment,
+ offset = cmd_state_pointer(cmd, INTEL_CMD_ITEM_BLOB, alignment,
size / sizeof(uint32_t), &dw);
memcpy(dw, sh->pcb, sh->pcb_size);
@@ -1437,7 +1441,7 @@
pcb_len = size / alignment;
- offset = cmd_state_pointer(cmd, alignment,
+ offset = cmd_state_pointer(cmd, INTEL_CMD_ITEM_BLOB, alignment,
size / sizeof(uint32_t), &dw);
memcpy(dw, sh->pcb, sh->pcb_size);
}
@@ -1473,7 +1477,7 @@
{
const struct intel_rt_view *view = cmd->bind.att.rt[i];
- offset = cmd_surface_write(cmd,
+ offset = cmd_surface_write(cmd, INTEL_CMD_ITEM_SURFACE,
GEN6_ALIGNMENT_SURFACE_STATE * 4,
view->cmd_len, view->cmd);
@@ -1487,7 +1491,7 @@
const struct intel_mem_view *view =
&cmd->bind.dyn_view.graphics;
- offset = cmd_surface_write(cmd,
+ offset = cmd_surface_write(cmd, INTEL_CMD_ITEM_SURFACE,
GEN6_ALIGNMENT_SURFACE_STATE * 4,
view->cmd_len, view->cmd);
@@ -1506,7 +1510,8 @@
binding_table[i] = offset;
}
- offset = cmd_state_write(cmd, GEN6_ALIGNMENT_BINDING_TABLE_STATE * 4,
+ offset = cmd_state_write(cmd, INTEL_CMD_ITEM_BINDING_TABLE,
+ GEN6_ALIGNMENT_BINDING_TABLE_STATE * 4,
surface_count, binding_table);
if (cmd_gen(cmd) >= INTEL_GEN(7)) {