* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "config.h"
#include "d3d9_private.h"
-WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
-
static inline struct d3d9_vertexshader *impl_from_IDirect3DVertexShader9(IDirect3DVertexShader9 *iface)
{
return CONTAINING_RECORD(iface, struct d3d9_vertexshader, IDirect3DVertexShader9_iface);
HRESULT vertexshader_init(struct d3d9_vertexshader *shader, struct d3d9_device *device, const DWORD *byte_code)
{
+ struct wined3d_shader_desc desc;
HRESULT hr;
shader->refcount = 1;
shader->IDirect3DVertexShader9_iface.lpVtbl = &d3d9_vertexshader_vtbl;
+ desc.byte_code = byte_code;
+ desc.byte_code_size = ~(size_t)0;
+ desc.format = WINED3D_SHADER_BYTE_CODE_FORMAT_SM1;
+ desc.input_signature.element_count = 0;
+ desc.output_signature.element_count = 0;
+ desc.patch_constant_signature.element_count = 0;
+ desc.max_version = 3;
+
wined3d_mutex_lock();
- hr = wined3d_shader_create_vs(device->wined3d_device, byte_code, NULL,
- shader, &d3d9_vertexshader_wined3d_parent_ops, &shader->wined3d_shader, 3);
+ hr = wined3d_shader_create_vs(device->wined3d_device, &desc, shader,
+ &d3d9_vertexshader_wined3d_parent_ops, &shader->wined3d_shader);
wined3d_mutex_unlock();
if (FAILED(hr))
{
{
if (!iface)
return NULL;
- assert(iface->lpVtbl == &d3d9_vertexshader_vtbl);
+ if (iface->lpVtbl != &d3d9_vertexshader_vtbl)
+ WARN("Vertex shader %p with the wrong vtbl %p\n", iface, iface->lpVtbl);
return impl_from_IDirect3DVertexShader9(iface);
}
HRESULT pixelshader_init(struct d3d9_pixelshader *shader, struct d3d9_device *device, const DWORD *byte_code)
{
+ struct wined3d_shader_desc desc;
HRESULT hr;
shader->refcount = 1;
shader->IDirect3DPixelShader9_iface.lpVtbl = &d3d9_pixelshader_vtbl;
+ desc.byte_code = byte_code;
+ desc.byte_code_size = ~(size_t)0;
+ desc.format = WINED3D_SHADER_BYTE_CODE_FORMAT_SM1;
+ desc.input_signature.element_count = 0;
+ desc.output_signature.element_count = 0;
+ desc.patch_constant_signature.element_count = 0;
+ desc.max_version = 3;
+
wined3d_mutex_lock();
- hr = wined3d_shader_create_ps(device->wined3d_device, byte_code, NULL, shader,
- &d3d9_pixelshader_wined3d_parent_ops, &shader->wined3d_shader, 3);
+ hr = wined3d_shader_create_ps(device->wined3d_device, &desc, shader,
+ &d3d9_pixelshader_wined3d_parent_ops, &shader->wined3d_shader);
wined3d_mutex_unlock();
if (FAILED(hr))
{
{
if (!iface)
return NULL;
- assert(iface->lpVtbl == &d3d9_pixelshader_vtbl);
+ if (iface->lpVtbl != &d3d9_pixelshader_vtbl)
+ WARN("Pixel shader %p with the wrong vtbl %p\n", iface, iface->lpVtbl);
return impl_from_IDirect3DPixelShader9(iface);
}