|
@@ -152,6 +152,7 @@ static const struct drm_i915_cmd_descriptor render_cmds[] = {
|
|
|
CMD( MI_PREDICATE, SMI, F, 1, S ),
|
|
|
CMD( MI_TOPOLOGY_FILTER, SMI, F, 1, S ),
|
|
|
CMD( MI_DISPLAY_FLIP, SMI, !F, 0xFF, R ),
|
|
|
+ CMD( MI_SET_APPID, SMI, F, 1, S ),
|
|
|
CMD( MI_SET_CONTEXT, SMI, !F, 0xFF, R ),
|
|
|
CMD( MI_URB_CLEAR, SMI, !F, 0xFF, S ),
|
|
|
CMD( MI_STORE_DWORD_IMM, SMI, !F, 0x3F, B,
|
|
@@ -210,6 +211,7 @@ static const struct drm_i915_cmd_descriptor hsw_render_cmds[] = {
|
|
|
CMD( MI_SET_PREDICATE, SMI, F, 1, S ),
|
|
|
CMD( MI_RS_CONTROL, SMI, F, 1, S ),
|
|
|
CMD( MI_URB_ATOMIC_ALLOC, SMI, F, 1, S ),
|
|
|
+ CMD( MI_SET_APPID, SMI, F, 1, S ),
|
|
|
CMD( MI_RS_CONTEXT, SMI, F, 1, S ),
|
|
|
CMD( MI_LOAD_SCAN_LINES_INCL, SMI, !F, 0x3F, M ),
|
|
|
CMD( MI_LOAD_SCAN_LINES_EXCL, SMI, !F, 0x3F, R ),
|
|
@@ -229,6 +231,7 @@ static const struct drm_i915_cmd_descriptor hsw_render_cmds[] = {
|
|
|
|
|
|
static const struct drm_i915_cmd_descriptor video_cmds[] = {
|
|
|
CMD( MI_ARB_ON_OFF, SMI, F, 1, R ),
|
|
|
+ CMD( MI_SET_APPID, SMI, F, 1, S ),
|
|
|
CMD( MI_STORE_DWORD_IMM, SMI, !F, 0xFF, B,
|
|
|
.bits = {{
|
|
|
.offset = 0,
|
|
@@ -272,6 +275,7 @@ static const struct drm_i915_cmd_descriptor video_cmds[] = {
|
|
|
|
|
|
static const struct drm_i915_cmd_descriptor vecs_cmds[] = {
|
|
|
CMD( MI_ARB_ON_OFF, SMI, F, 1, R ),
|
|
|
+ CMD( MI_SET_APPID, SMI, F, 1, S ),
|
|
|
CMD( MI_STORE_DWORD_IMM, SMI, !F, 0xFF, B,
|
|
|
.bits = {{
|
|
|
.offset = 0,
|
|
@@ -481,13 +485,17 @@ static u32 gen7_bsd_get_cmd_length_mask(u32 cmd_header)
|
|
|
u32 client = (cmd_header & INSTR_CLIENT_MASK) >> INSTR_CLIENT_SHIFT;
|
|
|
u32 subclient =
|
|
|
(cmd_header & INSTR_SUBCLIENT_MASK) >> INSTR_SUBCLIENT_SHIFT;
|
|
|
+ u32 op = (cmd_header & INSTR_26_TO_24_MASK) >> INSTR_26_TO_24_SHIFT;
|
|
|
|
|
|
if (client == INSTR_MI_CLIENT)
|
|
|
return 0x3F;
|
|
|
else if (client == INSTR_RC_CLIENT) {
|
|
|
- if (subclient == INSTR_MEDIA_SUBCLIENT)
|
|
|
- return 0xFFF;
|
|
|
- else
|
|
|
+ if (subclient == INSTR_MEDIA_SUBCLIENT) {
|
|
|
+ if (op == 6)
|
|
|
+ return 0xFFFF;
|
|
|
+ else
|
|
|
+ return 0xFFF;
|
|
|
+ } else
|
|
|
return 0xFF;
|
|
|
}
|
|
|
|