diff --git a/gfx/d3d/render_chain_cg.cpp b/gfx/d3d/render_chain_cg.cpp index 0b07da7bcc..55bdd986a9 100644 --- a/gfx/d3d/render_chain_cg.cpp +++ b/gfx/d3d/render_chain_cg.cpp @@ -1432,10 +1432,6 @@ bool renderchain_render(void *chain_data, const void *data, return true; } - - - - void renderchain_convert_geometry( void *data, const void *info_data, unsigned *out_width, unsigned *out_height, @@ -1478,3 +1474,20 @@ void renderchain_convert_geometry( break; } } + +renderchain_driver_t cg_d3d9_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, + "cg_d3d9", +}; diff --git a/gfx/d3d/render_chain_driver.h b/gfx/d3d/render_chain_driver.h index 2adf2eebef..e8554aba46 100644 --- a/gfx/d3d/render_chain_driver.h +++ b/gfx/d3d/render_chain_driver.h @@ -36,6 +36,39 @@ enum TEXTURESMASK = TEXTURES - 1 }; +typedef struct renderchain_driver +{ + void (*chain_free)(void *data); + void *(*chain_new)(void); + void (*deinit)(void *data); + void (*deinit_shader)(void); + bool (init_shader)(void *data); + bool (*init_shader_fvf)(void *data, void *pass_data); + bool (*init)(void *data, + const video_info_t *video_info, + void *dev_data, + const void *final_viewport_data, + const void *info_data, + unsigned fmt); + void (*set_final_viewport)(void *data, + void *renderchain_data, const void *viewport_data); + bool (*add_pass)(void *data, const void *info_data); + bool (*add_lut)(void *data, + const char *id, const char *path, + bool smooth); + void (*add_state_tracker)(void *data, void *tracker_data); + bool (*render)(void *chain_data, const void *data, + unsigned width, unsigned height, unsigned pitch, unsigned rotation); + void (*convert_geometry)(void *data, const void *info_data, + unsigned *out_width, unsigned *out_height, + unsigned width, unsigned height, + D3DVIEWPORT *final_viewport); + const char *ident; +} renderchain_driver_t; + +renderchain_driver_t cg_d3d9_renderchain; +renderchain_driver_t xdk_renderchain; + void renderchain_free(void *data); void *renderchain_new(void); diff --git a/gfx/d3d/render_chain_xdk.cpp b/gfx/d3d/render_chain_xdk.cpp index 50a05f674c..3310d30b64 100644 --- a/gfx/d3d/render_chain_xdk.cpp +++ b/gfx/d3d/render_chain_xdk.cpp @@ -358,3 +358,20 @@ bool renderchain_init_shader_fvf(void *data, void *pass_data) return true; } + +renderchain_driver_t xdk_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, + "xdk", +};