summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw/draw_llvm_sample.c
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@vmware.com>2013-08-19 21:12:59 +0200
committerRoland Scheidegger <sroland@vmware.com>2013-08-20 23:00:24 +0200
commitac1a2714c78ab8bc9853478780dc27075d025080 (patch)
treeee5a9a93501877c0f8b0b106f2a7ba36624c3b1a /src/gallium/auxiliary/draw/draw_llvm_sample.c
parentd427278a2de4c7f492ed1b7f0d342788ce2bbf4e (diff)
downloadexternal_mesa3d-ac1a2714c78ab8bc9853478780dc27075d025080.zip
external_mesa3d-ac1a2714c78ab8bc9853478780dc27075d025080.tar.gz
external_mesa3d-ac1a2714c78ab8bc9853478780dc27075d025080.tar.bz2
gallivm: implement better control of per-quad/per-element/scalar lod
There's a new debug value used to disable per-quad lod optimizations in fragment shader (ignored for vs/gs as the results are just too wrong typically). Also trying to detect if a supplied lod value is really a scalar (if it's coming from immediate or constant file) in which case sampler code can use this to stay on per-quad-lod path (in fact for explicit lod could simplify even further and use same lod for both quads in the avx case but this is not implemented yet). Still need to actually implement per-element lod bias (and derivatives), and need to handle per-element lod in size queries. v2: fix comments, prettify. Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_llvm_sample.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm_sample.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm_sample.c b/src/gallium/auxiliary/draw/draw_llvm_sample.c
index 97b0255..a6341fa 100644
--- a/src/gallium/auxiliary/draw/draw_llvm_sample.c
+++ b/src/gallium/auxiliary/draw/draw_llvm_sample.c
@@ -238,7 +238,7 @@ draw_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base,
const struct lp_derivatives *derivs,
LLVMValueRef lod_bias, /* optional */
LLVMValueRef explicit_lod, /* optional */
- boolean scalar_lod,
+ enum lp_sampler_lod_property lod_property,
LLVMValueRef *texel)
{
struct draw_llvm_sampler_soa *sampler = (struct draw_llvm_sampler_soa *)base;
@@ -257,7 +257,7 @@ draw_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base,
coords,
offsets,
derivs,
- lod_bias, explicit_lod, scalar_lod,
+ lod_bias, explicit_lod, lod_property,
texel);
}
@@ -272,7 +272,7 @@ draw_llvm_sampler_soa_emit_size_query(const struct lp_build_sampler_soa *base,
unsigned texture_unit,
unsigned target,
boolean is_sviewinfo,
- boolean scalar_lod,
+ enum lp_sampler_lod_property lod_property,
LLVMValueRef explicit_lod, /* optional */
LLVMValueRef *sizes_out)
{
@@ -287,7 +287,7 @@ draw_llvm_sampler_soa_emit_size_query(const struct lp_build_sampler_soa *base,
texture_unit,
target,
is_sviewinfo,
- scalar_lod,
+ lod_property,
explicit_lod,
sizes_out);
}