[PATCH] mfplat/buffer: Lock D3D9 surfaces with usage flags.
Giovanni Mascellani
gmascellani at codeweavers.com
Fri Feb 11 08:10:29 CST 2022
This way the underlying implementation is able to save some copies.
Running CHRONO TRIGGER with this commit saves 1-2 ms per frame in the sample
copier on my computer.
Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
---
dlls/mfplat/buffer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c
index f161bb29d80..c45309e1c31 100644
--- a/dlls/mfplat/buffer.c
+++ b/dlls/mfplat/buffer.c
@@ -385,7 +385,7 @@ static HRESULT WINAPI d3d9_surface_buffer_Lock(IMFMediaBuffer *iface, BYTE **dat
if (SUCCEEDED(hr))
{
- hr = IDirect3DSurface9_LockRect(buffer->d3d9_surface.surface, &rect, NULL, 0);
+ hr = IDirect3DSurface9_LockRect(buffer->d3d9_surface.surface, &rect, NULL, D3DLOCK_READONLY);
if (SUCCEEDED(hr))
{
copy_image(buffer, buffer->_2d.linear_buffer, buffer->_2d.width, rect.pBits, rect.Pitch,
@@ -425,7 +425,7 @@ static HRESULT WINAPI d3d9_surface_buffer_Unlock(IMFMediaBuffer *iface)
{
D3DLOCKED_RECT rect;
- if (SUCCEEDED(hr = IDirect3DSurface9_LockRect(buffer->d3d9_surface.surface, &rect, NULL, 0)))
+ if (SUCCEEDED(hr = IDirect3DSurface9_LockRect(buffer->d3d9_surface.surface, &rect, NULL, D3DLOCK_DISCARD)))
{
copy_image(buffer, rect.pBits, rect.Pitch, buffer->_2d.linear_buffer, buffer->_2d.width,
buffer->_2d.width, buffer->_2d.height);
--
2.34.1
More information about the wine-devel
mailing list