diff --git a/src/render/ps2/SDL_render_ps2.c b/src/render/ps2/SDL_render_ps2.c index a7df76b7ea..60ab7d951e 100644 --- a/src/render/ps2/SDL_render_ps2.c +++ b/src/render/ps2/SDL_render_ps2.c @@ -347,6 +347,18 @@ PS2_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, SDL_Texture *t } +static int +PS2_RenderSetViewPort(SDL_Renderer *renderer, SDL_RenderCommand *cmd) +{ + PS2_RenderData *data = (PS2_RenderData *)renderer->driverdata; + const SDL_Rect *viewport = &cmd->data.viewport.rect; + + gsKit_set_display_offset(data->gsGlobal, viewport->x, viewport->y); + gsKit_set_scissor(data->gsGlobal, GS_SETREG_SCISSOR(viewport->x, viewport->y, viewport->w, viewport->h)); + + return 0; +} + static int PS2_RenderSetClipRect(SDL_Renderer *renderer, SDL_RenderCommand *cmd) { @@ -580,8 +592,10 @@ PS2_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *verti { while (cmd) { switch (cmd->command) { - case SDL_RENDERCMD_SETVIEWPORT: /* pending to be implemented */ + case SDL_RENDERCMD_SETVIEWPORT: { + PS2_RenderSetViewPort(renderer, cmd); break; + } case SDL_RENDERCMD_SETCLIPRECT: { PS2_RenderSetClipRect(renderer, cmd); break;