Move more common code to d3d9_renderchain.h
This commit is contained in:
parent
a024da61f4
commit
f8b7104ef2
|
@ -194,7 +194,7 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_set_shader_params(
|
static void d3d9_cg_renderchain_set_shader_params(
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass,
|
struct shader_pass *pass,
|
||||||
unsigned video_w, unsigned video_h,
|
unsigned video_w, unsigned video_h,
|
||||||
unsigned tex_w, unsigned tex_h,
|
unsigned tex_w, unsigned tex_h,
|
||||||
|
@ -219,10 +219,10 @@ static void d3d9_cg_renderchain_set_shader_params(
|
||||||
set_cg_param(pass->vprg, "IN.output_size", &output_size);
|
set_cg_param(pass->vprg, "IN.output_size", &output_size);
|
||||||
set_cg_param(pass->fprg, "IN.output_size", &output_size);
|
set_cg_param(pass->fprg, "IN.output_size", &output_size);
|
||||||
|
|
||||||
frame_cnt = chain->chain.frame_count;
|
frame_cnt = chain->frame_count;
|
||||||
|
|
||||||
if (pass->info.pass->frame_count_mod)
|
if (pass->info.pass->frame_count_mod)
|
||||||
frame_cnt = chain->chain.frame_count
|
frame_cnt = chain->frame_count
|
||||||
% pass->info.pass->frame_count_mod;
|
% pass->info.pass->frame_count_mod;
|
||||||
|
|
||||||
set_cg_param(pass->fprg, "IN.frame_count", &frame_cnt);
|
set_cg_param(pass->fprg, "IN.frame_count", &frame_cnt);
|
||||||
|
@ -379,13 +379,13 @@ static bool d3d9_cg_renderchain_init_shader_fvf(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_bind_orig(
|
static void d3d9_cg_renderchain_bind_orig(
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass)
|
struct shader_pass *pass)
|
||||||
{
|
{
|
||||||
CGparameter param;
|
CGparameter param;
|
||||||
float video_size[2];
|
float video_size[2];
|
||||||
float texture_size[2];
|
float texture_size[2];
|
||||||
struct shader_pass *first_pass = (struct shader_pass*)&chain->chain.passes->data[0];
|
struct shader_pass *first_pass = (struct shader_pass*)&chain->passes->data[0];
|
||||||
video_size[0] = first_pass->last_width;
|
video_size[0] = first_pass->last_width;
|
||||||
video_size[1] = first_pass->last_height;
|
video_size[1] = first_pass->last_height;
|
||||||
texture_size[0] = first_pass->info.tex_w;
|
texture_size[0] = first_pass->info.tex_w;
|
||||||
|
@ -401,14 +401,14 @@ static void d3d9_cg_renderchain_bind_orig(
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
d3d9_set_texture(chain->chain.dev, index, first_pass->tex);
|
d3d9_set_texture(chain->dev, index, first_pass->tex);
|
||||||
d3d9_set_sampler_magfilter(chain->chain.dev, index,
|
d3d9_set_sampler_magfilter(chain->dev, index,
|
||||||
d3d_translate_filter(first_pass->info.pass->filter));
|
d3d_translate_filter(first_pass->info.pass->filter));
|
||||||
d3d9_set_sampler_minfilter(chain->chain.dev, index,
|
d3d9_set_sampler_minfilter(chain->dev, index,
|
||||||
d3d_translate_filter(first_pass->info.pass->filter));
|
d3d_translate_filter(first_pass->info.pass->filter));
|
||||||
d3d9_set_sampler_address_u(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_u(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
d3d9_set_sampler_address_v(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_v(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
unsigned_vector_list_append(chain->chain.bound_tex, index);
|
unsigned_vector_list_append(chain->bound_tex, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass->vprg, "ORIG.tex_coord");
|
param = cgGetNamedParameter(pass->vprg, "ORIG.tex_coord");
|
||||||
|
@ -419,13 +419,13 @@ static void d3d9_cg_renderchain_bind_orig(
|
||||||
pass->attrib_map;
|
pass->attrib_map;
|
||||||
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
||||||
|
|
||||||
d3d9_set_stream_source(chain->chain.dev, index,
|
d3d9_set_stream_source(chain->dev, index,
|
||||||
vert_buf, 0, sizeof(struct D3D9Vertex));
|
vert_buf, 0, sizeof(struct D3D9Vertex));
|
||||||
unsigned_vector_list_append(chain->chain.bound_vert, index);
|
unsigned_vector_list_append(chain->bound_vert, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_bind_prev(cg_renderchain_t *chain,
|
static void d3d9_cg_renderchain_bind_prev(d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass)
|
struct shader_pass *pass)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -444,8 +444,8 @@ static void d3d9_cg_renderchain_bind_prev(cg_renderchain_t *chain,
|
||||||
"PREV6",
|
"PREV6",
|
||||||
};
|
};
|
||||||
|
|
||||||
texture_size[0] = chain->chain.passes->data[0].info.tex_w;
|
texture_size[0] = chain->passes->data[0].info.tex_w;
|
||||||
texture_size[1] = chain->chain.passes->data[0].info.tex_h;
|
texture_size[1] = chain->passes->data[0].info.tex_h;
|
||||||
|
|
||||||
for (i = 0; i < TEXTURES - 1; i++)
|
for (i = 0; i < TEXTURES - 1; i++)
|
||||||
{
|
{
|
||||||
|
@ -457,10 +457,10 @@ static void d3d9_cg_renderchain_bind_prev(cg_renderchain_t *chain,
|
||||||
snprintf(attr_tex_size, sizeof(attr_tex_size), "%s.texture_size", prev_names[i]);
|
snprintf(attr_tex_size, sizeof(attr_tex_size), "%s.texture_size", prev_names[i]);
|
||||||
snprintf(attr_coord, sizeof(attr_coord), "%s.tex_coord", prev_names[i]);
|
snprintf(attr_coord, sizeof(attr_coord), "%s.tex_coord", prev_names[i]);
|
||||||
|
|
||||||
video_size[0] = chain->chain.prev.last_width[
|
video_size[0] = chain->prev.last_width[
|
||||||
(chain->chain.prev.ptr - (i + 1)) & TEXTURESMASK];
|
(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
video_size[1] = chain->chain.prev.last_height[
|
video_size[1] = chain->prev.last_height[
|
||||||
(chain->chain.prev.ptr - (i + 1)) & TEXTURESMASK];
|
(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
|
|
||||||
set_cg_param(pass->vprg, attr_input_size, &video_size);
|
set_cg_param(pass->vprg, attr_input_size, &video_size);
|
||||||
set_cg_param(pass->fprg, attr_input_size, &video_size);
|
set_cg_param(pass->fprg, attr_input_size, &video_size);
|
||||||
|
@ -474,38 +474,38 @@ static void d3d9_cg_renderchain_bind_prev(cg_renderchain_t *chain,
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
|
|
||||||
tex = (LPDIRECT3DTEXTURE9)
|
tex = (LPDIRECT3DTEXTURE9)
|
||||||
chain->chain.prev.tex[
|
chain->prev.tex[
|
||||||
(chain->chain.prev.ptr - (i + 1)) & TEXTURESMASK];
|
(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
|
|
||||||
d3d9_set_texture(chain->chain.dev, index, tex);
|
d3d9_set_texture(chain->dev, index, tex);
|
||||||
unsigned_vector_list_append(chain->chain.bound_tex, index);
|
unsigned_vector_list_append(chain->bound_tex, index);
|
||||||
|
|
||||||
d3d9_set_sampler_magfilter(chain->chain.dev, index,
|
d3d9_set_sampler_magfilter(chain->dev, index,
|
||||||
d3d_translate_filter(chain->chain.passes->data[0].info.pass->filter));
|
d3d_translate_filter(chain->passes->data[0].info.pass->filter));
|
||||||
d3d9_set_sampler_minfilter(chain->chain.dev, index,
|
d3d9_set_sampler_minfilter(chain->dev, index,
|
||||||
d3d_translate_filter(chain->chain.passes->data[0].info.pass->filter));
|
d3d_translate_filter(chain->passes->data[0].info.pass->filter));
|
||||||
d3d9_set_sampler_address_u(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_u(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
d3d9_set_sampler_address_v(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_v(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass->vprg, attr_coord);
|
param = cgGetNamedParameter(pass->vprg, attr_coord);
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
LPDIRECT3DVERTEXBUFFER9 vert_buf = (LPDIRECT3DVERTEXBUFFER9)
|
LPDIRECT3DVERTEXBUFFER9 vert_buf = (LPDIRECT3DVERTEXBUFFER9)
|
||||||
chain->chain.prev.vertex_buf[
|
chain->prev.vertex_buf[
|
||||||
(chain->chain.prev.ptr - (i + 1)) & TEXTURESMASK];
|
(chain->prev.ptr - (i + 1)) & TEXTURESMASK];
|
||||||
struct unsigned_vector_list *attrib_map = (struct unsigned_vector_list*)pass->attrib_map;
|
struct unsigned_vector_list *attrib_map = (struct unsigned_vector_list*)pass->attrib_map;
|
||||||
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
||||||
|
|
||||||
d3d9_set_stream_source(chain->chain.dev, index,
|
d3d9_set_stream_source(chain->dev, index,
|
||||||
vert_buf, 0, sizeof(struct D3D9Vertex));
|
vert_buf, 0, sizeof(struct D3D9Vertex));
|
||||||
unsigned_vector_list_append(chain->chain.bound_vert, index);
|
unsigned_vector_list_append(chain->bound_vert, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_bind_pass(
|
static void d3d9_cg_renderchain_bind_pass(
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass, unsigned pass_index)
|
struct shader_pass *pass, unsigned pass_index)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -520,7 +520,7 @@ static void d3d9_cg_renderchain_bind_pass(
|
||||||
char attr_input_size[64] = {0};
|
char attr_input_size[64] = {0};
|
||||||
char attr_tex_size[64] = {0};
|
char attr_tex_size[64] = {0};
|
||||||
char attr_coord[64] = {0};
|
char attr_coord[64] = {0};
|
||||||
struct shader_pass *curr_pass = (struct shader_pass*)&chain->chain.passes->data[i];
|
struct shader_pass *curr_pass = (struct shader_pass*)&chain->passes->data[i];
|
||||||
|
|
||||||
snprintf(pass_base, sizeof(pass_base), "PASS%u", i);
|
snprintf(pass_base, sizeof(pass_base), "PASS%u", i);
|
||||||
snprintf(attr_texture, sizeof(attr_texture), "%s.texture", pass_base);
|
snprintf(attr_texture, sizeof(attr_texture), "%s.texture", pass_base);
|
||||||
|
@ -542,15 +542,15 @@ static void d3d9_cg_renderchain_bind_pass(
|
||||||
if (param)
|
if (param)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(param);
|
unsigned index = cgGetParameterResourceIndex(param);
|
||||||
unsigned_vector_list_append(chain->chain.bound_tex, index);
|
unsigned_vector_list_append(chain->bound_tex, index);
|
||||||
|
|
||||||
d3d9_set_texture(chain->chain.dev, index, curr_pass->tex);
|
d3d9_set_texture(chain->dev, index, curr_pass->tex);
|
||||||
d3d9_set_sampler_magfilter(chain->chain.dev, index,
|
d3d9_set_sampler_magfilter(chain->dev, index,
|
||||||
d3d_translate_filter(curr_pass->info.pass->filter));
|
d3d_translate_filter(curr_pass->info.pass->filter));
|
||||||
d3d9_set_sampler_minfilter(chain->chain.dev, index,
|
d3d9_set_sampler_minfilter(chain->dev, index,
|
||||||
d3d_translate_filter(curr_pass->info.pass->filter));
|
d3d_translate_filter(curr_pass->info.pass->filter));
|
||||||
d3d9_set_sampler_address_u(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_u(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
d3d9_set_sampler_address_v(chain->chain.dev, index, D3DTADDRESS_BORDER);
|
d3d9_set_sampler_address_v(chain->dev, index, D3DTADDRESS_BORDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
param = cgGetNamedParameter(pass->vprg, attr_coord);
|
param = cgGetNamedParameter(pass->vprg, attr_coord);
|
||||||
|
@ -560,9 +560,9 @@ static void d3d9_cg_renderchain_bind_pass(
|
||||||
(struct unsigned_vector_list*)pass->attrib_map;
|
(struct unsigned_vector_list*)pass->attrib_map;
|
||||||
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
unsigned index = attrib_map->data[cgGetParameterResourceIndex(param)];
|
||||||
|
|
||||||
d3d9_set_stream_source(chain->chain.dev, index, curr_pass->vertex_buf,
|
d3d9_set_stream_source(chain->dev, index, curr_pass->vertex_buf,
|
||||||
0, sizeof(struct D3D9Vertex));
|
0, sizeof(struct D3D9Vertex));
|
||||||
unsigned_vector_list_append(chain->chain.bound_vert, index);
|
unsigned_vector_list_append(chain->bound_vert, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -965,25 +965,6 @@ static bool d3d9_cg_renderchain_add_lut(void *data,
|
||||||
return d3d9_renderchain_add_lut(chain, id, path, smooth);
|
return d3d9_renderchain_add_lut(chain, id, path, smooth);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_start_render(cg_renderchain_t *chain)
|
|
||||||
{
|
|
||||||
chain->chain.passes->data[0].tex = chain->chain.prev.tex[
|
|
||||||
chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].vertex_buf = chain->chain.prev.vertex_buf[
|
|
||||||
chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].last_width = chain->chain.prev.last_width[
|
|
||||||
chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].last_height = chain->chain.prev.last_height[
|
|
||||||
chain->chain.prev.ptr];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_end_render(cg_renderchain_t *chain)
|
|
||||||
{
|
|
||||||
chain->chain.prev.last_width[chain->chain.prev.ptr] = chain->chain.passes->data[0].last_width;
|
|
||||||
chain->chain.prev.last_height[chain->chain.prev.ptr] = chain->chain.passes->data[0].last_height;
|
|
||||||
chain->chain.prev.ptr = (chain->chain.prev.ptr + 1) & TEXTURESMASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void d3d9_cg_renderchain_calc_and_set_shader_mvp(
|
static void d3d9_cg_renderchain_calc_and_set_shader_mvp(
|
||||||
CGprogram vprg,
|
CGprogram vprg,
|
||||||
unsigned vp_width, unsigned vp_height,
|
unsigned vp_width, unsigned vp_height,
|
||||||
|
@ -1005,7 +986,7 @@ static void d3d9_cg_renderchain_calc_and_set_shader_mvp(
|
||||||
|
|
||||||
static void cg_d3d9_renderchain_set_vertices(
|
static void cg_d3d9_renderchain_set_vertices(
|
||||||
const video_frame_info_t *video_info,
|
const video_frame_info_t *video_info,
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass,
|
struct shader_pass *pass,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
unsigned out_width, unsigned out_height,
|
unsigned out_width, unsigned out_height,
|
||||||
|
@ -1098,7 +1079,7 @@ static void cg_d3d9_renderchain_set_vertices(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cg_d3d9_renderchain_set_params(
|
static void cg_d3d9_renderchain_set_params(
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass,
|
struct shader_pass *pass,
|
||||||
state_tracker_t *tracker,
|
state_tracker_t *tracker,
|
||||||
unsigned pass_index)
|
unsigned pass_index)
|
||||||
|
@ -1111,7 +1092,7 @@ static void cg_d3d9_renderchain_set_params(
|
||||||
|
|
||||||
if (pass_index == 1)
|
if (pass_index == 1)
|
||||||
cnt = state_tracker_get_uniform(tracker, tracker_info,
|
cnt = state_tracker_get_uniform(tracker, tracker_info,
|
||||||
GFX_MAX_VARIABLES, chain->chain.frame_count);
|
GFX_MAX_VARIABLES, chain->frame_count);
|
||||||
|
|
||||||
for (i = 0; i < cnt; i++)
|
for (i = 0; i < cnt; i++)
|
||||||
{
|
{
|
||||||
|
@ -1125,7 +1106,7 @@ static void cg_d3d9_renderchain_set_params(
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cg_d3d9_renderchain_render_pass(
|
static void cg_d3d9_renderchain_render_pass(
|
||||||
cg_renderchain_t *chain,
|
d3d9_renderchain_t *chain,
|
||||||
struct shader_pass *pass,
|
struct shader_pass *pass,
|
||||||
state_tracker_t *tracker,
|
state_tracker_t *tracker,
|
||||||
unsigned pass_index)
|
unsigned pass_index)
|
||||||
|
@ -1135,15 +1116,15 @@ static void cg_d3d9_renderchain_render_pass(
|
||||||
cgD3D9BindProgram(pass->fprg);
|
cgD3D9BindProgram(pass->fprg);
|
||||||
cgD3D9BindProgram(pass->vprg);
|
cgD3D9BindProgram(pass->vprg);
|
||||||
|
|
||||||
d3d9_set_texture(chain->chain.dev, 0, pass->tex);
|
d3d9_set_texture(chain->dev, 0, pass->tex);
|
||||||
d3d9_set_sampler_minfilter(chain->chain.dev, 0,
|
d3d9_set_sampler_minfilter(chain->dev, 0,
|
||||||
d3d_translate_filter(pass->info.pass->filter));
|
d3d_translate_filter(pass->info.pass->filter));
|
||||||
d3d9_set_sampler_magfilter(chain->chain.dev, 0,
|
d3d9_set_sampler_magfilter(chain->dev, 0,
|
||||||
d3d_translate_filter(pass->info.pass->filter));
|
d3d_translate_filter(pass->info.pass->filter));
|
||||||
|
|
||||||
d3d9_set_vertex_declaration(chain->chain.dev, pass->vertex_decl);
|
d3d9_set_vertex_declaration(chain->dev, pass->vertex_decl);
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
d3d9_set_stream_source(chain->chain.dev, i,
|
d3d9_set_stream_source(chain->dev, i,
|
||||||
pass->vertex_buf, 0,
|
pass->vertex_buf, 0,
|
||||||
sizeof(struct D3D9Vertex));
|
sizeof(struct D3D9Vertex));
|
||||||
|
|
||||||
|
@ -1154,11 +1135,11 @@ static void cg_d3d9_renderchain_render_pass(
|
||||||
d3d9_cg_renderchain_bind_prev(chain, pass);
|
d3d9_cg_renderchain_bind_prev(chain, pass);
|
||||||
|
|
||||||
/* Set lookup textures */
|
/* Set lookup textures */
|
||||||
for (i = 0; i < chain->chain.luts->count; i++)
|
for (i = 0; i < chain->luts->count; i++)
|
||||||
{
|
{
|
||||||
CGparameter vparam;
|
CGparameter vparam;
|
||||||
CGparameter fparam = cgGetNamedParameter(
|
CGparameter fparam = cgGetNamedParameter(
|
||||||
pass->fprg, chain->chain.luts->data[i].id);
|
pass->fprg, chain->luts->data[i].id);
|
||||||
int bound_index = -1;
|
int bound_index = -1;
|
||||||
|
|
||||||
if (fparam)
|
if (fparam)
|
||||||
|
@ -1166,17 +1147,17 @@ static void cg_d3d9_renderchain_render_pass(
|
||||||
unsigned index = cgGetParameterResourceIndex(fparam);
|
unsigned index = cgGetParameterResourceIndex(fparam);
|
||||||
bound_index = index;
|
bound_index = index;
|
||||||
|
|
||||||
d3d9_cg_renderchain_add_lut_internal(&chain->chain, index, i);
|
d3d9_cg_renderchain_add_lut_internal(chain, index, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
vparam = cgGetNamedParameter(pass->vprg,
|
vparam = cgGetNamedParameter(pass->vprg,
|
||||||
chain->chain.luts->data[i].id);
|
chain->luts->data[i].id);
|
||||||
|
|
||||||
if (vparam)
|
if (vparam)
|
||||||
{
|
{
|
||||||
unsigned index = cgGetParameterResourceIndex(vparam);
|
unsigned index = cgGetParameterResourceIndex(vparam);
|
||||||
if (index != (unsigned)bound_index)
|
if (index != (unsigned)bound_index)
|
||||||
d3d9_cg_renderchain_add_lut_internal(&chain->chain, index, i);
|
d3d9_cg_renderchain_add_lut_internal(chain, index, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1187,14 +1168,14 @@ static void cg_d3d9_renderchain_render_pass(
|
||||||
if (tracker)
|
if (tracker)
|
||||||
cg_d3d9_renderchain_set_params(chain, pass, tracker, pass_index);
|
cg_d3d9_renderchain_set_params(chain, pass, tracker, pass_index);
|
||||||
|
|
||||||
d3d9_draw_primitive(chain->chain.dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
d3d9_draw_primitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||||
|
|
||||||
/* So we don't render with linear filter into render targets,
|
/* So we don't render with linear filter into render targets,
|
||||||
* which apparently looked odd (too blurry). */
|
* which apparently looked odd (too blurry). */
|
||||||
d3d9_set_sampler_minfilter(chain->chain.dev, 0, D3DTEXF_POINT);
|
d3d9_set_sampler_minfilter(chain->dev, 0, D3DTEXF_POINT);
|
||||||
d3d9_set_sampler_magfilter(chain->chain.dev, 0, D3DTEXF_POINT);
|
d3d9_set_sampler_magfilter(chain->dev, 0, D3DTEXF_POINT);
|
||||||
|
|
||||||
d3d9_renderchain_unbind_all(&chain->chain);
|
d3d9_renderchain_unbind_all(chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool d3d9_cg_renderchain_render(
|
static bool d3d9_cg_renderchain_render(
|
||||||
|
@ -1212,7 +1193,7 @@ static bool d3d9_cg_renderchain_render(
|
||||||
cg_renderchain_t *chain = d3d ?
|
cg_renderchain_t *chain = d3d ?
|
||||||
(cg_renderchain_t*)d3d->renderchain_data : NULL;
|
(cg_renderchain_t*)d3d->renderchain_data : NULL;
|
||||||
|
|
||||||
d3d9_cg_renderchain_start_render(chain);
|
d3d9_renderchain_start_render(&chain->chain);
|
||||||
|
|
||||||
current_width = width;
|
current_width = width;
|
||||||
current_height = height;
|
current_height = height;
|
||||||
|
@ -1268,12 +1249,13 @@ static bool d3d9_cg_renderchain_render(
|
||||||
d3d9_set_viewports(chain->chain.dev, &viewport);
|
d3d9_set_viewports(chain->chain.dev, &viewport);
|
||||||
|
|
||||||
cg_d3d9_renderchain_set_vertices(video_info,
|
cg_d3d9_renderchain_set_vertices(video_info,
|
||||||
chain, from_pass,
|
&chain->chain, from_pass,
|
||||||
current_width, current_height,
|
current_width, current_height,
|
||||||
out_width, out_height,
|
out_width, out_height,
|
||||||
out_width, out_height, 0);
|
out_width, out_height, 0);
|
||||||
|
|
||||||
cg_d3d9_renderchain_render_pass(chain, from_pass, tracker,
|
cg_d3d9_renderchain_render_pass(&chain->chain,
|
||||||
|
from_pass, tracker,
|
||||||
i + 1);
|
i + 1);
|
||||||
|
|
||||||
current_width = out_width;
|
current_width = out_width;
|
||||||
|
@ -1294,14 +1276,15 @@ static bool d3d9_cg_renderchain_render(
|
||||||
d3d9_set_viewports(chain->chain.dev, chain->chain.final_viewport);
|
d3d9_set_viewports(chain->chain.dev, chain->chain.final_viewport);
|
||||||
|
|
||||||
cg_d3d9_renderchain_set_vertices(video_info,
|
cg_d3d9_renderchain_set_vertices(video_info,
|
||||||
chain, last_pass,
|
&chain->chain, last_pass,
|
||||||
current_width, current_height,
|
current_width, current_height,
|
||||||
out_width, out_height,
|
out_width, out_height,
|
||||||
chain->chain.final_viewport->Width,
|
chain->chain.final_viewport->Width,
|
||||||
chain->chain.final_viewport->Height,
|
chain->chain.final_viewport->Height,
|
||||||
rotation);
|
rotation);
|
||||||
|
|
||||||
cg_d3d9_renderchain_render_pass(chain, last_pass,
|
cg_d3d9_renderchain_render_pass(&chain->chain,
|
||||||
|
last_pass,
|
||||||
tracker,
|
tracker,
|
||||||
chain->chain.passes->count);
|
chain->chain.passes->count);
|
||||||
|
|
||||||
|
@ -1309,7 +1292,7 @@ static bool d3d9_cg_renderchain_render(
|
||||||
|
|
||||||
d3d9_surface_free(back_buffer);
|
d3d9_surface_free(back_buffer);
|
||||||
|
|
||||||
d3d9_cg_renderchain_end_render(chain);
|
d3d9_renderchain_end_render(&chain->chain);
|
||||||
cgD3D9BindProgram(chain->fStock);
|
cgD3D9BindProgram(chain->fStock);
|
||||||
cgD3D9BindProgram(chain->vStock);
|
cgD3D9BindProgram(chain->vStock);
|
||||||
d3d9_cg_renderchain_calc_and_set_shader_mvp(
|
d3d9_cg_renderchain_calc_and_set_shader_mvp(
|
||||||
|
|
|
@ -1029,21 +1029,6 @@ static void hlsl_d3d9_renderchain_render_pass(
|
||||||
d3d9_renderchain_unbind_all(&chain->chain);
|
d3d9_renderchain_unbind_all(&chain->chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d9_hlsl_renderchain_start_render(hlsl_d3d9_renderchain_t *chain)
|
|
||||||
{
|
|
||||||
chain->chain.passes->data[0].tex = chain->chain.prev.tex[chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].vertex_buf = chain->chain.prev.vertex_buf[chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].last_width = chain->chain.prev.last_width[chain->chain.prev.ptr];
|
|
||||||
chain->chain.passes->data[0].last_height = chain->chain.prev.last_height[chain->chain.prev.ptr];
|
|
||||||
}
|
|
||||||
|
|
||||||
static void d3d9_hlsl_renderchain_end_render(hlsl_d3d9_renderchain_t *chain)
|
|
||||||
{
|
|
||||||
chain->chain.prev.last_width[chain->chain.prev.ptr] = chain->chain.passes->data[0].last_width;
|
|
||||||
chain->chain.prev.last_height[chain->chain.prev.ptr] = chain->chain.passes->data[0].last_height;
|
|
||||||
chain->chain.prev.ptr = (chain->chain.prev.ptr + 1) & TEXTURESMASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool hlsl_d3d9_renderchain_render(
|
static bool hlsl_d3d9_renderchain_render(
|
||||||
d3d9_video_t *d3d,
|
d3d9_video_t *d3d,
|
||||||
const video_frame_info_t *video_info,
|
const video_frame_info_t *video_info,
|
||||||
|
@ -1060,7 +1045,7 @@ static bool hlsl_d3d9_renderchain_render(
|
||||||
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
hlsl_d3d9_renderchain_t *chain = (hlsl_d3d9_renderchain_t*)
|
||||||
d3d->renderchain_data;
|
d3d->renderchain_data;
|
||||||
|
|
||||||
d3d9_hlsl_renderchain_start_render(chain);
|
d3d9_renderchain_start_render(&chain->chain);
|
||||||
|
|
||||||
current_width = width;
|
current_width = width;
|
||||||
current_height = height;
|
current_height = height;
|
||||||
|
@ -1162,7 +1147,7 @@ static bool hlsl_d3d9_renderchain_render(
|
||||||
|
|
||||||
d3d9_surface_free(back_buffer);
|
d3d9_surface_free(back_buffer);
|
||||||
|
|
||||||
d3d9_hlsl_renderchain_end_render(chain);
|
d3d9_renderchain_end_render(&chain->chain);
|
||||||
#if 0
|
#if 0
|
||||||
cgD3D9BindProgram(chain->fStock);
|
cgD3D9BindProgram(chain->fStock);
|
||||||
cgD3D9BindProgram(chain->vStock);
|
cgD3D9BindProgram(chain->vStock);
|
||||||
|
|
|
@ -154,6 +154,25 @@ static INLINE void d3d9_cg_renderchain_add_lut_internal(
|
||||||
unsigned_vector_list_append(chain->bound_tex, index);
|
unsigned_vector_list_append(chain->bound_tex, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static INLINE void d3d9_renderchain_start_render(d3d9_renderchain_t *chain)
|
||||||
|
{
|
||||||
|
chain->passes->data[0].tex = chain->prev.tex[
|
||||||
|
chain->prev.ptr];
|
||||||
|
chain->passes->data[0].vertex_buf = chain->prev.vertex_buf[
|
||||||
|
chain->prev.ptr];
|
||||||
|
chain->passes->data[0].last_width = chain->prev.last_width[
|
||||||
|
chain->prev.ptr];
|
||||||
|
chain->passes->data[0].last_height = chain->prev.last_height[
|
||||||
|
chain->prev.ptr];
|
||||||
|
}
|
||||||
|
|
||||||
|
static INLINE void d3d9_renderchain_end_render(d3d9_renderchain_t *chain)
|
||||||
|
{
|
||||||
|
chain->prev.last_width[chain->prev.ptr] = chain->passes->data[0].last_width;
|
||||||
|
chain->prev.last_height[chain->prev.ptr] = chain->passes->data[0].last_height;
|
||||||
|
chain->prev.ptr = (chain->prev.ptr + 1) & TEXTURESMASK;
|
||||||
|
}
|
||||||
|
|
||||||
static INLINE void d3d9_renderchain_unbind_all(d3d9_renderchain_t *chain)
|
static INLINE void d3d9_renderchain_unbind_all(d3d9_renderchain_t *chain)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
Loading…
Reference in New Issue