Ensure shader has been created before setting it in SetVertexShader

This commit is contained in:
Anthony Miles 2020-05-04 20:49:03 +12:00
parent 79102c6ef8
commit 176dc9a38c
1 changed files with 11 additions and 6 deletions

View File

@ -1471,6 +1471,7 @@ void CxbxImpl_SetVertexShader(DWORD Handle)
if (VshHandleIsVertexShader(Handle)) {
CxbxVertexShader* pCxbxVertexShader = GetCxbxVertexShader(Handle);
if (pCxbxVertexShader) {
SetCxbxVertexShaderHandle(pCxbxVertexShader);
auto CxbxVertexShaderSlotPtr = GetCxbxVertexShaderSlotPtr(g_CxbxVertexShaderSlotAddress);
@ -1480,6 +1481,10 @@ void CxbxImpl_SetVertexShader(DWORD Handle)
memcpy(CxbxVertexShaderSlotPtr, pTokens, pCxbxVertexShader->XboxNrAddressSlots * X_VSH_INSTRUCTION_SIZE_BYTES);
}
}
else {
EmuLog(LOG_LEVEL::DEBUG, "SetVertexShader with shader handle that has not been created");
}
}
else {
hRet = g_pD3DDevice->SetVertexShader(nullptr);
DEBUG_D3DRESULT(hRet, "g_pD3DDevice->SetVertexShader");