aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch')
-rw-r--r--meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch b/meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch
new file mode 100644
index 00000000..889eb023
--- /dev/null
+++ b/meta-amdfalconx86/recipes-graphics/mesa/mesa/0014-gallium-radeon-use-VM-for-UVD.patch
@@ -0,0 +1,64 @@
+From cbd8c552976aeebe913749c511c6656d84cd23a4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Wed, 9 Apr 2014 19:41:06 +0200
+Subject: [PATCH 14/29] gallium/radeon: use VM for UVD
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+v2: (leo) add checking for driver backend
+v3: (leo) change variable name from use_amdgpu to use_vm
+v4: rebase by Marek
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Leo Liu <leo.liu@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Arindam Nath <arindam.nath@amd.com>
+---
+ src/gallium/drivers/radeon/radeon_uvd.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/src/gallium/drivers/radeon/radeon_uvd.c b/src/gallium/drivers/radeon/radeon_uvd.c
+index be58d0b..ac850a2 100644
+--- a/src/gallium/drivers/radeon/radeon_uvd.c
++++ b/src/gallium/drivers/radeon/radeon_uvd.c
+@@ -82,6 +82,7 @@ struct ruvd_decoder {
+ unsigned bs_size;
+
+ struct rvid_buffer dpb;
++ bool use_legacy;
+ };
+
+ /* flush IB to the hardware */
+@@ -107,8 +108,16 @@ static void send_cmd(struct ruvd_decoder *dec, unsigned cmd,
+
+ reloc_idx = dec->ws->cs_add_reloc(dec->cs, cs_buf, usage, domain,
+ RADEON_PRIO_MIN);
+- set_reg(dec, RUVD_GPCOM_VCPU_DATA0, off);
+- set_reg(dec, RUVD_GPCOM_VCPU_DATA1, reloc_idx * 4);
++ if (!dec->use_legacy) {
++ uint64_t addr;
++ addr = dec->ws->buffer_get_virtual_address(cs_buf);
++ addr = addr + off;
++ set_reg(dec, RUVD_GPCOM_VCPU_DATA0, addr);
++ set_reg(dec, RUVD_GPCOM_VCPU_DATA1, addr >> 32);
++ } else {
++ set_reg(dec, RUVD_GPCOM_VCPU_DATA0, off);
++ set_reg(dec, RUVD_GPCOM_VCPU_DATA1, reloc_idx * 4);
++ }
+ set_reg(dec, RUVD_GPCOM_VCPU_CMD, cmd << 1);
+ }
+
+@@ -791,6 +800,9 @@ struct pipe_video_codec *ruvd_create_decoder(struct pipe_context *context,
+ if (!dec)
+ return NULL;
+
++ if (info.drm_major < 3)
++ dec->use_legacy = TRUE;
++
+ dec->base = *templ;
+ dec->base.context = context;
+ dec->base.width = width;
+--
+1.9.1
+