From ed24d057528249b128c48cee7ccf7eff976f1aab Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Wed, 22 Apr 2020 23:35:46 +1000 Subject: [PATCH 1/2] WiiU: gfx_display: fix non-vertex coordinates in draws using tex shader This second case is hit when there's a quad with different-coloured corners, since the tex shader is needed to support that. In the quad case, there are no vertexes, and the ->x,y,width,height fields are used instead. Fixes #8519. --- gfx/drivers_display/gfx_display_wiiu.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/gfx/drivers_display/gfx_display_wiiu.c b/gfx/drivers_display/gfx_display_wiiu.c index 849c536524..c35d1ae73c 100644 --- a/gfx/drivers_display/gfx_display_wiiu.c +++ b/gfx/drivers_display/gfx_display_wiiu.c @@ -89,6 +89,7 @@ static void gfx_display_wiiu_draw(gfx_display_ctx_draw_t *draw, } } + /* TODO come up with a better check for "not all vertexes are the same color" */ else if (draw->coords->vertex || draw->coords->color[0] != draw->coords->color[12]) { if (wiiu->vertex_cache_tex.current + 4 > wiiu->vertex_cache_tex.size) @@ -106,14 +107,20 @@ static void gfx_display_wiiu_draw(gfx_display_ctx_draw_t *draw, if (!draw->coords->vertex) { - v[0].pos.x = 0.0f; - v[0].pos.y = 1.0f; - v[1].pos.x = 1.0f; - v[1].pos.y = 1.0f; - v[2].pos.x = 0.0f; - v[2].pos.y = 0.0f; - v[3].pos.x = 1.0f; - v[3].pos.y = 0.0f; + /* Convert the libretro bottom-up coordinate system to GX2 - low y at + the top of the screen, large y at the bottom + The compiler will optimise 90% of this out anyway */ + float y = -(draw->y + draw->height - video_height); + /* Remember: this is a triangle strip, not a quad, draw in a Z shape + Bottom-left, right, top-left, right */ + v[0].pos.x = (draw->x ) / video_width; + v[0].pos.y = (y + draw->height) / video_height; + v[1].pos.x = (draw->x + draw->width ) / video_width; + v[1].pos.y = (y + draw->height) / video_height; + v[2].pos.x = (draw->x ) / video_width; + v[2].pos.y = (y ) / video_height; + v[3].pos.x = (draw->x + draw->width ) / video_width; + v[3].pos.y = (y ) / video_height; } else { From 08dfd58994955f768c8210209686bae5d5f400c3 Mon Sep 17 00:00:00 2001 From: Ash Logan Date: Wed, 22 Apr 2020 23:37:18 +1000 Subject: [PATCH 2/2] WiiU: Enable -Wall This is the standard, according to CONTRIBUTING.md --- Makefile.wiiu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.wiiu b/Makefile.wiiu index 2f01f2ffba..16cd3a1232 100644 --- a/Makefile.wiiu +++ b/Makefile.wiiu @@ -184,7 +184,7 @@ CFLAGS := -mcpu=750 -meabi -mhard-float CFLAGS += -ffast-math -Werror=implicit-function-declaration CFLAGS += -ffunction-sections -fdata-sections #CFLAGS += -fomit-frame-pointer -mword-relocations -#CFLAGS += -Wall +CFLAGS += -Wall ifeq ($(DEBUG), 1) CFLAGS += -O0 -g