[Mesa-dev] [PATCH v3 03/32] glsl: make sampler/image types as 64-bit
Samuel Pitoiset
samuel.pitoiset at gmail.com
Tue May 2 20:53:24 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 breaking arb_shader_image_load_store-state.
v3: - update the comment slightly
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
src/compiler/glsl_types.h | 4 +++-
src/mesa/main/uniform_query.cpp | 6 +++++-
2 files changed, 8 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 114f6fb5be..0e02a764a9 100644
--- a/src/mesa/main/uniform_query.cpp
+++ b/src/mesa/main/uniform_query.cpp
@@ -322,7 +322,11 @@ _mesa_get_uniform(struct gl_context *ctx, GLuint program, GLint location,
{
unsigned elements = uni->type->components();
- const int dmul = uni->type->is_64bit() ? 2 : 1;
+ /* XXX: Remove the sampler/image check workarounds 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