Ian Romanick | aa1a5c0 | 2015-08-19 19:24:45 -0700 | [diff] [blame] | 1 | /* |
José Fonseca | 8771285 | 2014-01-17 16:27:50 +0000 | [diff] [blame] | 2 | * Copyright 2003 VMware, Inc. |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 3 | * All Rights Reserved. |
Kenneth Graunke | a7bdd4c | 2013-11-25 15:46:34 -0800 | [diff] [blame] | 4 | * |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 5 | * Permission is hereby granted, free of charge, to any person obtaining a |
| 6 | * copy of this software and associated documentation files (the |
| 7 | * "Software"), to deal in the Software without restriction, including |
| 8 | * without limitation the rights to use, copy, modify, merge, publish, |
Ian Romanick | 284dcad | 2015-08-19 16:36:35 -0700 | [diff] [blame] | 9 | * distribute, sublicense, and/or sell copies of the Software, and to |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 10 | * permit persons to whom the Software is furnished to do so, subject to |
| 11 | * the following conditions: |
Kenneth Graunke | a7bdd4c | 2013-11-25 15:46:34 -0800 | [diff] [blame] | 12 | * |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 13 | * The above copyright notice and this permission notice (including the |
| 14 | * next paragraph) shall be included in all copies or substantial portions |
| 15 | * of the Software. |
Kenneth Graunke | a7bdd4c | 2013-11-25 15:46:34 -0800 | [diff] [blame] | 16 | * |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 18 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
Ian Romanick | 284dcad | 2015-08-19 16:36:35 -0700 | [diff] [blame] | 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
José Fonseca | 8771285 | 2014-01-17 16:27:50 +0000 | [diff] [blame] | 20 | * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 21 | * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| 22 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| 23 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
Ian Romanick | aa1a5c0 | 2015-08-19 19:24:45 -0700 | [diff] [blame] | 24 | */ |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 25 | |
Brian Paul | e4394fb | 2011-09-29 16:29:30 -0600 | [diff] [blame] | 26 | #include "main/version.h" |
Vinson Lee | 45a56e4 | 2011-01-09 01:25:54 -0800 | [diff] [blame] | 27 | |
Kenneth Graunke | a692744 | 2013-07-02 18:56:43 -0700 | [diff] [blame] | 28 | #include "brw_context.h" |
Jason Ekstrand | 949a892 | 2016-08-08 17:48:36 -0700 | [diff] [blame] | 29 | #include "brw_defines.h" |
Kenneth Graunke | 129da5b | 2013-05-27 20:09:56 -0700 | [diff] [blame] | 30 | #include "intel_batchbuffer.h" |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 31 | |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 32 | /** |
| 33 | * Initializes potential list of extensions if ctx == NULL, or actually enables |
| 34 | * extensions for a context. |
| 35 | */ |
| 36 | void |
Kristian Høgsberg | f9995b3 | 2010-10-12 12:26:10 -0400 | [diff] [blame] | 37 | intelInitExtensions(struct gl_context *ctx) |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 38 | { |
Kenneth Graunke | fbdd389 | 2013-07-03 10:57:11 -0700 | [diff] [blame] | 39 | struct brw_context *brw = brw_context(ctx); |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 40 | |
Kenneth Graunke | 53631be | 2013-07-06 00:36:46 -0700 | [diff] [blame] | 41 | assert(brw->gen >= 4); |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 42 | |
Timothy Arceri | 5b75dbd | 2015-10-16 10:28:47 +1100 | [diff] [blame] | 43 | ctx->Extensions.ARB_arrays_of_arrays = true; |
Eric Anholt | 2f87935 | 2014-02-25 14:25:46 -0800 | [diff] [blame] | 44 | ctx->Extensions.ARB_buffer_storage = true; |
Neil Roberts | 0779f37 | 2014-06-10 16:21:21 +0100 | [diff] [blame] | 45 | ctx->Extensions.ARB_clear_texture = true; |
Mathias Fröhlich | fdd90fc | 2015-03-29 16:52:57 +0200 | [diff] [blame] | 46 | ctx->Extensions.ARB_clip_control = true; |
Jason Ekstrand | 410fea8 | 2014-06-27 16:05:37 -0700 | [diff] [blame] | 47 | ctx->Extensions.ARB_copy_image = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 48 | ctx->Extensions.ARB_depth_buffer_float = true; |
| 49 | ctx->Extensions.ARB_depth_clamp = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 50 | ctx->Extensions.ARB_depth_texture = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 51 | ctx->Extensions.ARB_draw_elements_base_vertex = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 52 | ctx->Extensions.ARB_draw_instanced = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 53 | ctx->Extensions.ARB_ES2_compatibility = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 54 | ctx->Extensions.ARB_explicit_attrib_location = true; |
Tapani Pälli | f3750a2 | 2014-03-05 09:39:10 +0200 | [diff] [blame] | 55 | ctx->Extensions.ARB_explicit_uniform_location = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 56 | ctx->Extensions.ARB_fragment_coord_conventions = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 57 | ctx->Extensions.ARB_fragment_program = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 58 | ctx->Extensions.ARB_fragment_program_shadow = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 59 | ctx->Extensions.ARB_fragment_shader = true; |
Ian Romanick | bdba4b3 | 2012-12-01 10:56:40 -0800 | [diff] [blame] | 60 | ctx->Extensions.ARB_framebuffer_object = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 61 | ctx->Extensions.ARB_half_float_vertex = true; |
| 62 | ctx->Extensions.ARB_instanced_arrays = true; |
Ian Romanick | 3c00a52 | 2012-12-01 11:06:31 -0800 | [diff] [blame] | 63 | ctx->Extensions.ARB_internalformat_query = true; |
Antia Puentes | 4f028bf | 2015-10-21 15:25:30 +0200 | [diff] [blame] | 64 | ctx->Extensions.ARB_internalformat_query2 = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 65 | ctx->Extensions.ARB_map_buffer_range = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 66 | ctx->Extensions.ARB_occlusion_query = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 67 | ctx->Extensions.ARB_occlusion_query2 = true; |
Ben Widawsky | e206785 | 2014-12-02 18:33:12 -0800 | [diff] [blame] | 68 | ctx->Extensions.ARB_pipeline_statistics_query = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 69 | ctx->Extensions.ARB_point_sprite = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 70 | ctx->Extensions.ARB_seamless_cube_map = true; |
| 71 | ctx->Extensions.ARB_shader_bit_encoding = true; |
Kristian Høgsberg Kristensen | cddfc2c | 2015-12-10 12:27:38 -0800 | [diff] [blame] | 72 | ctx->Extensions.ARB_shader_draw_parameters = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 73 | ctx->Extensions.ARB_shader_texture_lod = true; |
Ian Romanick | 26c7f04 | 2016-06-21 11:14:58 -0700 | [diff] [blame] | 74 | ctx->Extensions.ARB_shading_language_packing = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 75 | ctx->Extensions.ARB_shadow = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 76 | ctx->Extensions.ARB_sync = true; |
| 77 | ctx->Extensions.ARB_texture_border_clamp = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 78 | ctx->Extensions.ARB_texture_compression_rgtc = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 79 | ctx->Extensions.ARB_texture_cube_map = true; |
| 80 | ctx->Extensions.ARB_texture_env_combine = true; |
| 81 | ctx->Extensions.ARB_texture_env_crossbar = true; |
| 82 | ctx->Extensions.ARB_texture_env_dot3 = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 83 | ctx->Extensions.ARB_texture_float = true; |
Kenneth Graunke | 2d32821 | 2013-10-20 20:19:53 -0700 | [diff] [blame] | 84 | ctx->Extensions.ARB_texture_mirror_clamp_to_edge = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 85 | ctx->Extensions.ARB_texture_non_power_of_two = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 86 | ctx->Extensions.ARB_texture_rg = true; |
| 87 | ctx->Extensions.ARB_texture_rgb10_a2ui = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 88 | ctx->Extensions.ARB_vertex_program = true; |
| 89 | ctx->Extensions.ARB_vertex_shader = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 90 | ctx->Extensions.ARB_vertex_type_2_10_10_10_rev = true; |
Chris Forbes | 351e13c | 2014-03-21 23:00:58 +1300 | [diff] [blame] | 91 | ctx->Extensions.ARB_vertex_type_10f_11f_11f_rev = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 92 | ctx->Extensions.EXT_blend_color = true; |
| 93 | ctx->Extensions.EXT_blend_equation_separate = true; |
| 94 | ctx->Extensions.EXT_blend_func_separate = true; |
| 95 | ctx->Extensions.EXT_blend_minmax = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 96 | ctx->Extensions.EXT_draw_buffers2 = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 97 | ctx->Extensions.EXT_framebuffer_sRGB = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 98 | ctx->Extensions.EXT_gpu_program_parameters = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 99 | ctx->Extensions.EXT_packed_float = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 100 | ctx->Extensions.EXT_pixel_buffer_object = true; |
| 101 | ctx->Extensions.EXT_point_parameters = true; |
Ilia Mirkin | dbae576 | 2015-06-19 13:36:15 -0700 | [diff] [blame] | 102 | ctx->Extensions.EXT_polygon_offset_clamp = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 103 | ctx->Extensions.EXT_provoking_vertex = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 104 | ctx->Extensions.EXT_stencil_two_side = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 105 | ctx->Extensions.EXT_texture_array = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 106 | ctx->Extensions.EXT_texture_env_dot3 = true; |
| 107 | ctx->Extensions.EXT_texture_filter_anisotropic = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 108 | ctx->Extensions.EXT_texture_integer = true; |
| 109 | ctx->Extensions.EXT_texture_shared_exponent = true; |
| 110 | ctx->Extensions.EXT_texture_snorm = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 111 | ctx->Extensions.EXT_texture_sRGB = true; |
| 112 | ctx->Extensions.EXT_texture_sRGB_decode = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 113 | ctx->Extensions.EXT_texture_swizzle = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 114 | ctx->Extensions.EXT_vertex_array_bgra = true; |
Kristian Høgsberg Kristensen | 85008db | 2016-05-23 22:49:51 -0700 | [diff] [blame] | 115 | ctx->Extensions.KHR_robustness = true; |
Ian Romanick | 2937d70 | 2013-09-04 11:15:15 -0700 | [diff] [blame] | 116 | ctx->Extensions.AMD_seamless_cubemap_per_texture = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 117 | ctx->Extensions.APPLE_object_purgeable = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 118 | ctx->Extensions.ATI_separate_stencil = true; |
| 119 | ctx->Extensions.ATI_texture_env_combine3 = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 120 | ctx->Extensions.MESA_pack_invert = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 121 | ctx->Extensions.NV_conditional_render = true; |
| 122 | ctx->Extensions.NV_primitive_restart = true; |
Ilia Mirkin | 71e1874 | 2015-08-13 15:39:40 -0400 | [diff] [blame] | 123 | ctx->Extensions.NV_texture_barrier = true; |
Ian Romanick | 4ed976f | 2013-06-27 18:20:15 -0700 | [diff] [blame] | 124 | ctx->Extensions.NV_texture_env_combine4 = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 125 | ctx->Extensions.NV_texture_rectangle = true; |
Ian Romanick | 71cecca | 2011-08-22 13:15:42 -0700 | [diff] [blame] | 126 | ctx->Extensions.TDFX_texture_compression_FXT1 = true; |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 127 | ctx->Extensions.OES_compressed_ETC1_RGB8_texture = true; |
Kenneth Graunke | 8812851 | 2012-05-23 17:06:45 -0700 | [diff] [blame] | 128 | ctx->Extensions.OES_draw_texture = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 129 | ctx->Extensions.OES_EGL_image = true; |
Topi Pohjolainen | f5947c2 | 2012-11-12 13:38:08 +0200 | [diff] [blame] | 130 | ctx->Extensions.OES_EGL_image_external = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 131 | ctx->Extensions.OES_standard_derivatives = true; |
| 132 | ctx->Extensions.OES_texture_float = true; |
| 133 | ctx->Extensions.OES_texture_float_linear = true; |
| 134 | ctx->Extensions.OES_texture_half_float = true; |
| 135 | ctx->Extensions.OES_texture_half_float_linear = true; |
Chad Versace | a348179 | 2010-10-07 16:04:30 -0700 | [diff] [blame] | 136 | |
Iago Toral Quiroga | 7146517 | 2016-02-23 12:15:36 +0100 | [diff] [blame] | 137 | if (brw->gen >= 8) |
Kenneth Graunke | 75128d6 | 2016-10-14 16:33:19 -0700 | [diff] [blame] | 138 | ctx->Const.GLSLVersion = 450; |
Iago Toral Quiroga | e3123c8 | 2017-01-03 09:27:09 +0100 | [diff] [blame] | 139 | else if (brw->is_haswell && can_do_pipelined_register_writes(brw->screen)) |
Kenneth Graunke | d2590eb | 2017-01-13 22:53:34 -0800 | [diff] [blame^] | 140 | ctx->Const.GLSLVersion = 450; |
Iago Toral Quiroga | 7146517 | 2016-02-23 12:15:36 +0100 | [diff] [blame] | 141 | else if (brw->gen >= 6) |
Kenneth Graunke | 567445e | 2013-10-17 23:14:23 -0700 | [diff] [blame] | 142 | ctx->Const.GLSLVersion = 330; |
Eric Anholt | 8727807 | 2011-11-08 19:17:47 -0800 | [diff] [blame] | 143 | else |
| 144 | ctx->Const.GLSLVersion = 120; |
Marek Olšák | d9a6f43 | 2014-08-03 03:40:49 +0200 | [diff] [blame] | 145 | _mesa_override_glsl_version(&ctx->Const); |
Kristian Høgsberg | b91dba4 | 2010-09-22 11:01:11 -0400 | [diff] [blame] | 146 | |
Ian Romanick | 4b2b6d4 | 2016-06-21 10:56:23 -0700 | [diff] [blame] | 147 | ctx->Extensions.EXT_shader_integer_mix = ctx->Const.GLSLVersion >= 130; |
Ian Romanick | 7cb49b1 | 2016-06-23 16:19:45 -0700 | [diff] [blame] | 148 | ctx->Extensions.MESA_shader_integer_functions = ctx->Const.GLSLVersion >= 130; |
Ian Romanick | 4b2b6d4 | 2016-06-21 10:56:23 -0700 | [diff] [blame] | 149 | |
Kenneth Graunke | c2b10ca | 2016-06-27 23:02:24 -0700 | [diff] [blame] | 150 | if (brw->is_g4x || brw->gen >= 5) { |
Francisco Jerez | 8a2f19a | 2016-07-19 15:23:30 -0700 | [diff] [blame] | 151 | ctx->Extensions.MESA_shader_framebuffer_fetch_non_coherent = true; |
Kenneth Graunke | c2b10ca | 2016-06-27 23:02:24 -0700 | [diff] [blame] | 152 | ctx->Extensions.KHR_blend_equation_advanced = true; |
| 153 | } |
Francisco Jerez | 8a2f19a | 2016-07-19 15:23:30 -0700 | [diff] [blame] | 154 | |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 155 | if (brw->gen >= 5) { |
| 156 | ctx->Extensions.ARB_texture_query_levels = ctx->Const.GLSLVersion >= 130; |
| 157 | ctx->Extensions.ARB_texture_query_lod = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 158 | ctx->Extensions.EXT_timer_query = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 159 | } |
| 160 | |
Kenneth Graunke | 53631be | 2013-07-06 00:36:46 -0700 | [diff] [blame] | 161 | if (brw->gen >= 6) { |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 162 | ctx->Extensions.ARB_blend_func_extended = |
| 163 | !driQueryOptionb(&brw->optionCache, "disable_blend_func_extended"); |
| 164 | ctx->Extensions.ARB_conditional_render_inverted = true; |
Dave Airlie | a88c5d7 | 2016-05-16 08:57:45 +1000 | [diff] [blame] | 165 | ctx->Extensions.ARB_cull_distance = true; |
Eric Anholt | b7932e1 | 2012-04-25 13:19:28 -0700 | [diff] [blame] | 166 | ctx->Extensions.ARB_draw_buffers_blend = true; |
Timothy Arceri | 4ba9bd1 | 2016-05-20 13:37:45 +1000 | [diff] [blame] | 167 | ctx->Extensions.ARB_enhanced_layouts = true; |
Paul Berry | e4f661a | 2012-08-07 12:39:30 -0700 | [diff] [blame] | 168 | ctx->Extensions.ARB_ES3_compatibility = true; |
Kenneth Graunke | 8c902a5 | 2015-06-17 13:06:18 -0700 | [diff] [blame] | 169 | ctx->Extensions.ARB_fragment_layer_viewport = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 170 | ctx->Extensions.ARB_sample_shading = true; |
Kenneth Graunke | 46d9baf | 2013-07-17 18:18:00 -0700 | [diff] [blame] | 171 | ctx->Extensions.ARB_shading_language_420pack = true; |
Marek Olšák | afa902a | 2012-12-08 22:53:23 +0100 | [diff] [blame] | 172 | ctx->Extensions.ARB_texture_buffer_object = true; |
Eric Anholt | 5e529d7 | 2013-01-10 14:53:12 -0800 | [diff] [blame] | 173 | ctx->Extensions.ARB_texture_buffer_object_rgb32 = true; |
Eric Anholt | a5e2e7f | 2013-10-04 17:46:04 -0700 | [diff] [blame] | 174 | ctx->Extensions.ARB_texture_buffer_range = true; |
Chris Forbes | 2f7f095 | 2012-11-22 19:24:22 +1300 | [diff] [blame] | 175 | ctx->Extensions.ARB_texture_cube_map_array = true; |
Chris Forbes | 0c14c5c | 2014-02-02 22:00:18 +1300 | [diff] [blame] | 176 | ctx->Extensions.ARB_texture_gather = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 177 | ctx->Extensions.ARB_texture_multisample = true; |
| 178 | ctx->Extensions.ARB_uniform_buffer_object = true; |
| 179 | |
Samuel Iglesias Gonsalvez | 74d7ff2 | 2014-07-09 13:19:34 +0200 | [diff] [blame] | 180 | ctx->Extensions.AMD_vertex_shader_layer = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 181 | ctx->Extensions.EXT_framebuffer_multisample = true; |
| 182 | ctx->Extensions.EXT_framebuffer_multisample_blit_scaled = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 183 | ctx->Extensions.EXT_transform_feedback = true; |
| 184 | ctx->Extensions.OES_depth_texture_cube_map = true; |
Kenneth Graunke | 9a1936d | 2016-04-03 23:03:34 -0700 | [diff] [blame] | 185 | ctx->Extensions.OES_sample_variables = true; |
Ian Romanick | 0b9398c | 2013-06-27 18:20:17 -0700 | [diff] [blame] | 186 | |
Kenneth Graunke | 9694b23 | 2015-11-30 15:47:13 -0800 | [diff] [blame] | 187 | ctx->Extensions.ARB_timer_query = brw->screen->hw_has_timestamp; |
Chris Forbes | 5fc2337 | 2015-05-06 17:45:11 +1200 | [diff] [blame] | 188 | |
| 189 | /* Only enable this in core profile because other parts of Mesa behave |
| 190 | * slightly differently when the extension is enabled. |
| 191 | */ |
| 192 | if (ctx->API == API_OPENGL_CORE) { |
Dave Airlie | 80511d1 | 2015-07-21 14:22:11 +1000 | [diff] [blame] | 193 | ctx->Extensions.ARB_shader_subroutine = true; |
Dylan Baker | d4bf9ba | 2016-09-19 15:36:09 -0700 | [diff] [blame] | 194 | ctx->Extensions.ARB_shader_viewport_layer_array = true; |
Chris Forbes | 5fc2337 | 2015-05-06 17:45:11 +1200 | [diff] [blame] | 195 | ctx->Extensions.ARB_viewport_array = true; |
| 196 | ctx->Extensions.AMD_vertex_shader_viewport_index = true; |
| 197 | } |
Eric Anholt | b7932e1 | 2012-04-25 13:19:28 -0700 | [diff] [blame] | 198 | } |
| 199 | |
Neil Roberts | 4260230 | 2014-11-04 19:15:00 +0000 | [diff] [blame] | 200 | brw->predicate.supported = false; |
| 201 | |
Chris Forbes | 7df985a | 2013-03-24 20:18:55 +1300 | [diff] [blame] | 202 | if (brw->gen >= 7) { |
Chris Forbes | 7ec4668 | 2013-10-05 21:40:57 +1300 | [diff] [blame] | 203 | ctx->Extensions.ARB_conservative_depth = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 204 | ctx->Extensions.ARB_derivative_control = true; |
Kevin Rogovin | 8319999 | 2015-06-17 13:29:58 +0300 | [diff] [blame] | 205 | ctx->Extensions.ARB_framebuffer_no_attachments = true; |
Matt Turner | ff6ee39 | 2015-04-24 11:28:06 -0700 | [diff] [blame] | 206 | ctx->Extensions.ARB_gpu_shader5 = true; |
| 207 | ctx->Extensions.ARB_shader_atomic_counters = true; |
Ian Romanick | 40dd45d | 2016-06-30 10:38:16 -0700 | [diff] [blame] | 208 | ctx->Extensions.ARB_shader_atomic_counter_ops = true; |
Emil Velikov | 60418a2 | 2015-10-30 17:23:18 +0000 | [diff] [blame] | 209 | ctx->Extensions.ARB_shader_clock = true; |
Francisco Jerez | d03c657 | 2015-05-07 18:56:01 +0300 | [diff] [blame] | 210 | ctx->Extensions.ARB_shader_image_load_store = true; |
Martin Peres | e5851cf | 2015-04-29 12:42:16 +0300 | [diff] [blame] | 211 | ctx->Extensions.ARB_shader_image_size = true; |
Ilia Mirkin | bfc5ace | 2015-08-11 20:38:48 -0400 | [diff] [blame] | 212 | ctx->Extensions.ARB_shader_texture_image_samples = true; |
Kenneth Graunke | 381a89c | 2015-11-25 17:56:33 -0800 | [diff] [blame] | 213 | ctx->Extensions.ARB_tessellation_shader = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 214 | ctx->Extensions.ARB_texture_compression_bptc = true; |
Kenneth Graunke | ecfc418 | 2014-05-06 16:04:40 -0700 | [diff] [blame] | 215 | ctx->Extensions.ARB_texture_view = true; |
Samuel Iglesias Gonsalvez | 614b530 | 2015-03-18 07:36:24 +0100 | [diff] [blame] | 216 | ctx->Extensions.ARB_shader_storage_buffer_object = true; |
Ian Romanick | 99840eb | 2015-11-17 17:57:08 -0800 | [diff] [blame] | 217 | ctx->Extensions.EXT_shader_samples_identical = true; |
Ilia Mirkin | a0b1260 | 2016-08-28 16:03:21 -0400 | [diff] [blame] | 218 | ctx->Extensions.OES_primitive_bounding_box = true; |
Ilia Mirkin | 875543e | 2016-03-29 19:30:31 -0400 | [diff] [blame] | 219 | ctx->Extensions.OES_texture_buffer = true; |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 220 | |
Iago Toral Quiroga | 1f1b8de | 2017-01-04 09:06:06 +0100 | [diff] [blame] | 221 | if (can_do_pipelined_register_writes(brw->screen)) { |
Ian Romanick | 51e3453 | 2015-04-21 13:43:32 +0900 | [diff] [blame] | 222 | ctx->Extensions.ARB_draw_indirect = true; |
Kenneth Graunke | 129da5b | 2013-05-27 20:09:56 -0700 | [diff] [blame] | 223 | ctx->Extensions.ARB_transform_feedback2 = true; |
Kenneth Graunke | c4ec0ad | 2013-10-26 13:20:02 -0700 | [diff] [blame] | 224 | ctx->Extensions.ARB_transform_feedback3 = true; |
Kenneth Graunke | 0eeaf11 | 2013-10-26 13:27:18 -0700 | [diff] [blame] | 225 | ctx->Extensions.ARB_transform_feedback_instanced = true; |
Neil Roberts | 4260230 | 2014-11-04 19:15:00 +0000 | [diff] [blame] | 226 | |
Iago Toral Quiroga | a98f2e5 | 2017-01-04 10:46:08 +0100 | [diff] [blame] | 227 | if (can_do_compute_dispatch(brw->screen) && |
Kenneth Graunke | 32b1c0b | 2016-05-12 18:08:49 -0700 | [diff] [blame] | 228 | ctx->Const.MaxComputeWorkGroupSize[0] >= 1024) { |
Kenneth Graunke | bd21b54 | 2016-01-05 02:54:50 -0800 | [diff] [blame] | 229 | ctx->Extensions.ARB_compute_shader = true; |
Jordan Justen | 5e76baa | 2016-08-27 14:13:23 -0700 | [diff] [blame] | 230 | ctx->Extensions.ARB_ES3_1_compatibility = |
| 231 | brw->gen >= 8 || brw->is_haswell; |
Kenneth Graunke | 32b1c0b | 2016-05-12 18:08:49 -0700 | [diff] [blame] | 232 | } |
Kenneth Graunke | bd21b54 | 2016-01-05 02:54:50 -0800 | [diff] [blame] | 233 | |
Iago Toral Quiroga | a98f2e5 | 2017-01-04 10:46:08 +0100 | [diff] [blame] | 234 | if (can_do_predicate_writes(brw->screen)) |
Neil Roberts | 4260230 | 2014-11-04 19:15:00 +0000 | [diff] [blame] | 235 | brw->predicate.supported = true; |
Kenneth Graunke | 129da5b | 2013-05-27 20:09:56 -0700 | [diff] [blame] | 236 | } |
Chris Forbes | 7df985a | 2013-03-24 20:18:55 +1300 | [diff] [blame] | 237 | } |
| 238 | |
Jordan Justen | f20f616 | 2016-06-08 13:21:10 -0700 | [diff] [blame] | 239 | if (brw->gen >= 8 || brw->is_haswell) { |
Samuel Iglesias Gonsálvez | 1d1ddba | 2016-10-17 13:58:27 +0200 | [diff] [blame] | 240 | ctx->Extensions.ARB_gpu_shader_fp64 = true; |
Samuel Iglesias Gonsálvez | 7707798 | 2016-10-17 13:59:18 +0200 | [diff] [blame] | 241 | ctx->Extensions.ARB_shader_precision = true; |
Jordan Justen | f20f616 | 2016-06-08 13:21:10 -0700 | [diff] [blame] | 242 | ctx->Extensions.ARB_stencil_texturing = true; |
Jordan Justen | 116b6e1 | 2016-06-14 15:57:49 -0700 | [diff] [blame] | 243 | ctx->Extensions.ARB_texture_stencil8 = true; |
Samuel Iglesias Gonsálvez | 1d1ddba | 2016-10-17 13:58:27 +0200 | [diff] [blame] | 244 | ctx->Extensions.ARB_vertex_attrib_64bit = true; |
Ian Romanick | 1472ff3 | 2016-11-08 10:10:35 -0800 | [diff] [blame] | 245 | ctx->Extensions.OES_geometry_shader = true; |
| 246 | ctx->Extensions.OES_texture_cube_map_array = true; |
| 247 | ctx->Extensions.OES_viewport_array = true; |
Jordan Justen | f20f616 | 2016-06-08 13:21:10 -0700 | [diff] [blame] | 248 | } |
| 249 | |
Jason Ekstrand | 75d10df | 2016-05-17 13:46:43 -0700 | [diff] [blame] | 250 | if (brw->gen >= 8 || brw->is_haswell || brw->is_baytrail) { |
| 251 | ctx->Extensions.ARB_robust_buffer_access_behavior = true; |
Jason Ekstrand | 75d10df | 2016-05-17 13:46:43 -0700 | [diff] [blame] | 252 | } |
| 253 | |
Iago Toral Quiroga | a98f2e5 | 2017-01-04 10:46:08 +0100 | [diff] [blame] | 254 | if (can_do_mi_math_and_lrr(brw->screen)) { |
Jordan Justen | f00c399 | 2016-04-19 09:42:13 -0700 | [diff] [blame] | 255 | ctx->Extensions.ARB_query_buffer_object = true; |
| 256 | } |
| 257 | |
Kenneth Graunke | 0f0f357 | 2016-05-19 21:44:59 -0700 | [diff] [blame] | 258 | if (brw->gen >= 8 || brw->is_baytrail) { |
| 259 | /* For now, we only enable OES_copy_image on platforms that support |
| 260 | * ETC2 natively in hardware. We would need more hacks to support it |
| 261 | * elsewhere. |
| 262 | */ |
| 263 | ctx->Extensions.OES_copy_image = true; |
| 264 | } |
| 265 | |
Kenneth Graunke | dfa1ab0 | 2014-02-23 21:59:25 -0800 | [diff] [blame] | 266 | if (brw->gen >= 8) { |
Ilia Mirkin | 9fec15a | 2016-08-28 19:55:05 -0400 | [diff] [blame] | 267 | ctx->Extensions.ARB_ES3_2_compatibility = true; |
Kenneth Graunke | dfa1ab0 | 2014-02-23 21:59:25 -0800 | [diff] [blame] | 268 | } |
| 269 | |
Nanley Chery | f3a4830 | 2015-05-19 12:28:20 -0700 | [diff] [blame] | 270 | if (brw->gen >= 9) { |
Ian Romanick | 4246986 | 2016-09-01 12:05:42 -0700 | [diff] [blame] | 271 | ctx->Extensions.ANDROID_extension_pack_es31a = true; |
| 272 | ctx->Extensions.ARB_shader_stencil_export = true; |
Kenneth Graunke | 219a451 | 2016-06-29 22:16:49 -0700 | [diff] [blame] | 273 | ctx->Extensions.KHR_blend_equation_advanced_coherent = true; |
Nanley Chery | f3a4830 | 2015-05-19 12:28:20 -0700 | [diff] [blame] | 274 | ctx->Extensions.KHR_texture_compression_astc_ldr = true; |
Anuj Phogat | ac0eb36 | 2016-07-07 17:04:17 -0700 | [diff] [blame] | 275 | ctx->Extensions.KHR_texture_compression_astc_sliced_3d = true; |
Lionel Landwerlin | e9f17e9 | 2016-11-25 14:23:01 +0000 | [diff] [blame] | 276 | ctx->Extensions.INTEL_conservative_rasterization = true; |
Francisco Jerez | da85b5a | 2016-07-22 15:52:49 -0700 | [diff] [blame] | 277 | ctx->Extensions.MESA_shader_framebuffer_fetch = true; |
Plamena Manolova | 0ff74a8 | 2016-12-06 21:37:01 +0200 | [diff] [blame] | 278 | ctx->Extensions.ARB_post_depth_coverage = true; |
Nanley Chery | f3a4830 | 2015-05-19 12:28:20 -0700 | [diff] [blame] | 279 | } |
| 280 | |
Ian Romanick | ae66a65 | 2013-06-27 18:20:16 -0700 | [diff] [blame] | 281 | if (ctx->API == API_OPENGL_CORE) |
| 282 | ctx->Extensions.ARB_base_instance = true; |
| 283 | if (ctx->API != API_OPENGL_CORE) |
| 284 | ctx->Extensions.ARB_color_buffer_float = true; |
Ian Romanick | 425c803 | 2009-01-27 23:44:18 -0800 | [diff] [blame] | 285 | |
Kenneth Graunke | e3c2bb1 | 2013-07-03 23:32:20 -0700 | [diff] [blame] | 286 | if (ctx->Mesa_DXTn || driQueryOptionb(&brw->optionCache, "force_s3tc_enable")) |
Ian Romanick | 0a5478c | 2011-08-22 13:18:06 -0700 | [diff] [blame] | 287 | ctx->Extensions.EXT_texture_compression_s3tc = true; |
Ian Romanick | 5bd86b2 | 2012-08-21 15:33:04 -0700 | [diff] [blame] | 288 | |
| 289 | ctx->Extensions.ANGLE_texture_compression_dxt = true; |
Brian Paul | 4006c5e | 2009-01-26 12:22:04 -0700 | [diff] [blame] | 290 | } |