d3d8: IDirect3DDevice8Impl_GetVertexShaderDeclaration gets passed a handle instead of a pointer.

This commit is contained in:
H. Verbeet 2007-01-06 18:04:01 +01:00 committed by Alexandre Julliard
parent 6e3b732ffb
commit d73e5d6fc8
1 changed files with 19 additions and 3 deletions

View File

@ -1290,13 +1290,29 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderConstant(LPDIRECT3DDEV
return IWineD3DDevice_GetVertexShaderConstantF(This->WineD3DDevice, Register, (float *)pConstantData, ConstantCount);
}
/* FIXME: There currently isn't a proper way to retrieve the declaration from
* the wined3d shader. However, rather than simply adding this, the relation
* between d3d8 and wined3d shaders should be fixed. A d3d8 vertex shader
* should contain both a wined3d vertex shader and a wined3d vertex
* declaration, and eg. SetVertexShader in d3d8 should set both of them in
* wined3d. This would also allow us to get rid of the vertexDeclaration field
* in IWineD3DVertexShaderImpl */
static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderDeclaration(LPDIRECT3DDEVICE8 iface, DWORD pVertexShader, void* pData, DWORD* pSizeOfData) {
IDirect3DVertexShader8Impl *This = (IDirect3DVertexShader8Impl *)pVertexShader;
IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
IDirect3DVertexShader8Impl *shader = NULL;
TRACE("(%p) : Relay\n", This);
/* return IWineD3DVertexShader_GetDeclaration(This->wineD3DVertexShader, pData, (UINT *)pSizeOfData); */
TRACE("(%p) : pVertexShader %#x, pData %p, pSizeOfData %p\n", This, pVertexShader, pData, pSizeOfData);
if (pVertexShader <= VS_HIGHESTFIXEDFXF || This->allocated_shader_handles <= pVertexShader - (VS_HIGHESTFIXEDFXF + 1)) {
ERR("Passed an invalid shader handle.\n");
return D3DERR_INVALIDCALL;
}
shader = This->shader_handles[pVertexShader - (VS_HIGHESTFIXEDFXF + 1)];
FIXME("Unimplemented, returning D3DERR_INVALIDCALL\n");
return D3DERR_INVALIDCALL;
}
static HRESULT WINAPI IDirect3DDevice8Impl_GetVertexShaderFunction(LPDIRECT3DDEVICE8 iface, DWORD pVertexShader, void* pData, DWORD* pSizeOfData) {
IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
IDirect3DVertexShader8Impl *shader = NULL;