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
23 #include "wine/port.h"
24 #include "wine/debug.h"
25 #include "wine/unicode.h"
37 #include "d3dx10core.h"
38 #include "d3dx10tex.h"
40 WINE_DEFAULT_DEBUG_CHANNEL(d3dx
);
42 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
)
46 case DLL_WINE_PREATTACH
:
47 return FALSE
; /* prefer native version */
48 case DLL_PROCESS_ATTACH
:
49 DisableThreadLibraryCalls(hinstDLL
);
56 /***********************************************************************
59 * Checks whether we are compiling against the correct d3d and d3dx library.
61 BOOL WINAPI
D3DX10CheckVersion(UINT d3dsdkvers
, UINT d3dxsdkvers
)
63 if ((d3dsdkvers
== D3D10_SDK_VERSION
) && (d3dxsdkvers
== 43))
69 HRESULT WINAPI
D3DX10CreateEffectFromFileA(const char *filename
, const D3D10_SHADER_MACRO
*defines
,
70 ID3D10Include
*include
, const char *profile
, UINT hlslflags
, UINT fxflags
, ID3D10Device
*device
,
71 ID3D10EffectPool
*effectpool
, ID3DX10ThreadPump
*pump
, ID3D10Effect
**effect
, ID3D10Blob
**errors
,
74 FIXME("filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, "
75 "device %p, effectpool %p, pump %p, effect %p, errors %p, hresult %p\n",
76 debugstr_a(filename
), defines
, include
, debugstr_a(profile
), hlslflags
, fxflags
,
77 device
, effectpool
, pump
, effect
, errors
, hresult
);
82 HRESULT WINAPI
D3DX10CreateEffectFromFileW(const WCHAR
*filename
, const D3D10_SHADER_MACRO
*defines
,
83 ID3D10Include
*include
, const char *profile
, UINT hlslflags
, UINT fxflags
, ID3D10Device
*device
,
84 ID3D10EffectPool
*effectpool
, ID3DX10ThreadPump
*pump
, ID3D10Effect
**effect
, ID3D10Blob
**errors
,
87 FIXME("filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, "
88 "device %p, effectpool %p, pump %p, effect %p, errors %p, hresult %p\n",
89 debugstr_w(filename
), defines
, include
, debugstr_a(profile
), hlslflags
, fxflags
, device
,
90 effectpool
, pump
, effect
, errors
, hresult
);
95 HRESULT WINAPI
D3DX10CreateEffectFromMemory(const void *data
, SIZE_T datasize
, const char *filename
,
96 const D3D10_SHADER_MACRO
*defines
, ID3D10Include
*include
, const char *profile
, UINT hlslflags
,
97 UINT fxflags
, ID3D10Device
*device
, ID3D10EffectPool
*effectpool
, ID3DX10ThreadPump
*pump
,
98 ID3D10Effect
**effect
, ID3D10Blob
**errors
, HRESULT
*hresult
)
100 FIXME("data %p, datasize %lu, filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, "
101 "device %p, effectpool %p, pump %p, effect %p, errors %p, hresult %p\n",
102 data
, datasize
, debugstr_a(filename
), defines
, include
, debugstr_a(profile
), hlslflags
, fxflags
, device
,
103 effectpool
, pump
, effect
, errors
, hresult
);
108 HRESULT WINAPI
D3DX10CreateEffectPoolFromMemory(const void *data
, SIZE_T datasize
, const char *filename
,
109 const D3D10_SHADER_MACRO
*defines
, ID3D10Include
*include
, const char *profile
, UINT hlslflags
,
110 UINT fxflags
, ID3D10Device
*device
, ID3DX10ThreadPump
*pump
, ID3D10EffectPool
**effectpool
,
111 ID3D10Blob
**errors
, HRESULT
*hresult
)
113 FIXME("data %p, datasize %lu, filename %s, defines %p, include %p, profile %s, hlslflags %#x, fxflags %#x, "
114 "device %p, pump %p, effectpool %p, errors %p, hresult %p.\n",
115 data
, datasize
, debugstr_a(filename
), defines
, include
, debugstr_a(profile
), hlslflags
, fxflags
, device
,
116 pump
, effectpool
, errors
, hresult
);
121 HRESULT WINAPI
D3DX10UnsetAllDeviceObjects(ID3D10Device
*device
)
123 static ID3D10ShaderResourceView
* const views
[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
];
124 static ID3D10RenderTargetView
* const target_views
[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
];
125 static ID3D10SamplerState
* const sampler_states
[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
];
126 static ID3D10Buffer
* const buffers
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
127 static const unsigned int so_offsets
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
] =
128 {~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u, ~0u};
129 static const unsigned int strides
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
130 static const unsigned int offsets
[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
];
131 static const float blend_factors
[4];
133 TRACE("device %p.\n", device
);
138 ID3D10Device_VSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
139 ID3D10Device_PSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
140 ID3D10Device_GSSetConstantBuffers(device
, 0, D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
, buffers
);
142 ID3D10Device_VSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
143 ID3D10Device_PSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
144 ID3D10Device_GSSetSamplers(device
, 0, D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
, sampler_states
);
146 ID3D10Device_VSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
147 ID3D10Device_PSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
148 ID3D10Device_GSSetShaderResources(device
, 0, D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
, views
);
150 ID3D10Device_VSSetShader(device
, NULL
);
151 ID3D10Device_PSSetShader(device
, NULL
);
152 ID3D10Device_GSSetShader(device
, NULL
);
154 ID3D10Device_OMSetRenderTargets(device
, D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT
, target_views
, NULL
);
156 ID3D10Device_IASetIndexBuffer(device
, NULL
, DXGI_FORMAT_R32_UINT
, 0);
157 ID3D10Device_IASetInputLayout(device
, NULL
);
158 ID3D10Device_IASetVertexBuffers(device
, 0, D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
, buffers
, strides
, offsets
);
160 ID3D10Device_SOSetTargets(device
, D3D10_SO_BUFFER_SLOT_COUNT
, buffers
, so_offsets
);
162 ID3D10Device_OMSetBlendState(device
, NULL
, blend_factors
, 0);
163 ID3D10Device_OMSetDepthStencilState(device
, NULL
, 0);
165 ID3D10Device_RSSetState(device
, NULL
);
167 ID3D10Device_SetPredication(device
, NULL
, FALSE
);
172 HRESULT WINAPI
D3DX10CreateDevice(IDXGIAdapter
*adapter
, D3D10_DRIVER_TYPE driver_type
,
173 HMODULE swrast
, unsigned int flags
, ID3D10Device
**device
)
177 TRACE("adapter %p, driver_type %d, swrast %p, flags %#x, device %p.\n", adapter
, driver_type
,
178 swrast
, flags
, device
);
180 if (SUCCEEDED(hr
= D3D10CreateDevice1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_1
,
181 D3D10_SDK_VERSION
, (ID3D10Device1
**)device
)))
184 if (SUCCEEDED(hr
= D3D10CreateDevice1(adapter
, driver_type
, swrast
, flags
, D3D10_FEATURE_LEVEL_10_0
,
185 D3D10_SDK_VERSION
, (ID3D10Device1
**)device
)))
191 HRESULT WINAPI
D3DX10FilterTexture(ID3D10Resource
*texture
, UINT src_level
, UINT filter
)
193 FIXME("texture %p, src_level %u, filter %#x stub!\n", texture
, src_level
, filter
);
198 HRESULT WINAPI
D3DX10GetFeatureLevel1(ID3D10Device
*device
, ID3D10Device1
**device1
)
200 TRACE("device %p, device1 %p.\n", device
, device1
);
202 return ID3D10Device_QueryInterface(device
, &IID_ID3D10Device1
, (void **)device1
);
205 HRESULT WINAPI
D3DX10GetImageInfoFromMemory(const void *src_data
, SIZE_T src_data_size
, ID3DX10ThreadPump
*pump
,
206 D3DX10_IMAGE_INFO
*img_info
, HRESULT
*hresult
)
208 FIXME("src_data %p, src_data_size %lu, pump %p, img_info %p, hresult %p.\n",
209 src_data
, src_data_size
, pump
, img_info
, hresult
);