From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/d3dx10_43/tests/d3dx10.c | 10 +++++----- dlls/d3dx10_43/texture.c | 21 ++++++++------------- 2 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/dlls/d3dx10_43/tests/d3dx10.c b/dlls/d3dx10_43/tests/d3dx10.c index 56897730f6c..238aebc060e 100644 --- a/dlls/d3dx10_43/tests/d3dx10.c +++ b/dlls/d3dx10_43/tests/d3dx10.c @@ -1042,7 +1042,7 @@ static const struct test_image_load_info (D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET), 0, (D3D10_RESOURCE_MISC_GENERATE_MIPS | D3D10_RESOURCE_MISC_TEXTURECUBE) } - }, .todo_resource_desc = TRUE, + } }, /* * Pass in different dimensions and texture format than the source image. @@ -1126,7 +1126,7 @@ static const struct test_invalid_image_load_info D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_CPU_ACCESS_READ, D3D10_USAGE_DYNAMIC, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT }, - E_INVALIDARG, S_OK, E_INVALIDARG, .todo_hr = TRUE, .todo_create_device_object_hr = TRUE, + E_INVALIDARG, S_OK, E_INVALIDARG }, /* 5. */ { @@ -1135,7 +1135,7 @@ static const struct test_invalid_image_load_info D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_USAGE_DEFAULT, D3D10_BIND_DEPTH_STENCIL, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT }, - E_INVALIDARG, S_OK, E_INVALIDARG, .todo_hr = TRUE, .todo_create_device_object_hr = TRUE, + E_INVALIDARG, S_OK, E_INVALIDARG }, /* * D3D10_RESOURCE_MISC_GENERATE_MIPS requires binding as a shader resource @@ -1147,7 +1147,7 @@ static const struct test_invalid_image_load_info D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_USAGE_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_RESOURCE_MISC_GENERATE_MIPS, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT }, - E_INVALIDARG, S_OK, E_INVALIDARG, .todo_hr = TRUE, .todo_create_device_object_hr = TRUE, + E_INVALIDARG, S_OK, E_INVALIDARG }, /* Can't set the cube texture flag if the image isn't a cube texture. */ { @@ -1156,7 +1156,7 @@ static const struct test_invalid_image_load_info D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_USAGE_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT, D3D10_RESOURCE_MISC_TEXTURECUBE, D3DX10_DEFAULT, D3DX10_DEFAULT, D3DX10_DEFAULT }, - E_INVALIDARG, S_OK, E_INVALIDARG, .todo_hr = TRUE, .todo_create_device_object_hr = TRUE, + E_INVALIDARG, S_OK, E_INVALIDARG }, };
diff --git a/dlls/d3dx10_43/texture.c b/dlls/d3dx10_43/texture.c index 0b71556f870..e63dcb92c5d 100644 --- a/dlls/d3dx10_43/texture.c +++ b/dlls/d3dx10_43/texture.c @@ -648,15 +648,6 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX10_IMAGE_LOAD_INFO if (!data || !size) return E_FAIL;
- if (load_info->Usage != D3DX10_DEFAULT) - FIXME("load_info->Usage is ignored.\n"); - if (load_info->BindFlags != D3DX10_DEFAULT) - FIXME("load_info->BindFlags is ignored.\n"); - if (load_info->CpuAccessFlags != D3DX10_DEFAULT) - FIXME("load_info->CpuAccessFlags is ignored.\n"); - if (load_info->MiscFlags != D3DX10_DEFAULT) - FIXME("load_info->MiscFlags is ignored.\n"); - *resource_data = NULL; if (!load_info->Filter || load_info->Filter == D3DX10_DEFAULT) load_info->Filter = D3DX10_FILTER_LINEAR; @@ -797,9 +788,11 @@ HRESULT load_texture_data(const void *data, SIZE_T size, D3DX10_IMAGE_LOAD_INFO *resource_data = (D3D10_SUBRESOURCE_DATA *)sub_rsrcs; sub_rsrcs = NULL;
- load_info->Usage = D3D10_USAGE_DEFAULT; - load_info->BindFlags = D3D10_BIND_SHADER_RESOURCE; - load_info->MiscFlags = img_info.MiscFlags; + load_info->Usage = (load_info->Usage == D3DX10_DEFAULT) ? D3D10_USAGE_DEFAULT : load_info->Usage; + load_info->BindFlags = (load_info->BindFlags == D3DX10_DEFAULT) ? D3D10_BIND_SHADER_RESOURCE : load_info->BindFlags; + load_info->CpuAccessFlags = (load_info->CpuAccessFlags == D3DX10_DEFAULT) ? 0 : load_info->CpuAccessFlags; + load_info->MiscFlags = (load_info->MiscFlags == D3DX10_DEFAULT) ? 0 : load_info->MiscFlags; + load_info->MiscFlags |= img_info.MiscFlags; /* * Must be present in order to get resource dimension for texture * creation. @@ -829,11 +822,12 @@ HRESULT create_d3d_texture(ID3D10Device *device, D3DX10_IMAGE_LOAD_INFO *load_in texture_2d_desc.Width = load_info->Width; texture_2d_desc.Height = load_info->Height; texture_2d_desc.MipLevels = load_info->MipLevels; - texture_2d_desc.ArraySize = load_info->MiscFlags & D3D10_RESOURCE_MISC_TEXTURECUBE ? 6 : 1; + texture_2d_desc.ArraySize = load_info->pSrcInfo->ArraySize; texture_2d_desc.Format = load_info->Format; texture_2d_desc.SampleDesc.Count = 1; texture_2d_desc.Usage = load_info->Usage; texture_2d_desc.BindFlags = load_info->BindFlags; + texture_2d_desc.CPUAccessFlags = load_info->CpuAccessFlags; texture_2d_desc.MiscFlags = load_info->MiscFlags;
if (FAILED(hr = ID3D10Device_CreateTexture2D(device, &texture_2d_desc, resource_data, &texture_2d))) @@ -854,6 +848,7 @@ HRESULT create_d3d_texture(ID3D10Device *device, D3DX10_IMAGE_LOAD_INFO *load_in texture_3d_desc.Format = load_info->Format; texture_3d_desc.Usage = load_info->Usage; texture_3d_desc.BindFlags = load_info->BindFlags; + texture_3d_desc.CPUAccessFlags = load_info->CpuAccessFlags; texture_3d_desc.MiscFlags = load_info->MiscFlags;
if (FAILED(hr = ID3D10Device_CreateTexture3D(device, &texture_3d_desc, resource_data, &texture_3d)))