From 83c1179744749e5497617ea3565f0c3bc526607e Mon Sep 17 00:00:00 2001
From: Francisco Javier Trujillo Mata <[EMAIL REDACTED]>
Date: Mon, 1 Aug 2022 12:23:58 +0200
Subject: [PATCH] Adding SetViewPortCommand
---
src/render/ps2/SDL_render_ps2.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/render/ps2/SDL_render_ps2.c b/src/render/ps2/SDL_render_ps2.c
index a7df76b7ea2..60ab7d951e0 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;