=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: dxgi: Validate formats for flip presentation model.
Alexandre Julliard
julliard at winehq.org
Tue Sep 18 15:14:31 CDT 2018
Module: wine
Branch: master
Commit: db30c0791f811099c47dcc68db7e00ae17f0b17f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=db30c0791f811099c47dcc68db7e00ae17f0b17f
Author: Józef Kucia <jkucia at codeweavers.com>
Date: Tue Sep 18 16:06:02 2018 +0200
dxgi: Validate formats for flip presentation model.
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dxgi/swapchain.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 5d2cb4a..680fa54 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -55,6 +55,21 @@ static DXGI_SWAP_EFFECT dxgi_swap_effect_from_wined3d(enum wined3d_swap_effect s
}
}
+static BOOL dxgi_validate_flip_swap_effect_format(DXGI_FORMAT format)
+{
+ switch (format)
+ {
+ case DXGI_FORMAT_R16G16B16A16_FLOAT:
+ case DXGI_FORMAT_R10G10B10A2_UNORM:
+ case DXGI_FORMAT_R8G8B8A8_UNORM:
+ case DXGI_FORMAT_B8G8R8A8_UNORM:
+ return TRUE;
+ default:
+ WARN("Invalid swapchain format %#x for flip presentation model.\n", format);
+ return FALSE;
+ }
+}
+
BOOL dxgi_validate_swapchain_desc(const DXGI_SWAP_CHAIN_DESC1 *desc)
{
unsigned int min_buffer_count;
@@ -70,6 +85,9 @@ BOOL dxgi_validate_swapchain_desc(const DXGI_SWAP_CHAIN_DESC1 *desc)
case DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL:
min_buffer_count = 2;
+ if (!dxgi_validate_flip_swap_effect_format(desc->Format))
+ return FALSE;
+
if (desc->SampleDesc.Count != 1 || desc->SampleDesc.Quality)
{
WARN("Invalid sample desc %u, %u for swap effect %#x.\n",
@@ -968,9 +986,7 @@ static DXGI_FORMAT dxgi_format_from_vk_format(VkFormat vk_format)
{
switch (vk_format)
{
- case VK_FORMAT_B8G8R8A8_SRGB: return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
case VK_FORMAT_B8G8R8A8_UNORM: return DXGI_FORMAT_B8G8R8A8_UNORM;
- case VK_FORMAT_R8G8B8A8_SRGB: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
case VK_FORMAT_R8G8B8A8_UNORM: return DXGI_FORMAT_R8G8B8A8_UNORM;
case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return DXGI_FORMAT_R10G10B10A2_UNORM;
default:
@@ -983,7 +999,6 @@ static VkFormat get_swapchain_fallback_format(VkFormat vk_format)
{
switch (vk_format)
{
- case VK_FORMAT_R8G8B8A8_SRGB: return VK_FORMAT_B8G8R8A8_SRGB;
case VK_FORMAT_R8G8B8A8_UNORM: return VK_FORMAT_B8G8R8A8_UNORM;
case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return VK_FORMAT_B8G8R8A8_UNORM;
default:
More information about the wine-cvs
mailing list