Mesa (master): nv30: Fix generic passing to fragment program in NV34.
Christoph Bumiller
chrisbmr at kemper.freedesktop.org
Fri May 25 20:49:49 UTC 2012
Module: Mesa
Branch: master
Commit: 6404095fbab74a6194081374bd56786d07c5d561
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6404095fbab74a6194081374bd56786d07c5d561
Author: Roy Spliet <r.spliet at student.tudelft.nl>
Date: Tue May 22 15:14:26 2012 +0200
nv30: Fix generic passing to fragment program in NV34.
---
src/gallium/drivers/nv30/nv30_fragprog.c | 2 +-
src/gallium/drivers/nv30/nv30_state.h | 2 +-
src/gallium/drivers/nv30/nvfx_fragprog.c | 10 +++++++---
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/gallium/drivers/nv30/nv30_fragprog.c b/src/gallium/drivers/nv30/nv30_fragprog.c
index 865c828..cfaafd5 100644
--- a/src/gallium/drivers/nv30/nv30_fragprog.c
+++ b/src/gallium/drivers/nv30/nv30_fragprog.c
@@ -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);
diff --git a/src/gallium/drivers/nv30/nv30_state.h b/src/gallium/drivers/nv30/nv30_state.h
index a219bf2..964676a 100644
--- a/src/gallium/drivers/nv30/nv30_state.h
+++ b/src/gallium/drivers/nv30/nv30_state.h
@@ -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;
};
diff --git a/src/gallium/drivers/nv30/nvfx_fragprog.c b/src/gallium/drivers/nv30/nvfx_fragprog.c
index 320efbb..bfec4b3 100644
--- a/src/gallium/drivers/nv30/nvfx_fragprog.c
+++ b/src/gallium/drivers/nv30/nvfx_fragprog.c
@@ -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);
More information about the mesa-commit
mailing list