ffvertex: don't touch tex coords if coord replace is enabled.
The fixed function vertex program shouldn't need to deal or touch tex coords if stuffing is enabled. Though I'm not 100% this won't break assumption made elsewhere it seems like the correct thing to do, and makes r300g point sprites a lot easier to implement. draw: fix point-sprite when vertex program is used. This commit regressed draw, so fix it as well to help bisection. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -113,7 +113,10 @@ static void set_texcoords(const struct widepoint_stage *wide,
|
||||
/* put gl_PointCoord into the extra vertex slot */
|
||||
uint slot = wide->stage.draw->extra_shader_outputs.slot;
|
||||
v->data[slot][0] = tc[0];
|
||||
v->data[slot][1] = tc[1];
|
||||
if (wide->texcoord_mode == PIPE_SPRITE_COORD_LOWER_LEFT)
|
||||
v->data[slot][1] = 1.0f - tc[1];
|
||||
else
|
||||
v->data[slot][1] = tc[1];
|
||||
v->data[slot][2] = 0.0F;
|
||||
v->data[slot][3] = 1.0F;
|
||||
}
|
||||
|
@@ -75,6 +75,7 @@ struct state_key {
|
||||
unsigned light_attenuated:1;
|
||||
unsigned texunit_really_enabled:1;
|
||||
unsigned texmat_enabled:1;
|
||||
unsigned coord_replace:1;
|
||||
unsigned texgen_enabled:4;
|
||||
unsigned texgen_mode0:4;
|
||||
unsigned texgen_mode1:4;
|
||||
@@ -225,6 +226,10 @@ static void make_state_key( GLcontext *ctx, struct state_key *key )
|
||||
if (texUnit->_ReallyEnabled)
|
||||
key->unit[i].texunit_really_enabled = 1;
|
||||
|
||||
if (ctx->Point.PointSprite)
|
||||
if (ctx->Point.CoordReplace[i])
|
||||
key->unit[i].coord_replace = 1;
|
||||
|
||||
if (ctx->Texture._TexMatEnabled & ENABLE_TEXMAT(i))
|
||||
key->unit[i].texmat_enabled = 1;
|
||||
|
||||
@@ -1385,6 +1390,9 @@ static void build_texture_transform( struct tnl_program *p )
|
||||
if (!(p->state->fragprog_inputs_read & FRAG_BIT_TEX(i)))
|
||||
continue;
|
||||
|
||||
if (p->state->unit[i].coord_replace)
|
||||
continue;
|
||||
|
||||
if (p->state->unit[i].texgen_enabled ||
|
||||
p->state->unit[i].texmat_enabled) {
|
||||
|
||||
|
Reference in New Issue
Block a user