diff --git a/gfx/common/ctr_common.h b/gfx/common/ctr_common.h index a4d2e1b274..3b24aff6de 100644 --- a/gfx/common/ctr_common.h +++ b/gfx/common/ctr_common.h @@ -27,6 +27,12 @@ #define CTR_BOTTOM_FRAMEBUFFER_HEIGHT 240 #define CTR_STATE_DATE_SIZE 11 +#define CTR_SET_SCALE_VECTOR(vec, viewport_width, viewport_height, texture_width, texture_height) \ + (vec)->x = -2.0f / (viewport_width); \ + (vec)->y = -2.0f / (viewport_height); \ + (vec)->u = 1.0f / (texture_width); \ + (vec)->v = -1.0f / (texture_height) + #ifdef USE_CTRULIB_2 extern u8* gfxTopLeftFramebuffers[2]; extern u8* gfxTopRightFramebuffers[2]; diff --git a/gfx/drivers/ctr_gfx.c b/gfx/drivers/ctr_gfx.c index a1e1ede887..5658967729 100644 --- a/gfx/drivers/ctr_gfx.c +++ b/gfx/drivers/ctr_gfx.c @@ -356,6 +356,7 @@ static void ctr_state_thumbnail_geom(void *data) float scale; unsigned width, height; int x_offset, y_offset; + ctr_scale_vector_t *vec = NULL; ctr_texture_t *texture = NULL; ctr_video_t *ctr = (ctr_video_t *)data; struct ctr_bottom_texture_data *o = NULL; @@ -390,8 +391,10 @@ static void ctr_state_thumbnail_geom(void *data) + texture->active_width * scale; o->frame_coords->y1 = o->frame_coords->y0 + texture->active_height * scale; + vec = &o->scale_vector; - ctr_set_scale_vector(&o->scale_vector, + CTR_SET_SCALE_VECTOR( + vec, CTR_BOTTOM_FRAMEBUFFER_WIDTH, CTR_BOTTOM_FRAMEBUFFER_HEIGHT, texture->width, @@ -427,7 +430,8 @@ static bool ctr_load_bottom_texture(void *data) } else { - ctr_texture_t *texture = (ctr_texture_t *) o->texture; + ctr_scale_vector_t *vec = NULL; + ctr_texture_t *texture = (ctr_texture_t *)o->texture; o->frame_coords->u0 = 0; o->frame_coords->v0 = 0; @@ -439,7 +443,9 @@ static bool ctr_load_bottom_texture(void *data) o->frame_coords->x1 = o->frame_coords->x0 + texture->width; o->frame_coords->y1 = o->frame_coords->y0 + texture->height; - ctr_set_scale_vector(&o->scale_vector, + vec = &o->scale_vector; + + CTR_SET_SCALE_VECTOR(vec, CTR_BOTTOM_FRAMEBUFFER_WIDTH, CTR_BOTTOM_FRAMEBUFFER_HEIGHT, texture->width, @@ -1083,6 +1089,8 @@ static void* ctr_init(const video_info_t* video, { size_t i; float refresh_rate; + ctr_scale_vector_t *vec = NULL; + ctr_scale_vector_t *menu_vec = NULL; u8 device_model = 0xFF; void* ctrinput = NULL; settings_t *settings = config_get_ptr(); @@ -1171,13 +1179,19 @@ static void* ctr_init(const video_info_t* video, ctr->menu.frame_coords->u1 = CTR_TOP_FRAMEBUFFER_WIDTH - 80; ctr->menu.frame_coords->v1 = CTR_TOP_FRAMEBUFFER_HEIGHT; GSPGPU_FlushDataCache(ctr->menu.frame_coords, sizeof(ctr_vertex_t)); + vec = &ctr->scale_vector; + menu_vec = &ctr->menu.scale_vector; - ctr_set_scale_vector(&ctr->scale_vector, - CTR_TOP_FRAMEBUFFER_WIDTH, CTR_TOP_FRAMEBUFFER_HEIGHT, - ctr->texture_width, ctr->texture_height); - ctr_set_scale_vector(&ctr->menu.scale_vector, - CTR_TOP_FRAMEBUFFER_WIDTH, CTR_TOP_FRAMEBUFFER_HEIGHT, - ctr->menu.texture_width, ctr->menu.texture_height); + CTR_SET_SCALE_VECTOR(vec, + CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_HEIGHT, + ctr->texture_width, + ctr->texture_height); + CTR_SET_SCALE_VECTOR(menu_vec, + CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_HEIGHT, + ctr->menu.texture_width, + ctr->menu.texture_height); memset(ctr->texture_linear, 0x00, ctr->texture_width * ctr->texture_height * (ctr->rgb32? 4:2)); #if 0 @@ -2203,8 +2217,9 @@ static bool ctr_overlay_load(void *data, for (i = 0; i < num_images; i++) { - uint32_t *src = NULL; - uint32_t *dst = NULL; + ctr_scale_vector_t *vec = NULL; + uint32_t *src = NULL; + uint32_t *dst = NULL; struct ctr_overlay_data *o = (struct ctr_overlay_data *)&ctr->overlay[i]; o->frame_coords = linearAlloc(sizeof(ctr_vertex_t)); @@ -2262,9 +2277,12 @@ static bool ctr_overlay_load(void *data, ctr_overlay_tex_geom(ctr, i, 0, 0, 1, 1); ctr_overlay_vertex_geom(ctr, i, 0, 0, 1, 1); - ctr_set_scale_vector(&o->scale_vector, - CTR_TOP_FRAMEBUFFER_WIDTH, CTR_TOP_FRAMEBUFFER_HEIGHT, - o->texture.width, o->texture.height); + vec = &o->scale_vector; + CTR_SET_SCALE_VECTOR(vec, + CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_HEIGHT, + o->texture.width, + o->texture.height); ctr->overlay[i].alpha_mod = 1.0f; } diff --git a/gfx/drivers_display/gfx_display_ctr.c b/gfx/drivers_display/gfx_display_ctr.c index 12a22d4073..b953f10ae0 100644 --- a/gfx/drivers_display/gfx_display_ctr.c +++ b/gfx/drivers_display/gfx_display_ctr.c @@ -30,6 +30,7 @@ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, { ctr_scale_vector_t scale_vector; int colorR, colorG, colorB, colorA; + ctr_scale_vector_t *vec = NULL; ctr_vertex_t *v = NULL; struct ctr_texture *texture = NULL; const float *color = NULL; @@ -44,9 +45,13 @@ static void gfx_display_ctr_draw(gfx_display_ctx_draw_t *draw, if (!texture) return; - ctr_set_scale_vector(&scale_vector, - CTR_TOP_FRAMEBUFFER_WIDTH, CTR_TOP_FRAMEBUFFER_HEIGHT, - texture->width, texture->height); + vec = &scale_vector; + CTR_SET_SCALE_VECTOR( + vec, + CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_HEIGHT, + texture->width, + texture->height); GPUCMD_AddWrite(GPUREG_GSH_BOOLUNIFORM, 0); ctrGuSetVertexShaderFloatUniform(0, (float*)&scale_vector, 1); diff --git a/gfx/drivers_font/ctr_font.c b/gfx/drivers_font/ctr_font.c index 3f4a4c7a81..0183a42f3a 100644 --- a/gfx/drivers_font/ctr_font.c +++ b/gfx/drivers_font/ctr_font.c @@ -43,6 +43,8 @@ static void* ctr_font_init(void* data, const char* font_path, float font_size, bool is_threaded) { int i, j; + ctr_scale_vector_t *vec_top = NULL; + ctr_scale_vector_t *vec_bottom = NULL; const uint8_t* src = NULL; uint8_t* tmp = NULL; const struct font_atlas* atlas = NULL; @@ -88,15 +90,22 @@ static void* ctr_font_init(void* data, const char* font_path, linearFree(tmp); #endif - ctr_set_scale_vector(&font->scale_vector_top, - CTR_TOP_FRAMEBUFFER_WIDTH, - CTR_TOP_FRAMEBUFFER_HEIGHT, - font->texture.width, font->texture.height); + vec_top = &font->scale_vector_top; + vec_bottom = &font->scale_vector_bottom; - ctr_set_scale_vector(&font->scale_vector_bottom, - CTR_BOTTOM_FRAMEBUFFER_WIDTH, - CTR_BOTTOM_FRAMEBUFFER_HEIGHT, - font->texture.width, font->texture.height); + CTR_SET_SCALE_VECTOR( + vec_top, + CTR_TOP_FRAMEBUFFER_WIDTH, + CTR_TOP_FRAMEBUFFER_HEIGHT, + font->texture.width, + font->texture.height); + + CTR_SET_SCALE_VECTOR( + vec_bottom, + CTR_BOTTOM_FRAMEBUFFER_WIDTH, + CTR_BOTTOM_FRAMEBUFFER_HEIGHT, + font->texture.width, + font->texture.height); return font; }