intel_extensions.c revision b91dba49e0b08b18dbd6c477facdcc7b5472c8c7
14006c5e4526a1cdb910500764590e39d32750967Brian Paul/************************************************************************** 24006c5e4526a1cdb910500764590e39d32750967Brian Paul * 34006c5e4526a1cdb910500764590e39d32750967Brian Paul * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. 44006c5e4526a1cdb910500764590e39d32750967Brian Paul * All Rights Reserved. 54006c5e4526a1cdb910500764590e39d32750967Brian Paul * 64006c5e4526a1cdb910500764590e39d32750967Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a 74006c5e4526a1cdb910500764590e39d32750967Brian Paul * copy of this software and associated documentation files (the 84006c5e4526a1cdb910500764590e39d32750967Brian Paul * "Software"), to deal in the Software without restriction, including 94006c5e4526a1cdb910500764590e39d32750967Brian Paul * without limitation the rights to use, copy, modify, merge, publish, 104006c5e4526a1cdb910500764590e39d32750967Brian Paul * distribute, sub license, and/or sell copies of the Software, and to 114006c5e4526a1cdb910500764590e39d32750967Brian Paul * permit persons to whom the Software is furnished to do so, subject to 124006c5e4526a1cdb910500764590e39d32750967Brian Paul * the following conditions: 134006c5e4526a1cdb910500764590e39d32750967Brian Paul * 144006c5e4526a1cdb910500764590e39d32750967Brian Paul * The above copyright notice and this permission notice (including the 154006c5e4526a1cdb910500764590e39d32750967Brian Paul * next paragraph) shall be included in all copies or substantial portions 164006c5e4526a1cdb910500764590e39d32750967Brian Paul * of the Software. 174006c5e4526a1cdb910500764590e39d32750967Brian Paul * 184006c5e4526a1cdb910500764590e39d32750967Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 194006c5e4526a1cdb910500764590e39d32750967Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 204006c5e4526a1cdb910500764590e39d32750967Brian Paul * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 214006c5e4526a1cdb910500764590e39d32750967Brian Paul * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 224006c5e4526a1cdb910500764590e39d32750967Brian Paul * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 234006c5e4526a1cdb910500764590e39d32750967Brian Paul * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 244006c5e4526a1cdb910500764590e39d32750967Brian Paul * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 254006c5e4526a1cdb910500764590e39d32750967Brian Paul * 264006c5e4526a1cdb910500764590e39d32750967Brian Paul **************************************************************************/ 274006c5e4526a1cdb910500764590e39d32750967Brian Paul 284006c5e4526a1cdb910500764590e39d32750967Brian Paul#include "intel_chipset.h" 294006c5e4526a1cdb910500764590e39d32750967Brian Paul#include "intel_context.h" 304006c5e4526a1cdb910500764590e39d32750967Brian Paul#include "intel_extensions.h" 3117ef1f6074d6107c167f1956a5c60993904c0b72Chia-I Wu#include "utils.h" 324006c5e4526a1cdb910500764590e39d32750967Brian Paul 334006c5e4526a1cdb910500764590e39d32750967Brian Paul 3460b072d49fd2a1b2bf59442ae7209379152b1500Eric Anholt#define need_GL_ARB_copy_buffer 35f959ccdfa6c8accd74b6e33040b716645f0a7057Eric Anholt#define need_GL_ARB_draw_elements_base_vertex 364006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_framebuffer_object 372d5c74fac3cc0f9d45a9e11b2fcdea1bc67928c4Eric Anholt#define need_GL_ARB_map_buffer_range 384006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_occlusion_query 394006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_point_parameters 404006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_shader_objects 41afd6141934a0fb52fc1739a2a9992db3ac34682bEric Anholt#define need_GL_ARB_sync 428affcd364bd99b7da44e565db91c6c0afbf9ce77Brian Paul#define need_GL_ARB_vertex_array_object 434006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_vertex_program 444006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_vertex_shader 454006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ARB_window_pos 464006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_blend_color 474006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_blend_equation_separate 484006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_blend_func_separate 494006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_blend_minmax 504006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_cull_vertex 51ab53f710151d920286d0c92f93262fb468008051Eric Anholt#define need_GL_EXT_draw_buffers2 524006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_fog_coord 534006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_framebuffer_blit 54e0564d56b1d3bc339b7a9cd232df4b042a93aab2Eric Anholt#define need_GL_EXT_framebuffer_multisample 55e0564d56b1d3bc339b7a9cd232df4b042a93aab2Eric Anholt#define need_GL_EXT_framebuffer_object 561f070125e365dadf97797785fdeef1ccb1431f21Eric Anholt#define need_GL_EXT_gpu_program_parameters 574006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_point_parameters 58de80eeea0eebf00ee678b1a0fbd5fe67b00a8636Eric Anholt#define need_GL_EXT_provoking_vertex 594006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_secondary_color 604006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_EXT_stencil_two_side 613b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt#define need_GL_EXT_timer_query 62a566b6d8ffa45728231f9040b15f86d403304c87Brian Paul#define need_GL_APPLE_vertex_array_object 63755915fa5d9ea782d142b3f8755b62d6de28fe29Chris Wilson#define need_GL_APPLE_object_purgeable 644006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_ATI_separate_stencil 653327cc64e7fdc13d3843ccb17763f68dd381185fRoland Scheidegger#define need_GL_ATI_envmap_bumpmap 664006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_NV_point_sprite 674006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_NV_vertex_program 682002e4d06e2627241cd4af88f65b54d2101ef151Chia-I Wu#define need_GL_OES_EGL_image 694006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_VERSION_2_0 704006c5e4526a1cdb910500764590e39d32750967Brian Paul#define need_GL_VERSION_2_1 714006c5e4526a1cdb910500764590e39d32750967Brian Paul 7217ef1f6074d6107c167f1956a5c60993904c0b72Chia-I Wu#include "main/remap_helper.h" 734006c5e4526a1cdb910500764590e39d32750967Brian Paul 744006c5e4526a1cdb910500764590e39d32750967Brian Paul 754006c5e4526a1cdb910500764590e39d32750967Brian Paul/** 764006c5e4526a1cdb910500764590e39d32750967Brian Paul * Extension strings exported by the intel driver. 774006c5e4526a1cdb910500764590e39d32750967Brian Paul * 784006c5e4526a1cdb910500764590e39d32750967Brian Paul * Extensions supported by all chips supported by i830_dri, i915_dri, or 794006c5e4526a1cdb910500764590e39d32750967Brian Paul * i965_dri. 804006c5e4526a1cdb910500764590e39d32750967Brian Paul */ 814006c5e4526a1cdb910500764590e39d32750967Brian Paulstatic const struct dri_extension card_extensions[] = { 8260b072d49fd2a1b2bf59442ae7209379152b1500Eric Anholt { "GL_ARB_copy_buffer", GL_ARB_copy_buffer_functions }, 83f959ccdfa6c8accd74b6e33040b716645f0a7057Eric Anholt { "GL_ARB_draw_elements_base_vertex", GL_ARB_draw_elements_base_vertex_functions }, 8463c407db3ef28862588660478a94102860480731Roland Scheidegger { "GL_ARB_half_float_pixel", NULL }, 852d5c74fac3cc0f9d45a9e11b2fcdea1bc67928c4Eric Anholt { "GL_ARB_map_buffer_range", GL_ARB_map_buffer_range_functions }, 864006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_multitexture", NULL }, 87827ba44f6ee83ab21c6a2b09323f6f1df4a7d4c8Eric Anholt { "GL_ARB_pixel_buffer_object", NULL }, 884006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_point_parameters", GL_ARB_point_parameters_functions }, 8992b9aa1646daa7d9e6470e9d1dbb3460eeae8941Eric Anholt { "GL_ARB_point_sprite", NULL }, 907d4b7460b0e565d0574c00d1d40c426cfebc290dEric Anholt { "GL_ARB_shader_objects", GL_ARB_shader_objects_functions }, 917d4b7460b0e565d0574c00d1d40c426cfebc290dEric Anholt { "GL_ARB_shading_language_100", GL_VERSION_2_0_functions }, 92afd6141934a0fb52fc1739a2a9992db3ac34682bEric Anholt { "GL_ARB_sync", GL_ARB_sync_functions }, 934006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_border_clamp", NULL }, 944006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_cube_map", NULL }, 954006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_env_add", NULL }, 964006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_env_combine", NULL }, 974006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_env_crossbar", NULL }, 984006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_env_dot3", NULL }, 994006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_mirrored_repeat", NULL }, 1004006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_rectangle", NULL }, 1018affcd364bd99b7da44e565db91c6c0afbf9ce77Brian Paul { "GL_ARB_vertex_array_object", GL_ARB_vertex_array_object_functions}, 1024006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions }, 1037d4b7460b0e565d0574c00d1d40c426cfebc290dEric Anholt { "GL_ARB_vertex_shader", GL_ARB_vertex_shader_functions }, 1044006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_window_pos", GL_ARB_window_pos_functions }, 1054006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_color", GL_EXT_blend_color_functions }, 1064006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_equation_separate", GL_EXT_blend_equation_separate_functions }, 1074006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_func_separate", GL_EXT_blend_func_separate_functions }, 1084006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_minmax", GL_EXT_blend_minmax_functions }, 1094006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_logic_op", NULL }, 1104006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_blend_subtract", NULL }, 1114006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_cull_vertex", GL_EXT_cull_vertex_functions }, 112827ba44f6ee83ab21c6a2b09323f6f1df4a7d4c8Eric Anholt { "GL_EXT_framebuffer_blit", GL_EXT_framebuffer_blit_functions }, 113827ba44f6ee83ab21c6a2b09323f6f1df4a7d4c8Eric Anholt { "GL_EXT_framebuffer_object", GL_EXT_framebuffer_object_functions }, 114e0564d56b1d3bc339b7a9cd232df4b042a93aab2Eric Anholt { "GL_EXT_framebuffer_multisample", GL_EXT_framebuffer_multisample_functions }, 1154006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_fog_coord", GL_EXT_fog_coord_functions }, 1161f070125e365dadf97797785fdeef1ccb1431f21Eric Anholt { "GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions }, 1174006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_packed_depth_stencil", NULL }, 118de80eeea0eebf00ee678b1a0fbd5fe67b00a8636Eric Anholt { "GL_EXT_provoking_vertex", GL_EXT_provoking_vertex_functions }, 1194006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_secondary_color", GL_EXT_secondary_color_functions }, 1204006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_stencil_wrap", NULL }, 1214006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_edge_clamp", NULL }, 1224006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_env_combine", NULL }, 1234006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_env_dot3", NULL }, 1244006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_filter_anisotropic", NULL }, 1254006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_lod_bias", NULL }, 1264006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_3DFX_texture_compression_FXT1", NULL }, 1274006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_APPLE_client_storage", NULL }, 128755915fa5d9ea782d142b3f8755b62d6de28fe29Chris Wilson { "GL_APPLE_object_purgeable", GL_APPLE_object_purgeable_functions }, 129a566b6d8ffa45728231f9040b15f86d403304c87Brian Paul { "GL_APPLE_vertex_array_object", GL_APPLE_vertex_array_object_functions}, 1304006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_MESA_pack_invert", NULL }, 1314006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_MESA_ycbcr_texture", NULL }, 1324006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_NV_blend_square", NULL }, 1334006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_NV_vertex_program", GL_NV_vertex_program_functions }, 1344006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_NV_vertex_program1_1", NULL }, 1354006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_SGIS_generate_mipmap", NULL }, 1362002e4d06e2627241cd4af88f65b54d2101ef151Chia-I Wu#if FEATURE_OES_EGL_image 1372002e4d06e2627241cd4af88f65b54d2101ef151Chia-I Wu { "GL_OES_EGL_image", GL_OES_EGL_image_functions }, 1382002e4d06e2627241cd4af88f65b54d2101ef151Chia-I Wu#endif 1394006c5e4526a1cdb910500764590e39d32750967Brian Paul { NULL, NULL } 1404006c5e4526a1cdb910500764590e39d32750967Brian Paul}; 1414006c5e4526a1cdb910500764590e39d32750967Brian Paul 1424006c5e4526a1cdb910500764590e39d32750967Brian Paul 143425c803c039735aaaeb70f1613268fd4909862dcIan Romanick/** i915 / i945-only extensions */ 144425c803c039735aaaeb70f1613268fd4909862dcIan Romanickstatic const struct dri_extension i915_extensions[] = { 145425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_ARB_depth_texture", NULL }, 146425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_ARB_fragment_program", NULL }, 147425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_ARB_shadow", NULL }, 148425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_ARB_texture_non_power_of_two", NULL }, 149246729162ccc7e2672aa6cc957053ce3a8975a2cEric Anholt { "GL_ATI_separate_stencil", GL_ATI_separate_stencil_functions }, 150425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_ATI_texture_env_combine3", NULL }, 151425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_EXT_shadow_funcs", NULL }, 152246729162ccc7e2672aa6cc957053ce3a8975a2cEric Anholt { "GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions }, 153425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_NV_texture_env_combine4", NULL }, 154425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { NULL, NULL } 155425c803c039735aaaeb70f1613268fd4909862dcIan Romanick}; 156425c803c039735aaaeb70f1613268fd4909862dcIan Romanick 157425c803c039735aaaeb70f1613268fd4909862dcIan Romanick 1584006c5e4526a1cdb910500764590e39d32750967Brian Paul/** i965-only extensions */ 1594006c5e4526a1cdb910500764590e39d32750967Brian Paulstatic const struct dri_extension brw_extensions[] = { 1600310aafd9ea502e07a86b355cfca902102b9117cEric Anholt { "GL_ARB_depth_clamp", NULL }, 1614006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_depth_texture", NULL }, 162c41cf31da8e2b57ea9911ed1720650cfc2649a84Eric Anholt { "GL_ARB_fragment_coord_conventions", NULL }, 1634006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_fragment_program", NULL }, 1644006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_fragment_program_shadow", NULL }, 1654006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_fragment_shader", NULL }, 1664006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_framebuffer_object", GL_ARB_framebuffer_object_functions}, 16796f2f0daeadd5bd2d8433e31a1b122c2bd709390Dave Airlie { "GL_ARB_half_float_vertex", NULL }, 1684006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_occlusion_query", GL_ARB_occlusion_query_functions }, 1694006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_point_sprite", NULL }, 170e304c65a2b9c1005d6216e91d90a99001549a63dIan Romanick { "GL_ARB_seamless_cube_map", NULL }, 1714006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_shadow", NULL }, 17279e2df63af4d231a1223887e79a819b3baac9a6cRoland Scheidegger { "GL_MESA_texture_signed_rgba", NULL }, 1734006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ARB_texture_non_power_of_two", NULL }, 174ab53f710151d920286d0c92f93262fb468008051Eric Anholt { "GL_EXT_draw_buffers2", GL_EXT_draw_buffers2_functions }, 1754006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_shadow_funcs", NULL }, 1764006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_stencil_two_side", GL_EXT_stencil_two_side_functions }, 1774006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_texture_sRGB", NULL }, 178c0d3b7679aa90e1a0dca2db152205efaec088b90Brian Paul { "GL_EXT_texture_swizzle", NULL }, 1794006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_EXT_vertex_array_bgra", NULL }, 1803327cc64e7fdc13d3843ccb17763f68dd381185fRoland Scheidegger { "GL_ATI_envmap_bumpmap", GL_ATI_envmap_bumpmap_functions }, 1814006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ATI_separate_stencil", GL_ATI_separate_stencil_functions }, 1824006c5e4526a1cdb910500764590e39d32750967Brian Paul { "GL_ATI_texture_env_combine3", NULL }, 183425c803c039735aaaeb70f1613268fd4909862dcIan Romanick { "GL_NV_texture_env_combine4", NULL }, 1844006c5e4526a1cdb910500764590e39d32750967Brian Paul { NULL, NULL } 1854006c5e4526a1cdb910500764590e39d32750967Brian Paul}; 1864006c5e4526a1cdb910500764590e39d32750967Brian Paul 1873b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholtstatic const struct dri_extension ironlake_extensions[] = { 1883b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt { "GL_EXT_timer_query", GL_EXT_timer_query_functions }, 1893b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt}; 1904006c5e4526a1cdb910500764590e39d32750967Brian Paul 1914006c5e4526a1cdb910500764590e39d32750967Brian Paulstatic const struct dri_extension arb_oq_extensions[] = { 19281aa5d717bd0098608e9cc292b316293800c7e11Eric Anholt { "GL_ARB_occlusion_query", GL_ARB_occlusion_query_functions }, 1934006c5e4526a1cdb910500764590e39d32750967Brian Paul { NULL, NULL } 1944006c5e4526a1cdb910500764590e39d32750967Brian Paul}; 1954006c5e4526a1cdb910500764590e39d32750967Brian Paul 196755915fa5d9ea782d142b3f8755b62d6de28fe29Chris Wilson 197862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholtstatic const struct dri_extension fragment_shader_extensions[] = { 198862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt { "GL_ARB_fragment_shader", NULL }, 199862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt { NULL, NULL } 200862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt}; 2014006c5e4526a1cdb910500764590e39d32750967Brian Paul 2024006c5e4526a1cdb910500764590e39d32750967Brian Paul/** 2034006c5e4526a1cdb910500764590e39d32750967Brian Paul * Initializes potential list of extensions if ctx == NULL, or actually enables 2044006c5e4526a1cdb910500764590e39d32750967Brian Paul * extensions for a context. 2054006c5e4526a1cdb910500764590e39d32750967Brian Paul */ 2064006c5e4526a1cdb910500764590e39d32750967Brian Paulvoid 207a736d3f4399a99b54d6af140f2227253f2ee262bIan RomanickintelInitExtensions(GLcontext *ctx) 2084006c5e4526a1cdb910500764590e39d32750967Brian Paul{ 209b6b753f72728b734fc9886f4ec513ae09e6b269dIan Romanick struct intel_context *intel = intel_context(ctx); 2104006c5e4526a1cdb910500764590e39d32750967Brian Paul 2114006c5e4526a1cdb910500764590e39d32750967Brian Paul /* Disable imaging extension until convolution is working in teximage paths. 2124006c5e4526a1cdb910500764590e39d32750967Brian Paul */ 213a736d3f4399a99b54d6af140f2227253f2ee262bIan Romanick driInitExtensions(ctx, card_extensions, GL_FALSE); 2144006c5e4526a1cdb910500764590e39d32750967Brian Paul 215b91dba49e0b08b18dbd6c477facdcc7b5472c8c7Kristian Høgsberg _mesa_map_function_array(GL_VERSION_2_1_functions); 216b91dba49e0b08b18dbd6c477facdcc7b5472c8c7Kristian Høgsberg ctx->Const.GLSLVersion = 120; 217b91dba49e0b08b18dbd6c477facdcc7b5472c8c7Kristian Høgsberg 2183b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt if (intel->gen >= 5) 2193b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt driInitExtensions(ctx, ironlake_extensions, GL_FALSE); 2203b68b6c83e491d7f85baff6a31dcceee28622ae0Eric Anholt 221cb3810dd19760797e699c47929f655b829c4d339Eric Anholt if (intel->gen >= 4) 2224006c5e4526a1cdb910500764590e39d32750967Brian Paul driInitExtensions(ctx, brw_extensions, GL_FALSE); 223425c803c039735aaaeb70f1613268fd4909862dcIan Romanick 224f67748038935e609aa85450b20d550b4813c9429Eric Anholt if (intel->gen == 3) { 225425c803c039735aaaeb70f1613268fd4909862dcIan Romanick driInitExtensions(ctx, i915_extensions, GL_FALSE); 226862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt 227b6b753f72728b734fc9886f4ec513ae09e6b269dIan Romanick if (driQueryOptionb(&intel->optionCache, "fragment_shader")) 228862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt driInitExtensions(ctx, fragment_shader_extensions, GL_FALSE); 22981aa5d717bd0098608e9cc292b316293800c7e11Eric Anholt 230b6b753f72728b734fc9886f4ec513ae09e6b269dIan Romanick if (driQueryOptionb(&intel->optionCache, "stub_occlusion_query")) 23181aa5d717bd0098608e9cc292b316293800c7e11Eric Anholt driInitExtensions(ctx, arb_oq_extensions, GL_FALSE); 232862a2a55b35d1dec9224b025a6e7a0cf8593a6a7Eric Anholt } 2334006c5e4526a1cdb910500764590e39d32750967Brian Paul} 234