summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2012-04-24 23:21:41 +0200
committerChristoph Bumiller <[email protected]>2012-05-04 18:00:03 +0200
commit8a44ecdae8bde4767a6eea9b641d4fbe378a9269 (patch)
tree720435ef80a77439ab3fe5ae3ba5e6ba42e24bd9
parentc66dc0ea8ecfa3048189648b5092de99a943d82d (diff)
nv50: enable array textures
-rw-r--r--src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp3
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp
index 27373b4cc47..011014eb5ba 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_lowering_nv50.cpp
@@ -587,7 +587,8 @@ NV50LoweringPreSSA::handleTEX(TexInstruction *i)
if (i->tex.target.isArray()) {
Value *layer = i->getSrc(arg - 1);
LValue *src = new_LValue(func, FILE_GPR);
- bld.mkCvt(OP_CVT, TYPE_U16, src, TYPE_F32, layer);
+ bld.mkCvt(OP_CVT, TYPE_U32, src, TYPE_F32, layer);
+ bld.mkOp2(OP_MIN, TYPE_U32, src, src, bld.loadImm(NULL, 511));
i->setSrc(arg - 1, src);
if (i->tex.target.isCube()) {
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index b3489198d2b..d72b6e91d2a 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -82,8 +82,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 12;
case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
return 14;
- case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: /* shader support missing */
- return 0;
+ case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS:
+ return 512;
case PIPE_CAP_MIN_TEXEL_OFFSET:
return -8;
case PIPE_CAP_MAX_TEXEL_OFFSET: