From 9029bd96d6d9a01758c65e282d500cf04d527169 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 9 Jan 2016 03:57:13 +0100 Subject: [PATCH] Move renderchain->init_driver_shader to top of renderchain->init function --- gfx/d3d/d3d.cpp | 10 ++-------- gfx/d3d/render_chain_cg.cpp | 8 ++++++-- gfx/d3d/render_chain_driver.h | 1 - gfx/d3d/render_chain_null.c | 8 -------- gfx/d3d/render_chain_xdk.cpp | 4 ++++ 5 files changed, 12 insertions(+), 19 deletions(-) diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 88b518d75f..6a16fc5b06 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -1086,14 +1086,6 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info) if (!d3d->renderchain_driver || !d3d->renderchain_data) return false; - RARCH_LOG("Renderchain driver: %s\n", d3d->renderchain_driver->ident); - - if (!d3d->renderchain_driver->init_shader(d3d, d3d->renderchain_data)) - { - RARCH_ERR("Failed to initialize shader subsystem.\n"); - return false; - } - if ( !d3d->renderchain_driver->init( d3d, @@ -1106,6 +1098,8 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info) return false; } + RARCH_LOG("Renderchain driver: %s\n", d3d->renderchain_driver->ident); + #ifndef _XBOX current_width = link_info.tex_w; current_height = link_info.tex_h; diff --git a/gfx/d3d/render_chain_cg.cpp b/gfx/d3d/render_chain_cg.cpp index 8f8dfcf386..ad2e8ef9a7 100644 --- a/gfx/d3d/render_chain_cg.cpp +++ b/gfx/d3d/render_chain_cg.cpp @@ -881,9 +881,14 @@ static bool cg_d3d9_renderchain_init(void *data, cg_renderchain_t *chain = (cg_renderchain_t*)d3d->renderchain_data; const video_info_t *video_info = (const video_info_t*)_video_info; unsigned fmt = (rgb32) ? RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565; - + if (!chain) return false; + if (!cg_d3d9_renderchain_init_shader(d3d, chain)) + { + RARCH_ERR("Failed to initialize shader subsystem.\n"); + return false; + } chain->dev = (LPDIRECT3DDEVICE)dev_; chain->video_info = video_info; @@ -1618,7 +1623,6 @@ static void cg_d3d9_renderchain_viewport_info(void *data, struct video_viewport renderchain_driver_t cg_d3d9_renderchain = { cg_d3d9_renderchain_free, cg_d3d9_renderchain_new, - cg_d3d9_renderchain_init_shader, NULL, cg_d3d9_renderchain_init, cg_d3d9_renderchain_set_final_viewport, diff --git a/gfx/d3d/render_chain_driver.h b/gfx/d3d/render_chain_driver.h index f54bfd2826..db7e20913c 100644 --- a/gfx/d3d/render_chain_driver.h +++ b/gfx/d3d/render_chain_driver.h @@ -45,7 +45,6 @@ typedef struct renderchain_driver { void (*chain_free)(void *data); void *(*chain_new)(void); - bool (*init_shader)(void *data, void *renderchain_data); bool (*reinit)(void *data, const void *info_data); bool (*init)(void *data, const void *video_info_data, diff --git a/gfx/d3d/render_chain_null.c b/gfx/d3d/render_chain_null.c index 3a538c60ea..4011ea9a85 100644 --- a/gfx/d3d/render_chain_null.c +++ b/gfx/d3d/render_chain_null.c @@ -36,13 +36,6 @@ static void *null_renderchain_new(void) return renderchain; } -static bool null_renderchain_init_shader(void *data, void *renderchain_data) -{ - (void)data; - - return true; -} - static bool null_renderchain_init(void *data, const void *info, void *dev_data, @@ -126,7 +119,6 @@ static void null_renderchain_convert_geometry( renderchain_driver_t null_renderchain = { null_renderchain_free, null_renderchain_new, - null_renderchain_init_shader, NULL, null_renderchain_init, null_renderchain_set_final_viewport, diff --git a/gfx/d3d/render_chain_xdk.cpp b/gfx/d3d/render_chain_xdk.cpp index 478c2010fe..2319d2facd 100644 --- a/gfx/d3d/render_chain_xdk.cpp +++ b/gfx/d3d/render_chain_xdk.cpp @@ -292,6 +292,7 @@ static bool xdk_renderchain_init_shader(void *data, void *renderchain_data) const char *shader_path = NULL; settings_t *settings = config_get_ptr(); #endif + (void)renderchain_data; if (!d3d) return false; @@ -324,6 +325,9 @@ static bool xdk_renderchain_init(void *data, unsigned fmt = (rgb32) ? RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565; struct video_viewport *custom_vp = video_viewport_get_custom(); (void)final_viewport_data; + + if (!xdk_renderchain_init_shader(d3d, NULL)) + return false; video_driver_get_size(&width, &height);