HRESULT d3d10_vertex_shader_init(struct d3d10_vertex_shader *shader, struct d3d10_device *device, const void *byte_code, SIZE_T byte_code_length) { struct d3d10_shader_info shader_info; HRESULT hr; shader->ID3D10VertexShader_iface.lpVtbl = &d3d10_vertex_shader_vtbl; shader->refcount = 1; shader_info.output_signature = &shader->output_signature; hr = shader_extract_from_dxbc(byte_code, byte_code_length, &shader_info); if (FAILED(hr)) { ERR("Failed to extract shader, hr %#x.\n", hr); return hr; } hr = wined3d_shader_create_vs(device->wined3d_device, shader_info.shader_code, &shader->output_signature, shader, &d3d10_vertex_shader_wined3d_parent_ops, &shader->wined3d_shader, 4); if (FAILED(hr)) { WARN("Failed to create wined3d vertex shader, hr %#x.\n", hr); shader_free_signature(&shader->output_signature); hr = E_INVALIDARG; return hr; } shader->device = &device->ID3D10Device1_iface; ID3D10Device1_AddRef(shader->device); return S_OK; }
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, &desc, shader, &d3d9_vertexshader_wined3d_parent_ops, &shader->wined3d_shader); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d vertex shader, hr %#x.\n", hr); return hr; } shader->parent_device = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(shader->parent_device); return D3D_OK; }
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; wined3d_mutex_lock(); hr = wined3d_shader_create_vs(device->wined3d_device, &desc, shader, &d3d9_vertexshader_wined3d_parent_ops, &shader->wined3d_shader); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d vertex shader, hr %#x.\n", hr); return hr; } shader->parent_device = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(shader->parent_device); return D3D_OK; }
static HRESULT d3d_vertex_shader_init(struct d3d_vertex_shader *shader, struct d3d_device *device, const void *byte_code, SIZE_T byte_code_length) { struct wined3d_shader_signature output_signature; struct wined3d_shader_signature input_signature; struct d3d_shader_info shader_info; struct wined3d_shader_desc desc; HRESULT hr; shader->ID3D11VertexShader_iface.lpVtbl = &d3d11_vertex_shader_vtbl; shader->ID3D10VertexShader_iface.lpVtbl = &d3d10_vertex_shader_vtbl; shader->refcount = 1; wined3d_mutex_lock(); wined3d_private_store_init(&shader->private_store); shader_info.input_signature = &input_signature; shader_info.output_signature = &output_signature; if (FAILED(hr = shader_extract_from_dxbc(byte_code, byte_code_length, &shader_info))) { ERR("Failed to extract shader, hr %#x.\n", hr); wined3d_private_store_cleanup(&shader->private_store); wined3d_mutex_unlock(); return hr; } desc.byte_code = shader_info.shader_code; desc.input_signature = &input_signature; desc.output_signature = &output_signature; desc.max_version = 4; hr = wined3d_shader_create_vs(device->wined3d_device, &desc, shader, &d3d_vertex_shader_wined3d_parent_ops, &shader->wined3d_shader); shader_free_signature(&input_signature); shader_free_signature(&output_signature); if (FAILED(hr)) { WARN("Failed to create wined3d vertex shader, hr %#x.\n", hr); wined3d_private_store_cleanup(&shader->private_store); wined3d_mutex_unlock(); return E_INVALIDARG; } wined3d_mutex_unlock(); shader->device = &device->ID3D11Device_iface; ID3D11Device_AddRef(shader->device); return S_OK; }
HRESULT vertexshader_init(IDirect3DVertexShader9Impl *shader, IDirect3DDevice9Impl *device, const DWORD *byte_code) { HRESULT hr; shader->ref = 1; shader->IDirect3DVertexShader9_iface.lpVtbl = &d3d9_vertexshader_vtbl; wined3d_mutex_lock(); hr = wined3d_shader_create_vs(device->wined3d_device, byte_code, NULL, shader, &d3d9_vertexshader_wined3d_parent_ops, &shader->wined3d_shader, 3); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d vertex shader, hr %#x.\n", hr); return hr; } shader->parentDevice = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(shader->parentDevice); return D3D_OK; }