summaryrefslogtreecommitdiff
path: root/intel_batchbuffer.c
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2010-11-09 11:25:50 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2010-12-06 12:50:04 +0800
commit33f547aafefcccad43ec30defd5e5afb18ec0353 (patch)
tree306951f082eb31b09109b266003a2a4e4669bde6 /intel_batchbuffer.c
parent254a2a6b61542a399b4924dbb18cf7e60ce1fb6d (diff)
i965_drv_video: PCI IDs and new MI_FLUSH_DW command for Sandybridge
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
Diffstat (limited to 'intel_batchbuffer.c')
-rw-r--r--intel_batchbuffer.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/intel_batchbuffer.c b/intel_batchbuffer.c
index 15c3201..e561e8b 100644
--- a/intel_batchbuffer.c
+++ b/intel_batchbuffer.c
@@ -281,21 +281,12 @@ intel_batchbuffer_data_bcs(VADriverContextP ctx, void *data, unsigned int size)
intel_batchbuffer_data_helper(ctx, intel->batch_bcs, data, size);
}
-static void
-intel_batchbuffer_emit_mi_flush_helper(VADriverContextP ctx,
- struct intel_batchbuffer *batch)
-{
- intel_batchbuffer_require_space_helper(ctx, batch, 4);
- intel_batchbuffer_emit_dword_helper(batch,
- MI_FLUSH | STATE_INSTRUCTION_CACHE_INVALIDATE);
-}
-
void
intel_batchbuffer_emit_mi_flush(VADriverContextP ctx)
{
- struct intel_driver_data *intel = intel_driver_data(ctx);
-
- intel_batchbuffer_emit_mi_flush_helper(ctx, intel->batch);
+ BEGIN_BATCH(ctx, 1);
+ OUT_BATCH(ctx, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
+ ADVANCE_BATCH(ctx);
}
void
@@ -303,7 +294,18 @@ intel_batchbuffer_emit_mi_flush_bcs(VADriverContextP ctx)
{
struct intel_driver_data *intel = intel_driver_data(ctx);
- intel_batchbuffer_emit_mi_flush_helper(ctx, intel->batch_bcs);
+ if (IS_GEN6(intel->device_id)) {
+ BEGIN_BCS_BATCH(ctx, 4);
+ OUT_BCS_BATCH(ctx, MI_FLUSH_DW | MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE);
+ OUT_BCS_BATCH(ctx, 0);
+ OUT_BCS_BATCH(ctx, 0);
+ OUT_BCS_BATCH(ctx, 0);
+ ADVANCE_BCS_BATCH(ctx);
+ } else {
+ BEGIN_BCS_BATCH(ctx, 1);
+ OUT_BCS_BATCH(ctx, MI_FLUSH | MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE);
+ ADVANCE_BCS_BATCH(ctx);
+ }
}
void