(D3D) Renderchain updates

This commit is contained in:
twinaphex 2015-04-06 16:15:29 +02:00
parent ef1d0987fe
commit 2a6456299e
3 changed files with 23 additions and 18 deletions

View File

@ -108,8 +108,8 @@ static bool d3d_init_shader(void *data)
static void d3d_deinit_chain(d3d_video_t *d3d)
{
renderchain_deinit(d3d->chain);
d3d->chain = NULL;
renderchain_deinit(d3d->renderchain_data);
d3d->renderchain_data = NULL;
#ifdef _XBOX
renderchain_free(d3d);
#endif
@ -869,7 +869,7 @@ static bool d3d_init_imports(d3d_video_t *d3d)
return false;
}
renderchain_add_state_tracker(d3d->chain, state_tracker);
renderchain_add_state_tracker(d3d->renderchain_data, state_tracker);
return true;
}
#endif
@ -901,9 +901,9 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
video_info->input_scale * RARCH_SCALE_BASE;
#endif
d3d->chain = renderchain_new();
d3d->renderchain_data = renderchain_new();
if (!d3d->chain)
if (!d3d->renderchain_data)
return false;
#ifdef _XBOX
@ -912,7 +912,7 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
video_info->rgb32 ?
RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565))
#else
if (!renderchain_init(d3d->chain, &d3d->video_info,
if (!renderchain_init(d3d->renderchain_data, &d3d->video_info,
d3dr, &d3d->final_viewport, &link_info,
d3d->video_info.rgb32 ?
RETRO_PIXEL_FORMAT_XRGB8888 : RETRO_PIXEL_FORMAT_RGB565))
@ -930,7 +930,8 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
for (i = 1; i < d3d->shader.passes; i++)
{
renderchain_convert_geometry(d3d->chain, &link_info,
renderchain_convert_geometry(d3d->renderchain_data,
&link_info,
&out_width, &out_height,
current_width, current_height, &d3d->final_viewport);
@ -941,7 +942,7 @@ static bool d3d_init_chain(d3d_video_t *d3d, const video_info_t *video_info)
current_width = out_width;
current_height = out_height;
if (!renderchain_add_pass(d3d->chain, &link_info))
if (!renderchain_add_pass(d3d->renderchain_data, &link_info))
{
RARCH_ERR("[D3D9]: Failed to add pass.\n");
return false;
@ -1225,7 +1226,8 @@ static bool d3d_init_luts(d3d_video_t *d3d)
for (i = 0; i < d3d->shader.luts; i++)
{
bool ret = renderchain_add_lut(
d3d->chain, d3d->shader.lut[i].id, d3d->shader.lut[i].path,
d3d->renderchain_data,
d3d->shader.lut[i].id, d3d->shader.lut[i].path,
d3d->shader.lut[i].filter == RARCH_FILTER_UNSPEC ?
settings->video.smooth :
(d3d->shader.lut[i].filter == RARCH_FILTER_LINEAR));
@ -1559,7 +1561,7 @@ static bool d3d_frame(void *data, const void *frame,
global->system.aspect_ratio);
renderchain_set_final_viewport(d3d,
d3d->chain, &d3d->final_viewport);
d3d->renderchain_data, &d3d->final_viewport);
d3d->should_resize = false;
}
@ -1590,7 +1592,7 @@ static bool d3d_frame(void *data, const void *frame,
#ifdef _XBOX
d3d,
#else
d3d->chain,
d3d->renderchain_data,
#endif
frame, width, height,
pitch, d3d->dev_rotation))

View File

@ -140,7 +140,7 @@ typedef struct d3d_video
#if defined(HAVE_MENU) && defined(HAVE_OVERLAY)
overlay_t *menu;
#endif
void *chain;
void *renderchain_data;
#ifdef _XBOX
/* TODO _ should all be refactored */

View File

@ -974,7 +974,8 @@ static bool renderchain_set_pass_size(void *data, unsigned pass_index,
return true;
}
static void d3d_recompute_pass_sizes(d3d_video_t *d3d)
static void d3d_recompute_pass_sizes(d3d_video_t *d3d,
void *renderchain_data)
{
unsigned i;
LinkInfo link_info = {0};
@ -986,8 +987,9 @@ static void d3d_recompute_pass_sizes(d3d_video_t *d3d)
unsigned current_height = link_info.tex_h;
unsigned out_width = 0;
unsigned out_height = 0;
cg_renderchain_t *chain = (cg_renderchain_t*)renderchain_data;
if (!renderchain_set_pass_size(d3d->chain, 0,
if (!renderchain_set_pass_size(chain, 0,
current_width, current_height))
{
RARCH_ERR("[D3D]: Failed to set pass size.\n");
@ -996,21 +998,22 @@ static void d3d_recompute_pass_sizes(d3d_video_t *d3d)
for (i = 1; i < d3d->shader.passes; i++)
{
renderchain_convert_geometry(d3d->chain, &link_info,
renderchain_convert_geometry(chain,
&link_info,
&out_width, &out_height,
current_width, current_height, &d3d->final_viewport);
link_info.tex_w = next_pow2(out_width);
link_info.tex_h = next_pow2(out_height);
if (!renderchain_set_pass_size(d3d->chain, i,
if (!renderchain_set_pass_size(chain, i,
link_info.tex_w, link_info.tex_h))
{
RARCH_ERR("[D3D]: Failed to set pass size.\n");
return;
}
current_width = out_width;
current_width = out_width;
current_height = out_height;
link_info.pass = &d3d->shader.pass[i];
@ -1027,7 +1030,7 @@ void renderchain_set_final_viewport(void *data,
if (chain)
chain->final_viewport = (D3DVIEWPORT*)final_viewport;
d3d_recompute_pass_sizes(d3d);
d3d_recompute_pass_sizes(d3d, chain);
}
bool renderchain_add_pass(void *data, const void *info_data)