More code de-duplication

This commit is contained in:
twinaphex 2018-05-17 17:27:56 +02:00
parent e01a028e24
commit a024da61f4
3 changed files with 36 additions and 69 deletions

View File

@ -1097,40 +1097,6 @@ static void cg_d3d9_renderchain_set_vertices(
vp_width, vp_height);
}
static void cg_d3d9_renderchain_unbind_all(cg_renderchain_t *chain)
{
unsigned i;
/* Have to be a bit anal about it.
* Render targets hate it when they have filters apparently.
*/
for (i = 0; i < chain->chain.bound_tex->count; i++)
{
d3d9_set_sampler_minfilter(chain->chain.dev,
chain->chain.bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_sampler_magfilter(chain->chain.dev,
chain->chain.bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_texture(chain->chain.dev,
chain->chain.bound_tex->data[i], NULL);
}
for (i = 0; i < chain->chain.bound_vert->count; i++)
d3d9_set_stream_source(chain->chain.dev,
chain->chain.bound_vert->data[i], 0, 0, 0);
if (chain->chain.bound_tex)
{
unsigned_vector_list_free(chain->chain.bound_tex);
chain->chain.bound_tex = unsigned_vector_list_new();
}
if (chain->chain.bound_vert)
{
unsigned_vector_list_free(chain->chain.bound_vert);
chain->chain.bound_vert = unsigned_vector_list_new();
}
}
static void cg_d3d9_renderchain_set_params(
cg_renderchain_t *chain,
struct shader_pass *pass,
@ -1228,7 +1194,7 @@ static void cg_d3d9_renderchain_render_pass(
d3d9_set_sampler_minfilter(chain->chain.dev, 0, D3DTEXF_POINT);
d3d9_set_sampler_magfilter(chain->chain.dev, 0, D3DTEXF_POINT);
cg_d3d9_renderchain_unbind_all(chain);
d3d9_renderchain_unbind_all(&chain->chain);
}
static bool d3d9_cg_renderchain_render(

View File

@ -954,39 +954,6 @@ static void hlsl_d3d9_renderchain_set_final_viewport(
d3d9_hlsl_recompute_pass_sizes(chain->chain.dev, chain, d3d);
}
static void hlsl_d3d9_renderchain_unbind_all(hlsl_d3d9_renderchain_t *chain)
{
unsigned i;
/* Have to be a bit anal about it.
* Render targets hate it when they have filters apparently.
*/
for (i = 0; i < chain->chain.bound_tex->count; i++)
{
d3d9_set_sampler_minfilter(chain->chain.dev,
chain->chain.bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_sampler_magfilter(chain->chain.dev,
chain->chain.bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_texture(chain->chain.dev, chain->chain.bound_tex->data[i], NULL);
}
for (i = 0; i < chain->chain.bound_vert->count; i++)
d3d9_set_stream_source(chain->chain.dev,
chain->chain.bound_vert->data[i], 0, 0, 0);
if (chain->chain.bound_tex)
{
unsigned_vector_list_free(chain->chain.bound_tex);
chain->chain.bound_tex = unsigned_vector_list_new();
}
if (chain->chain.bound_vert)
{
unsigned_vector_list_free(chain->chain.bound_vert);
chain->chain.bound_vert = unsigned_vector_list_new();
}
}
static void hlsl_d3d9_renderchain_render_pass(
hlsl_d3d9_renderchain_t *chain,
struct shader_pass *pass,
@ -1059,7 +1026,7 @@ static void hlsl_d3d9_renderchain_render_pass(
d3d9_set_sampler_minfilter(chain->chain.dev, 0, D3DTEXF_POINT);
d3d9_set_sampler_magfilter(chain->chain.dev, 0, D3DTEXF_POINT);
hlsl_d3d9_renderchain_unbind_all(chain);
d3d9_renderchain_unbind_all(&chain->chain);
}
static void d3d9_hlsl_renderchain_start_render(hlsl_d3d9_renderchain_t *chain)

View File

@ -154,6 +154,40 @@ static INLINE void d3d9_cg_renderchain_add_lut_internal(
unsigned_vector_list_append(chain->bound_tex, index);
}
static INLINE void d3d9_renderchain_unbind_all(d3d9_renderchain_t *chain)
{
unsigned i;
/* Have to be a bit anal about it.
* Render targets hate it when they have filters apparently.
*/
for (i = 0; i < chain->bound_tex->count; i++)
{
d3d9_set_sampler_minfilter(chain->dev,
chain->bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_sampler_magfilter(chain->dev,
chain->bound_tex->data[i], D3DTEXF_POINT);
d3d9_set_texture(chain->dev,
chain->bound_tex->data[i], NULL);
}
for (i = 0; i < chain->bound_vert->count; i++)
d3d9_set_stream_source(chain->dev,
chain->bound_vert->data[i], 0, 0, 0);
if (chain->bound_tex)
{
unsigned_vector_list_free(chain->bound_tex);
chain->bound_tex = unsigned_vector_list_new();
}
if (chain->bound_vert)
{
unsigned_vector_list_free(chain->bound_vert);
chain->bound_vert = unsigned_vector_list_new();
}
}
static INLINE void d3d9_init_renderchain(d3d9_renderchain_t *chain)
{
chain->passes = shader_pass_vector_list_new();