mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 06:44:27 +00:00
(vita2d_gfx.c) Cleanups
This commit is contained in:
parent
19d2649c61
commit
3a4963b474
@ -221,7 +221,8 @@ static bool vita2d_gfx_frame(void *data, const void *frame,
|
|||||||
menu_driver_frame(video_info);
|
menu_driver_frame(video_info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(vita->menu.texture){
|
if(vita->menu.texture)
|
||||||
|
{
|
||||||
if (vita->fullscreen)
|
if (vita->fullscreen)
|
||||||
vita2d_draw_texture_scale(vita->menu.texture,
|
vita2d_draw_texture_scale(vita->menu.texture,
|
||||||
0, 0,
|
0, 0,
|
||||||
@ -363,12 +364,13 @@ static void vita2d_gfx_update_viewport(vita_video_t* vita)
|
|||||||
else if (vita->keep_aspect)
|
else if (vita->keep_aspect)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
float desired_aspect = video_driver_get_aspect_ratio();
|
||||||
if (vita->rotation == ORIENTATION_VERTICAL ||
|
if ( (vita->rotation == ORIENTATION_VERTICAL ||)
|
||||||
vita->rotation == ORIENTATION_FLIPPED_ROTATED){
|
(vita->rotation == ORIENTATION_FLIPPED_ROTATED))
|
||||||
device_aspect = 1.0 / device_aspect;
|
{
|
||||||
width = PSP_FB_HEIGHT;
|
device_aspect = 1.0 / device_aspect;
|
||||||
height = PSP_FB_WIDTH;
|
width = PSP_FB_HEIGHT;
|
||||||
}
|
height = PSP_FB_WIDTH;
|
||||||
|
}
|
||||||
#if defined(HAVE_MENU)
|
#if defined(HAVE_MENU)
|
||||||
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
@ -409,11 +411,13 @@ static void vita2d_gfx_update_viewport(vita_video_t* vita)
|
|||||||
height = (unsigned)roundf(2.0f * height * delta);
|
height = (unsigned)roundf(2.0f * height * delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vita->rotation == ORIENTATION_VERTICAL ||
|
if ( (vita->rotation == ORIENTATION_VERTICAL) ||
|
||||||
vita->rotation == ORIENTATION_FLIPPED_ROTATED){
|
(vita->rotation == ORIENTATION_FLIPPED_ROTATED)
|
||||||
x = (PSP_FB_WIDTH - width) * 0.5f;
|
)
|
||||||
y = (PSP_FB_HEIGHT - height) * 0.5f;
|
{
|
||||||
}
|
x = (PSP_FB_WIDTH - width) * 0.5f;
|
||||||
|
y = (PSP_FB_HEIGHT - height) * 0.5f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vita->vp.x = x;
|
vita->vp.x = x;
|
||||||
@ -440,12 +444,12 @@ static void vita2d_gfx_set_viewport(void *data, unsigned viewport_width,
|
|||||||
{
|
{
|
||||||
gfx_ctx_aspect_t aspect_data;
|
gfx_ctx_aspect_t aspect_data;
|
||||||
unsigned width, height;
|
unsigned width, height;
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int y = 0;
|
int y = 0;
|
||||||
float device_aspect = (float)viewport_width / viewport_height;
|
float device_aspect = (float)viewport_width / viewport_height;
|
||||||
struct video_ortho ortho = {0, 1, 1, 0, -1, 1};
|
struct video_ortho ortho = {0, 1, 1, 0, -1, 1};
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
vita_video_t *vita = (vita_video_t*)data;
|
vita_video_t *vita = (vita_video_t*)data;
|
||||||
|
|
||||||
video_driver_get_size(&width, &height);
|
video_driver_get_size(&width, &height);
|
||||||
|
|
||||||
@ -528,15 +532,16 @@ static void vita2d_gfx_set_viewport(void *data, unsigned viewport_width,
|
|||||||
vita->vp.height = viewport_height;
|
vita->vp.height = viewport_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*vita->vp.x = (float)vita->vp.x;
|
#if 0
|
||||||
|
vita->vp.x = (float)vita->vp.x;
|
||||||
vita->vp.y = (float)vita->vp.y;
|
vita->vp.y = (float)vita->vp.y;
|
||||||
vita->vp.width = (float)vita->vp.width;
|
vita->vp.width = (float)vita->vp.width;
|
||||||
vita->vp.height = (float)vita->vp.height;
|
vita->vp.height = (float)vita->vp.height;
|
||||||
vita->vp.minDepth = 0.0f;
|
vita->vp.minDepth = 0.0f;
|
||||||
vita->vp.maxDepth = 1.0f;*/
|
vita->vp.maxDepth = 1.0f;
|
||||||
|
|
||||||
|
RARCH_LOG("Setting viewport @ %ux%u\n", viewport_width, viewport_height);
|
||||||
//RARCH_LOG("Setting viewport @ %ux%u\n", viewport_width, viewport_height);
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vita2d_gfx_set_rotation(void *data,
|
static void vita2d_gfx_set_rotation(void *data,
|
||||||
@ -574,8 +579,10 @@ static void vita_set_filtering(void *data, unsigned index, bool smooth)
|
|||||||
|
|
||||||
if (vita)
|
if (vita)
|
||||||
{
|
{
|
||||||
vita->tex_filter = smooth? SCE_GXM_TEXTURE_FILTER_LINEAR : SCE_GXM_TEXTURE_FILTER_POINT;
|
vita->tex_filter = smooth ?
|
||||||
vita2d_texture_set_filters(vita->texture,vita->tex_filter,vita->tex_filter);
|
SCE_GXM_TEXTURE_FILTER_LINEAR : SCE_GXM_TEXTURE_FILTER_POINT;
|
||||||
|
vita2d_texture_set_filters(vita->texture,vita->tex_filter,
|
||||||
|
vita->tex_filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,7 +608,9 @@ static void vita_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
video_driver_set_aspect_ratio_value(
|
||||||
|
aspectratio_lut[aspect_ratio_idx].value);
|
||||||
|
|
||||||
if (!vita)
|
if (!vita)
|
||||||
return;
|
return;
|
||||||
vita->keep_aspect = true;
|
vita->keep_aspect = true;
|
||||||
@ -637,18 +646,23 @@ static void vita_set_texture_frame(void *data, const void *frame, bool rgb32,
|
|||||||
if (rgb32)
|
if (rgb32)
|
||||||
{
|
{
|
||||||
vita->menu.texture = vita2d_create_empty_texture(width, height);
|
vita->menu.texture = vita2d_create_empty_texture(width, height);
|
||||||
RARCH_LOG("Creating Frame RGBA8 texture: w: %i h: %i\n", width, height);
|
RARCH_LOG("Creating Frame RGBA8 texture: w: %i h: %i\n",
|
||||||
|
width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vita->menu.texture = vita2d_create_empty_texture_format(width, height, SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA);
|
vita->menu.texture = vita2d_create_empty_texture_format(
|
||||||
RARCH_LOG("Creating Frame R5G6B5 texture: w: %i h: %i\n", width, height);
|
width, height, SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA);
|
||||||
|
RARCH_LOG("Creating Frame R5G6B5 texture: w: %i h: %i\n",
|
||||||
|
width, height);
|
||||||
}
|
}
|
||||||
vita->menu.width = width;
|
vita->menu.width = width;
|
||||||
vita->menu.height = height;
|
vita->menu.height = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
vita2d_texture_set_filters(vita->menu.texture,SCE_GXM_TEXTURE_FILTER_LINEAR,SCE_GXM_TEXTURE_FILTER_LINEAR);
|
vita2d_texture_set_filters(vita->menu.texture,
|
||||||
|
SCE_GXM_TEXTURE_FILTER_LINEAR,
|
||||||
|
SCE_GXM_TEXTURE_FILTER_LINEAR);
|
||||||
|
|
||||||
tex_p = vita2d_texture_get_datap(vita->menu.texture);
|
tex_p = vita2d_texture_get_datap(vita->menu.texture);
|
||||||
stride = vita2d_texture_get_stride(vita->menu.texture);
|
stride = vita2d_texture_get_stride(vita->menu.texture);
|
||||||
@ -689,30 +703,40 @@ static uintptr_t vita_load_texture(void *video_data, void *data,
|
|||||||
bool threaded, enum texture_filter_type filter_type)
|
bool threaded, enum texture_filter_type filter_type)
|
||||||
{
|
{
|
||||||
unsigned int stride, pitch, j;
|
unsigned int stride, pitch, j;
|
||||||
struct texture_image *image = (struct texture_image*)data;
|
uint32_t *tex32 = NULL;
|
||||||
|
const uint32_t *frame32 = NULL;
|
||||||
|
struct texture_image *image = (struct texture_image*)data;
|
||||||
struct vita2d_texture *texture = vita2d_create_empty_texture_format(image->width,
|
struct vita2d_texture *texture = vita2d_create_empty_texture_format(image->width,
|
||||||
image->height,SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB);
|
image->height,SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB);
|
||||||
|
|
||||||
if (!texture)
|
if (!texture)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(filter_type == TEXTURE_FILTER_MIPMAP_LINEAR ||
|
if ((filter_type == TEXTURE_FILTER_MIPMAP_LINEAR) ||
|
||||||
filter_type == TEXTURE_FILTER_LINEAR)
|
(filter_type == TEXTURE_FILTER_LINEAR))
|
||||||
vita2d_texture_set_filters(texture,SCE_GXM_TEXTURE_FILTER_LINEAR,SCE_GXM_TEXTURE_FILTER_LINEAR);
|
vita2d_texture_set_filters(texture,
|
||||||
|
SCE_GXM_TEXTURE_FILTER_LINEAR,
|
||||||
|
SCE_GXM_TEXTURE_FILTER_LINEAR);
|
||||||
|
|
||||||
stride = vita2d_texture_get_stride(texture);
|
stride = vita2d_texture_get_stride(texture);
|
||||||
stride /= 4;
|
stride /= 4;
|
||||||
uint32_t *tex32 = vita2d_texture_get_datap(texture);
|
|
||||||
const uint32_t *frame32 = image->pixels;
|
tex32 = vita2d_texture_get_datap(texture);
|
||||||
pitch = image->width;
|
frame32 = image->pixels;
|
||||||
|
pitch = image->width;
|
||||||
|
|
||||||
for (j = 0; j < image->height; j++)
|
for (j = 0; j < image->height; j++)
|
||||||
memcpy_neon(&tex32[j*stride],&frame32[j*pitch],pitch*sizeof(uint32_t));
|
memcpy_neon(
|
||||||
|
&tex32[j*stride],
|
||||||
|
&frame32[j*pitch],
|
||||||
|
pitch * sizeof(uint32_t));
|
||||||
|
|
||||||
return (uintptr_t)texture;
|
return (uintptr_t)texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vita_unload_texture(void *data, uintptr_t handle)
|
static void vita_unload_texture(void *data, uintptr_t handle)
|
||||||
{
|
{
|
||||||
struct vita2d_texture *texture = (struct vita2d_texture*)handle;
|
struct vita2d_texture *texture = (struct vita2d_texture*)handle;
|
||||||
if (!texture)
|
if (!texture)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -740,17 +764,19 @@ static bool vita_get_current_sw_framebuffer(void *data,
|
|||||||
if (!vita->texture || vita->width != framebuffer->width ||
|
if (!vita->texture || vita->width != framebuffer->width ||
|
||||||
vita->height != framebuffer->height)
|
vita->height != framebuffer->height)
|
||||||
{
|
{
|
||||||
if(vita->texture){
|
if(vita->texture)
|
||||||
vita2d_wait_rendering_done();
|
{
|
||||||
vita2d_free_texture(vita->texture);
|
vita2d_wait_rendering_done();
|
||||||
vita->texture = NULL;
|
vita2d_free_texture(vita->texture);
|
||||||
|
vita->texture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vita->width = framebuffer->width;
|
vita->width = framebuffer->width;
|
||||||
vita->height = framebuffer->height;
|
vita->height = framebuffer->height;
|
||||||
vita->texture = vita2d_create_empty_texture_format(vita->width, vita->height, vita->format);
|
vita->texture = vita2d_create_empty_texture_format(
|
||||||
vita2d_texture_set_filters(vita->texture,vita->tex_filter,vita->tex_filter);
|
vita->width, vita->height, vita->format);
|
||||||
|
vita2d_texture_set_filters(vita->texture,
|
||||||
|
vita->tex_filter,vita->tex_filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
framebuffer->data = vita2d_texture_get_datap(vita->texture);
|
framebuffer->data = vita2d_texture_get_datap(vita->texture);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user