glsl: Conditionally use GL_EXT_shader_image_load_formatted
Fix for SULD.D
This commit is contained in:
		| @@ -206,6 +206,20 @@ void SetupOutPerVertex(EmitContext& ctx, std::string& header) { | ||||
|         header += "out int gl_ViewportIndex;"; | ||||
|     } | ||||
| } | ||||
|  | ||||
| bool UsesTyplessImage(const Info& info) { | ||||
|     for (const auto& desc : info.image_buffer_descriptors) { | ||||
|         if (desc.format == ImageFormat::Typeless) { | ||||
|             return true; | ||||
|         } | ||||
|     } | ||||
|     for (const auto& desc : info.image_descriptors) { | ||||
|         if (desc.format == ImageFormat::Typeless) { | ||||
|             return true; | ||||
|         } | ||||
|     } | ||||
|     return false; | ||||
| } | ||||
| } // Anonymous namespace | ||||
|  | ||||
| EmitContext::EmitContext(IR::Program& program, Bindings& bindings, const Profile& profile_, | ||||
| @@ -281,8 +295,7 @@ EmitContext::EmitContext(IR::Program& program, Bindings& bindings, const Profile | ||||
|  | ||||
| void EmitContext::SetupExtensions(std::string&) { | ||||
|     // TODO: track this usage | ||||
|     header += "#extension GL_ARB_sparse_texture2 : enable\n" | ||||
|               "#extension GL_EXT_shader_image_load_formatted : enable\n"; | ||||
|     header += "#extension GL_ARB_sparse_texture2 : enable\n"; | ||||
|     if (profile.support_gl_texture_shadow_lod) { | ||||
|         header += "#extension GL_EXT_texture_shadow_lod : enable\n"; | ||||
|     } | ||||
| @@ -318,6 +331,9 @@ void EmitContext::SetupExtensions(std::string&) { | ||||
|         stage != Stage::Geometry) { | ||||
|         header += "#extension GL_ARB_shader_viewport_layer_array : enable\n"; | ||||
|     } | ||||
|     if (UsesTyplessImage(info)) { | ||||
|         header += "#extension GL_EXT_shader_image_load_formatted : enable\n"; | ||||
|     } | ||||
| } | ||||
|  | ||||
| void EmitContext::DefineConstantBuffers(Bindings& bindings) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user