blob: c099fb36bdefd4ac4c03db560f18e69f7e787ea2 [file] [log] [blame]
From 77b5f37181243bb2b471419335e3a8dbae27bc25 Mon Sep 17 00:00:00 2001
From: Jason Ekstrand <jason@jlekstrand.net>
Date: Thu, 11 Mar 2021 13:59:12 -0600
Subject: [PATCH 3/3] Stop using mos_bo_subdata
This maps to the kernel's PWRITE ioctl but there's no real advantage in
using it since the first thing the kernel does is i915_gem_object_wait().
We may as well do the wait in userspace and just write to it through a
map. We're attempting to remove PWRITE support from i915 for future
platforms and this prepares the media driver for the move.
---
.../codec/ddi/media_ddi_decode_base.cpp | 9 +++-----
.../common/codec/ddi/media_ddi_decode_vp8.cpp | 21 ++++++-------------
2 files changed, 9 insertions(+), 21 deletions(-)
diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
index 5807066d90a8..3b8307d3ece4 100644
--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
+++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
@@ -1096,13 +1096,10 @@ VAStatus DdiMediaDecode::CreateBuffer(
if( true == buf->bCFlushReq )
{
- mos_bo_subdata(buf->bo, buf->uiOffset, size * numElements, data);
- }
- else
- {
- status = MOS_SecureMemcpy((void *)(buf->pData + buf->uiOffset), size * numElements, data, size * numElements);
- DDI_CHK_CONDITION((status != MOS_STATUS_SUCCESS), "DDI:Failed to copy buffer data!", VA_STATUS_ERROR_OPERATION_FAILED);
+ mos_bo_wait_rendering(buf->bo);
}
+ status = MOS_SecureMemcpy((void *)(buf->pData + buf->uiOffset), size * numElements, data, size * numElements);
+ DDI_CHK_CONDITION((status != MOS_STATUS_SUCCESS), "DDI:Failed to copy buffer data!", VA_STATUS_ERROR_OPERATION_FAILED);
return va;
CleanUpandReturn:
diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
index 02c677ae2add..72891d584334 100644
--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
+++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
@@ -264,21 +264,12 @@ VAStatus DdiDecodeVP8::ParseProbabilityData(
{
if (vp8ProbDataBuff->pData && probInputBuf)
{
- MOS_LINUX_BO *boDes = nullptr;
- boDes = vp8ProbDataBuff->bo;
-
- mos_bo_wait_rendering(boDes);
- if (0 == mos_bo_subdata(boDes,
- 0,
- sizeof(CODECHAL_VP8_COEFFPROB_DATA),
- probInputBuf))
- {
- return VA_STATUS_SUCCESS;
- }
- else
- {
- return VA_STATUS_ERROR_INVALID_PARAMETER;
- }
+ mos_bo_wait_rendering(vp8ProbDataBuff->bo);
+ MOS_SecureMemcpy(vp8ProbDataBuff->pData,
+ sizeof(CODECHAL_VP8_COEFFPROB_DATA),
+ probInputBuf,
+ sizeof(CODECHAL_VP8_COEFFPROB_DATA));
+ return VA_STATUS_SUCCESS;
}
else
{
--
2.29.0