diff --git a/GPU/GLES/GLES_GPU.cpp b/GPU/GLES/GLES_GPU.cpp index 621379fc75..1400007498 100644 --- a/GPU/GLES/GLES_GPU.cpp +++ b/GPU/GLES/GLES_GPU.cpp @@ -197,12 +197,12 @@ static const CommandTableEntry commandTable[] = { {GE_CMD_PATCHCULLENABLE, FLAG_FLUSHBEFOREONCHANGE}, // Viewport. - {GE_CMD_VIEWPORTX1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, - {GE_CMD_VIEWPORTY1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, - {GE_CMD_VIEWPORTX2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, - {GE_CMD_VIEWPORTY2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, - {GE_CMD_VIEWPORTZ1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, - {GE_CMD_VIEWPORTZ2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE}, + {GE_CMD_VIEWPORTX1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, + {GE_CMD_VIEWPORTY1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, + {GE_CMD_VIEWPORTX2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, + {GE_CMD_VIEWPORTY2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, + {GE_CMD_VIEWPORTZ1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, + {GE_CMD_VIEWPORTZ2, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_ViewportType}, // Region {GE_CMD_REGION1, FLAG_FLUSHBEFOREONCHANGE | FLAG_EXECUTEONCHANGE, &GLES_GPU::Execute_Region}, @@ -886,6 +886,11 @@ void GLES_GPU::Execute_FramebufType(u32 op, u32 diff) { gstate_c.textureChanged |= TEXCHANGE_PARAMSONLY; } +void GLES_GPU::Execute_ViewportType(u32 op, u32 diff) { + gstate_c.framebufChanged = true; + gstate_c.textureChanged |= TEXCHANGE_PARAMSONLY; +} + void GLES_GPU::Execute_TexScaleU(u32 op, u32 diff) { gstate_c.uv.uScale = getFloat24(op); shaderManager_->DirtyUniform(DIRTY_UVSCALEOFFSET); @@ -1551,8 +1556,7 @@ void GLES_GPU::ExecuteOpInternal(u32 op, u32 diff) { case GE_CMD_VIEWPORTY2: case GE_CMD_VIEWPORTZ1: case GE_CMD_VIEWPORTZ2: - gstate_c.framebufChanged = true; - gstate_c.textureChanged |= TEXCHANGE_PARAMSONLY; + Execute_ViewportType(op, diff); break; case GE_CMD_LIGHTENABLE0: diff --git a/GPU/GLES/GLES_GPU.h b/GPU/GLES/GLES_GPU.h index 82bfe8242d..640cb618cb 100644 --- a/GPU/GLES/GLES_GPU.h +++ b/GPU/GLES/GLES_GPU.h @@ -89,6 +89,7 @@ public: void Execute_Region(u32 op, u32 diff); void Execute_Scissor(u32 op, u32 diff); void Execute_FramebufType(u32 op, u32 diff); + void Execute_ViewportType(u32 op, u32 diff); void Execute_TexScaleU(u32 op, u32 diff); void Execute_TexScaleV(u32 op, u32 diff); void Execute_TexOffsetU(u32 op, u32 diff);