(GX) Cleanups
This commit is contained in:
parent
fecdc86475
commit
3b7e53bf58
|
@ -233,6 +233,8 @@ static void gx_free_overlay(gx_video_t *gx)
|
||||||
static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
bool fullscreen)
|
bool fullscreen)
|
||||||
{
|
{
|
||||||
|
f32 y_scale;
|
||||||
|
u16 xfbWidth, xfbHeight;
|
||||||
bool progressive;
|
bool progressive;
|
||||||
unsigned modetype, level, viHeightMultiplier, viWidth, tvmode,
|
unsigned modetype, level, viHeightMultiplier, viWidth, tvmode,
|
||||||
max_width, max_height, i;
|
max_width, max_height, i;
|
||||||
|
@ -248,6 +250,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
viWidth = settings->video.viwidth;
|
viWidth = settings->video.viwidth;
|
||||||
#if defined(HW_RVL)
|
#if defined(HW_RVL)
|
||||||
progressive = CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable();
|
progressive = CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable();
|
||||||
|
|
||||||
switch (CONF_GetVideo())
|
switch (CONF_GetVideo())
|
||||||
{
|
{
|
||||||
case CONF_VIDEO_PAL:
|
case CONF_VIDEO_PAL:
|
||||||
|
@ -267,6 +270,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
progressive = VIDEO_HaveComponentCable();
|
progressive = VIDEO_HaveComponentCable();
|
||||||
tvmode = VIDEO_GetCurrentTvMode();
|
tvmode = VIDEO_GetCurrentTvMode();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (tvmode)
|
switch (tvmode)
|
||||||
{
|
{
|
||||||
case VI_PAL:
|
case VI_PAL:
|
||||||
|
@ -369,13 +373,13 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
VISetBlack(false);
|
VISetBlack(false);
|
||||||
VIFlush();
|
VIFlush();
|
||||||
|
|
||||||
|
|
||||||
GX_SetViewportJitter(0, 0, gx_mode.fbWidth, gx_mode.efbHeight, 0, 1, 1);
|
GX_SetViewportJitter(0, 0, gx_mode.fbWidth, gx_mode.efbHeight, 0, 1, 1);
|
||||||
GX_SetDispCopySrc(0, 0, gx_mode.fbWidth, gx_mode.efbHeight);
|
GX_SetDispCopySrc(0, 0, gx_mode.fbWidth, gx_mode.efbHeight);
|
||||||
|
|
||||||
f32 y_scale = GX_GetYScaleFactor(gx_mode.efbHeight, gx_mode.xfbHeight);
|
y_scale = GX_GetYScaleFactor(gx_mode.efbHeight, gx_mode.xfbHeight);
|
||||||
u16 xfbWidth = VIPadFrameBufferWidth(gx_mode.fbWidth);
|
xfbWidth = VIPadFrameBufferWidth(gx_mode.fbWidth);
|
||||||
u16 xfbHeight = GX_SetDispCopyYScale(y_scale);
|
xfbHeight = GX_SetDispCopyYScale(y_scale);
|
||||||
(void)xfbHeight;
|
|
||||||
GX_SetDispCopyDst(xfbWidth, xfbHeight);
|
GX_SetDispCopyDst(xfbWidth, xfbHeight);
|
||||||
|
|
||||||
GX_SetCopyFilter(gx_mode.aa, gx_mode.sample_pattern,
|
GX_SetCopyFilter(gx_mode.aa, gx_mode.sample_pattern,
|
||||||
|
@ -400,8 +404,6 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
unsigned new_fb_height = (gx_mode.efbHeight / (gx->double_strike ? 1 : 2)) & ~3;
|
unsigned new_fb_height = (gx_mode.efbHeight / (gx->double_strike ? 1 : 2)) & ~3;
|
||||||
if (new_fb_height > 240)
|
if (new_fb_height > 240)
|
||||||
new_fb_height = 240;
|
new_fb_height = 240;
|
||||||
|
|
||||||
|
|
||||||
new_fb_width = (gx_mode.fbWidth / (gx_mode.fbWidth < 400 ? 1 : 2)) & ~3;
|
new_fb_width = (gx_mode.fbWidth / (gx_mode.fbWidth < 400 ? 1 : 2)) & ~3;
|
||||||
if (new_fb_width > 400)
|
if (new_fb_width > 400)
|
||||||
new_fb_width = 400;
|
new_fb_width = 400;
|
||||||
|
@ -432,7 +434,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
video_viewport_reset_custom();
|
video_viewport_reset_custom();
|
||||||
|
|
||||||
g_current_framebuf = 0;
|
g_current_framebuf = 0;
|
||||||
for( int i=0; i < GX_RESOLUTIONS_LAST; i++)
|
for(i = 0; i < GX_RESOLUTIONS_LAST; i++)
|
||||||
if(fbWidth == menu_gx_resolutions[i][0] && lines == menu_gx_resolutions[i][1])
|
if(fbWidth == menu_gx_resolutions[i][0] && lines == menu_gx_resolutions[i][1])
|
||||||
menu_current_gx_resolution = i;
|
menu_current_gx_resolution = i;
|
||||||
RARCH_LOG("GX Resolution Index: %d\n", menu_current_gx_resolution);
|
RARCH_LOG("GX Resolution Index: %d\n", menu_current_gx_resolution);
|
||||||
|
@ -518,6 +520,7 @@ static void init_texture(void *data, unsigned width, unsigned height)
|
||||||
|
|
||||||
static void init_vtx(void *data, const video_info_t *video)
|
static void init_vtx(void *data, const video_info_t *video)
|
||||||
{
|
{
|
||||||
|
Mtx44 m;
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
|
|
||||||
GX_SetCullMode(GX_CULL_NONE);
|
GX_SetCullMode(GX_CULL_NONE);
|
||||||
|
@ -527,7 +530,6 @@ static void init_vtx(void *data, const video_info_t *video)
|
||||||
GX_SetColorUpdate(GX_TRUE);
|
GX_SetColorUpdate(GX_TRUE);
|
||||||
GX_SetAlphaUpdate(GX_FALSE);
|
GX_SetAlphaUpdate(GX_FALSE);
|
||||||
|
|
||||||
Mtx44 m;
|
|
||||||
guOrtho(m, 1, -1, -1, 1, 0.4, 0.6);
|
guOrtho(m, 1, -1, -1, 1, 0.4, 0.6);
|
||||||
GX_LoadProjectionMtx(m, GX_ORTHOGRAPHIC);
|
GX_LoadProjectionMtx(m, GX_ORTHOGRAPHIC);
|
||||||
|
|
||||||
|
@ -554,8 +556,7 @@ static void init_vtx(void *data, const video_info_t *video)
|
||||||
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA,
|
GX_SetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA,
|
||||||
GX_BL_INVSRCALPHA, GX_LO_CLEAR);
|
GX_BL_INVSRCALPHA, GX_LO_CLEAR);
|
||||||
|
|
||||||
if (gx->scale != video->input_scale ||
|
if (gx->scale != video->input_scale || gx->rgb32 != video->rgb32)
|
||||||
gx->rgb32 != video->rgb32)
|
|
||||||
{
|
{
|
||||||
RARCH_LOG("[GX] reallocate texture\n");
|
RARCH_LOG("[GX] reallocate texture\n");
|
||||||
free(g_tex.data);
|
free(g_tex.data);
|
||||||
|
@ -584,10 +585,13 @@ static void init_vtx(void *data, const video_info_t *video)
|
||||||
|
|
||||||
static void build_disp_list(void)
|
static void build_disp_list(void)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
DCInvalidateRange(display_list, sizeof(display_list));
|
DCInvalidateRange(display_list, sizeof(display_list));
|
||||||
GX_BeginDispList(display_list, sizeof(display_list));
|
GX_BeginDispList(display_list, sizeof(display_list));
|
||||||
GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
|
GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
|
||||||
for (unsigned i = 0; i < 4; i++)
|
|
||||||
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
GX_Position1x8(i);
|
GX_Position1x8(i);
|
||||||
GX_Color1x8(i);
|
GX_Color1x8(i);
|
||||||
|
@ -639,11 +643,12 @@ static void gx_efb_screenshot(void)
|
||||||
static void *gx_init(const video_info_t *video,
|
static void *gx_init(const video_info_t *video,
|
||||||
const input_driver_t **input, void **input_data)
|
const input_driver_t **input, void **input_data)
|
||||||
{
|
{
|
||||||
|
void *gxinput = NULL;
|
||||||
gx_video_t *gx = (gx_video_t*)calloc(1, sizeof(gx_video_t));
|
gx_video_t *gx = (gx_video_t*)calloc(1, sizeof(gx_video_t));
|
||||||
if (!gx)
|
if (!gx)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
void *gxinput = input_gx.init();
|
gxinput = input_gx.init();
|
||||||
*input = gxinput ? &input_gx : NULL;
|
*input = gxinput ? &input_gx : NULL;
|
||||||
*input_data = gxinput;
|
*input_data = gxinput;
|
||||||
|
|
||||||
|
@ -802,13 +807,14 @@ static void convert_texture16_conv(const uint32_t *_src, uint32_t *_dst,
|
||||||
unsigned width, unsigned height, unsigned pitch)
|
unsigned width, unsigned height, unsigned pitch)
|
||||||
{
|
{
|
||||||
unsigned i, tmp_pitch, width2;
|
unsigned i, tmp_pitch, width2;
|
||||||
|
const uint32_t *src = (const uint32_t*)_src;
|
||||||
|
uint32_t *dst = (uint32_t*)_dst;
|
||||||
|
|
||||||
width &= ~3;
|
width &= ~3;
|
||||||
height &= ~3;
|
height &= ~3;
|
||||||
tmp_pitch = pitch >> 2;
|
tmp_pitch = pitch >> 2;
|
||||||
width2 = width >> 1;
|
width2 = width >> 1;
|
||||||
|
|
||||||
const uint32_t *src = (const uint32_t*)_src;
|
|
||||||
uint32_t *dst = (uint32_t*)_dst;
|
|
||||||
for (i = 0; i < height; i += 4, dst += 4 * width2)
|
for (i = 0; i < height; i += 4, dst += 4 * width2)
|
||||||
{
|
{
|
||||||
#define BLIT_LINE_16_CONV(x) (0x80008000 | (((x) & 0xFFC0FFC0) >> 1) | ((x) & 0x001F001F))
|
#define BLIT_LINE_16_CONV(x) (0x80008000 | (((x) & 0xFFC0FFC0) >> 1) | ((x) & 0x001F001F))
|
||||||
|
@ -824,13 +830,14 @@ static void convert_texture32(const uint32_t *_src, uint32_t *_dst,
|
||||||
unsigned width, unsigned height, unsigned pitch)
|
unsigned width, unsigned height, unsigned pitch)
|
||||||
{
|
{
|
||||||
unsigned i, tmp_pitch, width2;
|
unsigned i, tmp_pitch, width2;
|
||||||
|
const uint16_t *src = (uint16_t *) _src;
|
||||||
|
uint16_t *dst = (uint16_t *) _dst;
|
||||||
|
|
||||||
width &= ~3;
|
width &= ~3;
|
||||||
height &= ~3;
|
height &= ~3;
|
||||||
tmp_pitch = pitch >> 1;
|
tmp_pitch = pitch >> 1;
|
||||||
width2 = width << 1;
|
width2 = width << 1;
|
||||||
|
|
||||||
const uint16_t *src = (uint16_t *) _src;
|
|
||||||
uint16_t *dst = (uint16_t *) _dst;
|
|
||||||
for (i = 0; i < height; i += 4, dst += 4 * width2)
|
for (i = 0; i < height; i += 4, dst += 4 * width2)
|
||||||
{
|
{
|
||||||
BLIT_LINE_32(0)
|
BLIT_LINE_32(0)
|
||||||
|
@ -842,7 +849,10 @@ static void convert_texture32(const uint32_t *_src, uint32_t *_dst,
|
||||||
|
|
||||||
static void gx_resize(void *data)
|
static void gx_resize(void *data)
|
||||||
{
|
{
|
||||||
|
unsigned degrees;
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
|
Mtx44 m1, m2;
|
||||||
|
float top = 1, bottom = -1, left = -1, right = 1;
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
@ -922,13 +932,9 @@ static void gx_resize(void *data)
|
||||||
|
|
||||||
GX_SetViewportJitter(x, y, width, height, 0, 1, 1);
|
GX_SetViewportJitter(x, y, width, height, 0, 1, 1);
|
||||||
|
|
||||||
Mtx44 m1, m2;
|
|
||||||
float top = 1, bottom = -1, left = -1, right = 1;
|
|
||||||
|
|
||||||
guOrtho(m1, top, bottom, left, right, 0, 1);
|
guOrtho(m1, top, bottom, left, right, 0, 1);
|
||||||
GX_LoadPosMtxImm(m1, GX_PNMTX1);
|
GX_LoadPosMtxImm(m1, GX_PNMTX1);
|
||||||
|
|
||||||
unsigned degrees;
|
|
||||||
switch(g_orientation)
|
switch(g_orientation)
|
||||||
{
|
{
|
||||||
case ORIENTATION_VERTICAL:
|
case ORIENTATION_VERTICAL:
|
||||||
|
@ -956,6 +962,8 @@ static void gx_resize(void *data)
|
||||||
|
|
||||||
static void gx_blit_line(unsigned x, unsigned y, const char *message)
|
static void gx_blit_line(unsigned x, unsigned y, const char *message)
|
||||||
{
|
{
|
||||||
|
unsigned width, height, h;
|
||||||
|
bool double_width = false;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
gx_video_t *gx = (gx_video_t*)driver->video_data;
|
gx_video_t *gx = (gx_video_t*)driver->video_data;
|
||||||
|
|
||||||
|
@ -972,14 +980,13 @@ static void gx_blit_line(unsigned x, unsigned y, const char *message)
|
||||||
.a = 0xff
|
.a = 0xff
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned h;
|
|
||||||
|
|
||||||
if (!*message)
|
if (!*message)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool double_width = gx_mode.fbWidth > 400;
|
double_width = gx_mode.fbWidth > 400;
|
||||||
unsigned width = (double_width ? 2 : 1);
|
width = (double_width ? 2 : 1);
|
||||||
unsigned height = FONT_HEIGHT * (gx->double_strike ? 1 : 2);
|
height = FONT_HEIGHT * (gx->double_strike ? 1 : 2);
|
||||||
|
|
||||||
for (h = 0; h < height; h++)
|
for (h = 0; h < height; h++)
|
||||||
{
|
{
|
||||||
GX_PokeARGB(x, y + h, b);
|
GX_PokeARGB(x, y + h, b);
|
||||||
|
@ -993,19 +1000,18 @@ static void gx_blit_line(unsigned x, unsigned y, const char *message)
|
||||||
|
|
||||||
while (*message)
|
while (*message)
|
||||||
{
|
{
|
||||||
for (unsigned j = 0; j < FONT_HEIGHT; j++)
|
unsigned i, j;
|
||||||
|
for (j = 0; j < FONT_HEIGHT; j++)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < FONT_WIDTH; i++)
|
for (i = 0; i < FONT_WIDTH; i++)
|
||||||
{
|
{
|
||||||
GXColor c;
|
|
||||||
uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7);
|
uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7);
|
||||||
unsigned offset = (i + j * FONT_WIDTH) >> 3;
|
unsigned offset = (i + j * FONT_WIDTH) >> 3;
|
||||||
bool col = (bitmap_bin[FONT_OFFSET((unsigned char)*message) + offset] & rem);
|
bool col = (bitmap_bin[FONT_OFFSET((unsigned char)*message) + offset] & rem);
|
||||||
|
GXColor c = b;
|
||||||
|
|
||||||
if (col)
|
if (col)
|
||||||
c = w;
|
c = w;
|
||||||
else
|
|
||||||
c = b;
|
|
||||||
|
|
||||||
if (!gx->double_strike)
|
if (!gx->double_strike)
|
||||||
{
|
{
|
||||||
|
@ -1028,7 +1034,7 @@ static void gx_blit_line(unsigned x, unsigned y, const char *message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned h = 0; h < height; h++)
|
for (h = 0; h < height; h++)
|
||||||
{
|
{
|
||||||
GX_PokeARGB(x + (FONT_WIDTH * width), y + h, b);
|
GX_PokeARGB(x + (FONT_WIDTH * width), y + h, b);
|
||||||
if (double_width)
|
if (double_width)
|
||||||
|
@ -1174,6 +1180,7 @@ static bool gx_frame(void *data, const void *frame,
|
||||||
{
|
{
|
||||||
unsigned x = 7 * (gx->double_strike ? 1 : 2);
|
unsigned x = 7 * (gx->double_strike ? 1 : 2);
|
||||||
unsigned y = gx->vp.full_height - (35 * (gx->double_strike ? 1 : 2));
|
unsigned y = gx->vp.full_height - (35 * (gx->double_strike ? 1 : 2));
|
||||||
|
|
||||||
gx_blit_line(x, y, msg);
|
gx_blit_line(x, y, msg);
|
||||||
clear_efb = GX_TRUE;
|
clear_efb = GX_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1268,14 +1275,14 @@ static void gx_set_texture_enable(void *data, bool enable, bool full_screen)
|
||||||
|
|
||||||
(void)full_screen;
|
(void)full_screen;
|
||||||
|
|
||||||
if (gx)
|
if (!gx)
|
||||||
{
|
return;
|
||||||
|
|
||||||
gx->menu_texture_enable = enable;
|
gx->menu_texture_enable = enable;
|
||||||
/* need to make sure the game texture is the right pixel
|
/* need to make sure the game texture is the right pixel
|
||||||
* format for menu overlay. */
|
* format for menu overlay. */
|
||||||
gx->should_resize = true;
|
gx->should_resize = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void gx_apply_state_changes(void *data)
|
static void gx_apply_state_changes(void *data)
|
||||||
{
|
{
|
||||||
|
@ -1366,6 +1373,7 @@ static bool gx_overlay_load(void *data, const void *image_data, unsigned num_ima
|
||||||
for (i = 0; i < num_images; i++)
|
for (i = 0; i < num_images; i++)
|
||||||
{
|
{
|
||||||
struct gx_overlay_data *o = (struct gx_overlay_data*)&gx->overlay[i];
|
struct gx_overlay_data *o = (struct gx_overlay_data*)&gx->overlay[i];
|
||||||
|
|
||||||
GX_InitTexObj(&o->tex, images[i].pixels, images[i].width,
|
GX_InitTexObj(&o->tex, images[i].pixels, images[i].width,
|
||||||
images[i].height,
|
images[i].height,
|
||||||
GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
|
||||||
|
@ -1385,15 +1393,14 @@ static void gx_overlay_tex_geom(void *data, unsigned image,
|
||||||
float x, float y, float w, float h)
|
float x, float y, float w, float h)
|
||||||
{
|
{
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
struct gx_overlay_data *o;
|
struct gx_overlay_data *o = NULL;
|
||||||
|
|
||||||
o = NULL;
|
|
||||||
|
|
||||||
if (gx)
|
if (gx)
|
||||||
o = (struct gx_overlay_data*)&gx->overlay[image];
|
o = (struct gx_overlay_data*)&gx->overlay[image];
|
||||||
|
|
||||||
if (o)
|
if (!o)
|
||||||
{
|
return;
|
||||||
|
|
||||||
o->tex_coord[0] = x;
|
o->tex_coord[0] = x;
|
||||||
o->tex_coord[1] = y;
|
o->tex_coord[1] = y;
|
||||||
o->tex_coord[2] = x + w;
|
o->tex_coord[2] = x + w;
|
||||||
|
@ -1403,15 +1410,12 @@ static void gx_overlay_tex_geom(void *data, unsigned image,
|
||||||
o->tex_coord[6] = x + w;
|
o->tex_coord[6] = x + w;
|
||||||
o->tex_coord[7] = y + h;
|
o->tex_coord[7] = y + h;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void gx_overlay_vertex_geom(void *data, unsigned image,
|
static void gx_overlay_vertex_geom(void *data, unsigned image,
|
||||||
float x, float y, float w, float h)
|
float x, float y, float w, float h)
|
||||||
{
|
{
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
struct gx_overlay_data *o;
|
struct gx_overlay_data *o = NULL;
|
||||||
|
|
||||||
o = NULL;
|
|
||||||
|
|
||||||
/* Flipped, so we preserve top-down semantics. */
|
/* Flipped, so we preserve top-down semantics. */
|
||||||
y = 1.0f - y;
|
y = 1.0f - y;
|
||||||
|
@ -1426,8 +1430,9 @@ static void gx_overlay_vertex_geom(void *data, unsigned image,
|
||||||
if (gx)
|
if (gx)
|
||||||
o = (struct gx_overlay_data*)&gx->overlay[image];
|
o = (struct gx_overlay_data*)&gx->overlay[image];
|
||||||
|
|
||||||
if (o)
|
if (!o)
|
||||||
{
|
return;
|
||||||
|
|
||||||
o->vertex_coord[0] = x;
|
o->vertex_coord[0] = x;
|
||||||
o->vertex_coord[1] = y;
|
o->vertex_coord[1] = y;
|
||||||
o->vertex_coord[2] = x + w;
|
o->vertex_coord[2] = x + w;
|
||||||
|
@ -1437,7 +1442,6 @@ static void gx_overlay_vertex_geom(void *data, unsigned image,
|
||||||
o->vertex_coord[6] = x + w;
|
o->vertex_coord[6] = x + w;
|
||||||
o->vertex_coord[7] = y + h;
|
o->vertex_coord[7] = y + h;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void gx_overlay_enable(void *data, bool state)
|
static void gx_overlay_enable(void *data, bool state)
|
||||||
{
|
{
|
||||||
|
@ -1454,11 +1458,14 @@ static void gx_overlay_full_screen(void *data, bool enable)
|
||||||
static void gx_overlay_set_alpha(void *data, unsigned image, float mod)
|
static void gx_overlay_set_alpha(void *data, unsigned image, float mod)
|
||||||
{
|
{
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
|
|
||||||
|
if (gx)
|
||||||
gx->overlay[image].alpha_mod = mod;
|
gx->overlay[image].alpha_mod = mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gx_render_overlay(void *data)
|
static void gx_render_overlay(void *data)
|
||||||
{
|
{
|
||||||
|
unsigned i;
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
|
|
||||||
GX_SetCurrentMtx(GX_PNMTX1);
|
GX_SetCurrentMtx(GX_PNMTX1);
|
||||||
|
@ -1466,7 +1473,7 @@ static void gx_render_overlay(void *data)
|
||||||
GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);
|
||||||
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
|
GX_SetVtxDesc(GX_VA_CLR0, GX_DIRECT);
|
||||||
|
|
||||||
for (unsigned i = 0; i < gx->overlays; i++)
|
for (i = 0; i < gx->overlays; i++)
|
||||||
{
|
{
|
||||||
GX_LoadTexObj(&gx->overlay[i].tex, GX_TEXMAP0);
|
GX_LoadTexObj(&gx->overlay[i].tex, GX_TEXMAP0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue