Inner interpreter safety check - in hw skinning mode, we need to flush if any part of the vertex format changes.

This commit is contained in:
Henrik Rydgård 2018-04-10 14:37:32 +02:00
parent dbe52c8135
commit 02ea4b5efa

View file

@ -1553,6 +1553,10 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) {
goto bail;
#endif
uint32_t vtypeCheckMask = ~GE_VTYPE_WEIGHTCOUNT_MASK;
if (!g_Config.bSoftwareSkinning)
vtypeCheckMask = 0xFFFFFFFF;
while (src != stall) {
uint32_t data = *src;
switch (data >> 24) {
@ -1581,7 +1585,7 @@ void GPUCommon::Execute_Prim(u32 op, u32 diff) {
{
uint32_t diff = data ^ vertexType;
// don't mask upper bits, vertexType is unmasked
if (diff & ~GE_VTYPE_WEIGHTCOUNT_MASK) {
if (diff & vtypeCheckMask) {
goto bail;
} else {
vertexType = data;