4 * Copyright (c) 2010 Owen Rudge for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "wine/debug.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(d3dx
);
38 /***********************************************************************
41 * Checks whether we are compiling against the correct d3d and d3dx library.
43 BOOL WINAPI
D3DX10CheckVersion(UINT d3dsdkvers
, UINT d3dxsdkvers
)
45 if ((d3dsdkvers
== D3D10_SDK_VERSION
) && (d3dxsdkvers
== 43))
51 HRESULT WINAPI
D3DX10CreateEffectPoolFromMemory(const void *data
, SIZE_T datasize
, const char *filename
,
52 const D3D10_SHADER_MACRO
*defines
, ID3D10Include
*include
, const char *profile
, UINT hlslflags
,
53 UINT fxflags
, ID3D10Device
*device
, ID3DX10ThreadPump
*pump
, ID3D10EffectPool
**effectpool
,
54 ID3D10Blob
**errors
, HRESULT
*hresult
)
56 FIXME("data %p, datasize %lu, filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, "
57 "device %p, pump %p, effectpool %p, errors %p, hresult %p.\n",
58 data
, datasize
, debugstr_a(filename
), defines
, include
, debugstr_a(profile
), hlslflags
, fxflags
, device
,
59 pump
, effectpool
, errors
, hresult
);
64 HRESULT WINAPI
D3DX10UnsetAllDeviceObjects(ID3D10Device
*device
)
66 static ID3D10ShaderResourceView
* const views
[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
];
67 static ID3D10RenderTargetView
* const target_views
[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
];
68 static ID3D10SamplerState
* const sampler_states
[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
];
69 static ID3D10Buffer
* const buffers
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
70 static const unsigned int so_offsets
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
] =
71 {~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u};
72 static const unsigned int strides
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
73 static const unsigned int offsets
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
74 static const float blend_factors
[4];
76 TRACE("device %p.\n", device
);
81 ID3D10Device_VSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
82 ID3D10Device_PSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
83 ID3D10Device_GSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
85 ID3D10Device_VSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
86 ID3D10Device_PSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
87 ID3D10Device_GSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
89 ID3D10Device_VSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
90 ID3D10Device_PSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
91 ID3D10Device_GSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
93 ID3D10Device_VSSetShader(device
, NULL
);
94 ID3D10Device_PSSetShader(device
, NULL
);
95 ID3D10Device_GSSetShader(device
, NULL
);
97 ID3D10Device_OMSetRenderTargets(device
, D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
, target_views
, NULL
);
99 ID3D10Device_IASetIndexBuffer(device
, NULL
, DXGI_FORMAT_R32_UINT
, 0);
100 ID3D10Device_IASetInputLayout(device
, NULL
);
101 ID3D10Device_IASetVertexBuffers(device
, 0, D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
, buffers
, strides
, offsets
);
103 ID3D10Device_SOSetTargets(device
, D3D10_SO_BUFFER_SLOT_COUNT
, buffers
, so_offsets
);
105 ID3D10Device_OMSetBlendState(device
, NULL
, blend_factors
, 0);
106 ID3D10Device_OMSetDepthStencilState(device
, NULL
, 0);
108 ID3D10Device_RSSetState(device
, NULL
);
110 ID3D10Device_SetPredication(device
, NULL
, FALSE
);
115 HRESULT WINAPI
D3DX10CreateDevice(IDXGIAdapter
*adapter
, D3D10_DRIVER_TYPE driver_type
,
116 HMODULE swrast
, unsigned int flags
, ID3D10Device
**device
)
120 TRACE("adapter %p, driver_type %d, swrast %p, flags %#x, device %p.\n", adapter
, driver_type
,
121 swrast
, flags
, device
);
123 if (SUCCEEDED(hr
= D3D10CreateDevice1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_1
,
124 D3D10_SDK_VERSION
, (ID3D10Device1
**)device
)))
127 if (SUCCEEDED(hr
= D3D10CreateDevice1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_0
,
128 D3D10_SDK_VERSION
, (ID3D10Device1
**)device
)))
134 HRESULT WINAPI
D3DX10CreateDeviceAndSwapChain(IDXGIAdapter
*adapter
, D3D10_DRIVER_TYPE driver_type
,
135 HMODULE swrast
, unsigned int flags
, DXGI_SWAP_CHAIN_DESC
*desc
, IDXGISwapChain
**swapchain
,
136 ID3D10Device
**device
)
140 TRACE("adapter %p, driver_type %d, swrast %p, flags %#x, desc %p, swapchain %p, device %p.\n",
141 adapter
, driver_type
, swrast
, flags
, desc
, swapchain
, device
);
143 if (SUCCEEDED(hr
= D3D10CreateDeviceAndSwapChain1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_1
,
144 D3D10_1_SDK_VERSION
, desc
, swapchain
, (ID3D10Device1
**)device
)))
147 return D3D10CreateDeviceAndSwapChain1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_0
,
148 D3D10_1_SDK_VERSION
, desc
, swapchain
, (ID3D10Device1
**)device
);
151 HRESULT WINAPI
D3DX10FilterTexture(ID3D10Resource
*texture
, UINT src_level
, UINT filter
)
153 FIXME("texture %p, src_level %u, filter %#x stub!\n", texture
, src_level
, filter
);
158 HRESULT WINAPI
D3DX10GetFeatureLevel1(ID3D10Device
*device
, ID3D10Device1
**device1
)
160 TRACE("device %p, device1 %p.\n", device
, device1
);
162 return ID3D10Device_QueryInterface(device
, &IID_ID3D10Device1
, (void **)device1
);
165 D3DX_CPU_OPTIMIZATION WINAPI
D3DXCpuOptimizations(BOOL enable
)
167 FIXME("enable %#x stub.\n", enable
);
169 return D3DX_NOT_OPTIMIZED
;
172 HRESULT WINAPI
D3DX10LoadTextureFromTexture(ID3D10Resource
*src_texture
, D3DX10_TEXTURE_LOAD_INFO
*load_info
,
173 ID3D10Resource
*dst_texture
)
175 FIXME("src_texture %p, load_info %p, dst_texture %p stub!\n", src_texture
, load_info
, dst_texture
);