diff --git a/menu/drivers_display/menu_display_caca.c b/menu/drivers_display/menu_display_caca.c index 73dac5a70a..72a1f4e33f 100644 --- a/menu/drivers_display/menu_display_caca.c +++ b/menu/drivers_display/menu_display_caca.c @@ -38,19 +38,19 @@ static void menu_display_caca_blend_end(video_frame_info_t *video_info) { } -static void menu_display_caca_draw(void *data, video_frame_info_t *video_info) +static void menu_display_caca_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_caca_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_caca_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_caca_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_caca_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } static void menu_display_caca_restore_clear_color(void) diff --git a/menu/drivers_display/menu_display_ctr.c b/menu/drivers_display/menu_display_ctr.c index 1614f0f57b..9549ff613a 100644 --- a/menu/drivers_display/menu_display_ctr.c +++ b/menu/drivers_display/menu_display_ctr.c @@ -53,18 +53,20 @@ static void menu_display_ctr_blend_end(video_frame_info_t *video_info) } -static void menu_display_ctr_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_ctr_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } -static void menu_display_ctr_draw(void *data, video_frame_info_t *video_info) +static void menu_display_ctr_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { struct ctr_texture *texture = NULL; const float *color = NULL; - ctr_video_t *ctr = video_info ? (ctr_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + ctr_video_t *ctr = video_info ? + (ctr_video_t*)video_info->userdata : NULL; if (!ctr || !draw) return; @@ -157,7 +159,8 @@ static void menu_display_ctr_draw(void *data, video_frame_info_t *video_info) #endif } -static void menu_display_ctr_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_ctr_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } diff --git a/menu/drivers_display/menu_display_d3d10.c b/menu/drivers_display/menu_display_d3d10.c index 7579fc8791..234524d1ca 100644 --- a/menu/drivers_display/menu_display_d3d10.c +++ b/menu/drivers_display/menu_display_d3d10.c @@ -58,15 +58,17 @@ static void menu_display_d3d10_blend_end(video_frame_info_t *video_info) d3d10->blend_disable, NULL, D3D10_DEFAULT_SAMPLE_MASK); } -static void menu_display_d3d10_viewport(void* data, video_frame_info_t *video_info) +static void menu_display_d3d10_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } -static void menu_display_d3d10_draw(void* data, video_frame_info_t *video_info) +static void menu_display_d3d10_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { int vertex_count; - d3d10_video_t* d3d10 = video_info ? (d3d10_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data; + d3d10_video_t* d3d10 = video_info ? + (d3d10_video_t*)video_info->userdata : NULL; if (!d3d10 || !draw || !draw->texture) return; @@ -183,11 +185,11 @@ static void menu_display_d3d10_draw(void* data, video_frame_info_t *video_info) return; } -static void menu_display_d3d10_draw_pipeline(void* data, +static void menu_display_d3d10_draw_pipeline(menu_display_ctx_draw_t* draw, video_frame_info_t *video_info) { - menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data; - d3d10_video_t* d3d10 = video_info ? (d3d10_video_t*)video_info->userdata : NULL; + d3d10_video_t* d3d10 = video_info ? + (d3d10_video_t*)video_info->userdata : NULL; if (!d3d10 || !draw) return; diff --git a/menu/drivers_display/menu_display_d3d11.c b/menu/drivers_display/menu_display_d3d11.c index 42a6523ed9..ce68977fce 100644 --- a/menu/drivers_display/menu_display_d3d11.c +++ b/menu/drivers_display/menu_display_d3d11.c @@ -57,15 +57,16 @@ static void menu_display_d3d11_blend_end(video_frame_info_t *video_info) d3d11->blend_disable, NULL, D3D11_DEFAULT_SAMPLE_MASK); } -static void menu_display_d3d11_viewport(void* data, video_frame_info_t *video_info) +static void menu_display_d3d11_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } -static void menu_display_d3d11_draw(void* data, video_frame_info_t *video_info) +static void menu_display_d3d11_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { int vertex_count; d3d11_video_t* d3d11 = video_info ? (d3d11_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data; if (!d3d11 || !draw || !draw->texture) return; @@ -183,11 +184,11 @@ static void menu_display_d3d11_draw(void* data, video_frame_info_t *video_info) return; } -static void menu_display_d3d11_draw_pipeline(void* data, +static void menu_display_d3d11_draw_pipeline(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { - menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data; - d3d11_video_t* d3d11 = video_info ? (d3d11_video_t*)video_info->userdata : NULL; + d3d11_video_t* d3d11 = video_info ? + (d3d11_video_t*)video_info->userdata : NULL; if (!d3d11 || !draw) return; diff --git a/menu/drivers_display/menu_display_d3d12.c b/menu/drivers_display/menu_display_d3d12.c index b4de0af609..d793c20b46 100644 --- a/menu/drivers_display/menu_display_d3d12.c +++ b/menu/drivers_display/menu_display_d3d12.c @@ -59,15 +59,17 @@ static void menu_display_d3d12_blend_end(video_frame_info_t *video_info) D3D12SetPipelineState(d3d12->queue.cmd, d3d12->sprites.pipe); } -static void menu_display_d3d12_viewport(void* data, video_frame_info_t *video_info) +static void menu_display_d3d12_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } -static void menu_display_d3d12_draw(void* data, video_frame_info_t *video_info) +static void menu_display_d3d12_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { int vertex_count; - d3d12_video_t* d3d12 = video_info ? (d3d12_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t* draw = (menu_display_ctx_draw_t*)data; + d3d12_video_t* d3d12 = video_info ? + (d3d12_video_t*)video_info->userdata : NULL; if (!d3d12 || !draw || !draw->texture) return; @@ -200,10 +202,9 @@ static void menu_display_d3d12_draw(void* data, video_frame_info_t *video_info) return; } -static void menu_display_d3d12_draw_pipeline(void* data, +static void menu_display_d3d12_draw_pipeline(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; d3d12_video_t *d3d12 = video_info ? (d3d12_video_t*)video_info->userdata : NULL; diff --git a/menu/drivers_display/menu_display_d3d8.c b/menu/drivers_display/menu_display_d3d8.c index 51851ff027..46f460f945 100644 --- a/menu/drivers_display/menu_display_d3d8.c +++ b/menu/drivers_display/menu_display_d3d8.c @@ -101,7 +101,8 @@ static void menu_display_d3d8_blend_end(video_frame_info_t *video_info) d3d8_disable_blend_func(d3d->dev); } -static void menu_display_d3d8_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_d3d8_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } @@ -119,14 +120,15 @@ static void menu_display_d3d8_bind_texture(void *data, d3d8_video_t *d3d) d3d8_set_sampler_magfilter(d3d->dev, 0, D3DTEXF_COMM_LINEAR); } -static void menu_display_d3d8_draw(void *data, video_frame_info_t *video_info) +static void menu_display_d3d8_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { unsigned i; video_shader_ctx_mvp_t mvp; math_matrix_4x4 mop, m1, m2; unsigned width, height; - d3d8_video_t *d3d = video_info ? (d3d8_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + d3d8_video_t *d3d = video_info ? + (d3d8_video_t*)video_info->userdata : NULL; Vertex * pv = NULL; const float *vertex = NULL; const float *tex_coord = NULL; @@ -227,7 +229,7 @@ static void menu_display_d3d8_draw(void *data, video_frame_info_t *video_info) d3d->menu_display.offset += draw->coords->vertices; } -static void menu_display_d3d8_draw_pipeline(void *data, +static void menu_display_d3d8_draw_pipeline(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { } diff --git a/menu/drivers_display/menu_display_d3d9.c b/menu/drivers_display/menu_display_d3d9.c index c99396e5b7..ef8331598c 100644 --- a/menu/drivers_display/menu_display_d3d9.c +++ b/menu/drivers_display/menu_display_d3d9.c @@ -101,7 +101,8 @@ static void menu_display_d3d9_blend_end(video_frame_info_t *video_info) d3d9_disable_blend_func(d3d->dev); } -static void menu_display_d3d9_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_d3d9_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } @@ -123,15 +124,16 @@ static void menu_display_d3d9_bind_texture(void *data, d3d9_video_t *d3d) d3d9_set_sampler_mipfilter(dev, 0, D3DTEXF_COMM_LINEAR); } -static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info) +static void menu_display_d3d9_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { unsigned i; video_shader_ctx_mvp_t mvp; math_matrix_4x4 mop, m1, m2; unsigned width, height; LPDIRECT3DDEVICE9 dev; - d3d9_video_t *d3d = video_info ? (d3d9_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + d3d9_video_t *d3d = video_info ? + (d3d9_video_t*)video_info->userdata : NULL; Vertex * pv = NULL; const float *vertex = NULL; const float *tex_coord = NULL; @@ -223,11 +225,10 @@ static void menu_display_d3d9_draw(void *data, video_frame_info_t *video_info) d3d->menu_display.offset += draw->coords->vertices; } -static void menu_display_d3d9_draw_pipeline(void *data, +static void menu_display_d3d9_draw_pipeline(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { #if defined(HAVE_HLSL) || defined(HAVE_CG) - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; static float t = 0; video_coord_array_t *ca = NULL; diff --git a/menu/drivers_display/menu_display_gdi.c b/menu/drivers_display/menu_display_gdi.c index f09a2582c5..e3f0c2160c 100644 --- a/menu/drivers_display/menu_display_gdi.c +++ b/menu/drivers_display/menu_display_gdi.c @@ -42,19 +42,19 @@ static void menu_display_gdi_blend_end(video_frame_info_t *video_info) { } -static void menu_display_gdi_draw(void *data, video_frame_info_t *video_info) +static void menu_display_gdi_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_gdi_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_gdi_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_gdi_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_gdi_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } static void menu_display_gdi_restore_clear_color(void) diff --git a/menu/drivers_display/menu_display_gl.c b/menu/drivers_display/menu_display_gl.c index 5b70304b58..3c24d63e39 100644 --- a/menu/drivers_display/menu_display_gl.c +++ b/menu/drivers_display/menu_display_gl.c @@ -96,30 +96,20 @@ static void menu_display_gl_blend_end(video_frame_info_t *video_info) glDisable(GL_BLEND); } -static void menu_display_gl_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_gl_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - if (draw) glViewport(draw->x, draw->y, draw->width, draw->height); } -static void menu_display_gl_bind_texture(void *data) -{ - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - - if (!draw) - return; - - glBindTexture(GL_TEXTURE_2D, (GLuint)draw->texture); -} - -static void menu_display_gl_draw(void *data, video_frame_info_t *video_info) +static void menu_display_gl_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { video_shader_ctx_mvp_t mvp; video_shader_ctx_coords_t coords; - gl_t *gl = video_info ? (gl_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + gl_t *gl = video_info ? + (gl_t*)video_info->userdata : NULL; if (!gl || !draw) return; @@ -132,7 +122,8 @@ static void menu_display_gl_draw(void *data, video_frame_info_t *video_info) draw->coords->lut_tex_coord = menu_display_gl_get_default_tex_coords(); menu_display_gl_viewport(draw, video_info); - menu_display_gl_bind_texture(draw); + if (draw) + glBindTexture(GL_TEXTURE_2D, (GLuint)draw->texture); coords.handle_data = gl; coords.data = draw->coords; @@ -151,14 +142,13 @@ static void menu_display_gl_draw(void *data, video_frame_info_t *video_info) gl->coords.color = gl->white_color_ptr; } -static void menu_display_gl_draw_pipeline(void *data, +static void menu_display_gl_draw_pipeline(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { #ifdef HAVE_SHADERPIPELINE video_shader_ctx_info_t shader_info; struct uniform_info uniform_param; static float t = 0; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; video_coord_array_t *ca = menu_display_get_coords_array(); draw->x = 0; diff --git a/menu/drivers_display/menu_display_null.c b/menu/drivers_display/menu_display_null.c index c50cd04086..a4e3e8221f 100644 --- a/menu/drivers_display/menu_display_null.c +++ b/menu/drivers_display/menu_display_null.c @@ -36,20 +36,19 @@ static void menu_display_null_blend_end(video_frame_info_t *video_info) { } -static void menu_display_null_draw(void *data, video_frame_info_t *video_info) +static void menu_display_null_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } static void menu_display_null_draw_pipeline( - void *data, video_frame_info_t *video_info) + menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { - (void)data; } -static void menu_display_null_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_null_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } static void menu_display_null_restore_clear_color(void) diff --git a/menu/drivers_display/menu_display_vga.c b/menu/drivers_display/menu_display_vga.c index bd563768b2..9058aba808 100644 --- a/menu/drivers_display/menu_display_vga.c +++ b/menu/drivers_display/menu_display_vga.c @@ -38,19 +38,19 @@ static void menu_display_vga_blend_end(video_frame_info_t *video_info) { } -static void menu_display_vga_draw(void *data, video_frame_info_t *video_info) +static void menu_display_vga_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_vga_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_vga_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } -static void menu_display_vga_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_vga_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - (void)data; } static void menu_display_vga_restore_clear_color(void) diff --git a/menu/drivers_display/menu_display_vita2d.c b/menu/drivers_display/menu_display_vita2d.c index 6889686ff8..8c25950ef1 100644 --- a/menu/drivers_display/menu_display_vita2d.c +++ b/menu/drivers_display/menu_display_vita2d.c @@ -94,21 +94,16 @@ static void menu_display_vita2d_blend_end(video_frame_info_t *video_info) } -static void menu_display_vita2d_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_vita2d_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - vita_video_t *vita2d = video_info ? (vita_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - - if (!vita2d || !draw) - return; - #if 0 vita2d_texture_set_wvp(draw->x, draw->y, draw->width, draw->height); #endif } -static void menu_display_vita2d_draw(void *data, +static void menu_display_vita2d_draw(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { #if 0 @@ -119,8 +114,8 @@ static void menu_display_vita2d_draw(void *data, const float *vertex = NULL; const float *tex_coord = NULL; const float *color = NULL; - vita_video_t *vita2d = video_info ? (vita_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + vita_video_t *vita2d = video_info ? + (vita_video_t*)video_info->userdata : NULL; if (!vita2d || !draw) return; @@ -200,11 +195,9 @@ static void menu_display_vita2d_draw(void *data, } } -static void menu_display_vita2d_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_vita2d_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { -#ifdef HAVE_SHADERPIPELINE - -#endif } static void menu_display_vita2d_restore_clear_color(void) diff --git a/menu/drivers_display/menu_display_vulkan.c b/menu/drivers_display/menu_display_vulkan.c index 94b0014d65..db38e145a3 100644 --- a/menu/drivers_display/menu_display_vulkan.c +++ b/menu/drivers_display/menu_display_vulkan.c @@ -99,10 +99,9 @@ static unsigned to_menu_pipeline( } #endif -static void menu_display_vk_viewport(void *data, +static void menu_display_vk_viewport(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) { - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; vk_t *vk = video_info ? (vk_t*)video_info->userdata : NULL; @@ -117,17 +116,17 @@ static void menu_display_vk_viewport(void *data, vk->vk_vp.maxDepth = 1.0f; } -static void menu_display_vk_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_vk_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { #ifdef HAVE_SHADERPIPELINE - float output_size[2]; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - video_coord_array_t *ca = NULL; - vk_t *vk = video_info ? (vk_t*)video_info->userdata : NULL; - static uint8_t ubo_scratch_data[768]; static float t = 0.0f; static struct video_coords blank_coords; + float output_size[2]; + video_coord_array_t *ca = NULL; + vk_t *vk = video_info ? + (vk_t*)video_info->userdata : NULL; if (!vk || !draw) return; @@ -179,7 +178,8 @@ static void menu_display_vk_draw_pipeline(void *data, video_frame_info_t *video_ #endif } -static void menu_display_vk_draw(void *data, video_frame_info_t *video_info) +static void menu_display_vk_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { unsigned i; struct vk_buffer_range range; @@ -188,8 +188,8 @@ static void menu_display_vk_draw(void *data, video_frame_info_t *video_info) const float *tex_coord = NULL; const float *color = NULL; struct vk_vertex *pv = NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - vk_t *vk = video_info ? (vk_t*)video_info->userdata : NULL; + vk_t *vk = video_info ? + (vk_t*)video_info->userdata : NULL; if (!vk || !draw) return; diff --git a/menu/drivers_display/menu_display_wiiu.c b/menu/drivers_display/menu_display_wiiu.c index 954be40415..dd675b8abe 100644 --- a/menu/drivers_display/menu_display_wiiu.c +++ b/menu/drivers_display/menu_display_wiiu.c @@ -54,17 +54,18 @@ static void menu_display_wiiu_blend_end(video_frame_info_t *video_info) } -static void menu_display_wiiu_viewport(void *data, video_frame_info_t *video_info) +static void menu_display_wiiu_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { } -static void menu_display_wiiu_draw(void *data, video_frame_info_t *video_info) +static void menu_display_wiiu_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - wiiu_video_t *wiiu = video_info ? (wiiu_video_t*)video_info->userdata : NULL; - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; - + wiiu_video_t *wiiu = video_info ? + (wiiu_video_t*)video_info->userdata : NULL; if (!wiiu || !draw) return; @@ -237,42 +238,43 @@ static void menu_display_wiiu_draw(void *data, video_frame_info_t *video_info) sizeof(*wiiu->vertex_cache.v), wiiu->vertex_cache.v); } -static void menu_display_wiiu_draw_pipeline(void *data, video_frame_info_t *video_info) +static void menu_display_wiiu_draw_pipeline(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) { - menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; video_coord_array_t *ca = NULL; - wiiu_video_t *wiiu = video_info ? (wiiu_video_t*)video_info->userdata : NULL; + wiiu_video_t *wiiu = video_info ? + (wiiu_video_t*)video_info->userdata : NULL; if (!wiiu || !draw) return; switch(draw->pipeline.id) { - case VIDEO_SHADER_MENU: - case VIDEO_SHADER_MENU_2: - ca = menu_display_get_coords_array(); - if(!wiiu->menu_shader_vbo) - { - wiiu->menu_shader_vbo = MEM2_alloc(ca->coords.vertices * 2 * sizeof(float), GX2_VERTEX_BUFFER_ALIGNMENT); - memcpy(wiiu->menu_shader_vbo, ca->coords.vertex, ca->coords.vertices * 2 * sizeof(float)); - GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu_shader_vbo, ca->coords.vertices * 2 * sizeof(float)); - } + case VIDEO_SHADER_MENU: + case VIDEO_SHADER_MENU_2: + ca = menu_display_get_coords_array(); + if(!wiiu->menu_shader_vbo) + { + wiiu->menu_shader_vbo = MEM2_alloc(ca->coords.vertices * 2 * sizeof(float), GX2_VERTEX_BUFFER_ALIGNMENT); + memcpy(wiiu->menu_shader_vbo, ca->coords.vertex, ca->coords.vertices * 2 * sizeof(float)); + GX2Invalidate(GX2_INVALIDATE_MODE_CPU_ATTRIBUTE_BUFFER, wiiu->menu_shader_vbo, ca->coords.vertices * 2 * sizeof(float)); + } - draw->coords->vertex = wiiu->menu_shader_vbo; - draw->coords->vertices = ca->coords.vertices; - GX2SetAttribBuffer(0, draw->coords->vertices * 2 * sizeof(float), 2 * sizeof(float), wiiu->menu_shader_vbo); - GX2SetBlendControl(GX2_RENDER_TARGET_0, GX2_BLEND_MODE_SRC_ALPHA, GX2_BLEND_MODE_ONE, - GX2_BLEND_COMBINE_MODE_ADD, GX2_DISABLE, 0, 0, 0); + draw->coords->vertex = wiiu->menu_shader_vbo; + draw->coords->vertices = ca->coords.vertices; + GX2SetAttribBuffer(0, draw->coords->vertices * 2 * sizeof(float), 2 * sizeof(float), wiiu->menu_shader_vbo); + GX2SetBlendControl(GX2_RENDER_TARGET_0, GX2_BLEND_MODE_SRC_ALPHA, GX2_BLEND_MODE_ONE, + GX2_BLEND_COMBINE_MODE_ADD, GX2_DISABLE, 0, 0, 0); - break; - case VIDEO_SHADER_MENU_3: - case VIDEO_SHADER_MENU_4: - case VIDEO_SHADER_MENU_5: - case VIDEO_SHADER_MENU_6: - GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->v), sizeof(*wiiu->v), wiiu->v); - break; - default: - return; + break; + case VIDEO_SHADER_MENU_3: + case VIDEO_SHADER_MENU_4: + case VIDEO_SHADER_MENU_5: + case VIDEO_SHADER_MENU_6: + GX2SetAttribBuffer(0, 4 * sizeof(*wiiu->v), sizeof(*wiiu->v), wiiu->v); + break; + default: + return; } if(!wiiu->menu_shader_ubo) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index cca2d9f435..67f25c8e18 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -338,13 +338,17 @@ typedef struct menu_display_frame_info bool shadows_enable; } menu_display_frame_info_t; +typedef struct menu_display_ctx_draw menu_display_ctx_draw_t; + typedef struct menu_display_ctx_driver { /* Draw graphics to the screen. */ - void (*draw)(void *data, video_frame_info_t *video_info); + void (*draw)(menu_display_ctx_draw_t *draw, video_frame_info_t *video_info); /* Draw one of the menu pipeline shaders. */ - void (*draw_pipeline)(void *data, video_frame_info_t *video_info); - void (*viewport)(void *data, video_frame_info_t *video_info); + void (*draw_pipeline)(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info); + void (*viewport)(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info); /* Start blending operation. */ void (*blend_begin)(video_frame_info_t *video_info); /* Finish blending operation. */