diff options
| author | Xiang, Haihao <haihao.xiang@intel.com> | 2010-11-09 11:25:50 +0800 |
|---|---|---|
| committer | Xiang, Haihao <haihao.xiang@intel.com> | 2010-12-06 12:50:04 +0800 |
| commit | 33f547aafefcccad43ec30defd5e5afb18ec0353 (patch) | |
| tree | 306951f082eb31b09109b266003a2a4e4669bde6 /intel_batchbuffer.c | |
| parent | 254a2a6b61542a399b4924dbb18cf7e60ce1fb6d (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.c | 28 |
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 |
