From 18d27468aef36efdb9fff2fc37bca4d6c8c2ce51 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 28 Feb 2018 04:52:47 +0100 Subject: [PATCH] Set handles_transform for 3DS/D3D11/D3D12/Vita/WiiU menu display drivers - this skips a bunch of costly matrix calculations for menu display drivers that have a geometry shader or something similar --- menu/drivers_display/menu_display_caca.c | 1 + menu/drivers_display/menu_display_ctr.c | 1 + menu/drivers_display/menu_display_d3d.c | 1 + menu/drivers_display/menu_display_d3d11.c | 1 + menu/drivers_display/menu_display_d3d12.c | 1 + menu/drivers_display/menu_display_gdi.c | 1 + menu/drivers_display/menu_display_gl.c | 1 + menu/drivers_display/menu_display_null.c | 1 + menu/drivers_display/menu_display_vga.c | 1 + menu/drivers_display/menu_display_vita2d.c | 1 + menu/drivers_display/menu_display_vulkan.c | 1 + menu/drivers_display/menu_display_wiiu.c | 1 + menu/menu_driver.c | 9 ++++++--- menu/menu_driver.h | 1 + 14 files changed, 19 insertions(+), 3 deletions(-) diff --git a/menu/drivers_display/menu_display_caca.c b/menu/drivers_display/menu_display_caca.c index fd385d5a68..73dac5a70a 100644 --- a/menu/drivers_display/menu_display_caca.c +++ b/menu/drivers_display/menu_display_caca.c @@ -101,4 +101,5 @@ menu_display_ctx_driver_t menu_display_ctx_caca = { menu_display_caca_font_init_first, MENU_VIDEO_DRIVER_CACA, "menu_display_caca", + false }; diff --git a/menu/drivers_display/menu_display_ctr.c b/menu/drivers_display/menu_display_ctr.c index e01fadb29a..1614f0f57b 100644 --- a/menu/drivers_display/menu_display_ctr.c +++ b/menu/drivers_display/menu_display_ctr.c @@ -208,4 +208,5 @@ menu_display_ctx_driver_t menu_display_ctx_ctr = { menu_display_ctr_font_init_first, MENU_VIDEO_DRIVER_CTR, "menu_display_ctr", + true }; diff --git a/menu/drivers_display/menu_display_d3d.c b/menu/drivers_display/menu_display_d3d.c index d1aa4cf77a..6333a34264 100644 --- a/menu/drivers_display/menu_display_d3d.c +++ b/menu/drivers_display/menu_display_d3d.c @@ -325,4 +325,5 @@ menu_display_ctx_driver_t menu_display_ctx_d3d = { menu_display_d3d_font_init_first, MENU_VIDEO_DRIVER_DIRECT3D, "menu_display_d3d", + false }; diff --git a/menu/drivers_display/menu_display_d3d11.c b/menu/drivers_display/menu_display_d3d11.c index ba957a2ef5..42a6523ed9 100644 --- a/menu/drivers_display/menu_display_d3d11.c +++ b/menu/drivers_display/menu_display_d3d11.c @@ -285,4 +285,5 @@ menu_display_ctx_driver_t menu_display_ctx_d3d11 = { menu_display_d3d11_font_init_first, MENU_VIDEO_DRIVER_DIRECT3D11, "menu_display_d3d11", + true }; diff --git a/menu/drivers_display/menu_display_d3d12.c b/menu/drivers_display/menu_display_d3d12.c index f2b1ee5592..b4de0af609 100644 --- a/menu/drivers_display/menu_display_d3d12.c +++ b/menu/drivers_display/menu_display_d3d12.c @@ -308,4 +308,5 @@ menu_display_ctx_driver_t menu_display_ctx_d3d12 = { menu_display_d3d12_font_init_first, MENU_VIDEO_DRIVER_DIRECT3D12, "menu_display_d3d12", + true }; diff --git a/menu/drivers_display/menu_display_gdi.c b/menu/drivers_display/menu_display_gdi.c index 3402001465..f09a2582c5 100644 --- a/menu/drivers_display/menu_display_gdi.c +++ b/menu/drivers_display/menu_display_gdi.c @@ -122,4 +122,5 @@ menu_display_ctx_driver_t menu_display_ctx_gdi = { menu_display_gdi_font_init_first, MENU_VIDEO_DRIVER_GDI, "menu_display_gdi", + false }; diff --git a/menu/drivers_display/menu_display_gl.c b/menu/drivers_display/menu_display_gl.c index c189b17d60..5b70304b58 100644 --- a/menu/drivers_display/menu_display_gl.c +++ b/menu/drivers_display/menu_display_gl.c @@ -274,4 +274,5 @@ menu_display_ctx_driver_t menu_display_ctx_gl = { menu_display_gl_font_init_first, MENU_VIDEO_DRIVER_OPENGL, "menu_display_gl", + false }; diff --git a/menu/drivers_display/menu_display_null.c b/menu/drivers_display/menu_display_null.c index c554b5b021..c50cd04086 100644 --- a/menu/drivers_display/menu_display_null.c +++ b/menu/drivers_display/menu_display_null.c @@ -97,4 +97,5 @@ menu_display_ctx_driver_t menu_display_ctx_null = { menu_display_null_font_init_first, MENU_VIDEO_DRIVER_GENERIC, "menu_display_null", + false }; diff --git a/menu/drivers_display/menu_display_vga.c b/menu/drivers_display/menu_display_vga.c index 2aa6bfec74..bd563768b2 100644 --- a/menu/drivers_display/menu_display_vga.c +++ b/menu/drivers_display/menu_display_vga.c @@ -102,4 +102,5 @@ menu_display_ctx_driver_t menu_display_ctx_vga = { menu_display_vga_font_init_first, MENU_VIDEO_DRIVER_VGA, "menu_display_vga", + false }; diff --git a/menu/drivers_display/menu_display_vita2d.c b/menu/drivers_display/menu_display_vita2d.c index c612d17d2e..6889686ff8 100644 --- a/menu/drivers_display/menu_display_vita2d.c +++ b/menu/drivers_display/menu_display_vita2d.c @@ -255,4 +255,5 @@ menu_display_ctx_driver_t menu_display_ctx_vita2d = { menu_display_vita2d_font_init_first, MENU_VIDEO_DRIVER_VITA2D, "menu_display_vita2d", + true }; diff --git a/menu/drivers_display/menu_display_vulkan.c b/menu/drivers_display/menu_display_vulkan.c index ffd1295997..94b0014d65 100644 --- a/menu/drivers_display/menu_display_vulkan.c +++ b/menu/drivers_display/menu_display_vulkan.c @@ -360,4 +360,5 @@ menu_display_ctx_driver_t menu_display_ctx_vulkan = { menu_display_vk_font_init_first, MENU_VIDEO_DRIVER_VULKAN, "menu_display_vulkan", + false }; diff --git a/menu/drivers_display/menu_display_wiiu.c b/menu/drivers_display/menu_display_wiiu.c index 3764031787..954be40415 100644 --- a/menu/drivers_display/menu_display_wiiu.c +++ b/menu/drivers_display/menu_display_wiiu.c @@ -340,4 +340,5 @@ menu_display_ctx_driver_t menu_display_ctx_wiiu = { menu_display_wiiu_font_init_first, MENU_VIDEO_DRIVER_WIIU, "menu_display_wiiu", + true }; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index b0f9b3b2f1..d6e4185133 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -1015,11 +1015,15 @@ void menu_display_draw_texture_slice( void menu_display_rotate_z(menu_display_ctx_rotate_draw_t *draw, video_frame_info_t *video_info) { -#if !defined(VITA) && !defined(_3DS) && !defined(WIIU) math_matrix_4x4 matrix_rotated, matrix_scaled; math_matrix_4x4 *b = NULL; - if (!draw || !menu_disp || !menu_disp->get_default_mvp) + if ( + !draw || + !menu_disp || + !menu_disp->get_default_mvp || + menu_disp->handles_transform + ) return; b = (math_matrix_4x4*)menu_disp->get_default_mvp(video_info); @@ -1036,7 +1040,6 @@ void menu_display_rotate_z(menu_display_ctx_rotate_draw_t *draw, matrix_4x4_scale(matrix_scaled, draw->scale_x, draw->scale_y, draw->scale_z); matrix_4x4_multiply(*draw->matrix, matrix_scaled, *draw->matrix); -#endif } bool menu_display_get_tex_coords(menu_display_ctx_coord_draw_t *draw) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 17f5ff31b8..52dd7b80a3 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -346,6 +346,7 @@ typedef struct menu_display_ctx_driver bool is_threaded); enum menu_display_driver_type type; const char *ident; + bool handles_transform; } menu_display_ctx_driver_t;