Henri Verbeet : d3d10core: Update the MipLevels field after texture creation.

Alexandre Julliard julliard at winehq.org
Thu Sep 6 13:37:22 CDT 2012


Module: wine
Branch: master
Commit: 129ad9cbf56e6dfcbbb1b01d31cd6350999f3c26
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=129ad9cbf56e6dfcbbb1b01d31cd6350999f3c26

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Sep  6 11:25:01 2012 +0200

d3d10core: Update the MipLevels field after texture creation.

---

 dlls/d3d10core/tests/device.c |   24 ++++++++++++++++++++++++
 dlls/d3d10core/texture.c      |    2 ++
 2 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/dlls/d3d10core/tests/device.c b/dlls/d3d10core/tests/device.c
index 57a61c4..e9ade68 100644
--- a/dlls/d3d10core/tests/device.c
+++ b/dlls/d3d10core/tests/device.c
@@ -127,6 +127,19 @@ static void test_create_texture2d(ID3D10Device *device)
     hr = ID3D10Device_CreateTexture2D(device, &desc, NULL, &texture);
     ok(SUCCEEDED(hr), "Failed to create a 2d texture, hr %#x\n", hr);
 
+    ID3D10Texture2D_GetDesc(texture, &desc);
+    ok(desc.Width == 512, "Got unexpected Width %u.\n", desc.Width);
+    ok(desc.Height == 512, "Got unexpected Height %u.\n", desc.Height);
+    ok(desc.MipLevels == 10, "Got unexpected MipLevels %u.\n", desc.MipLevels);
+    ok(desc.ArraySize == 1, "Got unexpected ArraySize %u.\n", desc.ArraySize);
+    ok(desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", desc.Format);
+    ok(desc.SampleDesc.Count == 1, "Got unexpected SampleDesc.Count %u.\n", desc.SampleDesc.Count);
+    ok(desc.SampleDesc.Quality == 0, "Got unexpected SampleDesc.Quality %u.\n", desc.SampleDesc.Quality);
+    ok(desc.Usage == D3D10_USAGE_DEFAULT, "Got unexpected MipLevels %u.\n", desc.Usage);
+    ok(desc.BindFlags == D3D10_BIND_RENDER_TARGET, "Got unexpected BindFlags %u.\n", desc.BindFlags);
+    ok(desc.CPUAccessFlags == 0, "Got unexpected CPUAccessFlags %u.\n", desc.CPUAccessFlags);
+    ok(desc.MiscFlags == 0, "Got unexpected MiscFlags %u.\n", desc.MiscFlags);
+
     hr = ID3D10Texture2D_QueryInterface(texture, &IID_IDXGISurface, (void **)&surface);
     ok(FAILED(hr), "Texture should not implement IDXGISurface\n");
     if (SUCCEEDED(hr)) IDXGISurface_Release(surface);
@@ -172,6 +185,17 @@ static void test_create_texture3d(ID3D10Device *device)
     hr = ID3D10Device_CreateTexture3D(device, &desc, NULL, &texture);
     ok(SUCCEEDED(hr), "Failed to create a 3d texture, hr %#x.\n", hr);
 
+    ID3D10Texture3D_GetDesc(texture, &desc);
+    ok(desc.Width == 64, "Got unexpected Width %u.\n", desc.Width);
+    ok(desc.Height == 64, "Got unexpected Height %u.\n", desc.Height);
+    ok(desc.Depth == 64, "Got unexpected Depth %u.\n", desc.Depth);
+    ok(desc.MipLevels == 7, "Got unexpected MipLevels %u.\n", desc.MipLevels);
+    ok(desc.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Got unexpected Format %#x.\n", desc.Format);
+    ok(desc.Usage == D3D10_USAGE_DEFAULT, "Got unexpected MipLevels %u.\n", desc.Usage);
+    ok(desc.BindFlags == D3D10_BIND_RENDER_TARGET, "Got unexpected BindFlags %u.\n", desc.BindFlags);
+    ok(desc.CPUAccessFlags == 0, "Got unexpected CPUAccessFlags %u.\n", desc.CPUAccessFlags);
+    ok(desc.MiscFlags == 0, "Got unexpected MiscFlags %u.\n", desc.MiscFlags);
+
     hr = ID3D10Texture3D_QueryInterface(texture, &IID_IDXGISurface, (void **)&surface);
     ok(FAILED(hr), "Texture should not implement IDXGISurface.\n");
     if (SUCCEEDED(hr)) IDXGISurface_Release(surface);
diff --git a/dlls/d3d10core/texture.c b/dlls/d3d10core/texture.c
index 41bd80f..a065991 100644
--- a/dlls/d3d10core/texture.c
+++ b/dlls/d3d10core/texture.c
@@ -273,6 +273,7 @@ HRESULT d3d10_texture2d_init(struct d3d10_texture2d *texture, struct d3d10_devic
             IUnknown_Release(texture->dxgi_surface);
         return hr;
     }
+    texture->desc.MipLevels = wined3d_texture_get_level_count(texture->wined3d_texture);
 
     return S_OK;
 }
@@ -480,6 +481,7 @@ HRESULT d3d10_texture3d_init(struct d3d10_texture3d *texture, struct d3d10_devic
         WARN("Failed to create wined3d texture, hr %#x.\n", hr);
         return hr;
     }
+    texture->desc.MipLevels = wined3d_texture_get_level_count(texture->wined3d_texture);
 
     return S_OK;
 }




More information about the wine-cvs mailing list