Take out add_state_tracker function callback for D3D9 renderchain
This commit is contained in:
parent
dad1e9e52a
commit
232d3f4d92
|
@ -51,8 +51,8 @@ typedef struct d3d9_renderchain_driver
|
|||
bool (*add_lut)(void *data,
|
||||
const char *id, const char *path,
|
||||
bool smooth);
|
||||
void (*add_state_tracker)(void *data, void *tracker_data);
|
||||
bool (*render)(d3d9_video_t *d3d, const void *frame,
|
||||
bool (*render)(d3d9_video_t *d3d, state_tracker_t *tracker,
|
||||
const void *frame,
|
||||
unsigned width, unsigned height, unsigned pitch, unsigned rotation);
|
||||
void (*convert_geometry)(void *data, const struct LinkInfo *info,
|
||||
unsigned *out_width, unsigned *out_height,
|
||||
|
@ -86,6 +86,7 @@ typedef struct d3d9_video
|
|||
math_matrix_4x4 mvp_rotate;
|
||||
math_matrix_4x4 mvp_transposed;
|
||||
|
||||
state_tracker_t *state_tracker;
|
||||
struct video_viewport vp;
|
||||
struct video_shader shader;
|
||||
video_info_t video_info;
|
||||
|
|
|
@ -129,8 +129,7 @@ static bool d3d9_init_imports(d3d9_video_t *d3d)
|
|||
return false;
|
||||
}
|
||||
|
||||
d3d->renderchain_driver->add_state_tracker(
|
||||
d3d->renderchain_data, state_tracker);
|
||||
d3d->state_tracker = state_tracker;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -319,13 +318,10 @@ static bool d3d9_init_chain(d3d9_video_t *d3d, const video_info_t *video_info)
|
|||
}
|
||||
}
|
||||
|
||||
if (d3d->renderchain_driver->add_state_tracker)
|
||||
if (!d3d9_init_imports(d3d))
|
||||
{
|
||||
if (!d3d9_init_imports(d3d))
|
||||
{
|
||||
RARCH_ERR("[D3D9]: Failed to init imports.\n");
|
||||
return false;
|
||||
}
|
||||
RARCH_ERR("[D3D9]: Failed to init imports.\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -611,6 +607,11 @@ static void d3d9_deinitialize(d3d9_video_t *d3d)
|
|||
|
||||
d3d9_deinit_chain(d3d);
|
||||
d3d9_vertex_buffer_free(d3d->menu_display.buffer, d3d->menu_display.decl);
|
||||
|
||||
if (d3d->state_tracker)
|
||||
state_tracker_free(d3d->state_tracker);
|
||||
|
||||
d3d->state_tracker = NULL;
|
||||
d3d->menu_display.buffer = NULL;
|
||||
d3d->menu_display.decl = NULL;
|
||||
}
|
||||
|
@ -1646,7 +1647,7 @@ static bool d3d9_frame(void *data, const void *frame,
|
|||
}
|
||||
|
||||
if (!d3d->renderchain_driver->render(
|
||||
d3d,
|
||||
d3d, d3d->state_tracker,
|
||||
frame, frame_width, frame_height,
|
||||
pitch, d3d->dev_rotation))
|
||||
{
|
||||
|
|
|
@ -122,7 +122,6 @@ typedef struct cg_renderchain
|
|||
struct unsigned_vector_list *bound_tex;
|
||||
struct unsigned_vector_list *bound_vert;
|
||||
struct lut_info_vector_list *luts;
|
||||
state_tracker_t *state_tracker;
|
||||
CGcontext cgCtx;
|
||||
} cg_renderchain_t;
|
||||
|
||||
|
@ -696,12 +695,6 @@ static void d3d9_cg_destroy_resources(void *data)
|
|||
d3d9_texture_free(cg_data->luts->data[i].tex);
|
||||
}
|
||||
|
||||
if (cg_data->state_tracker)
|
||||
{
|
||||
state_tracker_free(cg_data->state_tracker);
|
||||
cg_data->state_tracker = NULL;
|
||||
}
|
||||
|
||||
cgD3D9UnloadAllPrograms();
|
||||
cgD3D9SetDevice(NULL);
|
||||
}
|
||||
|
@ -870,7 +863,6 @@ static bool d3d9_cg_renderchain_init(
|
|||
}
|
||||
|
||||
chain->dev = dev;
|
||||
chain->state_tracker = NULL;
|
||||
chain->final_viewport = (D3DVIEWPORT9*)final_viewport;
|
||||
chain->frame_count = 0;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
|
@ -1115,16 +1107,6 @@ static bool d3d9_cg_renderchain_add_lut(void *data,
|
|||
return true;
|
||||
}
|
||||
|
||||
static void d3d9_cg_renderchain_add_state_tracker(
|
||||
void *data, void *tracker_data)
|
||||
{
|
||||
state_tracker_t *tracker = (state_tracker_t*)tracker_data;
|
||||
cg_renderchain_t *chain = (cg_renderchain_t*)data;
|
||||
if (chain->state_tracker)
|
||||
state_tracker_free(chain->state_tracker);
|
||||
chain->state_tracker = tracker;
|
||||
}
|
||||
|
||||
static void d3d9_cg_renderchain_start_render(cg_renderchain_t *chain)
|
||||
{
|
||||
chain->passes->data[0].tex = chain->prev.tex[chain->prev.ptr];
|
||||
|
@ -1324,36 +1306,34 @@ static void cg_d3d9_renderchain_unbind_all(cg_renderchain_t *chain)
|
|||
static void cg_d3d9_renderchain_set_params(
|
||||
cg_renderchain_t *chain,
|
||||
struct cg_pass *pass,
|
||||
state_tracker_t *tracker,
|
||||
unsigned pass_index)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
/* Set state parameters. */
|
||||
if (chain->state_tracker)
|
||||
/* Only query uniforms in first pass. */
|
||||
static struct state_tracker_uniform tracker_info[GFX_MAX_VARIABLES];
|
||||
static unsigned cnt = 0;
|
||||
|
||||
if (pass_index == 1)
|
||||
cnt = state_tracker_get_uniform(chain->state_tracker, tracker_info,
|
||||
GFX_MAX_VARIABLES, chain->frame_count);
|
||||
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
/* Only query uniforms in first pass. */
|
||||
static struct state_tracker_uniform tracker_info[GFX_MAX_VARIABLES];
|
||||
static unsigned cnt = 0;
|
||||
|
||||
if (pass_index == 1)
|
||||
cnt = state_tracker_get_uniform(chain->state_tracker, tracker_info,
|
||||
GFX_MAX_VARIABLES, chain->frame_count);
|
||||
|
||||
for (i = 0; i < cnt; i++)
|
||||
{
|
||||
CGparameter param_f = cgGetNamedParameter(
|
||||
pass->fPrg, tracker_info[i].id);
|
||||
CGparameter param_v = cgGetNamedParameter(
|
||||
pass->vPrg, tracker_info[i].id);
|
||||
d3d9_cg_set_param_1f(param_f, &tracker_info[i].value);
|
||||
d3d9_cg_set_param_1f(param_v, &tracker_info[i].value);
|
||||
}
|
||||
CGparameter param_f = cgGetNamedParameter(
|
||||
pass->fPrg, tracker_info[i].id);
|
||||
CGparameter param_v = cgGetNamedParameter(
|
||||
pass->vPrg, tracker_info[i].id);
|
||||
d3d9_cg_set_param_1f(param_f, &tracker_info[i].value);
|
||||
d3d9_cg_set_param_1f(param_v, &tracker_info[i].value);
|
||||
}
|
||||
}
|
||||
|
||||
static void cg_d3d9_renderchain_render_pass(
|
||||
cg_renderchain_t *chain,
|
||||
struct cg_pass *pass,
|
||||
state_tracker_t *tracker,
|
||||
unsigned pass_index)
|
||||
{
|
||||
unsigned i, index;
|
||||
|
@ -1407,7 +1387,8 @@ static void cg_d3d9_renderchain_render_pass(
|
|||
|
||||
d3d9_cg_renderchain_bind_pass(chain, pass, pass_index);
|
||||
|
||||
cg_d3d9_renderchain_set_params(chain, pass, pass_index);
|
||||
if (tracker)
|
||||
cg_d3d9_renderchain_set_params(chain, pass, tracker, pass_index);
|
||||
|
||||
d3d9_draw_primitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
|
||||
|
@ -1421,6 +1402,7 @@ static void cg_d3d9_renderchain_render_pass(
|
|||
|
||||
static bool d3d9_cg_renderchain_render(
|
||||
d3d9_video_t *d3d,
|
||||
state_tracker_t *tracker,
|
||||
const void *frame_data,
|
||||
unsigned width, unsigned height,
|
||||
unsigned pitch, unsigned rotation)
|
||||
|
@ -1479,7 +1461,8 @@ static bool d3d9_cg_renderchain_render(
|
|||
out_width, out_height, 0);
|
||||
|
||||
if (chain)
|
||||
cg_d3d9_renderchain_render_pass(chain, from_pass, i + 1);
|
||||
cg_d3d9_renderchain_render_pass(chain, tracker,
|
||||
from_pass, i + 1);
|
||||
|
||||
current_width = out_width;
|
||||
current_height = out_height;
|
||||
|
@ -1505,7 +1488,7 @@ static bool d3d9_cg_renderchain_render(
|
|||
rotation);
|
||||
|
||||
if (chain)
|
||||
cg_d3d9_renderchain_render_pass(chain,
|
||||
cg_d3d9_renderchain_render_pass(chain, tracker,
|
||||
last_pass, chain->passes->count);
|
||||
|
||||
chain->frame_count++;
|
||||
|
@ -1620,7 +1603,6 @@ d3d9_renderchain_driver_t cg_d3d9_renderchain = {
|
|||
d3d9_cg_renderchain_set_final_viewport,
|
||||
d3d9_cg_renderchain_add_pass,
|
||||
d3d9_cg_renderchain_add_lut,
|
||||
d3d9_cg_renderchain_add_state_tracker,
|
||||
d3d9_cg_renderchain_render,
|
||||
d3d9_cg_renderchain_convert_geometry,
|
||||
d3d9_cg_renderchain_set_font_rect,
|
||||
|
|
|
@ -282,9 +282,6 @@ static bool hlsl_d3d9_renderchain_init(
|
|||
}
|
||||
|
||||
chain->dev = dev;
|
||||
#if 0
|
||||
chain->state_tracker = NULL;
|
||||
#endif
|
||||
chain->final_viewport = (D3DVIEWPORT9*)final_viewport;
|
||||
chain->frame_count = 0;
|
||||
chain->pixel_size = (fmt == RETRO_PIXEL_FORMAT_RGB565) ? 2 : 4;
|
||||
|
@ -305,6 +302,7 @@ static void hlsl_d3d9_renderchain_set_final_viewport(
|
|||
|
||||
static bool hlsl_d3d9_renderchain_render(
|
||||
d3d9_video_t *d3d,
|
||||
state_tracker_t *tracker,
|
||||
const void *frame,
|
||||
unsigned frame_width, unsigned frame_height,
|
||||
unsigned pitch, unsigned rotation)
|
||||
|
@ -350,15 +348,6 @@ static bool hlsl_d3d9_renderchain_add_pass(
|
|||
return true;
|
||||
}
|
||||
|
||||
static void hlsl_d3d9_renderchain_add_state_tracker(
|
||||
void *data, void *tracker_data)
|
||||
{
|
||||
(void)data;
|
||||
(void)tracker_data;
|
||||
|
||||
/* stub */
|
||||
}
|
||||
|
||||
static void hlsl_d3d9_renderchain_convert_geometry(
|
||||
void *data, const struct LinkInfo *info,
|
||||
unsigned *out_width, unsigned *out_height,
|
||||
|
@ -380,7 +369,6 @@ d3d9_renderchain_driver_t hlsl_d3d9_renderchain = {
|
|||
hlsl_d3d9_renderchain_set_final_viewport,
|
||||
hlsl_d3d9_renderchain_add_pass,
|
||||
NULL,
|
||||
hlsl_d3d9_renderchain_add_state_tracker,
|
||||
hlsl_d3d9_renderchain_render,
|
||||
hlsl_d3d9_renderchain_convert_geometry,
|
||||
NULL,
|
||||
|
|
Loading…
Reference in New Issue