mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
nv30: Fix generic passing to fragment program in NV34.
This commit is contained in:
parent
384ef28cb3
commit
6404095fba
3 changed files with 9 additions and 5 deletions
|
|
@ -117,7 +117,7 @@ nv30_fragprog_validate(struct nv30_context *nv30)
|
|||
BEGIN_NV04(push, NV30_3D(FP_REG_CONTROL), 1);
|
||||
PUSH_DATA (push, 0x00010004);
|
||||
BEGIN_NV04(push, NV30_3D(TEX_UNITS_ENABLE), 1);
|
||||
PUSH_DATA (push, fp->samplers);
|
||||
PUSH_DATA (push, fp->texcoords);
|
||||
} else {
|
||||
BEGIN_NV04(push, SUBC_3D(0x0b40), 1);
|
||||
PUSH_DATA (push, 0x00000000);
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ struct nv30_fragprog {
|
|||
uint32_t fp_control;
|
||||
uint32_t point_sprite_control;
|
||||
uint32_t coord_conventions;
|
||||
uint32_t samplers;
|
||||
uint32_t texcoords;
|
||||
uint32_t rt_enable;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,6 @@ nvfx_fp_emit(struct nvfx_fpc *fpc, struct nvfx_insn insn)
|
|||
if(insn.unit >= 0)
|
||||
{
|
||||
hw[0] |= (insn.unit << NVFX_FP_OP_TEX_UNIT_SHIFT);
|
||||
fp->samplers |= (1 << insn.unit);
|
||||
}
|
||||
|
||||
emit_dst(fpc, insn.dst);
|
||||
|
|
@ -933,6 +932,7 @@ nvfx_fragprog_parse_decl_input(struct nv30_context *nvfx, struct nvfx_fpc *fpc,
|
|||
return TRUE;
|
||||
|
||||
fpc->fp->texcoord[fdec->Semantic.Index] = fdec->Semantic.Index;
|
||||
fpc->fp->texcoords |= (1 << fdec->Semantic.Index);
|
||||
fpc->fp->vp_or |= (0x00004000 << fdec->Semantic.Index);
|
||||
hw = NVFX_FP_OP_INPUT_SRC_TC(fdec->Semantic.Index);
|
||||
break;
|
||||
|
|
@ -959,8 +959,12 @@ nvfx_fragprog_assign_generic(struct nv30_context *nvfx, struct nvfx_fpc *fpc,
|
|||
for (hw = 0; hw < num_texcoords; hw++) {
|
||||
if (fpc->fp->texcoord[hw] == 0xffff) {
|
||||
fpc->fp->texcoord[hw] = fdec->Semantic.Index;
|
||||
if (hw <= 7) fpc->fp->vp_or |= (0x00004000 << hw);
|
||||
else fpc->fp->vp_or |= (0x00001000 << (hw - 8));
|
||||
if (hw <= 7) {
|
||||
fpc->fp->texcoords |= (0x1 << hw);
|
||||
fpc->fp->vp_or |= (0x00004000 << hw);
|
||||
} else {
|
||||
fpc->fp->vp_or |= (0x00001000 << (hw - 8));
|
||||
}
|
||||
if (fdec->Semantic.Index == 9)
|
||||
fpc->fp->point_sprite_control |= (0x00000100 << hw);
|
||||
hw = NVFX_FP_OP_INPUT_SRC_TC(hw);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue