+
+ if (extensions->ARB_gl_spirv) {
+ struct spirv_supported_capabilities *spirv_caps = &consts->SpirVCapabilities;
+
+ spirv_caps->atomic_storage = extensions->ARB_shader_atomic_counters;
+ spirv_caps->draw_parameters = extensions->ARB_shader_draw_parameters;
+ spirv_caps->float64 = extensions->ARB_gpu_shader_fp64;
+ spirv_caps->geometry_streams = extensions->ARB_gpu_shader5;
+ spirv_caps->image_write_without_format = extensions->ARB_shader_image_load_store;
+ spirv_caps->int64 = extensions->ARB_gpu_shader_int64;
+ spirv_caps->tessellation = extensions->ARB_tessellation_shader;
+ spirv_caps->transform_feedback = extensions->ARB_transform_feedback3;
+ spirv_caps->variable_pointers =
+ screen->get_param(screen, PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS);
+ spirv_caps->integer_functions2 = extensions->INTEL_shader_integer_functions2;
+
+ consts->SpirVExtensions = CALLOC_STRUCT(spirv_supported_extensions);
+ _mesa_fill_supported_spirv_extensions(consts->SpirVExtensions, spirv_caps);
+ }
+
+ consts->AllowDrawOutOfOrder = options->allow_draw_out_of_order;