summaryrefslogtreecommitdiffstats
path: root/src/mesa/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main')
-rw-r--r--src/mesa/main/mtypes.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 85aeb1e0df3..ee811ff5ddf 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -45,6 +45,7 @@
#include "compiler/shader_enums.h"
#include "main/formats.h" /* MESA_FORMAT_COUNT */
#include "compiler/glsl/list.h"
+#include "util/bitscan.h"
#ifdef __cplusplus
@@ -1929,6 +1930,7 @@ struct gl_program
GLbitfield TexturesUsed[MAX_COMBINED_TEXTURE_IMAGE_UNITS]; /**< TEXTURE_x_BIT bitmask */
GLbitfield SamplersUsed; /**< Bitfield of which samplers are used */
GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */
+ GLbitfield ExternalSamplersUsed; /**< Texture units used for samplerExternalOES */
GLboolean UsesGather; /**< Does this program use gather4 at all? */
@@ -2460,6 +2462,20 @@ struct gl_linked_shader
struct gl_shader_info info;
};
+static inline GLbitfield gl_external_samplers(struct gl_linked_shader *shader)
+{
+ GLbitfield external_samplers = 0;
+ GLbitfield mask = shader->active_samplers;
+
+ while (mask) {
+ int idx = u_bit_scan(&mask);
+ if (shader->SamplerTargets[idx] == TEXTURE_EXTERNAL_INDEX)
+ external_samplers |= (1 << idx);
+ }
+
+ return external_samplers;
+}
+
/**
* A GLSL shader object.
*/