Turn ctr_set_scale_vector into a macro

This commit is contained in:
libretroadmin 2023-01-24 23:35:37 +01:00
parent e30793b06f
commit b5244cbfe7
4 changed files with 63 additions and 25 deletions

View File

@ -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];

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}