Mesa (main): draw: add sampler max_aniso query.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 21 00:40:08 UTC 2021
Module: Mesa
Branch: main
Commit: 0bb23ed6dba2abf05568e738eedd02f05ecb1b2c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0bb23ed6dba2abf05568e738eedd02f05ecb1b2c
Author: Dave Airlie <airlied at redhat.com>
Date: Mon Feb 8 12:33:51 2021 +1000
draw: add sampler max_aniso query.
Add support for draw shaders for retrieve max anisotropy.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8804>
---
src/gallium/auxiliary/draw/draw_llvm.c | 10 +++++++++-
src/gallium/auxiliary/draw/draw_llvm.h | 2 ++
src/gallium/auxiliary/draw/draw_llvm_sample.c | 2 ++
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 0ad58a4d337..850dd338eda 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -219,7 +219,8 @@ create_jit_sampler_type(struct gallivm_state *gallivm, const char *struct_name)
elem_types[DRAW_JIT_SAMPLER_MIN_LOD] =
elem_types[DRAW_JIT_SAMPLER_MAX_LOD] =
- elem_types[DRAW_JIT_SAMPLER_LOD_BIAS] = LLVMFloatTypeInContext(gallivm->context);
+ elem_types[DRAW_JIT_SAMPLER_LOD_BIAS] =
+ elem_types[DRAW_JIT_SAMPLER_MAX_ANISO] = LLVMFloatTypeInContext(gallivm->context);
elem_types[DRAW_JIT_SAMPLER_BORDER_COLOR] =
LLVMArrayType(LLVMFloatTypeInContext(gallivm->context), 4);
@@ -239,6 +240,9 @@ create_jit_sampler_type(struct gallivm_state *gallivm, const char *struct_name)
LP_CHECK_MEMBER_OFFSET(struct draw_jit_sampler, border_color,
target, sampler_type,
DRAW_JIT_SAMPLER_BORDER_COLOR);
+ LP_CHECK_MEMBER_OFFSET(struct draw_jit_sampler, max_aniso,
+ target, sampler_type,
+ DRAW_JIT_SAMPLER_MAX_ANISO);
LP_CHECK_STRUCT_SIZE(struct draw_jit_sampler, target, sampler_type);
@@ -2601,6 +2605,7 @@ draw_llvm_set_sampler_state(struct draw_context *draw,
jit_sam->min_lod = s->min_lod;
jit_sam->max_lod = s->max_lod;
jit_sam->lod_bias = s->lod_bias;
+ jit_sam->max_aniso = s->max_anisotropy;
COPY_4V(jit_sam->border_color, s->border_color.f);
}
}
@@ -2615,6 +2620,7 @@ draw_llvm_set_sampler_state(struct draw_context *draw,
jit_sam->min_lod = s->min_lod;
jit_sam->max_lod = s->max_lod;
jit_sam->lod_bias = s->lod_bias;
+ jit_sam->max_aniso = s->max_anisotropy;
COPY_4V(jit_sam->border_color, s->border_color.f);
}
}
@@ -2629,6 +2635,7 @@ draw_llvm_set_sampler_state(struct draw_context *draw,
jit_sam->min_lod = s->min_lod;
jit_sam->max_lod = s->max_lod;
jit_sam->lod_bias = s->lod_bias;
+ jit_sam->max_aniso = s->max_anisotropy;
COPY_4V(jit_sam->border_color, s->border_color.f);
}
}
@@ -2643,6 +2650,7 @@ draw_llvm_set_sampler_state(struct draw_context *draw,
jit_sam->min_lod = s->min_lod;
jit_sam->max_lod = s->max_lod;
jit_sam->lod_bias = s->lod_bias;
+ jit_sam->max_aniso = s->max_anisotropy;
COPY_4V(jit_sam->border_color, s->border_color.f);
}
}
diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h
index 5224817bb67..f991f004496 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.h
+++ b/src/gallium/auxiliary/draw/draw_llvm.h
@@ -86,6 +86,7 @@ struct draw_jit_sampler
float max_lod;
float lod_bias;
float border_color[4];
+ float max_aniso;
};
@@ -122,6 +123,7 @@ enum {
DRAW_JIT_SAMPLER_MAX_LOD,
DRAW_JIT_SAMPLER_LOD_BIAS,
DRAW_JIT_SAMPLER_BORDER_COLOR,
+ DRAW_JIT_SAMPLER_MAX_ANISO,
DRAW_JIT_SAMPLER_NUM_FIELDS /* number of fields above */
};
diff --git a/src/gallium/auxiliary/draw/draw_llvm_sample.c b/src/gallium/auxiliary/draw/draw_llvm_sample.c
index a3895c798df..b3e98be5537 100644
--- a/src/gallium/auxiliary/draw/draw_llvm_sample.c
+++ b/src/gallium/auxiliary/draw/draw_llvm_sample.c
@@ -289,6 +289,7 @@ DRAW_LLVM_SAMPLER_MEMBER(min_lod, DRAW_JIT_SAMPLER_MIN_LOD, TRUE)
DRAW_LLVM_SAMPLER_MEMBER(max_lod, DRAW_JIT_SAMPLER_MAX_LOD, TRUE)
DRAW_LLVM_SAMPLER_MEMBER(lod_bias, DRAW_JIT_SAMPLER_LOD_BIAS, TRUE)
DRAW_LLVM_SAMPLER_MEMBER(border_color, DRAW_JIT_SAMPLER_BORDER_COLOR, FALSE)
+DRAW_LLVM_SAMPLER_MEMBER(max_aniso, DRAW_JIT_SAMPLER_MAX_ANISO, TRUE)
#define DRAW_LLVM_IMAGE_MEMBER(_name, _index, _emit_load) \
static LLVMValueRef \
@@ -405,6 +406,7 @@ draw_llvm_sampler_soa_create(const struct draw_sampler_static_state *static_stat
sampler->dynamic_state.base.max_lod = draw_llvm_sampler_max_lod;
sampler->dynamic_state.base.lod_bias = draw_llvm_sampler_lod_bias;
sampler->dynamic_state.base.border_color = draw_llvm_sampler_border_color;
+ sampler->dynamic_state.base.max_aniso = draw_llvm_sampler_max_aniso;
sampler->dynamic_state.static_state = static_state;
sampler->nr_samplers = nr_samplers;
More information about the mesa-commit
mailing list