1 /**************************************************************************
3 * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
28 #include "main/version.h"
30 #include "intel_chipset.h"
31 #include "intel_context.h"
32 #include "intel_extensions.h"
33 #include "intel_reg.h"
37 * Initializes potential list of extensions if ctx == NULL, or actually enables
38 * extensions for a context.
41 intelInitExtensions(struct gl_context
*ctx
)
43 struct intel_context
*intel
= intel_context(ctx
);
45 assert(intel
->gen
>= 4);
47 ctx
->Extensions
.ARB_depth_buffer_float
= true;
48 ctx
->Extensions
.ARB_depth_clamp
= true;
49 ctx
->Extensions
.ARB_depth_texture
= true;
50 ctx
->Extensions
.ARB_draw_elements_base_vertex
= true;
51 ctx
->Extensions
.ARB_draw_instanced
= true;
52 ctx
->Extensions
.ARB_ES2_compatibility
= true;
53 ctx
->Extensions
.ARB_explicit_attrib_location
= true;
54 ctx
->Extensions
.ARB_fragment_coord_conventions
= true;
55 ctx
->Extensions
.ARB_fragment_program
= true;
56 ctx
->Extensions
.ARB_fragment_program_shadow
= true;
57 ctx
->Extensions
.ARB_fragment_shader
= true;
58 ctx
->Extensions
.ARB_framebuffer_object
= true;
59 ctx
->Extensions
.ARB_half_float_pixel
= true;
60 ctx
->Extensions
.ARB_half_float_vertex
= true;
61 ctx
->Extensions
.ARB_instanced_arrays
= true;
62 ctx
->Extensions
.ARB_internalformat_query
= true;
63 ctx
->Extensions
.ARB_map_buffer_range
= true;
64 ctx
->Extensions
.ARB_occlusion_query
= true;
65 ctx
->Extensions
.ARB_occlusion_query2
= true;
66 ctx
->Extensions
.ARB_point_sprite
= true;
67 ctx
->Extensions
.ARB_seamless_cube_map
= true;
68 ctx
->Extensions
.ARB_shader_bit_encoding
= true;
69 ctx
->Extensions
.ARB_shader_objects
= true;
70 ctx
->Extensions
.ARB_shader_texture_lod
= true;
71 ctx
->Extensions
.ARB_shading_language_100
= true;
72 ctx
->Extensions
.ARB_shadow
= true;
73 ctx
->Extensions
.ARB_sync
= true;
74 ctx
->Extensions
.ARB_texture_border_clamp
= true;
75 ctx
->Extensions
.ARB_texture_compression_rgtc
= true;
76 ctx
->Extensions
.ARB_texture_cube_map
= true;
77 ctx
->Extensions
.ARB_texture_env_combine
= true;
78 ctx
->Extensions
.ARB_texture_env_crossbar
= true;
79 ctx
->Extensions
.ARB_texture_env_dot3
= true;
80 ctx
->Extensions
.ARB_texture_float
= true;
81 ctx
->Extensions
.ARB_texture_non_power_of_two
= true;
82 ctx
->Extensions
.ARB_texture_rg
= true;
83 ctx
->Extensions
.ARB_texture_rgb10_a2ui
= true;
84 ctx
->Extensions
.ARB_texture_storage
= true;
85 ctx
->Extensions
.ARB_vertex_program
= true;
86 ctx
->Extensions
.ARB_vertex_shader
= true;
87 ctx
->Extensions
.ARB_vertex_type_2_10_10_10_rev
= true;
88 ctx
->Extensions
.EXT_blend_color
= true;
89 ctx
->Extensions
.EXT_blend_equation_separate
= true;
90 ctx
->Extensions
.EXT_blend_func_separate
= true;
91 ctx
->Extensions
.EXT_blend_minmax
= true;
92 ctx
->Extensions
.EXT_draw_buffers2
= true;
93 ctx
->Extensions
.EXT_framebuffer_blit
= true;
94 ctx
->Extensions
.EXT_framebuffer_object
= true;
95 ctx
->Extensions
.EXT_fog_coord
= true;
96 ctx
->Extensions
.EXT_framebuffer_sRGB
= true;
97 ctx
->Extensions
.EXT_gpu_program_parameters
= true;
98 ctx
->Extensions
.EXT_packed_depth_stencil
= true;
99 ctx
->Extensions
.EXT_packed_float
= true;
100 ctx
->Extensions
.EXT_pixel_buffer_object
= true;
101 ctx
->Extensions
.EXT_point_parameters
= true;
102 ctx
->Extensions
.EXT_provoking_vertex
= true;
103 ctx
->Extensions
.EXT_secondary_color
= true;
104 ctx
->Extensions
.EXT_separate_shader_objects
= true;
105 ctx
->Extensions
.EXT_texture_array
= true;
106 ctx
->Extensions
.EXT_texture_env_dot3
= true;
107 ctx
->Extensions
.EXT_texture_filter_anisotropic
= true;
108 ctx
->Extensions
.EXT_texture_integer
= true;
109 ctx
->Extensions
.EXT_texture_shared_exponent
= true;
110 ctx
->Extensions
.EXT_texture_snorm
= true;
111 ctx
->Extensions
.EXT_texture_sRGB
= true;
112 ctx
->Extensions
.EXT_texture_sRGB_decode
= true;
113 ctx
->Extensions
.EXT_texture_swizzle
= true;
114 ctx
->Extensions
.EXT_shadow_funcs
= true;
115 ctx
->Extensions
.EXT_stencil_two_side
= true;
116 ctx
->Extensions
.EXT_vertex_array_bgra
= true;
117 ctx
->Extensions
.APPLE_object_purgeable
= true;
118 ctx
->Extensions
.ATI_envmap_bumpmap
= true;
119 ctx
->Extensions
.ATI_separate_stencil
= true;
120 ctx
->Extensions
.ATI_texture_env_combine3
= true;
121 ctx
->Extensions
.MESA_pack_invert
= true;
122 ctx
->Extensions
.MESA_texture_array
= true;
123 ctx
->Extensions
.MESA_ycbcr_texture
= true;
124 ctx
->Extensions
.NV_blend_square
= true;
125 ctx
->Extensions
.NV_conditional_render
= true;
126 ctx
->Extensions
.NV_primitive_restart
= true;
127 ctx
->Extensions
.NV_texture_env_combine4
= true;
128 ctx
->Extensions
.NV_texture_rectangle
= true;
129 ctx
->Extensions
.TDFX_texture_compression_FXT1
= true;
130 ctx
->Extensions
.OES_compressed_ETC1_RGB8_texture
= true;
131 ctx
->Extensions
.OES_EGL_image
= true;
132 ctx
->Extensions
.OES_draw_texture
= true;
133 ctx
->Extensions
.OES_standard_derivatives
= true;
136 ctx
->Const
.GLSLVersion
= 140;
138 ctx
->Const
.GLSLVersion
= 120;
139 _mesa_override_glsl_version(ctx
);
141 if (intel
->gen
>= 6) {
142 ctx
->Extensions
.EXT_framebuffer_multisample
= true;
143 ctx
->Extensions
.EXT_transform_feedback
= true;
144 ctx
->Extensions
.ARB_blend_func_extended
= !driQueryOptionb(&intel
->optionCache
, "disable_blend_func_extended");
145 ctx
->Extensions
.ARB_draw_buffers_blend
= true;
146 ctx
->Extensions
.ARB_ES3_compatibility
= true;
147 ctx
->Extensions
.ARB_uniform_buffer_object
= true;
148 ctx
->Extensions
.ARB_texture_buffer_object
= true;
149 ctx
->Extensions
.ARB_texture_buffer_object_rgb32
= true;
150 ctx
->Extensions
.ARB_texture_cube_map_array
= true;
151 ctx
->Extensions
.OES_depth_texture_cube_map
= true;
152 ctx
->Extensions
.ARB_shading_language_packing
= true;
153 ctx
->Extensions
.ARB_texture_multisample
= true;
154 ctx
->Extensions
.ARB_texture_storage_multisample
= true;
157 if (intel
->gen
>= 5) {
158 ctx
->Extensions
.ARB_texture_query_lod
= true;
159 ctx
->Extensions
.EXT_timer_query
= true;
162 if (intel
->gen
>= 6) {
164 /* Test if the kernel has the ioctl. */
165 if (drm_intel_reg_read(intel
->bufmgr
, TIMESTAMP
, &dummy
) == 0)
166 ctx
->Extensions
.ARB_timer_query
= true;
169 if (ctx
->API
== API_OPENGL_CORE
)
170 ctx
->Extensions
.ARB_base_instance
= true;
171 if (ctx
->API
!= API_OPENGL_CORE
)
172 ctx
->Extensions
.ARB_color_buffer_float
= true;
174 if (intel
->ctx
.Mesa_DXTn
175 || driQueryOptionb(&intel
->optionCache
, "force_s3tc_enable"))
176 ctx
->Extensions
.EXT_texture_compression_s3tc
= true;
178 ctx
->Extensions
.ANGLE_texture_compression_dxt
= true;