diff options
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.patch | 64 |
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 + |