[PATCH] Moved wined3dformat <-> dxgi_format conversion functions into wined3d

Fabian Maurer dark.shadow4 at web.de
Fri Sep 9 17:18:18 CDT 2016


This change is a measure of code-deduplication and to make these functions reusable in other parts.
Kept in wined3d.dll instead of dxgi.dll to make sure dll-overrides of dxgi doesn't break things in other parts.
New source-file since further additions will follow.

Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
---
 dlls/d3d11/d3d11_private.h |   2 -
 dlls/d3d11/device.c        |  12 +--
 dlls/d3d11/inputlayout.c   |   2 +-
 dlls/d3d11/texture.c       |   6 +-
 dlls/d3d11/utils.c         | 220 ---------------------------------------
 dlls/d3d11/view.c          |   8 +-
 dlls/dxgi/device.c         |   2 +-
 dlls/dxgi/dxgi_private.h   |   2 -
 dlls/dxgi/factory.c        |   2 +-
 dlls/dxgi/output.c         |   4 +-
 dlls/dxgi/surface.c        |   2 +-
 dlls/dxgi/swapchain.c      |   4 +-
 dlls/dxgi/utils.c          | 222 +--------------------------------------
 dlls/wined3d/Makefile.in   |   1 +
 dlls/wined3d/d3dtexture.c  | 254 +++++++++++++++++++++++++++++++++++++++++++++
 dlls/wined3d/wined3d.spec  |   3 +
 include/wine/wined3d.h     |   4 +
 17 files changed, 284 insertions(+), 466 deletions(-)
 create mode 100644 dlls/wined3d/d3dtexture.c

diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 78cd265..9a84214 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -56,8 +56,6 @@ const char *debug_d3d10_primitive_topology(D3D10_PRIMITIVE_TOPOLOGY topology) DE
 const char *debug_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
 const char *debug_float4(const float *values) DECLSPEC_HIDDEN;
 
-DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
-enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
 unsigned int wined3d_getdata_flags_from_d3d11_async_getdata_flags(unsigned int d3d11_flags) DECLSPEC_HIDDEN;
 DWORD wined3d_usage_from_d3d11(UINT bind_flags, enum D3D11_USAGE usage) DECLSPEC_HIDDEN;
 struct wined3d_resource *wined3d_resource_from_d3d11_resource(ID3D11Resource *resource) DECLSPEC_HIDDEN;
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 72e6a71..b0bad87 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -363,7 +363,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_IASetIndexBuffer(ID3D11Dev
     wined3d_mutex_lock();
     wined3d_device_set_index_buffer(device->wined3d_device,
             buffer_impl ? buffer_impl->wined3d_buffer : NULL,
-            wined3dformat_from_dxgi_format(format), offset);
+            wined3d_wined3dformat_from_dxgi_format(format), offset);
     wined3d_mutex_unlock();
 }
 
