[PATCH 2/5] wined3d: Pass correct bind flags to swapchain creation functions.

Henri Verbeet hverbeet at codeweavers.com
Wed Oct 31 04:31:48 CDT 2018


Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 dlls/d3d8/device.c       |  2 +-
 dlls/d3d9/device.c       |  2 +-
 dlls/ddraw/ddraw.c       |  2 +-
 dlls/dxgi/device.c       | 12 ++++++------
 dlls/dxgi/dxgi_private.h |  4 ++--
 dlls/dxgi/swapchain.c    |  6 +++---
 dlls/dxgi/utils.c        | 22 +++++++++++-----------
 dlls/wined3d/device.c    |  8 ++++----
 dlls/wined3d/swapchain.c | 12 ++++++------
 include/wine/wined3d.h   |  2 +-
 10 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index a09a72b4051..27b32faa445 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -301,7 +301,7 @@ static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapch
     swapchain_desc->backbuffer_height = present_parameters->BackBufferHeight;
     swapchain_desc->backbuffer_format = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
     swapchain_desc->backbuffer_count = max(1, present_parameters->BackBufferCount);
-    swapchain_desc->backbuffer_usage = WINED3DUSAGE_RENDERTARGET;
+    swapchain_desc->backbuffer_bind_flags = WINED3D_BIND_RENDER_TARGET;
     swapchain_desc->multisample_type = present_parameters->MultiSampleType;
     swapchain_desc->multisample_quality = 0; /* d3d9 only */
     swapchain_desc->swap_effect = wined3dswapeffect_from_d3dswapeffect(present_parameters->SwapEffect);
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index fd92b563356..d4f5a4352ce 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -335,7 +335,7 @@ static BOOL wined3d_swapchain_desc_from_present_parameters(struct wined3d_swapch
     swapchain_desc->backbuffer_height = present_parameters->BackBufferHeight;
     swapchain_desc->backbuffer_format = wined3dformat_from_d3dformat(present_parameters->BackBufferFormat);
     swapchain_desc->backbuffer_count = max(1, present_parameters->BackBufferCount);
-    swapchain_desc->backbuffer_usage = WINED3DUSAGE_RENDERTARGET;
+    swapchain_desc->backbuffer_bind_flags = WINED3D_BIND_RENDER_TARGET;
     swapchain_desc->multisample_type = present_parameters->MultiSampleType;
     swapchain_desc->multisample_quality = present_parameters->MultiSampleQuality;
     swapchain_desc->swap_effect = wined3dswapeffect_from_d3dswapeffect(present_parameters->SwapEffect);
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 43bc36b80ca..e0aba7bd11a 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -631,7 +631,7 @@ static HRESULT ddraw_create_swapchain(struct ddraw *ddraw, HWND window, BOOL win
     swapchain_desc.backbuffer_width = mode.width;
     swapchain_desc.backbuffer_height = mode.height;
     swapchain_desc.backbuffer_format = mode.format_id;
-    swapchain_desc.backbuffer_usage = 0;
+    swapchain_desc.backbuffer_bind_flags = 0;
     swapchain_desc.backbuffer_count = 1;
     swapchain_desc.swap_effect = WINED3D_SWAP_EFFECT_DISCARD;
     swapchain_desc.device_window = window;
diff --git a/dlls/dxgi/device.c b/dlls/dxgi/device.c
index 2c459ca2469..26f248800fa 100644
--- a/dlls/dxgi/device.c
+++ b/dlls/dxgi/device.c
@@ -186,12 +186,12 @@ static HRESULT STDMETHODCALLTYPE dxgi_device_CreateSurface(IWineDXGIDevice *ifac
     surface_desc.format = wined3dformat_from_dxgi_format(desc->Format);
     wined3d_sample_desc_from_dxgi(&surface_desc.multisample_type,
             &surface_desc.multisample_quality, &desc->SampleDesc);
-    surface_desc.usage = wined3d_usage_from_dxgi_usage(usage);
-    surface_desc.bind_flags = 0;
-    if (surface_desc.usage & WINED3DUSAGE_RENDERTARGET)
-        surface_desc.bind_flags |= WINED3D_BIND_RENDER_TARGET;
-    if (surface_desc.usage & WINED3DUSAGE_TEXTURE)
-        surface_desc.bind_flags |= WINED3D_BIND_SHADER_RESOURCE;
+    surface_desc.bind_flags = wined3d_bind_flags_from_dxgi_usage(usage);
+    surface_desc.usage = 0;
+    if (surface_desc.bind_flags & WINED3D_BIND_SHADER_RESOURCE)
+        surface_desc.usage |= WINED3DUSAGE_TEXTURE;
+    if (surface_desc.bind_flags & WINED3D_BIND_RENDER_TARGET)
+        surface_desc.usage |= WINED3DUSAGE_RENDERTARGET;
     surface_desc.access = WINED3D_RESOURCE_ACCESS_GPU;
     surface_desc.width = desc->Width;
     surface_desc.height = desc->Height;
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index 78f188634fc..1268a9ca648 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -91,8 +91,8 @@ void wined3d_sample_desc_from_dxgi(enum wined3d_multisample_type *wined3d_type,
         unsigned int *wined3d_quality, const DXGI_SAMPLE_DESC *dxgi_desc) DECLSPEC_HIDDEN;
 void wined3d_display_mode_from_dxgi(struct wined3d_display_mode *wined3d_mode,
         const DXGI_MODE_DESC *mode) DECLSPEC_HIDDEN;
-DXGI_USAGE dxgi_usage_from_wined3d_usage(DWORD wined3d_usage) DECLSPEC_HIDDEN;
-DWORD wined3d_usage_from_dxgi_usage(DXGI_USAGE usage) DECLSPEC_HIDDEN;
+DXGI_USAGE dxgi_usage_from_wined3d_bind_flags(unsigned int wined3d_bind_flags) DECLSPEC_HIDDEN;
+unsigned int wined3d_bind_flags_from_dxgi_usage(DXGI_USAGE usage) DECLSPEC_HIDDEN;
 unsigned int dxgi_swapchain_flags_from_wined3d(unsigned int wined3d_flags) DECLSPEC_HIDDEN;
 unsigned int wined3d_swapchain_flags_from_dxgi(unsigned int flags) DECLSPEC_HIDDEN;
 
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 3eefbe50df8..0d325cf61f9 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -381,7 +381,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetDesc(IDXGISwapChain1 *iface,
     desc->BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
     dxgi_sample_desc_from_wined3d(&desc->SampleDesc,
             wined3d_desc.multisample_type, wined3d_desc.multisample_quality);
-    desc->BufferUsage = dxgi_usage_from_wined3d_usage(wined3d_desc.backbuffer_usage);
+    desc->BufferUsage = dxgi_usage_from_wined3d_bind_flags(wined3d_desc.backbuffer_bind_flags);
     desc->BufferCount = wined3d_desc.backbuffer_count;
     desc->OutputWindow = wined3d_desc.device_window;
     desc->Windowed = wined3d_desc.windowed;
@@ -538,7 +538,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetDesc1(IDXGISwapChain1 *iface
     desc->Stereo = FALSE;
     dxgi_sample_desc_from_wined3d(&desc->SampleDesc,
             wined3d_desc.multisample_type, wined3d_desc.multisample_quality);
-    desc->BufferUsage = dxgi_usage_from_wined3d_usage(wined3d_desc.backbuffer_usage);
+    desc->BufferUsage = dxgi_usage_from_wined3d_bind_flags(wined3d_desc.backbuffer_bind_flags);
     desc->BufferCount = wined3d_desc.backbuffer_count;
     desc->Scaling = DXGI_SCALING_STRETCH;
     desc->SwapEffect = dxgi_swap_effect_from_wined3d(wined3d_desc.swap_effect);
@@ -858,7 +858,7 @@ HRESULT d3d11_swapchain_create(IWineDXGIDevice *device, HWND window, const DXGI_
     wined3d_desc.backbuffer_height = swapchain_desc->Height;
     wined3d_desc.backbuffer_format = wined3dformat_from_dxgi_format(swapchain_desc->Format);
     wined3d_desc.backbuffer_count = swapchain_desc->BufferCount;
-    wined3d_desc.backbuffer_usage = wined3d_usage_from_dxgi_usage(swapchain_desc->BufferUsage);
+    wined3d_desc.backbuffer_bind_flags = wined3d_bind_flags_from_dxgi_usage(swapchain_desc->BufferUsage);
     wined3d_sample_desc_from_dxgi(&wined3d_desc.multisample_type,
             &wined3d_desc.multisample_quality, &swapchain_desc->SampleDesc);
     wined3d_desc.device_window = window;
diff --git a/dlls/dxgi/utils.c b/dlls/dxgi/utils.c
index 73b37fda8b5..3a67cfededf 100644
--- a/dlls/dxgi/utils.c
+++ b/dlls/dxgi/utils.c
@@ -455,34 +455,34 @@ void wined3d_display_mode_from_dxgi(struct wined3d_display_mode *wined3d_mode,
     wined3d_mode->scanline_ordering = wined3d_scanline_ordering_from_dxgi(mode->ScanlineOrdering);
 }
 
-DXGI_USAGE dxgi_usage_from_wined3d_usage(DWORD wined3d_usage)
+DXGI_USAGE dxgi_usage_from_wined3d_bind_flags(unsigned int wined3d_bind_flags)
 {
     DXGI_USAGE dxgi_usage = 0;
 
-    if (wined3d_usage & WINED3DUSAGE_TEXTURE)
+    if (wined3d_bind_flags & WINED3D_BIND_SHADER_RESOURCE)
         dxgi_usage |= DXGI_USAGE_SHADER_INPUT;
-    if (wined3d_usage & WINED3DUSAGE_RENDERTARGET)
+    if (wined3d_bind_flags & WINED3D_BIND_RENDER_TARGET)
         dxgi_usage |= DXGI_USAGE_RENDER_TARGET_OUTPUT;
 
-    wined3d_usage &= ~(WINED3DUSAGE_TEXTURE | WINED3DUSAGE_RENDERTARGET);
-    if (wined3d_usage)
-        FIXME("Unhandled wined3d usage %#x.\n", wined3d_usage);
+    wined3d_bind_flags &= ~(WINED3D_BIND_SHADER_RESOURCE | WINED3D_BIND_RENDER_TARGET);
+    if (wined3d_bind_flags)
+        FIXME("Unhandled wined3d bind flags %#x.\n", wined3d_bind_flags);
     return dxgi_usage;
 }
 
-DWORD wined3d_usage_from_dxgi_usage(DXGI_USAGE dxgi_usage)
+unsigned int wined3d_bind_flags_from_dxgi_usage(DXGI_USAGE dxgi_usage)
 {
-    DWORD wined3d_usage = 0;
+    unsigned int wined3d_bind_flags = 0;
 
     if (dxgi_usage & DXGI_USAGE_SHADER_INPUT)
-        wined3d_usage |= WINED3DUSAGE_TEXTURE;
+        wined3d_bind_flags |= WINED3D_BIND_SHADER_RESOURCE;
     if (dxgi_usage & DXGI_USAGE_RENDER_TARGET_OUTPUT)
-        wined3d_usage |= WINED3DUSAGE_RENDERTARGET;
+        wined3d_bind_flags |= WINED3D_BIND_RENDER_TARGET;
 
     dxgi_usage &= ~(DXGI_USAGE_SHADER_INPUT | DXGI_USAGE_RENDER_TARGET_OUTPUT);
     if (dxgi_usage)
         FIXME("Unhandled DXGI usage %#x.\n", dxgi_usage);
-    return wined3d_usage;
+    return wined3d_bind_flags;
 }
 
 #define DXGI_WINED3D_SWAPCHAIN_FLAGS \
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 83b8bea9696..5515b27b069 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1092,7 +1092,7 @@ HRESULT CDECL wined3d_device_init_3d(struct wined3d_device *device,
         goto err_out;
     }
 
-    if (swapchain_desc->backbuffer_count && swapchain_desc->backbuffer_usage & WINED3DUSAGE_RENDERTARGET)
+    if (swapchain_desc->backbuffer_count && swapchain_desc->backbuffer_bind_flags & WINED3D_BIND_RENDER_TARGET)
     {
         struct wined3d_resource *back_buffer = &swapchain->back_buffers[0]->resource;
         struct wined3d_view_desc view_desc;
@@ -4823,8 +4823,8 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
     TRACE("refresh_rate %u\n", swapchain_desc->refresh_rate);
     TRACE("auto_restore_display_mode %#x\n", swapchain_desc->auto_restore_display_mode);
 
-    if (swapchain_desc->backbuffer_usage && swapchain_desc->backbuffer_usage != WINED3DUSAGE_RENDERTARGET)
-        FIXME("Got unexpected backbuffer usage %#x.\n", swapchain_desc->backbuffer_usage);
+    if (swapchain_desc->backbuffer_bind_flags && swapchain_desc->backbuffer_bind_flags != WINED3D_BIND_RENDER_TARGET)
+        FIXME("Got unexpected backbuffer bind flags %#x.\n", swapchain_desc->backbuffer_bind_flags);
 
     if (swapchain_desc->swap_effect != WINED3D_SWAP_EFFECT_DISCARD
             && swapchain_desc->swap_effect != WINED3D_SWAP_EFFECT_SEQUENTIAL
@@ -4939,7 +4939,7 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
         wined3d_rendertarget_view_decref(device->back_buffer_view);
         device->back_buffer_view = NULL;
     }
-    if (swapchain->desc.backbuffer_count && swapchain->desc.backbuffer_usage & WINED3DUSAGE_RENDERTARGET)
+    if (swapchain->desc.backbuffer_count && swapchain->desc.backbuffer_bind_flags & WINED3D_BIND_RENDER_TARGET)
     {
         struct wined3d_resource *back_buffer = &swapchain->back_buffers[0]->resource;
 
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 768d27fd674..91f96a47a03 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -917,14 +917,14 @@ static HRESULT swapchain_init(struct wined3d_swapchain *swapchain, struct wined3
             goto err;
         }
 
-        texture_desc.usage = swapchain->desc.backbuffer_usage;
+        texture_desc.bind_flags = swapchain->desc.backbuffer_bind_flags;
+        texture_desc.usage = 0;
         if (device->wined3d->flags & WINED3D_NO3D)
             texture_desc.usage |= WINED3DUSAGE_OWNDC;
-        texture_desc.bind_flags = 0;
-        if (texture_desc.usage & WINED3DUSAGE_RENDERTARGET)
-            texture_desc.bind_flags |= WINED3D_BIND_RENDER_TARGET;
-        if (texture_desc.usage & WINED3DUSAGE_TEXTURE)
-            texture_desc.bind_flags |= WINED3D_BIND_SHADER_RESOURCE;
+        if (texture_desc.bind_flags & WINED3D_BIND_RENDER_TARGET)
+            texture_desc.usage |= WINED3DUSAGE_RENDERTARGET;
+        if (texture_desc.bind_flags & WINED3D_BIND_SHADER_RESOURCE)
+            texture_desc.usage |= WINED3DUSAGE_TEXTURE;
         for (i = 0; i < swapchain->desc.backbuffer_count; ++i)
         {
             TRACE("Creating back buffer %u.\n", i);
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 7dc47e63d5a..15cbf0895ff 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1747,7 +1747,7 @@ struct wined3d_swapchain_desc
     unsigned int backbuffer_height;
     enum wined3d_format_id backbuffer_format;
     unsigned int backbuffer_count;
-    DWORD backbuffer_usage;
+    unsigned int backbuffer_bind_flags;
     enum wined3d_multisample_type multisample_type;
     DWORD multisample_quality;
     enum wined3d_swap_effect swap_effect;
-- 
2.11.0




More information about the wine-devel mailing list