mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
(GL1) Move static global variables into struct
This commit is contained in:
parent
b1337d0a21
commit
daea169e5d
@ -55,46 +55,68 @@ struct string_list;
|
||||
|
||||
typedef struct gl1
|
||||
{
|
||||
unsigned video_width;
|
||||
unsigned video_height;
|
||||
unsigned screen_width;
|
||||
unsigned screen_height;
|
||||
int version_major;
|
||||
int version_minor;
|
||||
void *ctx_data;
|
||||
const gfx_ctx_driver_t *ctx_driver;
|
||||
GLuint tex;
|
||||
GLuint menu_tex;
|
||||
struct string_list *extensions;
|
||||
bool fullscreen;
|
||||
bool menu_rgb32;
|
||||
bool menu_size_changed;
|
||||
bool rgb32;
|
||||
bool supports_bgra;
|
||||
struct video_viewport vp;
|
||||
bool keep_aspect;
|
||||
unsigned vp_out_width;
|
||||
unsigned vp_out_height;
|
||||
bool should_resize;
|
||||
struct video_coords coords;
|
||||
GLuint texture[GFX_MAX_TEXTURES];
|
||||
unsigned tex_index; /* For use with PREV. */
|
||||
unsigned textures;
|
||||
math_matrix_4x4 mvp, mvp_no_rot;
|
||||
struct video_tex_info tex_info;
|
||||
const float *vertex_ptr;
|
||||
const float *white_color_ptr;
|
||||
unsigned rotation;
|
||||
bool menu_texture_enable;
|
||||
bool menu_texture_full_screen;
|
||||
bool have_sync;
|
||||
bool smooth;
|
||||
bool menu_smooth;
|
||||
void *readback_buffer_screenshot;
|
||||
bool overlay_enable;
|
||||
bool overlay_full_screen;
|
||||
GLuint *overlay_tex;
|
||||
bool shared_context_use;
|
||||
|
||||
/* Only used for Vita */
|
||||
bool vgl_inited;
|
||||
|
||||
int version_major;
|
||||
int version_minor;
|
||||
|
||||
|
||||
unsigned video_width;
|
||||
unsigned video_height;
|
||||
unsigned video_pitch;
|
||||
unsigned screen_width;
|
||||
unsigned screen_height;
|
||||
unsigned menu_width;
|
||||
unsigned menu_height;
|
||||
unsigned menu_pitch;
|
||||
unsigned video_bits;
|
||||
unsigned menu_bits;
|
||||
unsigned vp_out_width;
|
||||
unsigned vp_out_height;
|
||||
unsigned tex_index; /* For use with PREV. */
|
||||
unsigned textures;
|
||||
unsigned rotation;
|
||||
unsigned overlays;
|
||||
|
||||
GLuint tex;
|
||||
GLuint menu_tex;
|
||||
|
||||
struct video_viewport vp;
|
||||
struct video_coords coords;
|
||||
math_matrix_4x4 mvp, mvp_no_rot;
|
||||
|
||||
void *ctx_data;
|
||||
const gfx_ctx_driver_t *ctx_driver;
|
||||
struct string_list *extensions;
|
||||
struct video_tex_info tex_info;
|
||||
void *readback_buffer_screenshot;
|
||||
GLuint *overlay_tex;
|
||||
float *overlay_vertex_coord;
|
||||
float *overlay_tex_coord;
|
||||
float *overlay_color_coord;
|
||||
bool fullscreen;
|
||||
const float *vertex_ptr;
|
||||
const float *white_color_ptr;
|
||||
unsigned char *menu_frame;
|
||||
unsigned char *video_buf;
|
||||
unsigned char *menu_video_buf;
|
||||
GLuint texture[GFX_MAX_TEXTURES];
|
||||
} gl1_t;
|
||||
|
||||
static INLINE void gl1_bind_texture(GLuint id, GLint wrap_mode, GLint mag_filter,
|
||||
|
@ -56,27 +56,6 @@
|
||||
#include "../video_thread_wrapper.h"
|
||||
#endif
|
||||
|
||||
#ifdef VITA
|
||||
static bool vgl_inited = false;
|
||||
#endif
|
||||
|
||||
static unsigned char *gl1_menu_frame = NULL;
|
||||
static unsigned gl1_menu_width = 0;
|
||||
static unsigned gl1_menu_height = 0;
|
||||
static unsigned gl1_menu_pitch = 0;
|
||||
static unsigned gl1_video_width = 0;
|
||||
static unsigned gl1_video_height = 0;
|
||||
static unsigned gl1_video_pitch = 0;
|
||||
static unsigned gl1_video_bits = 0;
|
||||
static unsigned gl1_menu_bits = 0;
|
||||
static bool gl1_rgb32 = false;
|
||||
static bool gl1_menu_rgb32 = false;
|
||||
static bool gl1_menu_size_changed = false;
|
||||
static unsigned char *gl1_video_buf = NULL;
|
||||
static unsigned char *gl1_menu_video_buf = NULL;
|
||||
|
||||
static bool gl1_shared_context_use = false;
|
||||
|
||||
static struct video_ortho gl1_default_ortho = {0, 1, 0, 1, -1, 1};
|
||||
|
||||
/* Used for the last pass when rendering to the back buffer. */
|
||||
@ -109,7 +88,7 @@ static const GLfloat gl1_white_color[] = {
|
||||
};
|
||||
|
||||
#define gl1_context_bind_hw_render(gl1, enable) \
|
||||
if (gl1_shared_context_use) \
|
||||
if (gl1->shared_context_use) \
|
||||
gl1->ctx_driver->bind_hw_render(gl1->ctx_data, enable)
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
@ -259,16 +238,16 @@ static void *gl1_gfx_init(const video_info_t *video,
|
||||
*input = NULL;
|
||||
*input_data = NULL;
|
||||
|
||||
gl1_video_width = video->width;
|
||||
gl1_video_height = video->height;
|
||||
gl1_rgb32 = video->rgb32;
|
||||
gl1->video_width = video->width;
|
||||
gl1->video_height = video->height;
|
||||
gl1->rgb32 = video->rgb32;
|
||||
|
||||
gl1_video_bits = video->rgb32 ? 32 : 16;
|
||||
gl1->video_bits = video->rgb32 ? 32 : 16;
|
||||
|
||||
if (video->rgb32)
|
||||
gl1_video_pitch = video->width * 4;
|
||||
gl1->video_pitch = video->width * 4;
|
||||
else
|
||||
gl1_video_pitch = video->width * 2;
|
||||
gl1->video_pitch = video->width * 2;
|
||||
|
||||
ctx_driver = video_context_driver_init_first(gl1,
|
||||
video_context_driver,
|
||||
@ -293,12 +272,12 @@ static void *gl1_gfx_init(const video_info_t *video,
|
||||
mode.width = 0;
|
||||
mode.height = 0;
|
||||
#ifdef VITA
|
||||
if (!vgl_inited)
|
||||
if (!gl1->vgl_inited)
|
||||
{
|
||||
vglInitExtended(0x1400000, full_x, full_y, 0x100000, SCE_GXM_MULTISAMPLE_4X);
|
||||
vglUseVram(GL_TRUE);
|
||||
vglStartRendering();
|
||||
vgl_inited = true;
|
||||
gl1->vgl_inited = true;
|
||||
}
|
||||
#endif
|
||||
/* Clear out potential error flags in case we use cached context. */
|
||||
@ -710,9 +689,9 @@ static bool gl1_gfx_frame(void *data, const void *frame,
|
||||
const void *frame_to_copy = NULL;
|
||||
unsigned width = 0;
|
||||
unsigned height = 0;
|
||||
unsigned bits = gl1_video_bits;
|
||||
bool draw = true;
|
||||
gl1_t *gl1 = (gl1_t*)data;
|
||||
unsigned bits = gl1->video_bits;
|
||||
unsigned pot_width = 0;
|
||||
unsigned pot_height = 0;
|
||||
|
||||
@ -747,29 +726,29 @@ static bool gl1_gfx_frame(void *data, const void *frame,
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
if ( gl1_video_width != frame_width ||
|
||||
gl1_video_height != frame_height ||
|
||||
gl1_video_pitch != pitch)
|
||||
if ( gl1->video_width != frame_width ||
|
||||
gl1->video_height != frame_height ||
|
||||
gl1->video_pitch != pitch)
|
||||
{
|
||||
if (frame_width > 4 && frame_height > 4)
|
||||
{
|
||||
gl1_video_width = frame_width;
|
||||
gl1_video_height = frame_height;
|
||||
gl1_video_pitch = pitch;
|
||||
gl1->video_width = frame_width;
|
||||
gl1->video_height = frame_height;
|
||||
gl1->video_pitch = pitch;
|
||||
|
||||
pot_width = get_pot(frame_width);
|
||||
pot_height = get_pot(frame_height);
|
||||
|
||||
if (gl1_video_buf)
|
||||
free(gl1_video_buf);
|
||||
if (gl1->video_buf)
|
||||
free(gl1->video_buf);
|
||||
|
||||
gl1_video_buf = (unsigned char*)malloc(pot_width * pot_height * 4);
|
||||
gl1->video_buf = (unsigned char*)malloc(pot_width * pot_height * 4);
|
||||
}
|
||||
}
|
||||
|
||||
width = gl1_video_width;
|
||||
height = gl1_video_height;
|
||||
pitch = gl1_video_pitch;
|
||||
width = gl1->video_width;
|
||||
height = gl1->video_height;
|
||||
pitch = gl1->video_pitch;
|
||||
|
||||
pot_width = get_pot(width);
|
||||
pot_height = get_pot(height);
|
||||
@ -780,19 +759,19 @@ static bool gl1_gfx_frame(void *data, const void *frame,
|
||||
)
|
||||
draw = false;
|
||||
|
||||
if (draw && gl1_video_buf)
|
||||
if (draw && gl1->video_buf)
|
||||
{
|
||||
if (bits == 32)
|
||||
{
|
||||
unsigned y;
|
||||
/* copy lines into top-left portion of larger (power-of-two) buffer */
|
||||
for (y = 0; y < height; y++)
|
||||
memcpy(gl1_video_buf + ((pot_width * (bits / 8)) * y), (const unsigned char*)frame + (pitch * y), width * (bits / 8));
|
||||
memcpy(gl1->video_buf + ((pot_width * (bits / 8)) * y), (const unsigned char*)frame + (pitch * y), width * (bits / 8));
|
||||
}
|
||||
else if (bits == 16)
|
||||
conv_rgb565_argb8888(gl1_video_buf, frame, width, height, pot_width * sizeof(unsigned), pitch);
|
||||
conv_rgb565_argb8888(gl1->video_buf, frame, width, height, pot_width * sizeof(unsigned), pitch);
|
||||
|
||||
frame_to_copy = gl1_video_buf;
|
||||
frame_to_copy = gl1->video_buf;
|
||||
}
|
||||
|
||||
if (gl1->video_width != width || gl1->video_height != height)
|
||||
@ -814,36 +793,34 @@ static bool gl1_gfx_frame(void *data, const void *frame,
|
||||
}
|
||||
}
|
||||
|
||||
if (gl1_menu_frame && video_info->menu_is_alive)
|
||||
if (gl1->menu_frame && video_info->menu_is_alive)
|
||||
{
|
||||
frame_to_copy = NULL;
|
||||
width = gl1_menu_width;
|
||||
height = gl1_menu_height;
|
||||
pitch = gl1_menu_pitch;
|
||||
bits = gl1_menu_bits;
|
||||
width = gl1->menu_width;
|
||||
height = gl1->menu_height;
|
||||
pitch = gl1->menu_pitch;
|
||||
bits = gl1->menu_bits;
|
||||
|
||||
pot_width = get_pot(width);
|
||||
pot_height = get_pot(height);
|
||||
|
||||
if (gl1_menu_size_changed)
|
||||
if (gl1->menu_size_changed)
|
||||
{
|
||||
gl1_menu_size_changed = false;
|
||||
gl1->menu_size_changed = false;
|
||||
|
||||
if (gl1_menu_video_buf)
|
||||
{
|
||||
free(gl1_menu_video_buf);
|
||||
gl1_menu_video_buf = NULL;
|
||||
}
|
||||
if (gl1->menu_video_buf)
|
||||
free(gl1->menu_video_buf);
|
||||
gl1->menu_video_buf = NULL;
|
||||
}
|
||||
|
||||
if (!gl1_menu_video_buf)
|
||||
gl1_menu_video_buf = (unsigned char*)malloc(pot_width * pot_height * 4);
|
||||
if (!gl1->menu_video_buf)
|
||||
gl1->menu_video_buf = (unsigned char*)malloc(pot_width * pot_height * 4);
|
||||
|
||||
if (bits == 16 && gl1_menu_video_buf)
|
||||
if (bits == 16 && gl1->menu_video_buf)
|
||||
{
|
||||
conv_rgba4444_argb8888(gl1_menu_video_buf, gl1_menu_frame, width, height, pot_width * sizeof(unsigned), pitch);
|
||||
conv_rgba4444_argb8888(gl1->menu_video_buf, gl1->menu_frame, width, height, pot_width * sizeof(unsigned), pitch);
|
||||
|
||||
frame_to_copy = gl1_menu_video_buf;
|
||||
frame_to_copy = gl1->menu_video_buf;
|
||||
|
||||
if (gl1->menu_texture_full_screen)
|
||||
{
|
||||
@ -1000,29 +977,23 @@ static void gl1_gfx_free(void *data)
|
||||
{
|
||||
gl1_t *gl1 = (gl1_t*)data;
|
||||
|
||||
gl1_context_bind_hw_render(gl1, false);
|
||||
|
||||
if (gl1_menu_frame)
|
||||
{
|
||||
free(gl1_menu_frame);
|
||||
gl1_menu_frame = NULL;
|
||||
}
|
||||
|
||||
if (gl1_video_buf)
|
||||
{
|
||||
free(gl1_video_buf);
|
||||
gl1_video_buf = NULL;
|
||||
}
|
||||
|
||||
if (gl1_menu_video_buf)
|
||||
{
|
||||
free(gl1_menu_video_buf);
|
||||
gl1_menu_video_buf = NULL;
|
||||
}
|
||||
|
||||
if (!gl1)
|
||||
return;
|
||||
|
||||
gl1_context_bind_hw_render(gl1, false);
|
||||
|
||||
if (gl1->menu_frame)
|
||||
free(gl1->menu_frame);
|
||||
gl1->menu_frame = NULL;
|
||||
|
||||
if (gl1->video_buf)
|
||||
free(gl1->video_buf);
|
||||
gl1->video_buf = NULL;
|
||||
|
||||
if (gl1->menu_video_buf)
|
||||
free(gl1->menu_video_buf);
|
||||
gl1->menu_video_buf = NULL;
|
||||
|
||||
if (gl1->tex)
|
||||
{
|
||||
glDeleteTextures(1, &gl1->tex);
|
||||
@ -1040,10 +1011,8 @@ static void gl1_gfx_free(void *data)
|
||||
#endif
|
||||
|
||||
if (gl1->extensions)
|
||||
{
|
||||
string_list_free(gl1->extensions);
|
||||
gl1->extensions = NULL;
|
||||
}
|
||||
gl1->extensions = NULL;
|
||||
|
||||
font_driver_free_osd();
|
||||
video_context_driver_free();
|
||||
@ -1147,35 +1116,36 @@ static void gl1_set_texture_frame(void *data,
|
||||
if (rgb32)
|
||||
pitch = width * 4;
|
||||
|
||||
if (gl1_menu_frame)
|
||||
{
|
||||
free(gl1_menu_frame);
|
||||
gl1_menu_frame = NULL;
|
||||
}
|
||||
if (gl1->menu_frame)
|
||||
free(gl1->menu_frame);
|
||||
gl1->menu_frame = NULL;
|
||||
|
||||
if ( !gl1_menu_frame ||
|
||||
gl1_menu_width != width ||
|
||||
gl1_menu_height != height ||
|
||||
gl1_menu_pitch != pitch)
|
||||
if ( !gl1->menu_frame ||
|
||||
gl1->menu_width != width ||
|
||||
gl1->menu_height != height ||
|
||||
gl1->menu_pitch != pitch)
|
||||
{
|
||||
if (pitch && height)
|
||||
{
|
||||
if (gl1_menu_frame)
|
||||
free(gl1_menu_frame);
|
||||
if (gl1->menu_frame)
|
||||
free(gl1->menu_frame);
|
||||
|
||||
/* FIXME? We have to assume the pitch has no extra padding in it because that will mess up the POT calculation when we don't know how many bpp there are. */
|
||||
gl1_menu_frame = (unsigned char*)malloc(pitch * height);
|
||||
/* FIXME? We have to assume the pitch has no
|
||||
* extra padding in it because that will
|
||||
* mess up the POT calculation when we don't
|
||||
* know how many bpp there are. */
|
||||
gl1->menu_frame = (unsigned char*)malloc(pitch * height);
|
||||
}
|
||||
}
|
||||
|
||||
if (gl1_menu_frame && frame && pitch && height)
|
||||
if (gl1->menu_frame && frame && pitch && height)
|
||||
{
|
||||
memcpy(gl1_menu_frame, frame, pitch * height);
|
||||
gl1_menu_width = width;
|
||||
gl1_menu_height = height;
|
||||
gl1_menu_pitch = pitch;
|
||||
gl1_menu_bits = rgb32 ? 32 : 16;
|
||||
gl1_menu_size_changed = true;
|
||||
memcpy(gl1->menu_frame, frame, pitch * height);
|
||||
gl1->menu_width = width;
|
||||
gl1->menu_height = height;
|
||||
gl1->menu_pitch = pitch;
|
||||
gl1->menu_bits = rgb32 ? 32 : 16;
|
||||
gl1->menu_size_changed = true;
|
||||
}
|
||||
|
||||
gl1_context_bind_hw_render(gl1, true);
|
||||
@ -1426,11 +1396,6 @@ static void gl1_gfx_set_viewport_wrapper(void *data, unsigned viewport_width,
|
||||
viewport_width, viewport_height, force_full, allow_rotate);
|
||||
}
|
||||
|
||||
bool gl1_has_menu_frame(void)
|
||||
{
|
||||
return (gl1_menu_frame != NULL);
|
||||
}
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
static bool gl1_overlay_load(void *data,
|
||||
const void *image_data, unsigned num_images)
|
||||
|
Loading…
x
Reference in New Issue
Block a user