@@ -1411,7 +1411,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_IAGetIndexBuffer(ID3D11Dev
 
     wined3d_mutex_lock();
     wined3d_buffer = wined3d_device_get_index_buffer(device->wined3d_device, &wined3d_format, offset);
-    *format = dxgi_format_from_wined3dformat(wined3d_format);
+    *format = wined3d_dxgi_format_from_wined3dformat(wined3d_format);
     if (!wined3d_buffer)
     {
         wined3d_mutex_unlock();
@@ -2736,7 +2736,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CheckMultisampleQualityLevels(ID3D
     wined3d = wined3d_device_get_wined3d(device->wined3d_device);
     wined3d_device_get_creation_parameters(device->wined3d_device, &params);
     hr = wined3d_check_device_multisample_type(wined3d, params.adapter_idx, params.device_type,
-            wined3dformat_from_dxgi_format(format), TRUE, sample_count, quality_level_count);
+            wined3d_wined3dformat_from_dxgi_format(format), TRUE, sample_count, quality_level_count);
     wined3d_mutex_unlock();
 
     if (hr == WINED3DERR_INVALIDCALL)
@@ -3227,7 +3227,7 @@ static void STDMETHODCALLTYPE d3d10_device_IASetIndexBuffer(ID3D10Device1 *iface
     wined3d_mutex_lock();
     wined3d_device_set_index_buffer(device->wined3d_device,
             buffer_impl ? buffer_impl->wined3d_buffer : NULL,
-            wined3dformat_from_dxgi_format(format), offset);
+            wined3d_wined3dformat_from_dxgi_format(format), offset);
     wined3d_mutex_unlock();
 }
 
@@ -3890,7 +3890,7 @@ static void STDMETHODCALLTYPE d3d10_device_IAGetIndexBuffer(ID3D10Device1 *iface
 
     wined3d_mutex_lock();
     wined3d_buffer = wined3d_device_get_index_buffer(device->wined3d_device, &wined3d_format, offset);
-    *format = dxgi_format_from_wined3dformat(wined3d_format);
+    *format = wined3d_dxgi_format_from_wined3dformat(wined3d_format);
     if (!wined3d_buffer)
     {
         wined3d_mutex_unlock();
@@ -5209,7 +5209,7 @@ static HRESULT CDECL device_parent_create_swapchain_texture(struct wined3d_devic
     desc.Height = wined3d_desc->height;
     desc.MipLevels = 1;
     desc.ArraySize = 1;
-    desc.Format = dxgi_format_from_wined3dformat(wined3d_desc->format);
+    desc.Format = wined3d_dxgi_format_from_wined3dformat(wined3d_desc->format);
     desc.SampleDesc.Count = wined3d_desc->multisample_type ? wined3d_desc->multisample_type : 1;
     desc.SampleDesc.Quality = wined3d_desc->multisample_quality;
     desc.Usage = D3D10_USAGE_DEFAULT;
diff --git a/dlls/d3d11/inputlayout.c b/dlls/d3d11/inputlayout.c
index 7604f05..0a49217 100644
--- a/dlls/d3d11/inputlayout.c
+++ b/dlls/d3d11/inputlayout.c
@@ -66,7 +66,7 @@ static HRESULT d3d11_input_layout_to_wined3d_declaration(const D3D11_INPUT_ELEME
         const D3D11_INPUT_ELEMENT_DESC *f = &element_descs[i];
         unsigned int j;
 
-        e->format = wined3dformat_from_dxgi_format(f->Format);
+        e->format = wined3d_wined3dformat_from_dxgi_format(f->Format);
         e->input_slot = f->InputSlot;
         e->offset = f->AlignedByteOffset;
         e->output_slot = WINED3D_OUTPUT_SLOT_UNUSED;
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index 54c5613..990702f 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -216,7 +216,7 @@ static void STDMETHODCALLTYPE d3d11_texture2d_GetDesc(ID3D11Texture2D *iface, D3
      * there (yet). */
     desc->Width = wined3d_desc.width;
     desc->Height = wined3d_desc.height;
-    desc->Format = dxgi_format_from_wined3dformat(wined3d_desc.format);
+    desc->Format = wined3d_dxgi_format_from_wined3dformat(wined3d_desc.format);
     desc->SampleDesc.Count = wined3d_desc.multisample_type == WINED3D_MULTISAMPLE_NONE
         ? 1 : wined3d_desc.multisample_type;
     desc->SampleDesc.Quality = wined3d_desc.multisample_quality;
@@ -475,7 +475,7 @@ static HRESULT d3d_texture2d_init(struct d3d_texture2d *texture, struct d3d_devi
         FIXME("Multisampled textures not implemented.\n");
 
     wined3d_desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
-    wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc.format = wined3d_wined3dformat_from_dxgi_format(desc->Format);
     wined3d_desc.multisample_type = desc->SampleDesc.Count > 1 ? desc->SampleDesc.Count : WINED3D_MULTISAMPLE_NONE;
     wined3d_desc.multisample_quality = desc->SampleDesc.Quality;
     wined3d_desc.usage = wined3d_usage_from_d3d11(desc->BindFlags, desc->Usage);
@@ -942,7 +942,7 @@ static HRESULT d3d_texture3d_init(struct d3d_texture3d *texture, struct d3d_devi
     texture->desc = *desc;
 
     wined3d_desc.resource_type = WINED3D_RTYPE_TEXTURE_3D;
-    wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc.format = wined3d_wined3dformat_from_dxgi_format(desc->Format);
     wined3d_desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
     wined3d_desc.multisample_quality = 0;
     wined3d_desc.usage = wined3d_usage_from_d3d11(desc->BindFlags, desc->Usage);
diff --git a/dlls/d3d11/utils.c b/dlls/d3d11/utils.c
index 89dbbda..d1fe8c2 100644
--- a/dlls/d3d11/utils.c
+++ b/dlls/d3d11/utils.c
@@ -166,226 +166,6 @@ const char *debug_float4(const float *values)
             values[0], values[1], values[2], values[3]);
 }
 
-DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format)
-{
-    switch(format)
-    {
-        case WINED3DFMT_UNKNOWN: return DXGI_FORMAT_UNKNOWN;
-        case WINED3DFMT_R32G32B32A32_TYPELESS: return DXGI_FORMAT_R32G32B32A32_TYPELESS;
-        case WINED3DFMT_R32G32B32A32_FLOAT: return DXGI_FORMAT_R32G32B32A32_FLOAT;
-        case WINED3DFMT_R32G32B32A32_UINT: return DXGI_FORMAT_R32G32B32A32_UINT;
-        case WINED3DFMT_R32G32B32A32_SINT: return DXGI_FORMAT_R32G32B32A32_SINT;
-        case WINED3DFMT_R32G32B32_TYPELESS: return DXGI_FORMAT_R32G32B32_TYPELESS;
-        case WINED3DFMT_R32G32B32_FLOAT: return DXGI_FORMAT_R32G32B32_FLOAT;
-        case WINED3DFMT_R32G32B32_UINT: return DXGI_FORMAT_R32G32B32_UINT;
-        case WINED3DFMT_R32G32B32_SINT: return DXGI_FORMAT_R32G32B32_SINT;
-        case WINED3DFMT_R16G16B16A16_TYPELESS: return DXGI_FORMAT_R16G16B16A16_TYPELESS;
-        case WINED3DFMT_R16G16B16A16_FLOAT: return DXGI_FORMAT_R16G16B16A16_FLOAT;
-        case WINED3DFMT_R16G16B16A16_UNORM: return DXGI_FORMAT_R16G16B16A16_UNORM;
-        case WINED3DFMT_R16G16B16A16_UINT: return DXGI_FORMAT_R16G16B16A16_UINT;
-        case WINED3DFMT_R16G16B16A16_SNORM: return DXGI_FORMAT_R16G16B16A16_SNORM;
-        case WINED3DFMT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_SINT;
-        case WINED3DFMT_R32G32_TYPELESS: return DXGI_FORMAT_R32G32_TYPELESS;
-        case WINED3DFMT_R32G32_FLOAT: return DXGI_FORMAT_R32G32_FLOAT;
-        case WINED3DFMT_R32G32_UINT: return DXGI_FORMAT_R32G32_UINT;
-        case WINED3DFMT_R32G32_SINT: return DXGI_FORMAT_R32G32_SINT;
-        case WINED3DFMT_R32G8X24_TYPELESS: return DXGI_FORMAT_R32G8X24_TYPELESS;
-        case WINED3DFMT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
-        case WINED3DFMT_R32_FLOAT_X8X24_TYPELESS: return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
-        case WINED3DFMT_X32_TYPELESS_G8X24_UINT: return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
-        case WINED3DFMT_R10G10B10A2_TYPELESS: return DXGI_FORMAT_R10G10B10A2_TYPELESS;
-        case WINED3DFMT_R10G10B10A2_UNORM: return DXGI_FORMAT_R10G10B10A2_UNORM;
-        case WINED3DFMT_R10G10B10A2_UINT: return DXGI_FORMAT_R10G10B10A2_UINT;
-        case WINED3DFMT_R11G11B10_FLOAT: return DXGI_FORMAT_R11G11B10_FLOAT;
-        case WINED3DFMT_R8G8B8A8_TYPELESS: return DXGI_FORMAT_R8G8B8A8_TYPELESS;
-        case WINED3DFMT_R8G8B8A8_UNORM: return DXGI_FORMAT_R8G8B8A8_UNORM;
-        case WINED3DFMT_R8G8B8A8_UNORM_SRGB: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
-        case WINED3DFMT_R8G8B8A8_UINT: return DXGI_FORMAT_R8G8B8A8_UINT;
-        case WINED3DFMT_R8G8B8A8_SNORM: return DXGI_FORMAT_R8G8B8A8_SNORM;
-        case WINED3DFMT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_SINT;
-        case WINED3DFMT_R16G16_TYPELESS: return DXGI_FORMAT_R16G16_TYPELESS;
-        case WINED3DFMT_R16G16_FLOAT: return DXGI_FORMAT_R16G16_FLOAT;
-        case WINED3DFMT_R16G16_UNORM: return DXGI_FORMAT_R16G16_UNORM;
-        case WINED3DFMT_R16G16_UINT: return DXGI_FORMAT_R16G16_UINT;
-        case WINED3DFMT_R16G16_SNORM: return DXGI_FORMAT_R16G16_SNORM;
-        case WINED3DFMT_R16G16_SINT: return DXGI_FORMAT_R16G16_SINT;
-        case WINED3DFMT_R32_TYPELESS: return DXGI_FORMAT_R32_TYPELESS;
-        case WINED3DFMT_D32_FLOAT: return DXGI_FORMAT_D32_FLOAT;
-        case WINED3DFMT_R32_FLOAT: return DXGI_FORMAT_R32_FLOAT;
-        case WINED3DFMT_R32_UINT: return DXGI_FORMAT_R32_UINT;
-        case WINED3DFMT_R32_SINT: return DXGI_FORMAT_R32_SINT;
-        case WINED3DFMT_R24G8_TYPELESS: return DXGI_FORMAT_R24G8_TYPELESS;
-        case WINED3DFMT_D24_UNORM_S8_UINT: return DXGI_FORMAT_D24_UNORM_S8_UINT;
-        case WINED3DFMT_R24_UNORM_X8_TYPELESS: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
-        case WINED3DFMT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
-        case WINED3DFMT_R8G8_TYPELESS: return DXGI_FORMAT_R8G8_TYPELESS;
-        case WINED3DFMT_R8G8_UNORM: return DXGI_FORMAT_R8G8_UNORM;
-        case WINED3DFMT_R8G8_UINT: return DXGI_FORMAT_R8G8_UINT;
-        case WINED3DFMT_R8G8_SNORM: return DXGI_FORMAT_R8G8_SNORM;
-        case WINED3DFMT_R8G8_SINT: return DXGI_FORMAT_R8G8_SINT;
-        case WINED3DFMT_R16_TYPELESS: return DXGI_FORMAT_R16_TYPELESS;
-        case WINED3DFMT_R16_FLOAT: return DXGI_FORMAT_R16_FLOAT;
-        case WINED3DFMT_D16_UNORM: return DXGI_FORMAT_D16_UNORM;
-        case WINED3DFMT_R16_UNORM: return DXGI_FORMAT_R16_UNORM;
-        case WINED3DFMT_R16_UINT: return DXGI_FORMAT_R16_UINT;
-        case WINED3DFMT_R16_SNORM: return DXGI_FORMAT_R16_SNORM;
-        case WINED3DFMT_R16_SINT: return DXGI_FORMAT_R16_SINT;
-        case WINED3DFMT_R8_TYPELESS: return DXGI_FORMAT_R8_TYPELESS;
-        case WINED3DFMT_R8_UNORM: return DXGI_FORMAT_R8_UNORM;
-        case WINED3DFMT_R8_UINT: return DXGI_FORMAT_R8_UINT;
-        case WINED3DFMT_R8_SNORM: return DXGI_FORMAT_R8_SNORM;
-        case WINED3DFMT_R8_SINT: return DXGI_FORMAT_R8_SINT;
-        case WINED3DFMT_A8_UNORM: return DXGI_FORMAT_A8_UNORM;
-        case WINED3DFMT_R1_UNORM: return DXGI_FORMAT_R1_UNORM;
-        case WINED3DFMT_R9G9B9E5_SHAREDEXP: return DXGI_FORMAT_R9G9B9E5_SHAREDEXP;
-        case WINED3DFMT_R8G8_B8G8_UNORM: return DXGI_FORMAT_R8G8_B8G8_UNORM;
-        case WINED3DFMT_G8R8_G8B8_UNORM: return DXGI_FORMAT_G8R8_G8B8_UNORM;
-        case WINED3DFMT_BC1_TYPELESS: return DXGI_FORMAT_BC1_TYPELESS;
-        case WINED3DFMT_BC1_UNORM: return DXGI_FORMAT_BC1_UNORM;
-        case WINED3DFMT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_UNORM_SRGB;
-        case WINED3DFMT_BC2_TYPELESS: return DXGI_FORMAT_BC2_TYPELESS;
-        case WINED3DFMT_BC2_UNORM: return DXGI_FORMAT_BC2_UNORM;
-        case WINED3DFMT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_UNORM_SRGB;
-        case WINED3DFMT_BC3_TYPELESS: return DXGI_FORMAT_BC3_TYPELESS;
-        case WINED3DFMT_BC3_UNORM: return DXGI_FORMAT_BC3_UNORM;
-        case WINED3DFMT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_UNORM_SRGB;
-        case WINED3DFMT_BC4_TYPELESS: return DXGI_FORMAT_BC4_TYPELESS;
-        case WINED3DFMT_BC4_UNORM: return DXGI_FORMAT_BC4_UNORM;
-        case WINED3DFMT_BC4_SNORM: return DXGI_FORMAT_BC4_SNORM;
-        case WINED3DFMT_BC5_TYPELESS: return DXGI_FORMAT_BC5_TYPELESS;
-        case WINED3DFMT_BC5_UNORM: return DXGI_FORMAT_BC5_UNORM;
-        case WINED3DFMT_BC5_SNORM: return DXGI_FORMAT_BC5_SNORM;
-        case WINED3DFMT_B5G6R5_UNORM: return DXGI_FORMAT_B5G6R5_UNORM;
-        case WINED3DFMT_B5G5R5A1_UNORM: return DXGI_FORMAT_B5G5R5A1_UNORM;
-        case WINED3DFMT_B8G8R8A8_UNORM: return DXGI_FORMAT_B8G8R8A8_UNORM;
-        case WINED3DFMT_B8G8R8X8_UNORM: return DXGI_FORMAT_B8G8R8X8_UNORM;
-        case WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM: return DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
-        case WINED3DFMT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_TYPELESS;
-        case WINED3DFMT_B8G8R8A8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
-        case WINED3DFMT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_TYPELESS;
-        case WINED3DFMT_B8G8R8X8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
-        case WINED3DFMT_BC6H_TYPELESS: return DXGI_FORMAT_BC6H_TYPELESS;
-        case WINED3DFMT_BC6H_UF16: return DXGI_FORMAT_BC6H_UF16;
-        case WINED3DFMT_BC6H_SF16: return DXGI_FORMAT_BC6H_SF16;
-        case WINED3DFMT_BC7_TYPELESS: return DXGI_FORMAT_BC7_TYPELESS;
-        case WINED3DFMT_BC7_UNORM: return DXGI_FORMAT_BC7_UNORM;
-        case WINED3DFMT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM_SRGB;
-        default:
-            FIXME("Unhandled wined3d format %#x.\n", format);
-            return DXGI_FORMAT_UNKNOWN;
-    }
-}
-
-enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
-{
-    switch(format)
-    {
-        case DXGI_FORMAT_UNKNOWN: return WINED3DFMT_UNKNOWN;
-        case DXGI_FORMAT_R32G32B32A32_TYPELESS: return WINED3DFMT_R32G32B32A32_TYPELESS;
-        case DXGI_FORMAT_R32G32B32A32_FLOAT: return WINED3DFMT_R32G32B32A32_FLOAT;
-        case DXGI_FORMAT_R32G32B32A32_UINT: return WINED3DFMT_R32G32B32A32_UINT;
-        case DXGI_FORMAT_R32G32B32A32_SINT: return WINED3DFMT_R32G32B32A32_SINT;
-        case DXGI_FORMAT_R32G32B32_TYPELESS: return WINED3DFMT_R32G32B32_TYPELESS;
-        case DXGI_FORMAT_R32G32B32_FLOAT: return WINED3DFMT_R32G32B32_FLOAT;
-        case DXGI_FORMAT_R32G32B32_UINT: return WINED3DFMT_R32G32B32_UINT;
-        case DXGI_FORMAT_R32G32B32_SINT: return WINED3DFMT_R32G32B32_SINT;
-        case DXGI_FORMAT_R16G16B16A16_TYPELESS: return WINED3DFMT_R16G16B16A16_TYPELESS;
-        case DXGI_FORMAT_R16G16B16A16_FLOAT: return WINED3DFMT_R16G16B16A16_FLOAT;
-        case DXGI_FORMAT_R16G16B16A16_UNORM: return WINED3DFMT_R16G16B16A16_UNORM;
-        case DXGI_FORMAT_R16G16B16A16_UINT: return WINED3DFMT_R16G16B16A16_UINT;
-        case DXGI_FORMAT_R16G16B16A16_SNORM: return WINED3DFMT_R16G16B16A16_SNORM;
-        case DXGI_FORMAT_R16G16B16A16_SINT: return WINED3DFMT_R16G16B16A16_SINT;
-        case DXGI_FORMAT_R32G32_TYPELESS: return WINED3DFMT_R32G32_TYPELESS;
-        case DXGI_FORMAT_R32G32_FLOAT: return WINED3DFMT_R32G32_FLOAT;
-        case DXGI_FORMAT_R32G32_UINT: return WINED3DFMT_R32G32_UINT;
-        case DXGI_FORMAT_R32G32_SINT: return WINED3DFMT_R32G32_SINT;
-        case DXGI_FORMAT_R32G8X24_TYPELESS: return WINED3DFMT_R32G8X24_TYPELESS;
-        case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return WINED3DFMT_D32_FLOAT_S8X24_UINT;
-        case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: return WINED3DFMT_R32_FLOAT_X8X24_TYPELESS;
-        case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return WINED3DFMT_X32_TYPELESS_G8X24_UINT;
-        case DXGI_FORMAT_R10G10B10A2_TYPELESS: return WINED3DFMT_R10G10B10A2_TYPELESS;
-        case DXGI_FORMAT_R10G10B10A2_UNORM: return WINED3DFMT_R10G10B10A2_UNORM;
-        case DXGI_FORMAT_R10G10B10A2_UINT: return WINED3DFMT_R10G10B10A2_UINT;
-        case DXGI_FORMAT_R11G11B10_FLOAT: return WINED3DFMT_R11G11B10_FLOAT;
-        case DXGI_FORMAT_R8G8B8A8_TYPELESS: return WINED3DFMT_R8G8B8A8_TYPELESS;
-        case DXGI_FORMAT_R8G8B8A8_UNORM: return WINED3DFMT_R8G8B8A8_UNORM;
-        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return WINED3DFMT_R8G8B8A8_UNORM_SRGB;
-        case DXGI_FORMAT_R8G8B8A8_UINT: return WINED3DFMT_R8G8B8A8_UINT;
-        case DXGI_FORMAT_R8G8B8A8_SNORM: return WINED3DFMT_R8G8B8A8_SNORM;
-        case DXGI_FORMAT_R8G8B8A8_SINT: return WINED3DFMT_R8G8B8A8_SINT;
-        case DXGI_FORMAT_R16G16_TYPELESS: return WINED3DFMT_R16G16_TYPELESS;
-        case DXGI_FORMAT_R16G16_FLOAT: return WINED3DFMT_R16G16_FLOAT;
-        case DXGI_FORMAT_R16G16_UNORM: return WINED3DFMT_R16G16_UNORM;
-        case DXGI_FORMAT_R16G16_UINT: return WINED3DFMT_R16G16_UINT;
-        case DXGI_FORMAT_R16G16_SNORM: return WINED3DFMT_R16G16_SNORM;
-        case DXGI_FORMAT_R16G16_SINT: return WINED3DFMT_R16G16_SINT;
-        case DXGI_FORMAT_R32_TYPELESS: return WINED3DFMT_R32_TYPELESS;
-        case DXGI_FORMAT_D32_FLOAT: return WINED3DFMT_D32_FLOAT;
-        case DXGI_FORMAT_R32_FLOAT: return WINED3DFMT_R32_FLOAT;
-        case DXGI_FORMAT_R32_UINT: return WINED3DFMT_R32_UINT;
-        case DXGI_FORMAT_R32_SINT: return WINED3DFMT_R32_SINT;
-        case DXGI_FORMAT_R24G8_TYPELESS: return WINED3DFMT_R24G8_TYPELESS;
-        case DXGI_FORMAT_D24_UNORM_S8_UINT: return WINED3DFMT_D24_UNORM_S8_UINT;
-        case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: return WINED3DFMT_R24_UNORM_X8_TYPELESS;
-        case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return WINED3DFMT_X24_TYPELESS_G8_UINT;
-        case DXGI_FORMAT_R8G8_TYPELESS: return WINED3DFMT_R8G8_TYPELESS;
-        case DXGI_FORMAT_R8G8_UNORM: return WINED3DFMT_R8G8_UNORM;
-        case DXGI_FORMAT_R8G8_UINT: return WINED3DFMT_R8G8_UINT;
-        case DXGI_FORMAT_R8G8_SNORM: return WINED3DFMT_R8G8_SNORM;
-        case DXGI_FORMAT_R8G8_SINT: return WINED3DFMT_R8G8_SINT;
-        case DXGI_FORMAT_R16_TYPELESS: return WINED3DFMT_R16_TYPELESS;
-        case DXGI_FORMAT_R16_FLOAT: return WINED3DFMT_R16_FLOAT;
-        case DXGI_FORMAT_D16_UNORM: return WINED3DFMT_D16_UNORM;
-        case DXGI_FORMAT_R16_UNORM: return WINED3DFMT_R16_UNORM;
-        case DXGI_FORMAT_R16_UINT: return WINED3DFMT_R16_UINT;
-        case DXGI_FORMAT_R16_SNORM: return WINED3DFMT_R16_SNORM;
-        case DXGI_FORMAT_R16_SINT: return WINED3DFMT_R16_SINT;
-        case DXGI_FORMAT_R8_TYPELESS: return WINED3DFMT_R8_TYPELESS;
-        case DXGI_FORMAT_R8_UNORM: return WINED3DFMT_R8_UNORM;
-        case DXGI_FORMAT_R8_UINT: return WINED3DFMT_R8_UINT;
-        case DXGI_FORMAT_R8_SNORM: return WINED3DFMT_R8_SNORM;
-        case DXGI_FORMAT_R8_SINT: return WINED3DFMT_R8_SINT;
-        case DXGI_FORMAT_A8_UNORM: return WINED3DFMT_A8_UNORM;
-        case DXGI_FORMAT_R1_UNORM: return WINED3DFMT_R1_UNORM;
-        case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: return WINED3DFMT_R9G9B9E5_SHAREDEXP;
-        case DXGI_FORMAT_R8G8_B8G8_UNORM: return WINED3DFMT_R8G8_B8G8_UNORM;
-        case DXGI_FORMAT_G8R8_G8B8_UNORM: return WINED3DFMT_G8R8_G8B8_UNORM;
-        case DXGI_FORMAT_BC1_TYPELESS: return WINED3DFMT_BC1_TYPELESS;
-        case DXGI_FORMAT_BC1_UNORM: return WINED3DFMT_BC1_UNORM;
-        case DXGI_FORMAT_BC1_UNORM_SRGB: return WINED3DFMT_BC1_UNORM_SRGB;
-        case DXGI_FORMAT_BC2_TYPELESS: return WINED3DFMT_BC2_TYPELESS;
-        case DXGI_FORMAT_BC2_UNORM: return WINED3DFMT_BC2_UNORM;
-        case DXGI_FORMAT_BC2_UNORM_SRGB: return WINED3DFMT_BC2_UNORM_SRGB;
-        case DXGI_FORMAT_BC3_TYPELESS: return WINED3DFMT_BC3_TYPELESS;
-        case DXGI_FORMAT_BC3_UNORM: return WINED3DFMT_BC3_UNORM;
-        case DXGI_FORMAT_BC3_UNORM_SRGB: return WINED3DFMT_BC3_UNORM_SRGB;
-        case DXGI_FORMAT_BC4_TYPELESS: return WINED3DFMT_BC4_TYPELESS;
-        case DXGI_FORMAT_BC4_UNORM: return WINED3DFMT_BC4_UNORM;
-        case DXGI_FORMAT_BC4_SNORM: return WINED3DFMT_BC4_SNORM;
-        case DXGI_FORMAT_BC5_TYPELESS: return WINED3DFMT_BC5_TYPELESS;
-        case DXGI_FORMAT_BC5_UNORM: return WINED3DFMT_BC5_UNORM;
-        case DXGI_FORMAT_BC5_SNORM: return WINED3DFMT_BC5_SNORM;
-        case DXGI_FORMAT_B5G6R5_UNORM: return WINED3DFMT_B5G6R5_UNORM;
-        case DXGI_FORMAT_B5G5R5A1_UNORM: return WINED3DFMT_B5G5R5A1_UNORM;
-        case DXGI_FORMAT_B8G8R8A8_UNORM: return WINED3DFMT_B8G8R8A8_UNORM;
-        case DXGI_FORMAT_B8G8R8X8_UNORM: return WINED3DFMT_B8G8R8X8_UNORM;
-        case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: return WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM;
-        case DXGI_FORMAT_B8G8R8A8_TYPELESS: return WINED3DFMT_B8G8R8A8_TYPELESS;
-        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: return WINED3DFMT_B8G8R8A8_UNORM_SRGB;
-        case DXGI_FORMAT_B8G8R8X8_TYPELESS: return WINED3DFMT_B8G8R8X8_TYPELESS;
-        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return WINED3DFMT_B8G8R8X8_UNORM_SRGB;
-        case DXGI_FORMAT_BC6H_TYPELESS: return WINED3DFMT_BC6H_TYPELESS;
-        case DXGI_FORMAT_BC6H_UF16: return WINED3DFMT_BC6H_UF16;
-        case DXGI_FORMAT_BC6H_SF16: return WINED3DFMT_BC6H_SF16;
-        case DXGI_FORMAT_BC7_TYPELESS: return WINED3DFMT_BC7_TYPELESS;
-        case DXGI_FORMAT_BC7_UNORM: return WINED3DFMT_BC7_UNORM;
-        case DXGI_FORMAT_BC7_UNORM_SRGB: return WINED3DFMT_BC7_UNORM_SRGB;
-        default:
-            FIXME("Unhandled DXGI_FORMAT %#x.\n", format);
-            return WINED3DFMT_UNKNOWN;
-    }
-}
-
 unsigned int wined3d_getdata_flags_from_d3d11_async_getdata_flags(unsigned int d3d11_flags)
 {
     if (d3d11_flags & ~D3D11_ASYNC_GETDATA_DONOTFLUSH)
diff --git a/dlls/d3d11/view.c b/dlls/d3d11/view.c
index 205513d..7bd6a19 100644
--- a/dlls/d3d11/view.c
+++ b/dlls/d3d11/view.c
@@ -1212,7 +1212,7 @@ static const struct ID3D10DepthStencilViewVtbl d3d10_depthstencil_view_vtbl =
 static void wined3d_depth_stencil_view_desc_from_d3d11(struct wined3d_rendertarget_view_desc *wined3d_desc,
         const D3D11_DEPTH_STENCIL_VIEW_DESC *desc)
 {
-    wined3d_desc->format_id = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc->format_id = wined3d_wined3dformat_from_dxgi_format(desc->Format);
 
     if (desc->Flags)
         FIXME("Unhandled depth stencil view flags %#x.\n", desc->Flags);
@@ -1627,7 +1627,7 @@ static const struct ID3D10RenderTargetViewVtbl d3d10_rendertarget_view_vtbl =
 static void wined3d_rendertarget_view_desc_from_d3d11(struct wined3d_rendertarget_view_desc *wined3d_desc,
         const D3D11_RENDER_TARGET_VIEW_DESC *desc)
 {
-    wined3d_desc->format_id = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc->format_id = wined3d_wined3dformat_from_dxgi_format(desc->Format);
 
     switch (desc->ViewDimension)
     {
@@ -2064,7 +2064,7 @@ static const struct ID3D10ShaderResourceView1Vtbl d3d10_shader_resource_view_vtb
 static HRESULT wined3d_shader_resource_view_desc_from_d3d11(struct wined3d_shader_resource_view_desc *wined3d_desc,
         const D3D11_SHADER_RESOURCE_VIEW_DESC *desc)
 {
-    wined3d_desc->format_id = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc->format_id = wined3d_wined3dformat_from_dxgi_format(desc->Format);
     wined3d_desc->flags = 0;
 
     switch (desc->ViewDimension)
@@ -2384,7 +2384,7 @@ static const struct ID3D11UnorderedAccessViewVtbl d3d11_unordered_access_view_vt
 static HRESULT wined3d_unordered_access_view_desc_from_d3d11(struct wined3d_unordered_access_view_desc *wined3d_desc,
         const D3D11_UNORDERED_ACCESS_VIEW_DESC *desc)
 {
-    wined3d_desc->format_id = wined3dformat_from_dxgi_format(desc->Format);
+    wined3d_desc->format_id = wined3d_wined3dformat_from_dxgi_format(desc->Format);
     wined3d_desc->flags = 0;
 
     switch (desc->ViewDimension)
diff --git a/dlls/dxgi/device.c b/dlls/dxgi/device.c
index f548ca2..b7e1868 100644
--- a/dlls/dxgi/device.c
+++ b/dlls/dxgi/device.c
@@ -183,7 +183,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_device_CreateSurface(IWineDXGIDevice *ifac
 
     FIXME("Implement DXGI<->wined3d usage conversion\n");
     surface_desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
-    surface_desc.format = wined3dformat_from_dxgi_format(desc->Format);
+    surface_desc.format = wined3d_wined3dformat_from_dxgi_format(desc->Format);
     wined3d_sample_desc_from_dxgi(&surface_desc.multisample_type,
             &surface_desc.multisample_quality, &desc->SampleDesc);
     surface_desc.usage = usage;
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h
index 06892e2..dc23734 100644
--- a/dlls/dxgi/dxgi_private.h
+++ b/dlls/dxgi/dxgi_private.h
@@ -82,8 +82,6 @@ const char *debug_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
 const char *debug_dxgi_mode(const DXGI_MODE_DESC *desc) DECLSPEC_HIDDEN;
 void dump_feature_levels(const D3D_FEATURE_LEVEL *feature_levels, unsigned int level_count) DECLSPEC_HIDDEN;
 
-DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format) DECLSPEC_HIDDEN;
-enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format) DECLSPEC_HIDDEN;
 UINT dxgi_rational_to_uint(const DXGI_RATIONAL *rational) DECLSPEC_HIDDEN;
 enum wined3d_scanline_ordering wined3d_scanline_ordering_from_dxgi(
         DXGI_MODE_SCANLINE_ORDER scanline_order) DECLSPEC_HIDDEN;
diff --git a/dlls/dxgi/factory.c b/dlls/dxgi/factory.c
index d54eea9..89bd88f 100644
--- a/dlls/dxgi/factory.c
+++ b/dlls/dxgi/factory.c
@@ -229,7 +229,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSwapChain(IDXGIFactory1 *ifa
 
     wined3d_desc.backbuffer_width = desc->BufferDesc.Width;
     wined3d_desc.backbuffer_height = desc->BufferDesc.Height;
-    wined3d_desc.backbuffer_format = wined3dformat_from_dxgi_format(desc->BufferDesc.Format);
+    wined3d_desc.backbuffer_format = wined3d_wined3dformat_from_dxgi_format(desc->BufferDesc.Format);
     wined3d_desc.backbuffer_count = desc->BufferCount;
     wined3d_sample_desc_from_dxgi(&wined3d_desc.multisample_type,
             &wined3d_desc.multisample_quality, &desc->SampleDesc);
diff --git a/dlls/dxgi/output.c b/dlls/dxgi/output.c
index 0cf8084..779d252 100644
--- a/dlls/dxgi/output.c
+++ b/dlls/dxgi/output.c
@@ -29,7 +29,7 @@ static void dxgi_mode_from_wined3d(DXGI_MODE_DESC *mode, const struct wined3d_di
     mode->Height = wined3d_mode->height;
     mode->RefreshRate.Numerator = wined3d_mode->refresh_rate;
     mode->RefreshRate.Denominator = 1;
-    mode->Format = dxgi_format_from_wined3dformat(wined3d_mode->format_id);
+    mode->Format = wined3d_dxgi_format_from_wined3dformat(wined3d_mode->format_id);
     mode->ScanlineOrdering = wined3d_mode->scanline_ordering;
     mode->Scaling = DXGI_MODE_SCALING_UNSPECIFIED; /* FIXME */
 }
@@ -183,7 +183,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_output_GetDisplayModeList(IDXGIOutput *ifa
     }
 
     wined3d = output->adapter->factory->wined3d;
-    wined3d_format = wined3dformat_from_dxgi_format(format);
+    wined3d_format = wined3d_wined3dformat_from_dxgi_format(format);
 
     wined3d_mutex_lock();
     max_count = wined3d_get_adapter_mode_count(wined3d, output->adapter->ordinal,
diff --git a/dlls/dxgi/surface.c b/dlls/dxgi/surface.c
index 36fc1e6..c917682 100644
--- a/dlls/dxgi/surface.c
+++ b/dlls/dxgi/surface.c
@@ -174,7 +174,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_surface_GetDesc(IDXGISurface1 *iface, DXGI
     wined3d_mutex_unlock();
     desc->Width = wined3d_desc.width;
     desc->Height = wined3d_desc.height;
-    desc->Format = dxgi_format_from_wined3dformat(wined3d_desc.format);
+    desc->Format = wined3d_dxgi_format_from_wined3dformat(wined3d_desc.format);
     dxgi_sample_desc_from_wined3d(&desc->SampleDesc, wined3d_desc.multisample_type, wined3d_desc.multisample_quality);
 
     return S_OK;
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 2b61327..5b5562a 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -295,7 +295,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_GetDesc(IDXGISwapChain *iface, D
     desc->BufferDesc.Height = wined3d_desc.backbuffer_height;
     desc->BufferDesc.RefreshRate.Numerator = wined3d_desc.refresh_rate;
     desc->BufferDesc.RefreshRate.Denominator = 1;
-    desc->BufferDesc.Format = dxgi_format_from_wined3dformat(wined3d_desc.backbuffer_format);
+    desc->BufferDesc.Format = wined3d_dxgi_format_from_wined3dformat(wined3d_desc.backbuffer_format);
     desc->BufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
     desc->BufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
     dxgi_sample_desc_from_wined3d(&desc->SampleDesc, wined3d_desc.multisample_type, wined3d_desc.multisample_quality);
@@ -338,7 +338,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_ResizeBuffers(IDXGISwapChain *if
         }
     }
     if (format != DXGI_FORMAT_UNKNOWN)
-        wined3d_desc.backbuffer_format = wined3dformat_from_dxgi_format(format);
+        wined3d_desc.backbuffer_format = wined3d_wined3dformat_from_dxgi_format(format);
     hr = wined3d_swapchain_resize_buffers(swapchain->wined3d_swapchain, buffer_count, width, height,
             wined3d_desc.backbuffer_format, wined3d_desc.multisample_type, wined3d_desc.multisample_quality);
     wined3d_mutex_unlock();
diff --git a/dlls/dxgi/utils.c b/dlls/dxgi/utils.c
index b940b15..ce0980b 100644
--- a/dlls/dxgi/utils.c
+++ b/dlls/dxgi/utils.c
@@ -156,226 +156,6 @@ const char *debug_dxgi_format(DXGI_FORMAT format)
 
 #undef WINE_DXGI_TO_STR
 
-DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format)
-{
-    switch(format)
-    {
-        case WINED3DFMT_UNKNOWN: return DXGI_FORMAT_UNKNOWN;
-        case WINED3DFMT_R32G32B32A32_TYPELESS: return DXGI_FORMAT_R32G32B32A32_TYPELESS;
-        case WINED3DFMT_R32G32B32A32_FLOAT: return DXGI_FORMAT_R32G32B32A32_FLOAT;
-        case WINED3DFMT_R32G32B32A32_UINT: return DXGI_FORMAT_R32G32B32A32_UINT;
-        case WINED3DFMT_R32G32B32A32_SINT: return DXGI_FORMAT_R32G32B32A32_SINT;
-        case WINED3DFMT_R32G32B32_TYPELESS: return DXGI_FORMAT_R32G32B32_TYPELESS;
-        case WINED3DFMT_R32G32B32_FLOAT: return DXGI_FORMAT_R32G32B32_FLOAT;
-        case WINED3DFMT_R32G32B32_UINT: return DXGI_FORMAT_R32G32B32_UINT;
-        case WINED3DFMT_R32G32B32_SINT: return DXGI_FORMAT_R32G32B32_SINT;
-        case WINED3DFMT_R16G16B16A16_TYPELESS: return DXGI_FORMAT_R16G16B16A16_TYPELESS;
-        case WINED3DFMT_R16G16B16A16_FLOAT: return DXGI_FORMAT_R16G16B16A16_FLOAT;
-        case WINED3DFMT_R16G16B16A16_UNORM: return DXGI_FORMAT_R16G16B16A16_UNORM;
-        case WINED3DFMT_R16G16B16A16_UINT: return DXGI_FORMAT_R16G16B16A16_UINT;
-        case WINED3DFMT_R16G16B16A16_SNORM: return DXGI_FORMAT_R16G16B16A16_SNORM;
-        case WINED3DFMT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_SINT;
-        case WINED3DFMT_R32G32_TYPELESS: return DXGI_FORMAT_R32G32_TYPELESS;
-        case WINED3DFMT_R32G32_FLOAT: return DXGI_FORMAT_R32G32_FLOAT;
-        case WINED3DFMT_R32G32_UINT: return DXGI_FORMAT_R32G32_UINT;
-        case WINED3DFMT_R32G32_SINT: return DXGI_FORMAT_R32G32_SINT;
-        case WINED3DFMT_R32G8X24_TYPELESS: return DXGI_FORMAT_R32G8X24_TYPELESS;
-        case WINED3DFMT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
-        case WINED3DFMT_R32_FLOAT_X8X24_TYPELESS: return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
-        case WINED3DFMT_X32_TYPELESS_G8X24_UINT: return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
-        case WINED3DFMT_R10G10B10A2_TYPELESS: return DXGI_FORMAT_R10G10B10A2_TYPELESS;
-        case WINED3DFMT_R10G10B10A2_UNORM: return DXGI_FORMAT_R10G10B10A2_UNORM;
-        case WINED3DFMT_R10G10B10A2_UINT: return DXGI_FORMAT_R10G10B10A2_UINT;
-        case WINED3DFMT_R11G11B10_FLOAT: return DXGI_FORMAT_R11G11B10_FLOAT;
-        case WINED3DFMT_R8G8B8A8_TYPELESS: return DXGI_FORMAT_R8G8B8A8_TYPELESS;
-        case WINED3DFMT_R8G8B8A8_UNORM: return DXGI_FORMAT_R8G8B8A8_UNORM;
-        case WINED3DFMT_R8G8B8A8_UNORM_SRGB: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
-        case WINED3DFMT_R8G8B8A8_UINT: return DXGI_FORMAT_R8G8B8A8_UINT;
-        case WINED3DFMT_R8G8B8A8_SNORM: return DXGI_FORMAT_R8G8B8A8_SNORM;
-        case WINED3DFMT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_SINT;
-        case WINED3DFMT_R16G16_TYPELESS: return DXGI_FORMAT_R16G16_TYPELESS;
-        case WINED3DFMT_R16G16_FLOAT: return DXGI_FORMAT_R16G16_FLOAT;
-        case WINED3DFMT_R16G16_UNORM: return DXGI_FORMAT_R16G16_UNORM;
-        case WINED3DFMT_R16G16_UINT: return DXGI_FORMAT_R16G16_UINT;
-        case WINED3DFMT_R16G16_SNORM: return DXGI_FORMAT_R16G16_SNORM;
-        case WINED3DFMT_R16G16_SINT: return DXGI_FORMAT_R16G16_SINT;
-        case WINED3DFMT_R32_TYPELESS: return DXGI_FORMAT_R32_TYPELESS;
-        case WINED3DFMT_D32_FLOAT: return DXGI_FORMAT_D32_FLOAT;
-        case WINED3DFMT_R32_FLOAT: return DXGI_FORMAT_R32_FLOAT;
-        case WINED3DFMT_R32_UINT: return DXGI_FORMAT_R32_UINT;
-        case WINED3DFMT_R32_SINT: return DXGI_FORMAT_R32_SINT;
-        case WINED3DFMT_R24G8_TYPELESS: return DXGI_FORMAT_R24G8_TYPELESS;
-        case WINED3DFMT_D24_UNORM_S8_UINT: return DXGI_FORMAT_D24_UNORM_S8_UINT;
-        case WINED3DFMT_R24_UNORM_X8_TYPELESS: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
-        case WINED3DFMT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
-        case WINED3DFMT_R8G8_TYPELESS: return DXGI_FORMAT_R8G8_TYPELESS;
-        case WINED3DFMT_R8G8_UNORM: return DXGI_FORMAT_R8G8_UNORM;
-        case WINED3DFMT_R8G8_UINT: return DXGI_FORMAT_R8G8_UINT;
-        case WINED3DFMT_R8G8_SNORM: return DXGI_FORMAT_R8G8_SNORM;
-        case WINED3DFMT_R8G8_SINT: return DXGI_FORMAT_R8G8_SINT;
-        case WINED3DFMT_R16_TYPELESS: return DXGI_FORMAT_R16_TYPELESS;
-        case WINED3DFMT_R16_FLOAT: return DXGI_FORMAT_R16_FLOAT;
-        case WINED3DFMT_D16_UNORM: return DXGI_FORMAT_D16_UNORM;
-        case WINED3DFMT_R16_UNORM: return DXGI_FORMAT_R16_UNORM;
-        case WINED3DFMT_R16_UINT: return DXGI_FORMAT_R16_UINT;
-        case WINED3DFMT_R16_SNORM: return DXGI_FORMAT_R16_SNORM;
-        case WINED3DFMT_R16_SINT: return DXGI_FORMAT_R16_SINT;
-        case WINED3DFMT_R8_TYPELESS: return DXGI_FORMAT_R8_TYPELESS;
-        case WINED3DFMT_R8_UNORM: return DXGI_FORMAT_R8_UNORM;
-        case WINED3DFMT_R8_UINT: return DXGI_FORMAT_R8_UINT;
-        case WINED3DFMT_R8_SNORM: return DXGI_FORMAT_R8_SNORM;
-        case WINED3DFMT_R8_SINT: return DXGI_FORMAT_R8_SINT;
-        case WINED3DFMT_A8_UNORM: return DXGI_FORMAT_A8_UNORM;
-        case WINED3DFMT_R1_UNORM: return DXGI_FORMAT_R1_UNORM;
-        case WINED3DFMT_R9G9B9E5_SHAREDEXP: return DXGI_FORMAT_R9G9B9E5_SHAREDEXP;
-        case WINED3DFMT_R8G8_B8G8_UNORM: return DXGI_FORMAT_R8G8_B8G8_UNORM;
-        case WINED3DFMT_G8R8_G8B8_UNORM: return DXGI_FORMAT_G8R8_G8B8_UNORM;
-        case WINED3DFMT_BC1_TYPELESS: return DXGI_FORMAT_BC1_TYPELESS;
-        case WINED3DFMT_BC1_UNORM: return DXGI_FORMAT_BC1_UNORM;
-        case WINED3DFMT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_UNORM_SRGB;
-        case WINED3DFMT_BC2_TYPELESS: return DXGI_FORMAT_BC2_TYPELESS;
-        case WINED3DFMT_BC2_UNORM: return DXGI_FORMAT_BC2_UNORM;
-        case WINED3DFMT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_UNORM_SRGB;
-        case WINED3DFMT_BC3_TYPELESS: return DXGI_FORMAT_BC3_TYPELESS;
-        case WINED3DFMT_BC3_UNORM: return DXGI_FORMAT_BC3_UNORM;
-        case WINED3DFMT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_UNORM_SRGB;
-        case WINED3DFMT_BC4_TYPELESS: return DXGI_FORMAT_BC4_TYPELESS;
-        case WINED3DFMT_BC4_UNORM: return DXGI_FORMAT_BC4_UNORM;
-        case WINED3DFMT_BC4_SNORM: return DXGI_FORMAT_BC4_SNORM;
-        case WINED3DFMT_BC5_TYPELESS: return DXGI_FORMAT_BC5_TYPELESS;
-        case WINED3DFMT_BC5_UNORM: return DXGI_FORMAT_BC5_UNORM;
-        case WINED3DFMT_BC5_SNORM: return DXGI_FORMAT_BC5_SNORM;
-        case WINED3DFMT_B5G6R5_UNORM: return DXGI_FORMAT_B5G6R5_UNORM;
-        case WINED3DFMT_B5G5R5A1_UNORM: return DXGI_FORMAT_B5G5R5A1_UNORM;
-        case WINED3DFMT_B8G8R8A8_UNORM: return DXGI_FORMAT_B8G8R8A8_UNORM;
-        case WINED3DFMT_B8G8R8X8_UNORM: return DXGI_FORMAT_B8G8R8X8_UNORM;
-        case WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM: return DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
-        case WINED3DFMT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_TYPELESS;
-        case WINED3DFMT_B8G8R8A8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
-        case WINED3DFMT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_TYPELESS;
-        case WINED3DFMT_B8G8R8X8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
-        case WINED3DFMT_BC6H_TYPELESS: return DXGI_FORMAT_BC6H_TYPELESS;
-        case WINED3DFMT_BC6H_UF16: return DXGI_FORMAT_BC6H_UF16;
-        case WINED3DFMT_BC6H_SF16: return DXGI_FORMAT_BC6H_SF16;
-        case WINED3DFMT_BC7_TYPELESS: return DXGI_FORMAT_BC7_TYPELESS;
-        case WINED3DFMT_BC7_UNORM: return DXGI_FORMAT_BC7_UNORM;
-        case WINED3DFMT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM_SRGB;
-        default:
-            FIXME("Unhandled wined3d format %#x.\n", format);
-            return DXGI_FORMAT_UNKNOWN;
-    }
-}
-
-enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
-{
-    switch(format)
-    {
-        case DXGI_FORMAT_UNKNOWN: return WINED3DFMT_UNKNOWN;
-        case DXGI_FORMAT_R32G32B32A32_TYPELESS: return WINED3DFMT_R32G32B32A32_TYPELESS;
-        case DXGI_FORMAT_R32G32B32A32_FLOAT: return WINED3DFMT_R32G32B32A32_FLOAT;
-        case DXGI_FORMAT_R32G32B32A32_UINT: return WINED3DFMT_R32G32B32A32_UINT;
-        case DXGI_FORMAT_R32G32B32A32_SINT: return WINED3DFMT_R32G32B32A32_SINT;
-        case DXGI_FORMAT_R32G32B32_TYPELESS: return WINED3DFMT_R32G32B32_TYPELESS;
-        case DXGI_FORMAT_R32G32B32_FLOAT: return WINED3DFMT_R32G32B32_FLOAT;
-        case DXGI_FORMAT_R32G32B32_UINT: return WINED3DFMT_R32G32B32_UINT;
-        case DXGI_FORMAT_R32G32B32_SINT: return WINED3DFMT_R32G32B32_SINT;
-        case DXGI_FORMAT_R16G16B16A16_TYPELESS: return WINED3DFMT_R16G16B16A16_TYPELESS;
-        case DXGI_FORMAT_R16G16B16A16_FLOAT: return WINED3DFMT_R16G16B16A16_FLOAT;
-        case DXGI_FORMAT_R16G16B16A16_UNORM: return WINED3DFMT_R16G16B16A16_UNORM;
-        case DXGI_FORMAT_R16G16B16A16_UINT: return WINED3DFMT_R16G16B16A16_UINT;
-        case DXGI_FORMAT_R16G16B16A16_SNORM: return WINED3DFMT_R16G16B16A16_SNORM;
-        case DXGI_FORMAT_R16G16B16A16_SINT: return WINED3DFMT_R16G16B16A16_SINT;
-        case DXGI_FORMAT_R32G32_TYPELESS: return WINED3DFMT_R32G32_TYPELESS;
-        case DXGI_FORMAT_R32G32_FLOAT: return WINED3DFMT_R32G32_FLOAT;
-        case DXGI_FORMAT_R32G32_UINT: return WINED3DFMT_R32G32_UINT;
-        case DXGI_FORMAT_R32G32_SINT: return WINED3DFMT_R32G32_SINT;
-        case DXGI_FORMAT_R32G8X24_TYPELESS: return WINED3DFMT_R32G8X24_TYPELESS;
-        case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return WINED3DFMT_D32_FLOAT_S8X24_UINT;
-        case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: return WINED3DFMT_R32_FLOAT_X8X24_TYPELESS;
-        case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return WINED3DFMT_X32_TYPELESS_G8X24_UINT;
-        case DXGI_FORMAT_R10G10B10A2_TYPELESS: return WINED3DFMT_R10G10B10A2_TYPELESS;
-        case DXGI_FORMAT_R10G10B10A2_UNORM: return WINED3DFMT_R10G10B10A2_UNORM;
-        case DXGI_FORMAT_R10G10B10A2_UINT: return WINED3DFMT_R10G10B10A2_UINT;
-        case DXGI_FORMAT_R11G11B10_FLOAT: return WINED3DFMT_R11G11B10_FLOAT;
-        case DXGI_FORMAT_R8G8B8A8_TYPELESS: return WINED3DFMT_R8G8B8A8_TYPELESS;
-        case DXGI_FORMAT_R8G8B8A8_UNORM: return WINED3DFMT_R8G8B8A8_UNORM;
-        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return WINED3DFMT_R8G8B8A8_UNORM_SRGB;
-        case DXGI_FORMAT_R8G8B8A8_UINT: return WINED3DFMT_R8G8B8A8_UINT;
-        case DXGI_FORMAT_R8G8B8A8_SNORM: return WINED3DFMT_R8G8B8A8_SNORM;
-        case DXGI_FORMAT_R8G8B8A8_SINT: return WINED3DFMT_R8G8B8A8_SINT;
-        case DXGI_FORMAT_R16G16_TYPELESS: return WINED3DFMT_R16G16_TYPELESS;
-        case DXGI_FORMAT_R16G16_FLOAT: return WINED3DFMT_R16G16_FLOAT;
-        case DXGI_FORMAT_R16G16_UNORM: return WINED3DFMT_R16G16_UNORM;
-        case DXGI_FORMAT_R16G16_UINT: return WINED3DFMT_R16G16_UINT;
-        case DXGI_FORMAT_R16G16_SNORM: return WINED3DFMT_R16G16_SNORM;
-        case DXGI_FORMAT_R16G16_SINT: return WINED3DFMT_R16G16_SINT;
-        case DXGI_FORMAT_R32_TYPELESS: return WINED3DFMT_R32_TYPELESS;
-        case DXGI_FORMAT_D32_FLOAT: return WINED3DFMT_D32_FLOAT;
-        case DXGI_FORMAT_R32_FLOAT: return WINED3DFMT_R32_FLOAT;
-        case DXGI_FORMAT_R32_UINT: return WINED3DFMT_R32_UINT;
-        case DXGI_FORMAT_R32_SINT: return WINED3DFMT_R32_SINT;
-        case DXGI_FORMAT_R24G8_TYPELESS: return WINED3DFMT_R24G8_TYPELESS;
-        case DXGI_FORMAT_D24_UNORM_S8_UINT: return WINED3DFMT_D24_UNORM_S8_UINT;
-        case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: return WINED3DFMT_R24_UNORM_X8_TYPELESS;
-        case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return WINED3DFMT_X24_TYPELESS_G8_UINT;
-        case DXGI_FORMAT_R8G8_TYPELESS: return WINED3DFMT_R8G8_TYPELESS;
-        case DXGI_FORMAT_R8G8_UNORM: return WINED3DFMT_R8G8_UNORM;
-        case DXGI_FORMAT_R8G8_UINT: return WINED3DFMT_R8G8_UINT;
-        case DXGI_FORMAT_R8G8_SNORM: return WINED3DFMT_R8G8_SNORM;
-        case DXGI_FORMAT_R8G8_SINT: return WINED3DFMT_R8G8_SINT;
-        case DXGI_FORMAT_R16_TYPELESS: return WINED3DFMT_R16_TYPELESS;
-        case DXGI_FORMAT_R16_FLOAT: return WINED3DFMT_R16_FLOAT;
-        case DXGI_FORMAT_D16_UNORM: return WINED3DFMT_D16_UNORM;
-        case DXGI_FORMAT_R16_UNORM: return WINED3DFMT_R16_UNORM;
-        case DXGI_FORMAT_R16_UINT: return WINED3DFMT_R16_UINT;
-        case DXGI_FORMAT_R16_SNORM: return WINED3DFMT_R16_SNORM;
-        case DXGI_FORMAT_R16_SINT: return WINED3DFMT_R16_SINT;
-        case DXGI_FORMAT_R8_TYPELESS: return WINED3DFMT_R8_TYPELESS;
-        case DXGI_FORMAT_R8_UNORM: return WINED3DFMT_R8_UNORM;
-        case DXGI_FORMAT_R8_UINT: return WINED3DFMT_R8_UINT;
-        case DXGI_FORMAT_R8_SNORM: return WINED3DFMT_R8_SNORM;
-        case DXGI_FORMAT_R8_SINT: return WINED3DFMT_R8_SINT;
-        case DXGI_FORMAT_A8_UNORM: return WINED3DFMT_A8_UNORM;
-        case DXGI_FORMAT_R1_UNORM: return WINED3DFMT_R1_UNORM;
-        case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: return WINED3DFMT_R9G9B9E5_SHAREDEXP;
-        case DXGI_FORMAT_R8G8_B8G8_UNORM: return WINED3DFMT_R8G8_B8G8_UNORM;
-        case DXGI_FORMAT_G8R8_G8B8_UNORM: return WINED3DFMT_G8R8_G8B8_UNORM;
-        case DXGI_FORMAT_BC1_TYPELESS: return WINED3DFMT_BC1_TYPELESS;
-        case DXGI_FORMAT_BC1_UNORM: return WINED3DFMT_BC1_UNORM;
-        case DXGI_FORMAT_BC1_UNORM_SRGB: return WINED3DFMT_BC1_UNORM_SRGB;
-        case DXGI_FORMAT_BC2_TYPELESS: return WINED3DFMT_BC2_TYPELESS;
-        case DXGI_FORMAT_BC2_UNORM: return WINED3DFMT_BC2_UNORM;
-        case DXGI_FORMAT_BC2_UNORM_SRGB: return WINED3DFMT_BC2_UNORM_SRGB;
-        case DXGI_FORMAT_BC3_TYPELESS: return WINED3DFMT_BC3_TYPELESS;
-        case DXGI_FORMAT_BC3_UNORM: return WINED3DFMT_BC3_UNORM;
-        case DXGI_FORMAT_BC3_UNORM_SRGB: return WINED3DFMT_BC3_UNORM_SRGB;
-        case DXGI_FORMAT_BC4_TYPELESS: return WINED3DFMT_BC4_TYPELESS;
-        case DXGI_FORMAT_BC4_UNORM: return WINED3DFMT_BC4_UNORM;
-        case DXGI_FORMAT_BC4_SNORM: return WINED3DFMT_BC4_SNORM;
-        case DXGI_FORMAT_BC5_TYPELESS: return WINED3DFMT_BC5_TYPELESS;
-        case DXGI_FORMAT_BC5_UNORM: return WINED3DFMT_BC5_UNORM;
-        case DXGI_FORMAT_BC5_SNORM: return WINED3DFMT_BC5_SNORM;
-        case DXGI_FORMAT_B5G6R5_UNORM: return WINED3DFMT_B5G6R5_UNORM;
-        case DXGI_FORMAT_B5G5R5A1_UNORM: return WINED3DFMT_B5G5R5A1_UNORM;
-        case DXGI_FORMAT_B8G8R8A8_UNORM: return WINED3DFMT_B8G8R8A8_UNORM;
-        case DXGI_FORMAT_B8G8R8X8_UNORM: return WINED3DFMT_B8G8R8X8_UNORM;
-        case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: return WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM;
-        case DXGI_FORMAT_B8G8R8A8_TYPELESS: return WINED3DFMT_B8G8R8A8_TYPELESS;
-        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: return WINED3DFMT_B8G8R8A8_UNORM_SRGB;
-        case DXGI_FORMAT_B8G8R8X8_TYPELESS: return WINED3DFMT_B8G8R8X8_TYPELESS;
-        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return WINED3DFMT_B8G8R8X8_UNORM_SRGB;
-        case DXGI_FORMAT_BC6H_TYPELESS: return WINED3DFMT_BC6H_TYPELESS;
-        case DXGI_FORMAT_BC6H_UF16: return WINED3DFMT_BC6H_UF16;
-        case DXGI_FORMAT_BC6H_SF16: return WINED3DFMT_BC6H_SF16;
-        case DXGI_FORMAT_BC7_TYPELESS: return WINED3DFMT_BC7_TYPELESS;
-        case DXGI_FORMAT_BC7_UNORM: return WINED3DFMT_BC7_UNORM;
-        case DXGI_FORMAT_BC7_UNORM_SRGB: return WINED3DFMT_BC7_UNORM_SRGB;
-        default:
-            FIXME("Unhandled DXGI_FORMAT %#x.\n", format);
-            return WINED3DFMT_UNKNOWN;
-    }
-}
-
 const char *debug_dxgi_mode(const DXGI_MODE_DESC *desc)
 {
     return wine_dbg_sprintf("resolution %ux%u, refresh rate %u / %u, "
@@ -449,7 +229,7 @@ void wined3d_display_mode_from_dxgi(struct wined3d_display_mode *wined3d_mode,
     wined3d_mode->width = mode->Width;
     wined3d_mode->height = mode->Height;
     wined3d_mode->refresh_rate = dxgi_rational_to_uint(&mode->RefreshRate);
-    wined3d_mode->format_id = wined3dformat_from_dxgi_format(mode->Format);
+    wined3d_mode->format_id = wined3d_wined3dformat_from_dxgi_format(mode->Format);
     wined3d_mode->scanline_ordering = wined3d_scanline_ordering_from_dxgi(mode->ScanlineOrdering);
 }
 
diff --git a/dlls/wined3d/Makefile.in b/dlls/wined3d/Makefile.in
index edee588..42c08c5 100644
--- a/dlls/wined3d/Makefile.in
+++ b/dlls/wined3d/Makefile.in
@@ -8,6 +8,7 @@ C_SRCS = \
 	buffer.c \
 	context.c \
 	cs.c \
+	d3dtexture.c \
 	device.c \
 	directx.c \
 	drawprim.c \
diff --git a/dlls/wined3d/d3dtexture.c b/dlls/wined3d/d3dtexture.c
new file mode 100644
index 0000000..9c709d9
--- /dev/null
+++ b/dlls/wined3d/d3dtexture.c
@@ -0,0 +1,254 @@
+/*
+ * Direct3d texture handling helper functions
+ *
+ * Copyright (C) 2016 Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+
+#include "config.h"
+#include "wine/port.h"
+
+#include "wine/debug.h"
+
+#include <objbase.h>
+#include "initguid.h"
+#include "wincodec.h"
+
+#include "wine/wined3d.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);
+
+DXGI_FORMAT wined3d_dxgi_format_from_wined3dformat(enum wined3d_format_id format)
+{
+    switch(format)
+    {
+        case WINED3DFMT_UNKNOWN: return DXGI_FORMAT_UNKNOWN;
+        case WINED3DFMT_R32G32B32A32_TYPELESS: return DXGI_FORMAT_R32G32B32A32_TYPELESS;
+        case WINED3DFMT_R32G32B32A32_FLOAT: return DXGI_FORMAT_R32G32B32A32_FLOAT;
+        case WINED3DFMT_R32G32B32A32_UINT: return DXGI_FORMAT_R32G32B32A32_UINT;
+        case WINED3DFMT_R32G32B32A32_SINT: return DXGI_FORMAT_R32G32B32A32_SINT;
+        case WINED3DFMT_R32G32B32_TYPELESS: return DXGI_FORMAT_R32G32B32_TYPELESS;
+        case WINED3DFMT_R32G32B32_FLOAT: return DXGI_FORMAT_R32G32B32_FLOAT;
+        case WINED3DFMT_R32G32B32_UINT: return DXGI_FORMAT_R32G32B32_UINT;
+        case WINED3DFMT_R32G32B32_SINT: return DXGI_FORMAT_R32G32B32_SINT;
+        case WINED3DFMT_R16G16B16A16_TYPELESS: return DXGI_FORMAT_R16G16B16A16_TYPELESS;
+        case WINED3DFMT_R16G16B16A16_FLOAT: return DXGI_FORMAT_R16G16B16A16_FLOAT;
+        case WINED3DFMT_R16G16B16A16_UNORM: return DXGI_FORMAT_R16G16B16A16_UNORM;
+        case WINED3DFMT_R16G16B16A16_UINT: return DXGI_FORMAT_R16G16B16A16_UINT;
+        case WINED3DFMT_R16G16B16A16_SNORM: return DXGI_FORMAT_R16G16B16A16_SNORM;
+        case WINED3DFMT_R16G16B16A16_SINT: return DXGI_FORMAT_R16G16B16A16_SINT;
+        case WINED3DFMT_R32G32_TYPELESS: return DXGI_FORMAT_R32G32_TYPELESS;
+        case WINED3DFMT_R32G32_FLOAT: return DXGI_FORMAT_R32G32_FLOAT;
+        case WINED3DFMT_R32G32_UINT: return DXGI_FORMAT_R32G32_UINT;
+        case WINED3DFMT_R32G32_SINT: return DXGI_FORMAT_R32G32_SINT;
+        case WINED3DFMT_R32G8X24_TYPELESS: return DXGI_FORMAT_R32G8X24_TYPELESS;
+        case WINED3DFMT_D32_FLOAT_S8X24_UINT: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
+        case WINED3DFMT_R32_FLOAT_X8X24_TYPELESS: return DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS;
+        case WINED3DFMT_X32_TYPELESS_G8X24_UINT: return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT;
+        case WINED3DFMT_R10G10B10A2_TYPELESS: return DXGI_FORMAT_R10G10B10A2_TYPELESS;
+        case WINED3DFMT_R10G10B10A2_UNORM: return DXGI_FORMAT_R10G10B10A2_UNORM;
+        case WINED3DFMT_R10G10B10A2_UINT: return DXGI_FORMAT_R10G10B10A2_UINT;
+        case WINED3DFMT_R11G11B10_FLOAT: return DXGI_FORMAT_R11G11B10_FLOAT;
+        case WINED3DFMT_R8G8B8A8_TYPELESS: return DXGI_FORMAT_R8G8B8A8_TYPELESS;
+        case WINED3DFMT_R8G8B8A8_UNORM: return DXGI_FORMAT_R8G8B8A8_UNORM;
+        case WINED3DFMT_R8G8B8A8_UNORM_SRGB: return DXGI_FORMAT_R8G8B8A8_UNORM_SRGB;
+        case WINED3DFMT_R8G8B8A8_UINT: return DXGI_FORMAT_R8G8B8A8_UINT;
+        case WINED3DFMT_R8G8B8A8_SNORM: return DXGI_FORMAT_R8G8B8A8_SNORM;
+        case WINED3DFMT_R8G8B8A8_SINT: return DXGI_FORMAT_R8G8B8A8_SINT;
+        case WINED3DFMT_R16G16_TYPELESS: return DXGI_FORMAT_R16G16_TYPELESS;
+        case WINED3DFMT_R16G16_FLOAT: return DXGI_FORMAT_R16G16_FLOAT;
+        case WINED3DFMT_R16G16_UNORM: return DXGI_FORMAT_R16G16_UNORM;
+        case WINED3DFMT_R16G16_UINT: return DXGI_FORMAT_R16G16_UINT;
+        case WINED3DFMT_R16G16_SNORM: return DXGI_FORMAT_R16G16_SNORM;
+        case WINED3DFMT_R16G16_SINT: return DXGI_FORMAT_R16G16_SINT;
+        case WINED3DFMT_R32_TYPELESS: return DXGI_FORMAT_R32_TYPELESS;
+        case WINED3DFMT_D32_FLOAT: return DXGI_FORMAT_D32_FLOAT;
+        case WINED3DFMT_R32_FLOAT: return DXGI_FORMAT_R32_FLOAT;
+        case WINED3DFMT_R32_UINT: return DXGI_FORMAT_R32_UINT;
+        case WINED3DFMT_R32_SINT: return DXGI_FORMAT_R32_SINT;
+        case WINED3DFMT_R24G8_TYPELESS: return DXGI_FORMAT_R24G8_TYPELESS;
+        case WINED3DFMT_D24_UNORM_S8_UINT: return DXGI_FORMAT_D24_UNORM_S8_UINT;
+        case WINED3DFMT_R24_UNORM_X8_TYPELESS: return DXGI_FORMAT_R24_UNORM_X8_TYPELESS;
+        case WINED3DFMT_X24_TYPELESS_G8_UINT: return DXGI_FORMAT_X24_TYPELESS_G8_UINT;
+        case WINED3DFMT_R8G8_TYPELESS: return DXGI_FORMAT_R8G8_TYPELESS;
+        case WINED3DFMT_R8G8_UNORM: return DXGI_FORMAT_R8G8_UNORM;
+        case WINED3DFMT_R8G8_UINT: return DXGI_FORMAT_R8G8_UINT;
+        case WINED3DFMT_R8G8_SNORM: return DXGI_FORMAT_R8G8_SNORM;
+        case WINED3DFMT_R8G8_SINT: return DXGI_FORMAT_R8G8_SINT;
+        case WINED3DFMT_R16_TYPELESS: return DXGI_FORMAT_R16_TYPELESS;
+        case WINED3DFMT_R16_FLOAT: return DXGI_FORMAT_R16_FLOAT;
+        case WINED3DFMT_D16_UNORM: return DXGI_FORMAT_D16_UNORM;
+        case WINED3DFMT_R16_UNORM: return DXGI_FORMAT_R16_UNORM;
+        case WINED3DFMT_R16_UINT: return DXGI_FORMAT_R16_UINT;
+        case WINED3DFMT_R16_SNORM: return DXGI_FORMAT_R16_SNORM;
+        case WINED3DFMT_R16_SINT: return DXGI_FORMAT_R16_SINT;
+        case WINED3DFMT_R8_TYPELESS: return DXGI_FORMAT_R8_TYPELESS;
+        case WINED3DFMT_R8_UNORM: return DXGI_FORMAT_R8_UNORM;
+        case WINED3DFMT_R8_UINT: return DXGI_FORMAT_R8_UINT;
+        case WINED3DFMT_R8_SNORM: return DXGI_FORMAT_R8_SNORM;
+        case WINED3DFMT_R8_SINT: return DXGI_FORMAT_R8_SINT;
+        case WINED3DFMT_A8_UNORM: return DXGI_FORMAT_A8_UNORM;
+        case WINED3DFMT_R1_UNORM: return DXGI_FORMAT_R1_UNORM;
+        case WINED3DFMT_R9G9B9E5_SHAREDEXP: return DXGI_FORMAT_R9G9B9E5_SHAREDEXP;
+        case WINED3DFMT_R8G8_B8G8_UNORM: return DXGI_FORMAT_R8G8_B8G8_UNORM;
+        case WINED3DFMT_G8R8_G8B8_UNORM: return DXGI_FORMAT_G8R8_G8B8_UNORM;
+        case WINED3DFMT_BC1_TYPELESS: return DXGI_FORMAT_BC1_TYPELESS;
+        case WINED3DFMT_BC1_UNORM: return DXGI_FORMAT_BC1_UNORM;
+        case WINED3DFMT_BC1_UNORM_SRGB: return DXGI_FORMAT_BC1_UNORM_SRGB;
+        case WINED3DFMT_BC2_TYPELESS: return DXGI_FORMAT_BC2_TYPELESS;
+        case WINED3DFMT_BC2_UNORM: return DXGI_FORMAT_BC2_UNORM;
+        case WINED3DFMT_BC2_UNORM_SRGB: return DXGI_FORMAT_BC2_UNORM_SRGB;
+        case WINED3DFMT_BC3_TYPELESS: return DXGI_FORMAT_BC3_TYPELESS;
+        case WINED3DFMT_BC3_UNORM: return DXGI_FORMAT_BC3_UNORM;
+        case WINED3DFMT_BC3_UNORM_SRGB: return DXGI_FORMAT_BC3_UNORM_SRGB;
+        case WINED3DFMT_BC4_TYPELESS: return DXGI_FORMAT_BC4_TYPELESS;
+        case WINED3DFMT_BC4_UNORM: return DXGI_FORMAT_BC4_UNORM;
+        case WINED3DFMT_BC4_SNORM: return DXGI_FORMAT_BC4_SNORM;
+        case WINED3DFMT_BC5_TYPELESS: return DXGI_FORMAT_BC5_TYPELESS;
+        case WINED3DFMT_BC5_UNORM: return DXGI_FORMAT_BC5_UNORM;
+        case WINED3DFMT_BC5_SNORM: return DXGI_FORMAT_BC5_SNORM;
+        case WINED3DFMT_B5G6R5_UNORM: return DXGI_FORMAT_B5G6R5_UNORM;
+        case WINED3DFMT_B5G5R5A1_UNORM: return DXGI_FORMAT_B5G5R5A1_UNORM;
+        case WINED3DFMT_B8G8R8A8_UNORM: return DXGI_FORMAT_B8G8R8A8_UNORM;
+        case WINED3DFMT_B8G8R8X8_UNORM: return DXGI_FORMAT_B8G8R8X8_UNORM;
+        case WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM: return DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM;
+        case WINED3DFMT_B8G8R8A8_TYPELESS: return DXGI_FORMAT_B8G8R8A8_TYPELESS;
+        case WINED3DFMT_B8G8R8A8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
+        case WINED3DFMT_B8G8R8X8_TYPELESS: return DXGI_FORMAT_B8G8R8X8_TYPELESS;
+        case WINED3DFMT_B8G8R8X8_UNORM_SRGB: return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB;
+        case WINED3DFMT_BC6H_TYPELESS: return DXGI_FORMAT_BC6H_TYPELESS;
+        case WINED3DFMT_BC6H_UF16: return DXGI_FORMAT_BC6H_UF16;
+        case WINED3DFMT_BC6H_SF16: return DXGI_FORMAT_BC6H_SF16;
+        case WINED3DFMT_BC7_TYPELESS: return DXGI_FORMAT_BC7_TYPELESS;
+        case WINED3DFMT_BC7_UNORM: return DXGI_FORMAT_BC7_UNORM;
+        case WINED3DFMT_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM_SRGB;
+        default:
+            FIXME("Unhandled wined3d format %#x.\n", format);
+            return DXGI_FORMAT_UNKNOWN;
+    }
+}
+
+enum wined3d_format_id wined3d_wined3dformat_from_dxgi_format(DXGI_FORMAT format)
+{
+    switch(format)
+    {
+        case DXGI_FORMAT_UNKNOWN: return WINED3DFMT_UNKNOWN;
+        case DXGI_FORMAT_R32G32B32A32_TYPELESS: return WINED3DFMT_R32G32B32A32_TYPELESS;
+        case DXGI_FORMAT_R32G32B32A32_FLOAT: return WINED3DFMT_R32G32B32A32_FLOAT;
+        case DXGI_FORMAT_R32G32B32A32_UINT: return WINED3DFMT_R32G32B32A32_UINT;
+        case DXGI_FORMAT_R32G32B32A32_SINT: return WINED3DFMT_R32G32B32A32_SINT;
+        case DXGI_FORMAT_R32G32B32_TYPELESS: return WINED3DFMT_R32G32B32_TYPELESS;
+        case DXGI_FORMAT_R32G32B32_FLOAT: return WINED3DFMT_R32G32B32_FLOAT;
+        case DXGI_FORMAT_R32G32B32_UINT: return WINED3DFMT_R32G32B32_UINT;
+        case DXGI_FORMAT_R32G32B32_SINT: return WINED3DFMT_R32G32B32_SINT;
+        case DXGI_FORMAT_R16G16B16A16_TYPELESS: return WINED3DFMT_R16G16B16A16_TYPELESS;
+        case DXGI_FORMAT_R16G16B16A16_FLOAT: return WINED3DFMT_R16G16B16A16_FLOAT;
+        case DXGI_FORMAT_R16G16B16A16_UNORM: return WINED3DFMT_R16G16B16A16_UNORM;
+        case DXGI_FORMAT_R16G16B16A16_UINT: return WINED3DFMT_R16G16B16A16_UINT;
+        case DXGI_FORMAT_R16G16B16A16_SNORM: return WINED3DFMT_R16G16B16A16_SNORM;
+        case DXGI_FORMAT_R16G16B16A16_SINT: return WINED3DFMT_R16G16B16A16_SINT;
+        case DXGI_FORMAT_R32G32_TYPELESS: return WINED3DFMT_R32G32_TYPELESS;
+        case DXGI_FORMAT_R32G32_FLOAT: return WINED3DFMT_R32G32_FLOAT;
+        case DXGI_FORMAT_R32G32_UINT: return WINED3DFMT_R32G32_UINT;
+        case DXGI_FORMAT_R32G32_SINT: return WINED3DFMT_R32G32_SINT;
+        case DXGI_FORMAT_R32G8X24_TYPELESS: return WINED3DFMT_R32G8X24_TYPELESS;
+        case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return WINED3DFMT_D32_FLOAT_S8X24_UINT;
+        case DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS: return WINED3DFMT_R32_FLOAT_X8X24_TYPELESS;
+        case DXGI_FORMAT_X32_TYPELESS_G8X24_UINT: return WINED3DFMT_X32_TYPELESS_G8X24_UINT;
+        case DXGI_FORMAT_R10G10B10A2_TYPELESS: return WINED3DFMT_R10G10B10A2_TYPELESS;
+        case DXGI_FORMAT_R10G10B10A2_UNORM: return WINED3DFMT_R10G10B10A2_UNORM;
+        case DXGI_FORMAT_R10G10B10A2_UINT: return WINED3DFMT_R10G10B10A2_UINT;
+        case DXGI_FORMAT_R11G11B10_FLOAT: return WINED3DFMT_R11G11B10_FLOAT;
+        case DXGI_FORMAT_R8G8B8A8_TYPELESS: return WINED3DFMT_R8G8B8A8_TYPELESS;
+        case DXGI_FORMAT_R8G8B8A8_UNORM: return WINED3DFMT_R8G8B8A8_UNORM;
+        case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return WINED3DFMT_R8G8B8A8_UNORM_SRGB;
+        case DXGI_FORMAT_R8G8B8A8_UINT: return WINED3DFMT_R8G8B8A8_UINT;
+        case DXGI_FORMAT_R8G8B8A8_SNORM: return WINED3DFMT_R8G8B8A8_SNORM;
+        case DXGI_FORMAT_R8G8B8A8_SINT: return WINED3DFMT_R8G8B8A8_SINT;
+        case DXGI_FORMAT_R16G16_TYPELESS: return WINED3DFMT_R16G16_TYPELESS;
+        case DXGI_FORMAT_R16G16_FLOAT: return WINED3DFMT_R16G16_FLOAT;
+        case DXGI_FORMAT_R16G16_UNORM: return WINED3DFMT_R16G16_UNORM;
+        case DXGI_FORMAT_R16G16_UINT: return WINED3DFMT_R16G16_UINT;
+        case DXGI_FORMAT_R16G16_SNORM: return WINED3DFMT_R16G16_SNORM;
+        case DXGI_FORMAT_R16G16_SINT: return WINED3DFMT_R16G16_SINT;
+        case DXGI_FORMAT_R32_TYPELESS: return WINED3DFMT_R32_TYPELESS;
+        case DXGI_FORMAT_D32_FLOAT: return WINED3DFMT_D32_FLOAT;
+        case DXGI_FORMAT_R32_FLOAT: return WINED3DFMT_R32_FLOAT;
+        case DXGI_FORMAT_R32_UINT: return WINED3DFMT_R32_UINT;
+        case DXGI_FORMAT_R32_SINT: return WINED3DFMT_R32_SINT;
+        case DXGI_FORMAT_R24G8_TYPELESS: return WINED3DFMT_R24G8_TYPELESS;
+        case DXGI_FORMAT_D24_UNORM_S8_UINT: return WINED3DFMT_D24_UNORM_S8_UINT;
+        case DXGI_FORMAT_R24_UNORM_X8_TYPELESS: return WINED3DFMT_R24_UNORM_X8_TYPELESS;
+        case DXGI_FORMAT_X24_TYPELESS_G8_UINT: return WINED3DFMT_X24_TYPELESS_G8_UINT;
+        case DXGI_FORMAT_R8G8_TYPELESS: return WINED3DFMT_R8G8_TYPELESS;
+        case DXGI_FORMAT_R8G8_UNORM: return WINED3DFMT_R8G8_UNORM;
+        case DXGI_FORMAT_R8G8_UINT: return WINED3DFMT_R8G8_UINT;
+        case DXGI_FORMAT_R8G8_SNORM: return WINED3DFMT_R8G8_SNORM;
+        case DXGI_FORMAT_R8G8_SINT: return WINED3DFMT_R8G8_SINT;
+        case DXGI_FORMAT_R16_TYPELESS: return WINED3DFMT_R16_TYPELESS;
+        case DXGI_FORMAT_R16_FLOAT: return WINED3DFMT_R16_FLOAT;
+        case DXGI_FORMAT_D16_UNORM: return WINED3DFMT_D16_UNORM;
+        case DXGI_FORMAT_R16_UNORM: return WINED3DFMT_R16_UNORM;
+        case DXGI_FORMAT_R16_UINT: return WINED3DFMT_R16_UINT;
+        case DXGI_FORMAT_R16_SNORM: return WINED3DFMT_R16_SNORM;
+        case DXGI_FORMAT_R16_SINT: return WINED3DFMT_R16_SINT;
+        case DXGI_FORMAT_R8_TYPELESS: return WINED3DFMT_R8_TYPELESS;
+        case DXGI_FORMAT_R8_UNORM: return WINED3DFMT_R8_UNORM;
+        case DXGI_FORMAT_R8_UINT: return WINED3DFMT_R8_UINT;
+        case DXGI_FORMAT_R8_SNORM: return WINED3DFMT_R8_SNORM;
+        case DXGI_FORMAT_R8_SINT: return WINED3DFMT_R8_SINT;
+        case DXGI_FORMAT_A8_UNORM: return WINED3DFMT_A8_UNORM;
+        case DXGI_FORMAT_R1_UNORM: return WINED3DFMT_R1_UNORM;
+        case DXGI_FORMAT_R9G9B9E5_SHAREDEXP: return WINED3DFMT_R9G9B9E5_SHAREDEXP;
+        case DXGI_FORMAT_R8G8_B8G8_UNORM: return WINED3DFMT_R8G8_B8G8_UNORM;
+        case DXGI_FORMAT_G8R8_G8B8_UNORM: return WINED3DFMT_G8R8_G8B8_UNORM;
+        case DXGI_FORMAT_BC1_TYPELESS: return WINED3DFMT_BC1_TYPELESS;
+        case DXGI_FORMAT_BC1_UNORM: return WINED3DFMT_BC1_UNORM;
+        case DXGI_FORMAT_BC1_UNORM_SRGB: return WINED3DFMT_BC1_UNORM_SRGB;
+        case DXGI_FORMAT_BC2_TYPELESS: return WINED3DFMT_BC2_TYPELESS;
+        case DXGI_FORMAT_BC2_UNORM: return WINED3DFMT_BC2_UNORM;
+        case DXGI_FORMAT_BC2_UNORM_SRGB: return WINED3DFMT_BC2_UNORM_SRGB;
+        case DXGI_FORMAT_BC3_TYPELESS: return WINED3DFMT_BC3_TYPELESS;
+        case DXGI_FORMAT_BC3_UNORM: return WINED3DFMT_BC3_UNORM;
+        case DXGI_FORMAT_BC3_UNORM_SRGB: return WINED3DFMT_BC3_UNORM_SRGB;
+        case DXGI_FORMAT_BC4_TYPELESS: return WINED3DFMT_BC4_TYPELESS;
+        case DXGI_FORMAT_BC4_UNORM: return WINED3DFMT_BC4_UNORM;
+        case DXGI_FORMAT_BC4_SNORM: return WINED3DFMT_BC4_SNORM;
+        case DXGI_FORMAT_BC5_TYPELESS: return WINED3DFMT_BC5_TYPELESS;
+        case DXGI_FORMAT_BC5_UNORM: return WINED3DFMT_BC5_UNORM;
+        case DXGI_FORMAT_BC5_SNORM: return WINED3DFMT_BC5_SNORM;
+        case DXGI_FORMAT_B5G6R5_UNORM: return WINED3DFMT_B5G6R5_UNORM;
+        case DXGI_FORMAT_B5G5R5A1_UNORM: return WINED3DFMT_B5G5R5A1_UNORM;
+        case DXGI_FORMAT_B8G8R8A8_UNORM: return WINED3DFMT_B8G8R8A8_UNORM;
+        case DXGI_FORMAT_B8G8R8X8_UNORM: return WINED3DFMT_B8G8R8X8_UNORM;
+        case DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM: return WINED3DFMT_R10G10B10_XR_BIAS_A2_UNORM;
+        case DXGI_FORMAT_B8G8R8A8_TYPELESS: return WINED3DFMT_B8G8R8A8_TYPELESS;
+        case DXGI_FORMAT_B8G8R8A8_UNORM_SRGB: return WINED3DFMT_B8G8R8A8_UNORM_SRGB;
+        case DXGI_FORMAT_B8G8R8X8_TYPELESS: return WINED3DFMT_B8G8R8X8_TYPELESS;
+        case DXGI_FORMAT_B8G8R8X8_UNORM_SRGB: return WINED3DFMT_B8G8R8X8_UNORM_SRGB;
+        case DXGI_FORMAT_BC6H_TYPELESS: return WINED3DFMT_BC6H_TYPELESS;
+        case DXGI_FORMAT_BC6H_UF16: return WINED3DFMT_BC6H_UF16;
+        case DXGI_FORMAT_BC6H_SF16: return WINED3DFMT_BC6H_SF16;
+        case DXGI_FORMAT_BC7_TYPELESS: return WINED3DFMT_BC7_TYPELESS;
+        case DXGI_FORMAT_BC7_UNORM: return WINED3DFMT_BC7_UNORM;
+        case DXGI_FORMAT_BC7_UNORM_SRGB: return WINED3DFMT_BC7_UNORM_SRGB;
+        default:
+            FIXME("Unhandled DXGI_FORMAT %#x.\n", format);
+            return WINED3DFMT_UNKNOWN;
+    }
+}
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index b034ba8..26adfd4 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -283,3 +283,6 @@
 @ cdecl wined3d_vertex_declaration_decref(ptr)
 @ cdecl wined3d_vertex_declaration_get_parent(ptr)
 @ cdecl wined3d_vertex_declaration_incref(ptr)
+
+@ cdecl wined3d_dxgi_format_from_wined3dformat(long)
+@ cdecl wined3d_wined3dformat_from_dxgi_format(long)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index e42ef77..847745c 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -31,6 +31,7 @@
 #endif
 
 #include "wine/list.h"
+#include "dxgiformat.h"
 
 #define WINED3D_OK                                              S_OK
 
@@ -2633,4 +2634,7 @@ static inline unsigned int wined3d_log2i(unsigned int x)
 #endif
 }
 
+DXGI_FORMAT wined3d_dxgi_format_from_wined3dformat(enum wined3d_format_id format);
+enum wined3d_format_id wined3d_wined3dformat_from_dxgi_format(DXGI_FORMAT format);
+
 #endif /* __WINE_WINED3D_H */
-- 
2.9.3




More information about the wine-patches mailing list