diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2017-11-14 15:50:51 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2018-01-29 12:40:02 +0800 |
commit | 3746832e454ac1616e89eda2f0bca532946c0d9a (patch) | |
tree | 32f0b8b9f03ef2d581de4c01b324eb6dc950eb92 /src/i965_gpe_utils.c | |
parent | c3b7b9cd39a01cf297839fabdc10f63a2f2ffcc6 (diff) | |
download | libva-intel-driver-3746832e454ac1616e89eda2f0bca532946c0d9a.tar.gz |
Add GPE function for MI_COPY_MEM_MEM command
This function is used to reads 4 bytes from memory and stores the value
of that 4 bytes to back to memory, both source and destination addresses
are Per Process Graphics Address
It is a helper function for low power encoding support
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
Diffstat (limited to 'src/i965_gpe_utils.c')
-rw-r--r-- | src/i965_gpe_utils.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c index fe90c9be..dcb729ba 100644 --- a/src/i965_gpe_utils.c +++ b/src/i965_gpe_utils.c @@ -2467,6 +2467,25 @@ gen8_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx, } void +gen8_gpe_mi_copy_mem_mem(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_copy_mem_parameter *param) +{ + __OUT_BATCH(batch, (MI_COPY_MEM_MEM | + (0 << 22) | + (0 << 21) | + (5 - 2))); /* Always use PPGTT for src and dst */ + __OUT_RELOC64(batch, + param->dst_bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + param->dst_offset); + __OUT_RELOC64(batch, + param->src_bo, + I915_GEM_DOMAIN_RENDER, 0, + param->src_offset); +} + +void gen8_gpe_pipe_control(VADriverContextP ctx, struct intel_batchbuffer *batch, struct gpe_pipe_control_parameter *param) @@ -2813,6 +2832,7 @@ i965_gpe_table_init(VADriverContextP ctx) gpe->mi_store_register_mem = gen8_gpe_mi_store_register_mem; gpe->mi_store_data_imm = gen8_gpe_mi_store_data_imm; gpe->mi_flush_dw = gen8_gpe_mi_flush_dw; + gpe->mi_copy_mem_mem = gen8_gpe_mi_copy_mem_mem; } else if (IS_GEN9(i965->intel.device_info) || IS_GEN10(i965->intel.device_info)) { gpe->context_init = gen8_gpe_context_init; @@ -2836,6 +2856,7 @@ i965_gpe_table_init(VADriverContextP ctx) gpe->mi_store_register_mem = gen8_gpe_mi_store_register_mem; gpe->mi_store_data_imm = gen8_gpe_mi_store_data_imm; gpe->mi_flush_dw = gen8_gpe_mi_flush_dw; + gpe->mi_copy_mem_mem = gen8_gpe_mi_copy_mem_mem; } else { // TODO: for other platforms } |