Get rid of gfx_display_blend_{begin/end}

This commit is contained in:
twinaphex 2020-09-23 21:37:18 +02:00
parent 1d8bee45e0
commit 5a481d8653
8 changed files with 112 additions and 66 deletions

View File

@ -614,24 +614,6 @@ void gfx_display_coords_array_reset(void)
p_dispca->coords.vertices = 0;
}
/* Begin blending operation */
void gfx_display_blend_begin(void *data)
{
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(data);
}
/* End blending operation */
void gfx_display_blend_end(void *data)
{
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (dispctx && dispctx->blend_end)
dispctx->blend_end(data);
}
/* Begin scissoring operation */
void gfx_display_scissor_begin(void *userdata,
unsigned video_width,

View File

@ -212,10 +212,6 @@ void gfx_display_free(void);
void gfx_display_init(void);
void gfx_display_blend_begin(void *data);
void gfx_display_blend_end(void *data);
void gfx_display_push_quad(
unsigned width, unsigned height,
const float *colors, int x1, int y1,

View File

@ -113,6 +113,8 @@ static void gfx_widget_achievement_popup_frame(void* data, void* userdata)
1.00, 1.00, 1.00, 1.00,
};
gfx_widget_achievement_popup_state_t* state = gfx_widget_achievement_popup_get_ptr();
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
/* if there's nothing in the queue, just bail */
if (state->queue_read_index < 0 || !state->queue[state->queue_read_index].title)
@ -149,7 +151,8 @@ static void gfx_widget_achievement_popup_frame(void* data, void* userdata)
/* Icon */
if (p_dispwidget->gfx_widgets_icons_textures[MENU_WIDGETS_ICON_ACHIEVEMENT])
{
gfx_display_blend_begin(video_info->userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(video_info->userdata);
gfx_widgets_draw_icon(
video_info->userdata,
video_width,
@ -161,7 +164,8 @@ static void gfx_widget_achievement_popup_frame(void* data, void* userdata)
0,
state->y,
0, 1, pure_white);
gfx_display_blend_end(video_info->userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(video_info->userdata);
}
}
/* Badge */

View File

@ -650,6 +650,12 @@ static void gfx_widget_load_content_animation_frame(void *data, void *user_data)
if (state->status != GFX_WIDGET_LOAD_CONTENT_IDLE)
{
float bg_alpha;
float icon_alpha;
float text_alpha;
float icon_x;
float text_x;
video_frame_info_t *video_info = (video_frame_info_t*)data;
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)user_data;
@ -660,13 +666,8 @@ static void gfx_widget_load_content_animation_frame(void *data, void *user_data)
gfx_widget_font_data_t *font_regular = gfx_widgets_get_font_regular(p_dispwidget);
gfx_widget_font_data_t *font_bold = gfx_widgets_get_font_bold(p_dispwidget);
size_t msg_queue_size = gfx_widgets_get_msg_queue_size(p_dispwidget);
float bg_alpha;
float icon_alpha;
float text_alpha;
float icon_x;
float text_x;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
#ifdef HAVE_MENU
/* Draw nothing if menu is currently active */
@ -792,7 +793,8 @@ static void gfx_widget_load_content_animation_frame(void *data, void *user_data)
if (state->icon_texture)
{
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_widgets_draw_icon(
userdata,
@ -807,7 +809,8 @@ static void gfx_widget_load_content_animation_frame(void *data, void *user_data)
1.0f,
state->icon_color);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
/* If there is no icon, draw a placeholder
* (otherwise layout will look terrible...) */

View File

@ -124,6 +124,8 @@ static void gfx_widget_volume_frame(void* data, void *user_data)
float *bar_background = NULL;
float *bar_foreground = NULL;
float bar_percentage = 0.0f;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
/* Note: Volume + percentage text has no component
* that extends below the baseline, so we shift
@ -188,7 +190,8 @@ static void gfx_widget_volume_frame(void* data, void *user_data)
{
gfx_display_set_alpha(pure_white, state->text_alpha);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_widgets_draw_icon(
userdata,
video_width,
@ -198,7 +201,8 @@ static void gfx_widget_volume_frame(void* data, void *user_data)
0, 0,
0, 1, pure_white
);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
if (state->mute)

View File

@ -2314,8 +2314,11 @@ static void materialui_draw_icon(
gfx_display_ctx_draw_t draw;
struct video_coords coords;
math_matrix_4x4 mymat;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
rotate_draw.matrix = &mymat;
rotate_draw.rotation = rotation;
@ -2346,7 +2349,8 @@ static void materialui_draw_icon(
gfx_display_draw(&draw, userdata,
video_width, video_height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void materialui_draw_thumbnail(
@ -5002,6 +5006,8 @@ static void materialui_render_background(materialui_handle_t *mui,
1.0f, 1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f, 1.0f
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
/* Configure draw object */
draw.x = 0;
@ -5046,12 +5052,14 @@ static void materialui_render_background(materialui_handle_t *mui,
}
/* Draw background */
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw_bg(&draw, userdata,
add_opacity, opacity_override);
gfx_display_draw(&draw, userdata,
video_width, video_height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void materialui_render_landscape_border(

View File

@ -704,6 +704,8 @@ static void stripes_render_keyboard(
1.00, 1.00, 1.00, 1.00,
1.00, 1.00, 1.00, 1.00,
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
gfx_display_draw_quad(
userdata,
@ -731,7 +733,8 @@ static void stripes_render_keyboard(
{
uintptr_t texture = stripes->textures.list[STRIPES_TEXTURE_KEY_HOVER];
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw_texture(
userdata,
@ -745,7 +748,8 @@ static void stripes_render_keyboard(
&white[0],
texture);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
gfx_display_draw_text(stripes->font, grid[i],
@ -807,6 +811,8 @@ static void stripes_render_messagebox_internal(
float line_height = 0;
struct string_list *list = !string_is_empty(message)
? string_split(message, "\n") : NULL;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!list || !stripes || !stripes->font)
{
@ -841,7 +847,8 @@ static void stripes_render_messagebox_internal(
}
}
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw_texture_slice(
userdata,
@ -2616,6 +2623,8 @@ static void stripes_draw_items(
size_t end = 0;
const char *thumb_ident = stripes_thumbnails_ident('R');
const char *left_thumb_ident = stripes_thumbnails_ident('L');
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!list || !list->size || !stripes)
return;
@ -2653,7 +2662,8 @@ static void stripes_draw_items(
stripes_calculate_visible_range(stripes, height, end, current, &first, &last);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
for (i = first; i <= last; i++)
{
@ -2676,7 +2686,8 @@ static void stripes_draw_items(
break;
}
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void stripes_render(void *data,
@ -2756,6 +2767,8 @@ static void stripes_draw_bg(
rgb[0], rgb[1], rgb[2], 1,
rgb[0], rgb[1], rgb[2], 1,
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
coords.vertices = 4;
coords.vertex = NULL;
@ -2773,10 +2786,12 @@ static void stripes_draw_bg(
draw.prim_type = GFX_DISPLAY_PRIM_TRIANGLESTRIP;
draw.pipeline_id = 0;
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw(&draw, userdata,
video_width, video_height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void stripes_draw_dark_layer(
@ -2795,6 +2810,8 @@ static void stripes_draw_dark_layer(
0, 0, 0, 1,
0, 0, 0, 1,
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
gfx_display_set_alpha(black, MIN(stripes->alpha, 0.75));
@ -2814,10 +2831,12 @@ static void stripes_draw_dark_layer(
draw.prim_type = GFX_DISPLAY_PRIM_TRIANGLESTRIP;
draw.pipeline_id = 0;
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw(&draw, userdata,
video_width, video_height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void stripes_frame(void *data, video_frame_info_t *video_info)
@ -2846,6 +2865,8 @@ static void stripes_frame(void *data, video_frame_info_t *video_info)
float stack_width = 285;
stripes_handle_t *stripes = (stripes_handle_t*)data;
settings_t *settings = config_get_ptr();
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!stripes)
return;
@ -2885,7 +2906,8 @@ static void stripes_frame(void *data, video_frame_info_t *video_info)
rotate_draw.scale_enable = true;
gfx_display_rotate_z(&rotate_draw, userdata);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
/* Horizontal stripes */
for (i = 0; i <= stripes_list_get_size(stripes, MENU_LIST_HORIZONTAL)
@ -2920,7 +2942,8 @@ static void stripes_frame(void *data, video_frame_info_t *video_info)
video_width, video_height,
&color[0]);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
stack_width += node->width;
}
@ -2980,7 +3003,8 @@ static void stripes_frame(void *data, video_frame_info_t *video_info)
stack_width += node->width;
}
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
/* Vertical icons */
#if 0

View File

@ -944,6 +944,8 @@ static void xmb_render_messagebox_internal(
float line_height = 0;
int usable_width = 0;
struct string_list list = {0};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
wrapped_message[0] = '\0';
@ -999,7 +1001,8 @@ static void xmb_render_messagebox_internal(
}
}
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw_texture_slice(
userdata,
@ -3461,6 +3464,8 @@ static void xmb_draw_items(
gfx_display_ctx_rotate_draw_t rotate_draw;
xmb_node_t *core_node = NULL;
size_t end = 0;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!list || !list->size || !xmb)
return;
@ -3499,7 +3504,8 @@ static void xmb_draw_items(
xmb_calculate_visible_range(xmb, height,
end, (unsigned)current, &first, &last);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
for (i = first; i <= last; i++)
{
@ -3516,7 +3522,8 @@ static void xmb_draw_items(
break;
}
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static INLINE bool xmb_use_ps3_layout(
@ -4011,6 +4018,8 @@ static void xmb_draw_bg(
float *coord_white)
{
gfx_display_ctx_draw_t draw;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
draw.x = 0;
draw.y = 0;
@ -4025,7 +4034,8 @@ static void xmb_draw_bg(
draw.pipeline_id = 0;
draw.pipeline_active = xmb_shader_pipeline_active(menu_shader_pipeline);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
video_driver_set_viewport(video_width, video_height, true, false);
#ifdef HAVE_SHADERPIPELINE
@ -4123,7 +4133,8 @@ static void xmb_draw_bg(
gfx_display_draw(&draw, userdata,
video_width, video_height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void xmb_draw_dark_layer(
@ -4140,6 +4151,8 @@ static void xmb_draw_dark_layer(
0, 0, 0, 1,
0, 0, 0, 1,
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
gfx_display_set_alpha(black, MIN(xmb->alpha, 0.75));
@ -4159,10 +4172,12 @@ static void xmb_draw_dark_layer(
draw.prim_type = GFX_DISPLAY_PRIM_TRIANGLESTRIP;
draw.pipeline_id = 0;
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
gfx_display_draw(&draw, userdata,
width, height);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
static void xmb_draw_fullscreen_thumbnails(
@ -4613,6 +4628,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
bool libretro_running = video_info->libretro_running;
unsigned menu_shader_pipeline = video_info->menu_shader_pipeline;
float menu_wallpaper_opacity = video_info->menu_wallpaper_opacity;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!xmb)
return;
@ -4945,7 +4962,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (coord_white[3] != 0 && !xmb->assets_missing)
{
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
xmb_draw_icon(
userdata,
video_width,
@ -4970,7 +4988,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
1,
&item_color[0],
xmb->shadow_offset);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
percent_width = (unsigned)
@ -4997,7 +5016,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (percent_width)
x_pos = percent_width + (xmb->icon_size / 2.5);
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
xmb_draw_icon(
userdata,
video_width,
@ -5015,7 +5035,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
1,
&item_color[0],
xmb->shadow_offset);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
timedate[0] = '\0';
@ -5042,7 +5063,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (coord_white[3] != 0 && !xmb->assets_missing)
{
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
xmb_draw_icon(
userdata,
video_width,
@ -5064,13 +5086,15 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
1,
&item_color[0],
xmb->shadow_offset);
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
/* Horizontal tab icons */
if (!xmb->assets_missing)
{
gfx_display_blend_begin(userdata);
if (dispctx && dispctx->blend_begin)
dispctx->blend_begin(userdata);
for (i = 0; i <= xmb_list_get_size(xmb, MENU_LIST_HORIZONTAL)
+ xmb->system_tab_end; i++)
@ -5146,7 +5170,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
}
}
gfx_display_blend_end(userdata);
if (dispctx && dispctx->blend_end)
dispctx->blend_end(userdata);
}
/* Vertical icons */