From 252414f4d7594ec7fdc67c9ee91a7d6c2898c7d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 21 Apr 2016 01:18:30 +0700 Subject: [PATCH 1/3] (XMB) Move the ribbon display code to menu_display --- menu/drivers/xmb.c | 42 +++--------------------------------------- menu/menu_display.c | 43 +++++++++++++++++++++++++++++++++++++++++++ menu/menu_display.h | 1 + 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index a5812010c3..e494ed77ef 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -48,7 +48,7 @@ #include "../../tasks/tasks_internal.h" -#if 0 +#if 1 #define XMB_RIBBON_ENABLE #define XMB_RIBBON_ROWS 16 #define XMB_RIBBON_COLS 32 @@ -1833,44 +1833,7 @@ static void xmb_frame_horizontal_list(xmb_handle_t *xmb, #ifdef XMB_RIBBON_ENABLE static void xmb_draw_ribbon(xmb_handle_t *xmb, menu_display_ctx_draw_t *draw) { - struct uniform_info uniform_param = {0}; - static float t = 0; - video_shader_ctx_info_t shader_info; - gfx_coord_array_t *ca = NULL; - menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca); - - if (menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL)) - draw->handle_alpha = 0.75; - else - draw->handle_alpha = 0.90; - - menu_display_ctl(MENU_DISPLAY_CTL_DRAW_GRADIENT, draw); - - draw->x = 0; - draw->y = 0; - draw->coords = (struct gfx_coords*)(&ca->coords); - draw->matrix_data = NULL; - - shader_info.data = NULL; - shader_info.idx = VIDEO_SHADER_MENU; - - video_shader_driver_ctl(SHADER_CTL_USE, &shader_info); - - t += 0.01; - - uniform_param.enabled = true; - uniform_param.lookup.enable = true; - uniform_param.lookup.add_prefix = true; - uniform_param.lookup.idx = VIDEO_SHADER_MENU; - uniform_param.lookup.type = SHADER_PROGRAM_VERTEX; - uniform_param.type = UNIFORM_1F; - uniform_param.lookup.ident = "time"; - uniform_param.result.f.v0 = t; - - video_shader_driver_ctl(SHADER_CTL_SET_PARAMETER, &uniform_param); - - menu_display_ctl(MENU_DISPLAY_CTL_DRAW, draw); } #endif @@ -1880,7 +1843,8 @@ static void xmb_draw_bg(xmb_handle_t *xmb, menu_display_ctx_draw_t *draw) menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL); #ifdef XMB_RIBBON_ENABLE - xmb_draw_ribbon(xmb, draw); + //xmb_draw_ribbon(xmb, draw); + menu_display_ctl(MENU_DISPLAY_CTL_DRAW_RIBBON, draw); #else draw->x = 0; draw->y = 0; diff --git a/menu/menu_display.c b/menu/menu_display.c index 242a6319ee..6cf2926da9 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -540,6 +540,49 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data) menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, draw); } break; + case MENU_DISPLAY_CTL_DRAW_RIBBON: + { + menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data; + struct uniform_info uniform_param = {0}; + static float t = 0; + video_shader_ctx_info_t shader_info; + gfx_coord_array_t *ca = NULL; + + menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca); + + if (menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL)) + draw->handle_alpha = 0.75; + else + draw->handle_alpha = 0.90; + + menu_display_ctl(MENU_DISPLAY_CTL_DRAW_GRADIENT, draw); + + draw->x = 0; + draw->y = 0; + draw->coords = (struct gfx_coords*)(&ca->coords); + draw->matrix_data = NULL; + + shader_info.data = NULL; + shader_info.idx = VIDEO_SHADER_MENU; + + video_shader_driver_ctl(SHADER_CTL_USE, &shader_info); + + t += 0.01; + + uniform_param.enabled = true; + uniform_param.lookup.enable = true; + uniform_param.lookup.add_prefix = true; + uniform_param.lookup.idx = VIDEO_SHADER_MENU; + uniform_param.lookup.type = SHADER_PROGRAM_VERTEX; + uniform_param.type = UNIFORM_1F; + uniform_param.lookup.ident = "time"; + uniform_param.result.f.v0 = t; + + video_shader_driver_ctl(SHADER_CTL_SET_PARAMETER, &uniform_param); + + menu_display_ctl(MENU_DISPLAY_CTL_DRAW, draw); + } + break; case MENU_DISPLAY_CTL_ROTATE_Z: { math_matrix_4x4 matrix_rotated, matrix_scaled; diff --git a/menu/menu_display.h b/menu/menu_display.h index 0aeda90db7..3d47195247 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -76,6 +76,7 @@ enum menu_display_ctl_state MENU_DISPLAY_CTL_DRAW, MENU_DISPLAY_CTL_DRAW_BG, MENU_DISPLAY_CTL_DRAW_GRADIENT, + MENU_DISPLAY_CTL_DRAW_RIBBON, MENU_DISPLAY_CTL_ROTATE_Z, MENU_DISPLAY_CTL_TEX_COORDS_GET, MENU_DISPLAY_CTL_TIMEDATE, From 04370c65973ffbfa6aef9738cf28e7f382975f21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 21 Apr 2016 01:20:52 +0700 Subject: [PATCH 2/3] (XMB) Separate xmb_draw_bg and xmb_draw_ribbon. Fixes the black help layer. --- menu/drivers/xmb.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index e494ed77ef..cef581ab10 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1833,7 +1833,10 @@ static void xmb_frame_horizontal_list(xmb_handle_t *xmb, #ifdef XMB_RIBBON_ENABLE static void xmb_draw_ribbon(xmb_handle_t *xmb, menu_display_ctx_draw_t *draw) { - + menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL); + menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL); + menu_display_ctl(MENU_DISPLAY_CTL_DRAW_RIBBON, draw); + menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL); } #endif @@ -1841,16 +1844,9 @@ static void xmb_draw_bg(xmb_handle_t *xmb, menu_display_ctx_draw_t *draw) { menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL); menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL); - -#ifdef XMB_RIBBON_ENABLE - //xmb_draw_ribbon(xmb, draw); - menu_display_ctl(MENU_DISPLAY_CTL_DRAW_RIBBON, draw); -#else draw->x = 0; draw->y = 0; menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, draw); -#endif - menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL); } @@ -1926,7 +1922,11 @@ static void xmb_frame(void *data) && !draw.force_transparency && draw.texture) draw.color = &coord_color2[0]; +#ifdef XMB_RIBBON_ENABLE + xmb_draw_ribbon(xmb, &draw); +#else xmb_draw_bg(xmb, &draw); +#endif xmb_draw_text(xmb, xmb->title_name, xmb->margins.title.left, From 343824858bcebee56f63958f0413cfd3b314d6e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 21 Apr 2016 01:29:37 +0700 Subject: [PATCH 3/3] (XMB) Disable ribbon --- menu/drivers/xmb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index cef581ab10..67424519a9 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -48,7 +48,7 @@ #include "../../tasks/tasks_internal.h" -#if 1 +#if 0 #define XMB_RIBBON_ENABLE #define XMB_RIBBON_ROWS 16 #define XMB_RIBBON_COLS 32