Skip to content

Commit

Permalink
wiiu/render: Implement SetVSync.
Browse files Browse the repository at this point in the history
GX2SetSwapInterval absolutely *does* cause the CPU to wait for
V-sync: if I set it to 2, then software runs at half speed compared
to 1.
  • Loading branch information
Clownacy authored and GaryOderNichts committed Sep 7, 2024
1 parent 439f6e8 commit ed6b5f8
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/render/wiiu/SDL_render_wiiu.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "SDL_render_wiiu.h"

#include <gx2/event.h>
#include <gx2/swap.h>
#include <gx2/registers.h>
#include <gx2/state.h>
#include <gx2r/surface.h>
Expand Down Expand Up @@ -71,10 +72,13 @@ SDL_Renderer *WIIU_SDL_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->RenderPresent = WIIU_SDL_RenderPresent;
renderer->DestroyTexture = WIIU_SDL_DestroyTexture;
renderer->DestroyRenderer = WIIU_SDL_DestroyRenderer;
renderer->SetVSync = WIIU_SDL_SetVSync;
renderer->info = WIIU_RenderDriver.info;
renderer->driverdata = data;
renderer->window = window;

WIIU_SDL_SetVSync(renderer, (flags & SDL_RENDERER_PRESENTVSYNC) != 0);

/* Prepare shaders */
WIIU_SDL_CreateShaders();

Expand Down
1 change: 1 addition & 0 deletions src/render/wiiu/SDL_render_wiiu.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ int WIIU_SDL_QueueGeometry(SDL_Renderer * renderer, SDL_RenderCommand * cmd, SDL
int WIIU_SDL_RunCommandQueue(SDL_Renderer * renderer, SDL_RenderCommand *cmd, void *vertices, size_t vertsize);
int WIIU_SDL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect,
Uint32 format, void * pixels, int pitch);
int WIIU_SDL_SetVSync(SDL_Renderer * renderer, const int vsync);
int WIIU_SDL_RenderPresent(SDL_Renderer * renderer);
void WIIU_SDL_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture);
void WIIU_SDL_DestroyRenderer(SDL_Renderer * renderer);
Expand Down
12 changes: 12 additions & 0 deletions src/render/wiiu/SDL_rpresent_wiiu.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,18 @@

static SDL_bool tvDrcEnabled = SDL_FALSE;

int WIIU_SDL_SetVSync(SDL_Renderer * renderer, const int vsync)
{
GX2SetSwapInterval(vsync ? 1 : 0);

if (GX2GetSwapInterval() > 0) {
renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
} else {
renderer->info.flags &= ~SDL_RENDERER_PRESENTVSYNC;
}
return 0;
}

int WIIU_SDL_RenderPresent(SDL_Renderer * renderer)
{
WIIU_RenderData *data = (WIIU_RenderData *) renderer->driverdata;
Expand Down

0 comments on commit ed6b5f8

Please sign in to comment.