}
} else {
if (var->data.mode == ir_var_uniform) {
- if (state->es_shader) {
+ if (state->es_shader ||
+ !(state->is_version(420, 310) || state->ARB_shader_image_load_store_enable)) {
_mesa_glsl_error(loc, state, "all image uniforms must have a "
"format layout qualifier");
} else if (!qual->flags.q.write_only) {
shader_image_load_store(const _mesa_glsl_parse_state *state)
{
return (state->is_version(420, 310) ||
- state->ARB_shader_image_load_store_enable);
+ state->ARB_shader_image_load_store_enable ||
+ state->EXT_shader_image_load_store_enable);
+}
+
+static bool
+shader_image_load_store_ext(const _mesa_glsl_parse_state *state)
+{
+ return state->EXT_shader_image_load_store_enable;
}
static bool
{
return (state->is_version(420, 320) ||
state->ARB_shader_image_load_store_enable ||
+ state->EXT_shader_image_load_store_enable ||
state->OES_shader_image_atomic_enable);
}
IMAGE_FUNCTION_MS_ONLY = (1 << 7),
IMAGE_FUNCTION_AVAIL_ATOMIC_EXCHANGE = (1 << 8),
IMAGE_FUNCTION_AVAIL_ATOMIC_ADD = (1 << 9),
+ IMAGE_FUNCTION_EXT_ONLY = (1 << 10),
};
} /* anonymous namespace */
IMAGE_FUNCTION_AVAIL_ATOMIC))
return shader_image_atomic;
+ else if (flags & IMAGE_FUNCTION_EXT_ONLY)
+ return shader_image_load_store_ext;
+
else
return shader_image_load_store;
}
EXT(EXT_shader_framebuffer_fetch),
EXT(EXT_shader_framebuffer_fetch_non_coherent),
EXT(EXT_shader_image_load_formatted),
+ EXT(EXT_shader_image_load_store),
EXT(EXT_shader_implicit_conversions),
EXT(EXT_shader_integer_mix),
EXT_AEP(EXT_shader_io_blocks),
bool has_shader_image_load_store() const
{
- return ARB_shader_image_load_store_enable || is_version(420, 310);
+ return ARB_shader_image_load_store_enable ||
+ EXT_shader_image_load_store_enable ||
+ is_version(420, 310);
}
bool has_bindless() const
bool EXT_shader_framebuffer_fetch_non_coherent_warn;
bool EXT_shader_image_load_formatted_enable;
bool EXT_shader_image_load_formatted_warn;
+ bool EXT_shader_image_load_store_enable;
+ bool EXT_shader_image_load_store_warn;
bool EXT_shader_implicit_conversions_enable;
bool EXT_shader_implicit_conversions_warn;
bool EXT_shader_integer_mix_enable;