[Mesa-dev] [PATCH v2 03/31] glsl: make sampler/image types as 64-bit
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Apr 24 10:35:34 UTC 2017
The ARB_bindless_texture spec says:
"Samplers are represented using 64-bit integer handles."
and,
"Images are represented using 64-bit integer handles."
It seems simpler to always consider sampler and image types
as 64-bit unsigned integer.
This introduces a temporary workaround in _mesa_get_uniform()
because at this point no flag are used to distinguish between
bound and bindless samplers. This is going to be removed in a
separate series. This avoids to break
arb_shader_image_load_store-state.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
src/compiler/glsl_types.h | 4 +++-
src/mesa/main/uniform_query.cpp | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h
index 403663f7b8..a61a522b1e 100644
--- a/src/compiler/glsl_types.h
+++ b/src/compiler/glsl_types.h
@@ -72,7 +72,9 @@ static inline bool glsl_base_type_is_64bit(enum glsl_base_type type)
{
return type == GLSL_TYPE_DOUBLE ||
type == GLSL_TYPE_UINT64 ||
- type == GLSL_TYPE_INT64;
+ type == GLSL_TYPE_INT64 ||
+ type == GLSL_TYPE_IMAGE ||
+ type == GLSL_TYPE_SAMPLER;
}
enum glsl_sampler_dim {
diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
index e400d0eb00..1fbad0d00e 100644
--- a/src/mesa/main/uniform_query.cpp
+++ b/src/mesa/main/uniform_query.cpp
@@ -323,7 +323,9 @@ _mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
{
unsigned elements = (uni->type->is_sampler())
? 1 : uni->type->components();
- const int dmul = uni->type->is_64bit() ? 2 : 1;
+ /* XXX: Remove this workaround when bindless is fully implemented. */
+ const int dmul =
+ (uni->type->is_64bit() && !uni->type->is_sampler() && !uni->type->is_image()) ? 2 : 1;
const int rmul = glsl_base_type_is_64bit(returnType) ? 2 : 1;
/* Calculate the source base address *BEFORE* modifying elements to
--
2.12.2
More information about the mesa-dev
mailing list