From b6728214055e20be39b5f2d678be70e8984679ec Mon Sep 17 00:00:00 2001 From: sopskrutt <> Date: Tue, 16 Mar 2004 20:09:19 +0000 Subject: [PATCH] Vertex shader stuff --- Source/Win32/CxbxKrnl/EmuD3D8.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/Win32/CxbxKrnl/EmuD3D8.cpp b/Source/Win32/CxbxKrnl/EmuD3D8.cpp index 48c09fbd2..08bfefc2b 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8.cpp @@ -1239,7 +1239,7 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SelectVertexShader ");\n", GetCurrentThreadId(), Handle, Address); - if((Handle & 0x80000000)) + if(VshHandleIsVertexShader(Handle)) { VERTEX_SHADER *pVertexShader = (VERTEX_SHADER *)(((X_D3DVertexShader *)(Handle & 0x7FFFFFFF))->Handle); g_pD3DDevice8->SetVertexShader(pVertexShader->Handle); @@ -2185,7 +2185,7 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_CreateVertexShader FailedShaderCount++; } #endif // _DEBUG_VSH - hRet = D3D_OK; + //hRet = D3D_OK; } EmuSwapFS(); // XBox FS @@ -6171,8 +6171,8 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_SetVertexShader if(g_VertexShaderConstantMode != X_D3DSCM_NORESERVEDCONSTANTS) { - g_pD3DDevice8->SetVertexShaderConstant( 58, &vScale, 1 ); - g_pD3DDevice8->SetVertexShaderConstant( 59, &vOffset, 1 ); + //g_pD3DDevice8->SetVertexShaderConstant( 58, &vScale, 1 ); + //g_pD3DDevice8->SetVertexShaderConstant( 59, &vOffset, 1 ); } DWORD RealHandle; @@ -6769,9 +6769,15 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_GetVertexShaderSize ");\n", GetCurrentThreadId(), Handle,pSize); - if(pSize && (Handle & 0x8000000)) + if(pSize && VshHandleIsVertexShader(Handle)) { - *pSize = ((VERTEX_SHADER *)((X_D3DVertexShader *)(Handle & 0x7FFFFFFF))->Handle)->Size; + X_D3DVertexShader *pD3DVertexShader = (X_D3DVertexShader *)(Handle & 0x7FFFFFFF); + VERTEX_SHADER *pVertexShader = (VERTEX_SHADER *)pD3DVertexShader->Handle; + *pSize = pVertexShader->Size; + } + else if(pSize) + { + *pSize = 0; } EmuSwapFS(); // Xbox FS @@ -6795,7 +6801,7 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DeleteVertexShader DWORD RealHandle = 0; - if(Handle & 0x8000000) + if(VshHandleIsVertexShader(Handle)) { X_D3DVertexShader *pD3DVertexShader = (X_D3DVertexShader *)(Handle & 0x7FFFFFFF); VERTEX_SHADER *pVertexShader = (VERTEX_SHADER *)pD3DVertexShader->Handle; @@ -7154,7 +7160,7 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_GetVertexShaderFunction if(pSizeOfData && VshHandleIsVertexShader(Handle)) { VERTEX_SHADER *pVertexShader = (VERTEX_SHADER *)(VshHandleGetVertexShader(Handle))->Handle; - if(*pSizeOfData < pVertexShader->DeclarationSize || !pData) + if(*pSizeOfData < pVertexShader->FunctionSize || !pData) { *pSizeOfData = pVertexShader->FunctionSize;