Move D3DDevice_SetVertexShader implementation to XbVertexShader.cpp

This commit is contained in:
patrickvl 2020-04-30 14:28:32 +02:00
parent ea5f494a8e
commit 5a222185a3
3 changed files with 1371 additions and 1360 deletions

View File

@ -6664,29 +6664,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_SetVertexShader)
{
LOG_FUNC_ONE_ARG(Handle);
// Checks if the Handle has bit 0 set - if not, it's a FVF
// which is converted to a global Xbox Vertex Shader struct
// Otherwise bit 0 is cleared and the resulting address is
// validated to be a valid Xbox Vertex Shader
// D3D state fields are updated.
// If the shader contains a program, the handle is passed to
// D3DDevice_LoadVertexShader and D3DDevice_SelectVertexShader.
// Otherwise the shader is send using push buffer commands.
HRESULT hRet = D3D_OK;
g_Xbox_VertexShader_Handle = Handle;
if (VshHandleIsVertexShader(Handle)) {
CxbxVertexShader *pCxbxVertexShader = GetCxbxVertexShader(Handle);
SetCxbxVertexShader(pCxbxVertexShader);
} else {
hRet = g_pD3DDevice->SetVertexShader(nullptr);
DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetVertexShader");
hRet = g_pD3DDevice->SetFVF(Handle);
DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetFVF");
}
CxbxImpl_SetVertexShader(Handle);
UpdateViewPortOffsetAndScaleConstants();
}

File diff suppressed because it is too large Load Diff

View File

@ -236,7 +236,8 @@ inline XTL::X_D3DVertexShader *VshHandleToXboxVertexShader(DWORD Handle) { retur
extern DWORD* GetCxbxVertexShaderSlotPtr(const DWORD SlotIndexAddress);
extern CxbxVertexShader* GetCxbxVertexShader(DWORD XboxVertexShaderHandle);
extern void SetCxbxVertexShader(DWORD XboxVertexShaderHandle, CxbxVertexShader* shader);
extern void SetCxbxVertexShader(CxbxVertexShader* pCxbxVertexShader); // Implemented in Direct3D9.cpp (for now)
extern void CxbxImpl_LoadVertexShader(DWORD Handle, DWORD Address);
extern void CxbxImpl_SetVertexShader(DWORD Handle);
#endif