gallium/util: add a window_space option to the passthrough vertex shader

Tested-by: Nick Sarnie <commendsarnex@gmail.com>
This commit is contained in:
Marek Olšák 2014-11-08 15:30:54 +01:00
parent ad54b01896
commit 717f2dd69f
8 changed files with 21 additions and 10 deletions

View File

@ -131,7 +131,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe,
const uint semantic_indexes[] = { 0, 0 };
p->passvs = util_make_vertex_passthrough_shader(p->pipe, 2,
semantic_names,
semantic_indexes);
semantic_indexes, FALSE);
}
p->framebuffer.nr_cbufs = 1;

View File

@ -188,7 +188,7 @@ set_vertex_shader(struct blit_state *ctx)
const uint semantic_indexes[] = { 0, 0 };
ctx->vs = util_make_vertex_passthrough_shader(ctx->pipe, 2,
semantic_names,
semantic_indexes);
semantic_indexes, FALSE);
}
cso_set_vertex_shader_handle(ctx->cso, ctx->vs);

View File

@ -319,7 +319,8 @@ static void bind_vs_pos_only(struct blitter_context_priv *ctx)
ctx->vs_pos_only =
util_make_vertex_passthrough_shader_with_so(pipe, 1, semantic_names,
semantic_indices, &so);
semantic_indices, FALSE,
&so);
}
pipe->bind_vs_state(pipe, ctx->vs_pos_only);
@ -335,7 +336,7 @@ static void bind_vs_passthrough(struct blitter_context_priv *ctx)
const uint semantic_indices[] = { 0, 0 };
ctx->vs =
util_make_vertex_passthrough_shader(pipe, 2, semantic_names,
semantic_indices);
semantic_indices, FALSE);
}
pipe->bind_vs_state(pipe, ctx->vs);

View File

@ -59,11 +59,13 @@ void *
util_make_vertex_passthrough_shader(struct pipe_context *pipe,
uint num_attribs,
const uint *semantic_names,
const uint *semantic_indexes)
const uint *semantic_indexes,
bool window_space)
{
return util_make_vertex_passthrough_shader_with_so(pipe, num_attribs,
semantic_names,
semantic_indexes, NULL);
semantic_indexes,
window_space, NULL);
}
void *
@ -71,6 +73,7 @@ util_make_vertex_passthrough_shader_with_so(struct pipe_context *pipe,
uint num_attribs,
const uint *semantic_names,
const uint *semantic_indexes,
bool window_space,
const struct pipe_stream_output_info *so)
{
struct ureg_program *ureg;
@ -80,6 +83,9 @@ util_make_vertex_passthrough_shader_with_so(struct pipe_context *pipe,
if (ureg == NULL)
return NULL;
if (window_space)
ureg_property_vs_window_space_position(ureg, TRUE);
for (i = 0; i < num_attribs; i++) {
struct ureg_src src;
struct ureg_dst dst;

View File

@ -47,13 +47,15 @@ extern void *
util_make_vertex_passthrough_shader(struct pipe_context *pipe,
uint num_attribs,
const uint *semantic_names,
const uint *semantic_indexes);
const uint *semantic_indexes,
bool window_space);
extern void *
util_make_vertex_passthrough_shader_with_so(struct pipe_context *pipe,
uint num_attribs,
const uint *semantic_names,
const uint *semantic_indexes,
bool window_space,
const struct pipe_stream_output_info *so);
extern void *

View File

@ -769,7 +769,8 @@ st_Bitmap(struct gl_context *ctx, GLint x, GLint y,
const uint semantic_indexes[] = { 0, 0, 0 };
st->bitmap.vs = util_make_vertex_passthrough_shader(st->pipe, 3,
semantic_names,
semantic_indexes);
semantic_indexes,
FALSE);
}
if (UseBitmapCache && accum_bitmap(ctx, x, y, width, height, unpack, bitmap))

View File

@ -123,7 +123,8 @@ set_vertex_shader(struct st_context *st)
const uint semantic_indexes[] = { 0, 0 };
st->clear.vs = util_make_vertex_passthrough_shader(st->pipe, 2,
semantic_names,
semantic_indexes);
semantic_indexes,
FALSE);
}
cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);

View File

@ -91,7 +91,7 @@ lookup_shader(struct pipe_context *pipe,
util_make_vertex_passthrough_shader(pipe,
num_attribs,
semantic_names,
semantic_indexes);
semantic_indexes, FALSE);
NumCachedShaders++;
return CachedShaders[i].handle;