Nikolay Sivov : d2d1: Implement IsBufferPrecisionSupported().
Alexandre Julliard
julliard at winehq.org
Thu Jun 23 15:53:39 CDT 2022
Module: wine
Branch: master
Commit: c7dbd459938c5d4d2734a01330301da1a5692746
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c7dbd459938c5d4d2734a01330301da1a5692746
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu Jun 23 14:06:14 2022 +0300
d2d1: Implement IsBufferPrecisionSupported().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/d2d1/device.c | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
index be7b8f9f8e2..04a31992ba2 100644
--- a/dlls/d2d1/device.c
+++ b/dlls/d2d1/device.c
@@ -2045,9 +2045,31 @@ static BOOL STDMETHODCALLTYPE d2d_device_context_IsDxgiFormatSupported(ID2D1Devi
static BOOL STDMETHODCALLTYPE d2d_device_context_IsBufferPrecisionSupported(ID2D1DeviceContext1 *iface,
D2D1_BUFFER_PRECISION buffer_precision)
{
- FIXME("iface %p, buffer_precision %#x stub!\n", iface, buffer_precision);
+ struct d2d_device_context *context = impl_from_ID2D1DeviceContext(iface);
+ DXGI_FORMAT format;
+ UINT support = 0;
+ HRESULT hr;
- return FALSE;
+ TRACE("iface %p, buffer_precision %u.\n", iface, buffer_precision);
+
+ switch (buffer_precision)
+ {
+ case D2D1_BUFFER_PRECISION_8BPC_UNORM: format = DXGI_FORMAT_R8G8B8A8_UNORM; break;
+ case D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB: format = DXGI_FORMAT_R8G8B8A8_UNORM_SRGB; break;
+ case D2D1_BUFFER_PRECISION_16BPC_UNORM: format = DXGI_FORMAT_R16G16B16A16_UNORM; break;
+ case D2D1_BUFFER_PRECISION_16BPC_FLOAT: format = DXGI_FORMAT_R16G16B16A16_FLOAT; break;
+ case D2D1_BUFFER_PRECISION_32BPC_FLOAT: format = DXGI_FORMAT_R32G32B32A32_FLOAT; break;
+ default:
+ WARN("Unexpected precision %u.\n", buffer_precision);
+ return FALSE;
+ }
+
+ if (FAILED(hr = ID3D11Device1_CheckFormatSupport(context->d3d_device, format, &support)))
+ {
+ WARN("Format support check failed, hr %#lx.\n", hr);
+ }
+
+ return !!(support & D3D11_FORMAT_SUPPORT_BUFFER);
}
static void STDMETHODCALLTYPE d2d_device_context_GetImageLocalBounds(ID2D1DeviceContext1 *iface,
More information about the wine-cvs
mailing list