mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-24 03:50:32 +01:00
gallivm: Move the texture modifiers to the header.
Useful to pass these around.
This commit is contained in:
parent
34ea50f672
commit
58daea741f
2 changed files with 20 additions and 19 deletions
|
|
@ -45,6 +45,15 @@ struct lp_build_context;
|
|||
struct lp_build_mask_context;
|
||||
|
||||
|
||||
enum lp_build_tex_modifier {
|
||||
LP_BLD_TEX_MODIFIER_NONE = 0,
|
||||
LP_BLD_TEX_MODIFIER_PROJECTED,
|
||||
LP_BLD_TEX_MODIFIER_LOD_BIAS,
|
||||
LP_BLD_TEX_MODIFIER_EXPLICIT_LOD,
|
||||
LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Sampler code generation interface.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -816,18 +816,10 @@ emit_store(
|
|||
* High-level instruction translators.
|
||||
*/
|
||||
|
||||
enum tex_modifier {
|
||||
TEX_MODIFIER_NONE = 0,
|
||||
TEX_MODIFIER_PROJECTED,
|
||||
TEX_MODIFIER_LOD_BIAS,
|
||||
TEX_MODIFIER_EXPLICIT_LOD,
|
||||
TEX_MODIFIER_EXPLICIT_DERIV
|
||||
};
|
||||
|
||||
static void
|
||||
emit_tex( struct lp_build_tgsi_soa_context *bld,
|
||||
const struct tgsi_full_instruction *inst,
|
||||
enum tex_modifier modifier,
|
||||
enum lp_build_tex_modifier modifier,
|
||||
LLVMValueRef *texel)
|
||||
{
|
||||
unsigned unit;
|
||||
|
|
@ -867,11 +859,11 @@ emit_tex( struct lp_build_tgsi_soa_context *bld,
|
|||
return;
|
||||
}
|
||||
|
||||
if (modifier == TEX_MODIFIER_LOD_BIAS) {
|
||||
if (modifier == LP_BLD_TEX_MODIFIER_LOD_BIAS) {
|
||||
lod_bias = emit_fetch( bld, inst, 0, 3 );
|
||||
explicit_lod = NULL;
|
||||
}
|
||||
else if (modifier == TEX_MODIFIER_EXPLICIT_LOD) {
|
||||
else if (modifier == LP_BLD_TEX_MODIFIER_EXPLICIT_LOD) {
|
||||
lod_bias = NULL;
|
||||
explicit_lod = emit_fetch( bld, inst, 0, 3 );
|
||||
}
|
||||
|
|
@ -880,21 +872,21 @@ emit_tex( struct lp_build_tgsi_soa_context *bld,
|
|||
explicit_lod = NULL;
|
||||
}
|
||||
|
||||
if (modifier == TEX_MODIFIER_PROJECTED) {
|
||||
if (modifier == LP_BLD_TEX_MODIFIER_PROJECTED) {
|
||||
oow = emit_fetch( bld, inst, 0, 3 );
|
||||
oow = lp_build_rcp(&bld->base, oow);
|
||||
}
|
||||
|
||||
for (i = 0; i < num_coords; i++) {
|
||||
coords[i] = emit_fetch( bld, inst, 0, i );
|
||||
if (modifier == TEX_MODIFIER_PROJECTED)
|
||||
if (modifier == LP_BLD_TEX_MODIFIER_PROJECTED)
|
||||
coords[i] = lp_build_mul(&bld->base, coords[i], oow);
|
||||
}
|
||||
for (i = num_coords; i < 3; i++) {
|
||||
coords[i] = bld->base.undef;
|
||||
}
|
||||
|
||||
if (modifier == TEX_MODIFIER_EXPLICIT_DERIV) {
|
||||
if (modifier == LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV) {
|
||||
for (i = 0; i < num_coords; i++) {
|
||||
ddx[i] = emit_fetch( bld, inst, 1, i );
|
||||
ddy[i] = emit_fetch( bld, inst, 2, i );
|
||||
|
|
@ -1627,11 +1619,11 @@ emit_instruction(
|
|||
break;
|
||||
|
||||
case TGSI_OPCODE_TEX:
|
||||
emit_tex( bld, inst, TEX_MODIFIER_NONE, dst0 );
|
||||
emit_tex( bld, inst, LP_BLD_TEX_MODIFIER_NONE, dst0 );
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_TXD:
|
||||
emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_DERIV, dst0 );
|
||||
emit_tex( bld, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_DERIV, dst0 );
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_UP2H:
|
||||
|
|
@ -1735,7 +1727,7 @@ emit_instruction(
|
|||
break;
|
||||
|
||||
case TGSI_OPCODE_TXB:
|
||||
emit_tex( bld, inst, TEX_MODIFIER_LOD_BIAS, dst0 );
|
||||
emit_tex( bld, inst, LP_BLD_TEX_MODIFIER_LOD_BIAS, dst0 );
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_NRM:
|
||||
|
|
@ -1840,11 +1832,11 @@ emit_instruction(
|
|||
break;
|
||||
|
||||
case TGSI_OPCODE_TXL:
|
||||
emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_LOD, dst0 );
|
||||
emit_tex( bld, inst, LP_BLD_TEX_MODIFIER_EXPLICIT_LOD, dst0 );
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_TXP:
|
||||
emit_tex( bld, inst, TEX_MODIFIER_PROJECTED, dst0 );
|
||||
emit_tex( bld, inst, LP_BLD_TEX_MODIFIER_PROJECTED, dst0 );
|
||||
break;
|
||||
|
||||
case TGSI_OPCODE_BRK:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue