diff --git a/Makefile.common b/Makefile.common index 6efc842b1d..8aefafaced 100644 --- a/Makefile.common +++ b/Makefile.common @@ -583,6 +583,7 @@ endif ifeq ($(HAVE_D3D9), 1) OBJ += gfx/d3d/d3d.o \ gfx/d3d/render_chain_cg.o \ + gfx/d3d/render_chain_null.o \ gfx/d3d/d3d_wrapper.o \ gfx/drivers_font/d3d_w32_font.o \ gfx/drivers_context/d3d_ctx.o diff --git a/gfx/d3d/d3d.h b/gfx/d3d/d3d.h index 0e016006d8..4093587ddb 100644 --- a/gfx/d3d/d3d.h +++ b/gfx/d3d/d3d.h @@ -140,6 +140,7 @@ typedef struct d3d_video #if defined(HAVE_MENU) && defined(HAVE_OVERLAY) overlay_t *menu; #endif + renderchain_driver_t *renderchain_driver; void *renderchain_data; #ifdef _XBOX diff --git a/gfx/d3d/render_chain_driver.h b/gfx/d3d/render_chain_driver.h index c048493d62..46e17abe73 100644 --- a/gfx/d3d/render_chain_driver.h +++ b/gfx/d3d/render_chain_driver.h @@ -68,6 +68,7 @@ typedef struct renderchain_driver extern renderchain_driver_t cg_d3d9_renderchain; extern renderchain_driver_t xdk_renderchain; +extern renderchain_driver_t null_renderchain; void renderchain_free(void *data); diff --git a/gfx/d3d/render_chain_null.cpp b/gfx/d3d/render_chain_null.cpp new file mode 100644 index 0000000000..060153bb6b --- /dev/null +++ b/gfx/d3d/render_chain_null.cpp @@ -0,0 +1,169 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2014 - Hans-Kristian Arntzen + * Copyright (C) 2011-2015 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#include +#include +#include "render_chain_driver.h" + +typedef struct null_renderchain +{ + void *empty; +} null_renderchain_t; + +static void renderchain_blit_to_texture( + void *data, const void *frame, + unsigned width, unsigned height, unsigned pitch) +{ + (void)data; + (void)frame; + (void)width; + (void)height; + (void)pitch; +} + +void renderchain_free(void *data) +{ +} + +void renderchain_deinit(void *data) +{ + null_renderchain_t *renderchain = (null_renderchain_t*)data; + + if (renderchain) + free(renderchain); +} + +void *renderchain_new(void) +{ + null_renderchain_t *renderchain = (null_renderchain_t*)calloc(1, sizeof(*renderchain)); + if (!renderchain) + return NULL; + + return renderchain; +} + +void renderchain_deinit_shader(void) +{ +} + +bool renderchain_init_shader(void *data) +{ + (void)data; + + return true; +} + +bool renderchain_init(void *data, + const video_info_t *info, + void *dev_data, + const void *final_viewport_data, + const void *info_data, + unsigned fmt + ) +{ + (void)data; + (void)info; + (void)dev_data; + (void)final_viewport_data; + (void)info_data; + (void)fmt; + + return true; +} + +void renderchain_set_final_viewport(void *data, + void *renderchain_data, const void *viewport_data) +{ + (void)data; + (void)renderchain_data; + (void)viewport_data; +} + +bool renderchain_render(void *data, const void *frame, + unsigned width, unsigned height, + unsigned pitch, unsigned rotation) +{ + (void)data; + (void)frame; + (void)width; + (void)height; + (void)pitch; + (void)rotation; + + return true; +} + +bool renderchain_init_shader_fvf(void *data, void *pass_data) +{ + (void)data; + (void)pass_data; + + return true; +} + +void renderchain_add_lut(void *data, + unsigned index, unsigned i) +{ + (void)data; + (void)index; + (void)i; +} + +bool renderchain_add_pass(void *data, const void *info_data) +{ + (void)data; + (void)info_data; + + return true; +} + +void renderchain_add_state_tracker(void *data, void *tracker_data) +{ + (void)data; + (void)tracker_data; +} + +void renderchain_convert_geometry( + void *data, const void *info_data, + unsigned *out_width, unsigned *out_height, + unsigned width, unsigned height, + D3DVIEWPORT *final_viewport) +{ + (void)data; + (void)info_data; + (void)out_width; + (void)out_height; + (void)width; + (void)height; + (void)final_viewport; +} + +renderchain_driver_t null_renderchain = { + renderchain_free, + renderchain_new, + renderchain_deinit, + renderchain_deinit_shader, + renderchain_init_shader, + renderchain_init_shader_fvf, + renderchain_init, + renderchain_set_final_viewport, + renderchain_add_pass, + renderchain_add_lut, + renderchain_add_state_tracker, + renderchain_render, + renderchain_convert_geometry, + "null", +};