Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * (C) Copyright IBM Corporation 2002, 2004
  3.  * All Rights Reserved.
  4.  *
  5.  * Permission is hereby granted, free of charge, to any person obtaining a
  6.  * copy of this software and associated documentation files (the "Software"),
  7.  * to deal in the Software without restriction, including without limitation
  8.  * on the rights to use, copy, modify, merge, publish, distribute, sub
  9.  * license, and/or sell copies of the Software, and to permit persons to whom
  10.  * the Software is furnished to do so, subject to the following conditions:
  11.  *
  12.  * The above copyright notice and this permission notice (including the next
  13.  * paragraph) shall be included in all copies or substantial portions of the
  14.  * Software.
  15.  *
  16.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18.  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL
  19.  * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  20.  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  21.  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  22.  * USE OR OTHER DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25. /**
  26.  * \file glxextensions.h
  27.  *
  28.  * \author Ian Romanick <idr@us.ibm.com>
  29.  */
  30.  
  31. #ifndef GLX_GLXEXTENSIONS_H
  32. #define GLX_GLXEXTENSIONS_H
  33.  
  34. enum
  35. {
  36.    ARB_create_context_bit = 0,
  37.    ARB_create_context_profile_bit,
  38.    ARB_create_context_robustness_bit,
  39.    ARB_fbconfig_float_bit,
  40.    ARB_get_proc_address_bit,
  41.    ARB_multisample_bit,
  42.    ATI_pixel_format_float_bit,
  43.    EXT_visual_info_bit,
  44.    EXT_visual_rating_bit,
  45.    EXT_import_context_bit,
  46.    EXT_framebuffer_sRGB_bit,
  47.    EXT_fbconfig_packed_float_bit,
  48.    EXT_create_context_es2_profile_bit,
  49.    MESA_copy_sub_buffer_bit,
  50.    MESA_depth_float_bit,
  51.    MESA_multithread_makecurrent_bit,
  52.    MESA_swap_control_bit,
  53.    MESA_swap_frame_usage_bit,
  54.    NV_float_buffer_bit,
  55.    OML_swap_method_bit,
  56.    OML_sync_control_bit,
  57.    SGI_make_current_read_bit,
  58.    SGI_swap_control_bit,
  59.    SGI_video_sync_bit,
  60.    SGIS_multisample_bit,
  61.    SGIX_fbconfig_bit,
  62.    SGIX_pbuffer_bit,
  63.    SGIX_swap_barrier_bit,
  64.    SGIX_swap_group_bit,
  65.    SGIX_visual_select_group_bit,
  66.    EXT_texture_from_pixmap_bit,
  67.    INTEL_swap_event_bit,
  68. };
  69.  
  70. /* From the GLX perspective, the ARB and EXT extensions are identical.  Use a
  71.  * single bit for both.
  72.  */
  73. #define ARB_framebuffer_sRGB_bit EXT_framebuffer_sRGB_bit
  74.  
  75. enum
  76. {
  77.    GL_ARB_depth_texture_bit = 0,
  78.    GL_ARB_draw_buffers_bit,
  79.    GL_ARB_fragment_program_bit,
  80.    GL_ARB_fragment_program_shadow_bit,
  81.    GL_ARB_framebuffer_object_bit,
  82.    GL_ARB_imaging_bit,
  83.    GL_ARB_multisample_bit,
  84.    GL_ARB_multitexture_bit,
  85.    GL_ARB_occlusion_query_bit,
  86.    GL_ARB_point_parameters_bit,
  87.    GL_ARB_point_sprite_bit,
  88.    GL_ARB_shadow_bit,
  89.    GL_ARB_shadow_ambient_bit,
  90.    GL_ARB_texture_border_clamp_bit,
  91.    GL_ARB_texture_cube_map_bit,
  92.    GL_ARB_texture_compression_bit,
  93.    GL_ARB_texture_env_add_bit,
  94.    GL_ARB_texture_env_combine_bit,
  95.    GL_ARB_texture_env_crossbar_bit,
  96.    GL_ARB_texture_env_dot3_bit,
  97.    GL_ARB_texture_mirrored_repeat_bit,
  98.    GL_ARB_texture_non_power_of_two_bit,
  99.    GL_ARB_texture_rectangle_bit,
  100.    GL_ARB_texture_rg_bit,
  101.    GL_ARB_transpose_matrix_bit,
  102.    GL_ARB_vertex_buffer_object_bit,
  103.    GL_ARB_vertex_program_bit,
  104.    GL_ARB_window_pos_bit,
  105.    GL_EXT_abgr_bit,
  106.    GL_EXT_bgra_bit,
  107.    GL_EXT_blend_color_bit,
  108.    GL_EXT_blend_equation_separate_bit,
  109.    GL_EXT_blend_func_separate_bit,
  110.    GL_EXT_blend_logic_op_bit,
  111.    GL_EXT_blend_minmax_bit,
  112.    GL_EXT_blend_subtract_bit,
  113.    GL_EXT_clip_volume_hint_bit,
  114.    GL_EXT_compiled_vertex_array_bit,
  115.    GL_EXT_convolution_bit,
  116.    GL_EXT_copy_texture_bit,
  117.    GL_EXT_cull_vertex_bit,
  118.    GL_EXT_depth_bounds_test_bit,
  119.    GL_EXT_draw_range_elements_bit,
  120.    GL_EXT_fog_coord_bit,
  121.    GL_EXT_framebuffer_blit_bit,
  122.    GL_EXT_framebuffer_multisample_bit,
  123.    GL_EXT_framebuffer_object_bit,
  124.    GL_EXT_framebuffer_sRGB_bit,
  125.    GL_EXT_multi_draw_arrays_bit,
  126.    GL_EXT_packed_depth_stencil_bit,
  127.    GL_EXT_packed_pixels_bit,
  128.    GL_EXT_paletted_texture_bit,
  129.    GL_EXT_pixel_buffer_object_bit,
  130.    GL_EXT_polygon_offset_bit,
  131.    GL_EXT_rescale_normal_bit,
  132.    GL_EXT_secondary_color_bit,
  133.    GL_EXT_separate_specular_color_bit,
  134.    GL_EXT_shadow_funcs_bit,
  135.    GL_EXT_shared_texture_palette_bit,
  136.    GL_EXT_stencil_two_side_bit,
  137.    GL_EXT_stencil_wrap_bit,
  138.    GL_EXT_subtexture_bit,
  139.    GL_EXT_texture_bit,
  140.    GL_EXT_texture3D_bit,
  141.    GL_EXT_texture_compression_dxt1_bit,
  142.    GL_EXT_texture_compression_s3tc_bit,
  143.    GL_EXT_texture_edge_clamp_bit,
  144.    GL_EXT_texture_env_combine_bit,
  145.    GL_EXT_texture_env_dot3_bit,
  146.    GL_EXT_texture_filter_anisotropic_bit,
  147.    GL_EXT_texture_lod_bit,
  148.    GL_EXT_texture_lod_bias_bit,
  149.    GL_EXT_texture_mirror_clamp_bit,
  150.    GL_EXT_texture_object_bit,
  151.    GL_EXT_vertex_array_bit,
  152.    GL_3DFX_texture_compression_FXT1_bit,
  153.    GL_APPLE_packed_pixels_bit,
  154.    GL_APPLE_ycbcr_422_bit,
  155.    GL_ATI_text_fragment_shader_bit,
  156.    GL_ATI_texture_env_combine3_bit,
  157.    GL_ATI_texture_float_bit,
  158.    GL_ATI_texture_mirror_once_bit,
  159.    GL_HP_convolution_border_modes_bit,
  160.    GL_HP_occlusion_test_bit,
  161.    GL_IBM_cull_vertex_bit,
  162.    GL_IBM_pixel_filter_hint_bit,
  163.    GL_IBM_rasterpos_clip_bit,
  164.    GL_IBM_texture_clamp_nodraw_bit,
  165.    GL_INGR_interlace_read_bit,
  166.    GL_MESA_pack_invert_bit,
  167.    GL_MESA_ycbcr_texture_bit,
  168.    GL_NV_blend_square_bit,
  169.    GL_NV_copy_depth_to_color_bit,
  170.    GL_NV_depth_clamp_bit,
  171.    GL_NV_fog_distance_bit,
  172.    GL_NV_fragment_program_bit,
  173.    GL_NV_fragment_program_option_bit,
  174.    GL_NV_fragment_program2_bit,
  175.    GL_NV_light_max_exponent_bit,
  176.    GL_NV_multisample_filter_hint_bit,
  177.    GL_NV_packed_depth_stencil_bit,
  178.    GL_NV_point_sprite_bit,
  179.    GL_NV_texgen_reflection_bit,
  180.    GL_NV_texture_compression_vtc_bit,
  181.    GL_NV_texture_env_combine4_bit,
  182.    GL_NV_vertex_program_bit,
  183.    GL_NV_vertex_program1_1_bit,
  184.    GL_NV_vertex_program2_bit,
  185.    GL_NV_vertex_program2_option_bit,
  186.    GL_NV_vertex_program3_bit,
  187.    GL_OES_compressed_paletted_texture_bit,
  188.    GL_OES_read_format_bit,
  189.    GL_SGI_color_matrix_bit,
  190.    GL_SGI_color_table_bit,
  191.    GL_SGI_texture_color_table_bit,
  192.    GL_SGIS_generate_mipmap_bit,
  193.    GL_SGIS_multisample_bit,
  194.    GL_SGIS_texture_lod_bit,
  195.    GL_SGIX_blend_alpha_minmax_bit,
  196.    GL_SGIX_clipmap_bit,
  197.    GL_SGIX_depth_texture_bit,
  198.    GL_SGIX_fog_offset_bit,
  199.    GL_SGIX_shadow_bit,
  200.    GL_SGIX_texture_coordinate_clamp_bit,
  201.    GL_SGIX_texture_lod_bias_bit,
  202.    GL_SGIX_texture_range_bit,
  203.    GL_SGIX_texture_scale_bias_bit,
  204.    GL_SGIX_vertex_preclip_bit,
  205.    GL_SGIX_vertex_preclip_hint_bit,
  206.    GL_SGIX_ycrcb_bit,
  207.    GL_SUN_convolution_border_modes_bit,
  208.    GL_SUN_slice_accum_bit,
  209.  
  210.    /* This *MUST* go here.  If it gets put after the duplicate values it will
  211.     * get the value after the last duplicate.
  212.     */
  213.    __NUM_GL_EXTS,
  214.  
  215.  
  216.    /* Alias extension bits.  These extensions exist in either vendor-specific
  217.     * or EXT form and were later promoted to either EXT or ARB form.  In all
  218.     * cases, the meaning is *exactly* the same.  That's why
  219.     * EXT_texture_env_combine is *NOT* an alias of ARB_texture_env_combine and
  220.     * EXT_texture_env_dot3 is *NOT* an alias of ARB_texture_env_dot3.  Be
  221.     * careful!  When in doubt, src/mesa/main/extensions.c in the Mesa tree
  222.     * is a great reference.
  223.     */
  224.  
  225.    GL_ATI_blend_equation_separate_bit = GL_EXT_blend_equation_separate_bit,
  226.    GL_ATI_draw_buffers_bit = GL_ARB_draw_buffers_bit,
  227.    GL_ATIX_texture_env_combine3_bit = GL_ATI_texture_env_combine3_bit,
  228.    GL_EXT_point_parameters_bit = GL_ARB_point_parameters_bit,
  229.    GL_EXT_texture_env_add_bit = GL_ARB_texture_env_add_bit,
  230.    GL_EXT_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
  231.    GL_IBM_texture_mirrored_repeat_bit = GL_ARB_texture_mirrored_repeat_bit,
  232.    GL_INGR_blend_func_separate_bit = GL_EXT_blend_func_separate_bit,
  233.    GL_MESA_window_pos_bit = GL_ARB_window_pos_bit,
  234.    GL_NV_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
  235.    GL_SGIS_texture_border_clamp_bit = GL_ARB_texture_border_clamp_bit,
  236.    GL_SGIS_texture_edge_clamp_bit = GL_EXT_texture_edge_clamp_bit,
  237.    GL_SGIX_shadow_ambient_bit = GL_ARB_shadow_ambient_bit,
  238.    GL_SUN_multi_draw_arrays_bit = GL_EXT_multi_draw_arrays_bit
  239. };
  240.  
  241. #define __GL_EXT_BYTES   ((__NUM_GL_EXTS + 7) / 8)
  242.  
  243. struct glx_screen;
  244. struct glx_context;
  245.  
  246. extern GLboolean __glXExtensionBitIsEnabled(struct glx_screen *psc,
  247.                                             unsigned bit);
  248. extern const char *__glXGetClientExtensions(void);
  249. extern void __glXCalculateUsableExtensions(struct glx_screen *psc,
  250.                                            GLboolean
  251.                                            display_is_direct_capable,
  252.                                            int server_minor_version);
  253.  
  254. extern void __glXCalculateUsableGLExtensions(struct glx_context *gc,
  255.                                              const char *server_string,
  256.                                              int major_version,
  257.                                              int minor_version);
  258. extern void __glXGetGLVersion(int *major_version, int *minor_version);
  259. extern char *__glXGetClientGLExtensionString(void);
  260.  
  261. extern GLboolean __glExtensionBitIsEnabled(struct glx_context *gc,
  262.                                            unsigned bit);
  263.  
  264. extern void
  265. __glXEnableDirectExtension(struct glx_screen *psc, const char *name);
  266.  
  267. /* Source-level backwards compatibility with old drivers. They won't
  268.  * find the respective functions, though.
  269.  */
  270. typedef void (*PFNGLXENABLEEXTENSIONPROC) (const char *name,
  271.                                            GLboolean force_client);
  272. typedef void (*PFNGLXDISABLEEXTENSIONPROC) (const char *name);
  273.  
  274. /* GLX_ALIAS should be used for functions with a non-void return type.
  275.    GLX_ALIAS_VOID is for functions with a void return type. */
  276. #ifdef GLX_NO_STATIC_EXTENSION_FUNCTIONS
  277. # define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func)
  278. # define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func)
  279. #else
  280. # if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED)
  281. #  define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
  282.    return_type  real_func  proto_args                                   \
  283.    __attribute__ ((alias( # aliased_func ) ));
  284. #  define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \
  285.    GLX_ALIAS(void, real_func, proto_args, args, aliased_func)
  286. # else
  287. #  define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
  288.    return_type  real_func  proto_args                                   \
  289.    { return aliased_func args ; }
  290. #  define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \
  291.    void  real_func  proto_args                                      \
  292.    { aliased_func args ; }
  293. # endif /* __GNUC__ */
  294. #endif /* GLX_NO_STATIC_EXTENSION_FUNCTIONS */
  295.  
  296. #endif /* GLX_GLXEXTENSIONS_H */
  297.