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/mfeatures.h"
30 #include "intel_chipset.h"
31 #include "intel_context.h"
32 #include "intel_extensions.h"
36 * Initializes potential list of extensions if ctx == NULL, or actually enables
37 * extensions for a context.
40 intelInitExtensions(struct gl_context
*ctx
)
42 struct intel_context
*intel
= intel_context(ctx
);
44 ctx
->Extensions
.ARB_draw_elements_base_vertex
= true;
45 ctx
->Extensions
.ARB_explicit_attrib_location
= true;
46 ctx
->Extensions
.ARB_framebuffer_object
= true;
47 ctx
->Extensions
.ARB_half_float_pixel
= true;
48 ctx
->Extensions
.ARB_map_buffer_range
= true;
49 ctx
->Extensions
.ARB_point_sprite
= true;
50 ctx
->Extensions
.ARB_sampler_objects
= true;
51 ctx
->Extensions
.ARB_shader_objects
= true;
52 ctx
->Extensions
.ARB_shading_language_100
= true;
53 ctx
->Extensions
.ARB_sync
= true;
54 ctx
->Extensions
.ARB_texture_border_clamp
= true;
55 ctx
->Extensions
.ARB_texture_cube_map
= true;
56 ctx
->Extensions
.ARB_texture_env_combine
= true;
57 ctx
->Extensions
.ARB_texture_env_crossbar
= true;
58 ctx
->Extensions
.ARB_texture_env_dot3
= true;
59 ctx
->Extensions
.ARB_texture_mirrored_repeat
= true;
60 ctx
->Extensions
.ARB_vertex_array_object
= true;
61 ctx
->Extensions
.ARB_vertex_program
= true;
62 ctx
->Extensions
.ARB_vertex_shader
= true;
63 ctx
->Extensions
.EXT_blend_color
= true;
64 ctx
->Extensions
.EXT_blend_equation_separate
= true;
65 ctx
->Extensions
.EXT_blend_func_separate
= true;
66 ctx
->Extensions
.EXT_blend_minmax
= true;
67 ctx
->Extensions
.EXT_blend_subtract
= true;
68 ctx
->Extensions
.EXT_framebuffer_blit
= true;
69 ctx
->Extensions
.EXT_framebuffer_object
= true;
70 ctx
->Extensions
.EXT_framebuffer_multisample
= true;
71 ctx
->Extensions
.EXT_fog_coord
= true;
72 ctx
->Extensions
.EXT_gpu_program_parameters
= true;
73 ctx
->Extensions
.EXT_packed_depth_stencil
= true;
74 ctx
->Extensions
.EXT_pixel_buffer_object
= true;
75 ctx
->Extensions
.EXT_point_parameters
= true;
76 ctx
->Extensions
.EXT_provoking_vertex
= true;
77 ctx
->Extensions
.EXT_secondary_color
= true;
78 ctx
->Extensions
.EXT_separate_shader_objects
= true;
79 ctx
->Extensions
.EXT_stencil_wrap
= true;
80 ctx
->Extensions
.EXT_texture_env_add
= true;
81 ctx
->Extensions
.EXT_texture_env_combine
= true;
82 ctx
->Extensions
.EXT_texture_env_dot3
= true;
83 ctx
->Extensions
.EXT_texture_filter_anisotropic
= true;
84 ctx
->Extensions
.EXT_texture_lod_bias
= true;
85 ctx
->Extensions
.APPLE_object_purgeable
= true;
86 ctx
->Extensions
.APPLE_vertex_array_object
= true;
87 ctx
->Extensions
.MESA_pack_invert
= true;
88 ctx
->Extensions
.MESA_ycbcr_texture
= true;
89 ctx
->Extensions
.NV_blend_square
= true;
90 ctx
->Extensions
.NV_texture_rectangle
= true;
91 ctx
->Extensions
.NV_vertex_program
= true;
92 ctx
->Extensions
.NV_vertex_program1_1
= true;
93 ctx
->Extensions
.TDFX_texture_compression_FXT1
= true;
94 #if FEATURE_OES_EGL_image
95 ctx
->Extensions
.OES_EGL_image
= true;
98 ctx
->Const
.GLSLVersion
= 120;
99 _mesa_override_glsl_version(ctx
);
102 ctx
->Extensions
.EXT_timer_query
= true;
104 if (intel
->gen
>= 4) {
105 ctx
->Extensions
.ARB_color_buffer_float
= true;
106 ctx
->Extensions
.ARB_depth_clamp
= true;
107 ctx
->Extensions
.ARB_fragment_coord_conventions
= true;
108 ctx
->Extensions
.ARB_fragment_program_shadow
= true;
109 ctx
->Extensions
.ARB_fragment_shader
= true;
110 ctx
->Extensions
.ARB_half_float_vertex
= true;
111 ctx
->Extensions
.ARB_occlusion_query
= true;
112 ctx
->Extensions
.ARB_point_sprite
= true;
113 ctx
->Extensions
.ARB_seamless_cube_map
= true;
114 ctx
->Extensions
.ARB_shader_texture_lod
= true;
115 #ifdef TEXTURE_FLOAT_ENABLED
116 ctx
->Extensions
.ARB_texture_float
= true;
117 ctx
->Extensions
.EXT_texture_shared_exponent
= true;
118 ctx
->Extensions
.EXT_packed_float
= true;
120 ctx
->Extensions
.ARB_texture_compression_rgtc
= true;
121 ctx
->Extensions
.ARB_texture_rg
= true;
122 ctx
->Extensions
.EXT_draw_buffers2
= true;
123 ctx
->Extensions
.EXT_framebuffer_sRGB
= true;
124 ctx
->Extensions
.EXT_texture_snorm
= true;
125 ctx
->Extensions
.EXT_texture_sRGB
= true;
126 ctx
->Extensions
.EXT_texture_sRGB_decode
= true;
127 ctx
->Extensions
.EXT_texture_swizzle
= true;
128 ctx
->Extensions
.EXT_vertex_array_bgra
= true;
129 ctx
->Extensions
.ATI_envmap_bumpmap
= true;
130 ctx
->Extensions
.NV_conditional_render
= true;
133 if (intel
->gen
>= 3) {
134 ctx
->Extensions
.ARB_ES2_compatibility
= true;
135 ctx
->Extensions
.ARB_depth_texture
= true;
136 ctx
->Extensions
.ARB_fragment_program
= true;
137 ctx
->Extensions
.ARB_shadow
= true;
138 ctx
->Extensions
.ARB_texture_non_power_of_two
= true;
139 ctx
->Extensions
.EXT_shadow_funcs
= true;
140 ctx
->Extensions
.EXT_stencil_two_side
= true;
141 ctx
->Extensions
.ATI_separate_stencil
= true;
142 ctx
->Extensions
.ATI_texture_env_combine3
= true;
143 ctx
->Extensions
.NV_texture_env_combine4
= true;
145 if (driQueryOptionb(&intel
->optionCache
, "fragment_shader"))
146 ctx
->Extensions
.ARB_fragment_shader
= true;
148 if (driQueryOptionb(&intel
->optionCache
, "stub_occlusion_query"))
149 ctx
->Extensions
.ARB_occlusion_query
= true;
152 if (intel
->ctx
.Mesa_DXTn
) {
153 ctx
->Extensions
.EXT_texture_compression_s3tc
= true;
154 ctx
->Extensions
.S3_s3tc
= true;
156 else if (driQueryOptionb(&intel
->optionCache
, "force_s3tc_enable")) {
157 ctx
->Extensions
.EXT_texture_compression_s3tc
= true;