From: Eleni Maria Stea Date: Fri, 15 Feb 2013 11:10:06 +0000 (+0200) Subject: added configure, gliar script, build instructions, Makefile.in X-Git-Url: http://git.mutantstargoat.com?p=libgliar;a=commitdiff_plain;h=fa3b7898a907b79db149781f336dee652c69f5f0 added configure, gliar script, build instructions, Makefile.in --- diff --git a/INSTALL b/INSTALL index 8ad1dfb..d034303 100644 --- a/INSTALL +++ b/INSTALL @@ -1 +1,38 @@ -//TODO +# libgliar - a library that can fake the OpenGL context info returned by +# the glGet OpenGL calls +# +# Copyright (C) 2013 Canonical Ltd +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author: Eleni Maria Stea + +Installation: +------------- +Step 1: Configure +./configure --prefix= or ./configure to install the library +in the default directory (default prefix: /usr/local/lib) + +Step 2: Build +Enter the libgliar source directory and run: +make + +Step 3: Install +Inside the source directory type: +make install (or sudo make install if you used the default prefix) + +Uninstall: +---------- +Enter the source directory and type: +make uninstall (or sudo make uninstall if you used the default prefix) diff --git a/Makefile b/Makefile deleted file mode 100644 index ce94ac5..0000000 --- a/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -src = $(wildcard src/*.c) -obj = $(src:.c=.o) -lib_so = libgliar.so - -CFLAGS = -pedantic -Wall -g -fPIC -D_GNU_SOURCE - -$(lib_so): $(obj) - $(CC) -o $@ -shared $(obj) $(LDFLAGS) - -.PHONY: clean -clean: - rm -f $(obj) $(lib_so) diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..8f6aa08 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,26 @@ +src = $(wildcard src/*.c) +obj = $(src:.c=.o) +lib_so = libgliar.so +gliar_sh = gliar + +CFLAGS = -pedantic -Wall -g -fPIC -D_GNU_SOURCE + +$(lib_so): $(obj) + $(CC) -o $@ -shared $(obj) $(LDFLAGS) + +.PHONY: clean +clean: + rm -f $(obj) $(lib_so) + +.PHONY: install +install: $(lib_so) + mkdir -p $(PREFIX)/lib + mkdir -p $(PREFIX)/bin + cp $(lib_so) $(PREFIX)/lib/$(lib_so) + cp $(gliar_sh) $(PREFIX)/bin/$(gliar_sh) + ldconfig + +.PHONY: uninstall +uninstall: + rm -f $(PREFIX)/lib/$(lib_so) + rm -f $(PREFIX)/bin/$(gliar_sh) diff --git a/README b/README index aeaebc2..1efc3d0 100644 --- a/README +++ b/README @@ -22,7 +22,7 @@ For instructions on how to build the code, see the INSTALL file. Usage: ------ -LD_PRELOAD=./libgliar.so +gliar The library will read the gliar.conf file in the user's library directory or the .gliar.conf file in the user's home directory. @@ -52,22 +52,12 @@ value1 valueN Currently supported keys: -"vendor" (the vendor string), "extensions" (the extensions string), "version" (the opengl version string), -"sl version" (the shading language version), "renderer" (the renderer) - -Example: ---------- -gliar.conf: -[vendor] -Mutant Stargoat - -[extensions] -GL_MSG_hikiko_ext -GL_MSG_test - -$ LD_PRELOAD=./libgliar glxinfo | grep -A2 "OpenGL extensions" -OpenGL extensions: - GL_MSG_hikiko_ext, GL_MSG_test - +"vendor" (the vendor string), "extensions" (the list of the extensions), "version" (the opengl version string), +"sl version" (the shading language version), "renderer" (the renderer), "max texture units", "max texture size" +Example configuration files can be found in the directory examples. +Example video: http://www.youtube.com/watch?v=v2UDGgb6AgA +Note: The library can only restrict the capabilities of a GPU, not "emulate" non supported extensions for +example. If the gliar.conf contains an extension that is not supported by the user's real GPU, the library +will return a warning and the user's program might crash. diff --git a/configure b/configure new file mode 100755 index 0000000..57bdd9b --- /dev/null +++ b/configure @@ -0,0 +1,16 @@ +#!/bin/sh + +PREFIX=/usr/local + +while [ $# != 0 ] +do + case $1 in + --prefix=*) + PREFIX=`echo $1 | sed 's/--prefix=//'` + ;; + esac + shift +done + +echo PREFIX=$PREFIX > Makefile +cat Makefile.in >> Makefile diff --git a/examples/asuseee.conf b/examples/asuseee.conf new file mode 100644 index 0000000..9c71a71 --- /dev/null +++ b/examples/asuseee.conf @@ -0,0 +1,227 @@ +# example GLIAR configuration that emulates the asus eee GPU +# copyright: Canonical Ltd, 2013 +# author: Eleni Maria Stea +# +# Instructions: +# Copy this file to ~/.gliar.conf or to gliar.conf in the +# libgliar directory. Then run: +# LD_PRELOAD=./libgliar.so +# + +[vendor] +VMWare, Inc + +[renderer] +Gallium 0.4 on llvmpipe (LLVM 0x301) + +[version] +2.1 Mesa 9.0.2 + +[sl version] +1.20 + +[extensions] +GL_ARB_multisample +GL_EXT_abgr +GL_EXT_bgra +GL_EXT_blend_color +GL_EXT_blend_minmax +GL_EXT_blend_subtract +GL_EXT_copy_texture +GL_EXT_polygon_offset +GL_EXT_subtexture +GL_EXT_texture_object +GL_EXT_vertex_array +GL_EXT_compiled_vertex_array +GL_EXT_texture +GL_EXT_texture3D +GL_IBM_rasterpos_clip +GL_ARB_point_parameters +GL_EXT_draw_range_elements +GL_EXT_packed_pixels +GL_EXT_point_parameters +GL_EXT_rescale_normal +GL_EXT_separate_specular_color +GL_EXT_texture_edge_clamp +GL_SGIS_generate_mipmap +GL_SGIS_texture_border_clamp +GL_SGIS_texture_edge_clamp +GL_SGIS_texture_lod +GL_ARB_multitexture +GL_IBM_multimode_draw_arrays +GL_IBM_texture_mirrored_repeat +GL_ARB_texture_cube_map +GL_ARB_texture_env_add +GL_ARB_transpose_matrix +GL_EXT_blend_func_separate +GL_EXT_fog_coord +GL_EXT_multi_draw_arrays +GL_EXT_secondary_color +GL_EXT_texture_env_add +GL_EXT_texture_lod_bias +GL_INGR_blend_func_separate +GL_NV_blend_square +GL_NV_light_max_exponent +GL_NV_texgen_reflection +GL_NV_texture_env_combine4 +GL_S3_s3tc +GL_SUN_multi_draw_arrays +GL_ARB_texture_border_clamp +GL_ARB_texture_compression +GL_EXT_framebuffer_object +GL_EXT_texture_compression_s3tc +GL_EXT_texture_env_combine +GL_EXT_texture_env_dot3 +GL_MESA_window_pos +GL_NV_packed_depth_stencil +GL_NV_texture_rectangle +GL_ARB_depth_texture +GL_ARB_occlusion_query +GL_ARB_shadow +GL_ARB_texture_env_combine +GL_ARB_texture_env_crossbar +GL_ARB_texture_env_dot3 +GL_ARB_texture_mirrored_repeat +GL_ARB_window_pos +GL_EXT_stencil_two_side +GL_EXT_texture_cube_map +GL_NV_fog_distance +GL_APPLE_packed_pixels +GL_APPLE_vertex_array_object +GL_ARB_draw_buffers +GL_ARB_fragment_program +GL_ARB_fragment_shader +GL_ARB_shader_objects +GL_ARB_vertex_program +GL_ARB_vertex_shader +GL_ATI_draw_buffers +GL_ATI_texture_env_combine3 +GL_ATI_texture_float +GL_EXT_shadow_funcs +GL_EXT_stencil_wrap +GL_MESA_pack_invert +GL_MESA_ycbcr_texture +GL_NV_primitive_restart +GL_ARB_fragment_program_shadow +GL_ARB_half_float_pixel +GL_ARB_occlusion_query2 +GL_ARB_point_sprite +GL_ARB_shading_language_100 +GL_ARB_sync +GL_ARB_texture_non_power_of_two +GL_ARB_vertex_buffer_object +GL_ATI_blend_equation_separate +GL_EXT_blend_equation_separate +GL_OES_read_format +GL_ARB_pixel_buffer_object +GL_ARB_texture_compression_rgtc +GL_ARB_texture_float +GL_ARB_texture_rectangle +GL_ATI_texture_compression_3dc +GL_EXT_packed_float +GL_EXT_pixel_buffer_object +GL_EXT_texture_compression_s3tc +GL_EXT_texture_env_combine +GL_EXT_texture_env_dot3 +GL_MESA_window_pos +GL_NV_packed_depth_stencil +GL_NV_texture_rectangle +GL_ARB_depth_texture +GL_ARB_occlusion_query +GL_ARB_shadow +GL_ARB_texture_env_combine +GL_ARB_texture_env_crossbar +GL_ARB_texture_env_dot3 +GL_ARB_texture_mirrored_repeat +GL_ARB_window_pos +GL_EXT_stencil_two_side +GL_EXT_texture_cube_map +GL_NV_fog_distance +GL_APPLE_packed_pixels +GL_APPLE_vertex_array_object +GL_ARB_draw_buffers +GL_ARB_fragment_program +GL_ARB_fragment_shader +GL_ARB_shader_objects +GL_ARB_vertex_program +GL_ARB_vertex_shader +GL_ATI_draw_buffers +GL_ATI_texture_env_combine3 +GL_ATI_texture_float +GL_EXT_shadow_funcs +GL_EXT_stencil_wrap +GL_MESA_pack_invert +GL_MESA_ycbcr_texture +GL_NV_primitive_restart +GL_ARB_fragment_program_shadow +GL_ARB_half_float_pixel +GL_ARB_occlusion_query2 +GL_ARB_point_sprite +GL_ARB_shading_language_100 +GL_ARB_sync +GL_ARB_texture_non_power_of_two +GL_ARB_vertex_buffer_object +GL_ATI_blend_equation_separate +GL_EXT_blend_equation_separate +GL_OES_read_format +GL_ARB_pixel_buffer_object, +GL_ARB_texture_compression_rgtc +GL_ARB_texture_float, +GL_ARB_texture_rectangle +GL_ATI_texture_compression_3dc, +GL_EXT_packed_float +GL_EXT_pixel_buffer_object, +GL_EXT_texture_compression_dxt1 +GL_EXT_texture_compression_rgtc, +GL_EXT_texture_mirror_clamp +GL_EXT_texture_rectangle, +GL_EXT_texture_sRGB +GL_EXT_texture_shared_exponent, +GL_ARB_framebuffer_object +GL_EXT_framebuffer_blit, +GL_EXT_framebuffer_multisample +GL_EXT_packed_depth_stencil, +GL_ARB_vertex_array_object +GL_ATI_separate_stencil, +GL_ATI_texture_mirror_once +GL_EXT_draw_buffers2 +GL_EXT_draw_instanced, +GL_EXT_gpu_program_parameters +GL_EXT_texture_compression_latc, +GL_EXT_texture_sRGB_decode +GL_OES_EGL_image +GL_ARB_copy_buffer, +GL_ARB_draw_instanced +GL_ARB_half_float_vertex +GL_ARB_instanced_arrays, +GL_ARB_map_buffer_range +GL_ARB_texture_rg +GL_ARB_texture_swizzle, +GL_ARB_vertex_array_bgra +GL_EXT_separate_shader_objects, +GL_EXT_texture_swizzle +GL_EXT_vertex_array_bgra, +GL_NV_conditional_render +GL_AMD_draw_buffers_blend, +GL_ARB_ES2_compatibility +GL_ARB_debug_output +GL_ARB_draw_buffers_blend, +GL_ARB_draw_elements_base_vertex +GL_ARB_explicit_attrib_location, +GL_ARB_fragment_coord_conventions +GL_ARB_provoking_vertex, +GL_ARB_sampler_objects +GL_ARB_shader_texture_lod, +GL_ARB_vertex_type_2_10_10_10_rev +GL_EXT_provoking_vertex, +GL_EXT_texture_snorm +GL_MESA_texture_signed_rgba +GL_ARB_robustness, +GL_ARB_texture_storage +GL_ARB_invalidate_subdata + +[max texture size] +8192 + +[max texture units] +8 diff --git a/examples/lenovo.conf b/examples/lenovo.conf new file mode 100644 index 0000000..8988275 --- /dev/null +++ b/examples/lenovo.conf @@ -0,0 +1,193 @@ +# example GLIAR configuration that emulates the lenovo T430 GPU +# copyright: Canonical Ltd, 2013 +# author: Eleni Maria Stea +# +# Instructions: +# Copy this file to ~/.gliar.conf or to gliar.conf in the +# libgliar directory. Then run: +# LD_PRELOAD=./libgliar.so +# + +[vendor] +Intel Open Source Technology Center + +[renderer] +Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2 + +[version] +3.0 Mesa 9.0.2 + +[sl version] +1.30 + +[extensions] +GL_ARB_multisample +GL_EXT_abgr +GL_EXT_bgra +GL_EXT_blend_color +GL_EXT_blend_minmax +GL_EXT_blend_subtract +GL_EXT_copy_texture +GL_EXT_polygon_offset +GL_EXT_subtexture +GL_EXT_texture_object +GL_EXT_vertex_array +GL_EXT_compiled_vertex_array +GL_EXT_texture +GL_EXT_texture3D +GL_IBM_rasterpos_clip +GL_ARB_point_parameters +GL_EXT_draw_range_elements +GL_EXT_packed_pixels +GL_EXT_point_parameters +GL_EXT_rescale_normal +GL_EXT_separate_specular_color +GL_EXT_texture_edge_clamp +GL_SGIS_generate_mipmap +GL_SGIS_texture_border_clamp +GL_SGIS_texture_edge_clamp +GL_SGIS_texture_lod +GL_ARB_framebuffer_sRGB +GL_ARB_multitexture +GL_EXT_framebuffer_sRGB +GL_IBM_multimode_draw_arrays +GL_IBM_texture_mirrored_repeat +GL_3DFX_texture_compression_FXT1 +GL_ARB_texture_cube_map +GL_ARB_texture_env_add +GL_ARB_transpose_matrix +GL_EXT_blend_func_separate +GL_EXT_fog_coord +GL_EXT_multi_draw_arrays +GL_EXT_secondary_color +GL_EXT_texture_env_add +GL_EXT_texture_filter_anisotropic +GL_EXT_texture_lod_bias +GL_INGR_blend_func_separate +GL_NV_blend_square +GL_NV_light_max_exponent +GL_NV_texgen_reflection +GL_NV_texture_env_combine4 +GL_S3_s3tc +GL_SUN_multi_draw_arrays +GL_ARB_texture_border_clamp +GL_ARB_texture_compression +GL_EXT_framebuffer_object +GL_EXT_texture_compression_s3tc +GL_EXT_texture_env_combine +GL_EXT_texture_env_dot3 +GL_MESA_window_pos +GL_NV_packed_depth_stencil +GL_NV_texture_rectangle +GL_NV_vertex_program +GL_ARB_depth_texture +GL_ARB_occlusion_query +GL_ARB_shadow +GL_ARB_texture_env_combine +GL_ARB_texture_env_crossbar +GL_ARB_texture_env_dot3 +GL_ARB_texture_mirrored_repeat +GL_ARB_window_pos +GL_ATI_envmap_bumpmap +GL_EXT_stencil_two_side +GL_EXT_texture_cube_map +GL_NV_depth_clamp +GL_NV_vertex_program1_1 +GL_APPLE_packed_pixels +GL_APPLE_vertex_array_object +GL_ARB_draw_buffers +GL_ARB_fragment_program +GL_ARB_fragment_shader +GL_ARB_shader_objects +GL_ARB_vertex_program +GL_ARB_vertex_shader +GL_ATI_draw_buffers +GL_ATI_texture_env_combine3 +GL_ATI_texture_float +GL_EXT_shadow_funcs +GL_EXT_stencil_wrap +GL_MESA_pack_invert +GL_MESA_ycbcr_texture +GL_NV_primitive_restart +GL_ARB_depth_clamp +GL_ARB_fragment_program_shadow +GL_ARB_half_float_pixel +GL_ARB_occlusion_query2 +GL_ARB_point_sprite +GL_ARB_shading_language_100 +GL_ARB_sync +GL_ARB_texture_non_power_of_two +GL_ARB_vertex_buffer_object +GL_ATI_blend_equation_separate +GL_EXT_blend_equation_separate +GL_OES_read_format +GL_ARB_color_buffer_float +GL_ARB_pixel_buffer_object +GL_ARB_texture_compression_rgtc +GL_ARB_texture_float +GL_ARB_texture_rectangle +GL_EXT_packed_float +GL_EXT_pixel_buffer_object +GL_EXT_texture_compression_dxt1 +GL_EXT_texture_compression_rgtc +GL_EXT_texture_rectangle +GL_EXT_texture_sRGB +GL_EXT_texture_shared_exponent +GL_ARB_framebuffer_object +GL_EXT_framebuffer_blit +GL_EXT_framebuffer_multisample +GL_EXT_packed_depth_stencil +GL_APPLE_object_purgeable +GL_ARB_vertex_array_object +GL_ATI_separate_stencil +GL_EXT_draw_buffers2 +GL_EXT_draw_instanced +GL_EXT_gpu_program_parameters +GL_EXT_texture_array +GL_EXT_texture_integer +GL_EXT_texture_sRGB_decode +GL_EXT_timer_query +GL_OES_EGL_image +GL_MESA_texture_array +GL_ARB_copy_buffer +GL_ARB_depth_buffer_float +GL_ARB_draw_instanced +GL_ARB_half_float_vertex +GL_ARB_instanced_arrays +GL_ARB_map_buffer_range +GL_ARB_texture_rg +GL_ARB_texture_swizzle +GL_ARB_vertex_array_bgra +GL_EXT_separate_shader_objects +GL_EXT_texture_swizzle +GL_EXT_vertex_array_bgra +GL_NV_conditional_render +GL_AMD_draw_buffers_blend +GL_ARB_ES2_compatibility +GL_ARB_blend_func_extended +GL_ARB_debug_output +GL_ARB_draw_buffers_blend +GL_ARB_draw_elements_base_vertex +GL_ARB_explicit_attrib_location +GL_ARB_fragment_coord_conventions +GL_ARB_provoking_vertex +GL_ARB_sampler_objects +GL_ARB_seamless_cube_map +GL_ARB_shader_texture_lod +GL_ARB_texture_rgb10_a2ui +GL_ARB_uniform_buffer_object +GL_EXT_provoking_vertex +GL_EXT_texture_snorm +GL_MESA_texture_signed_rgba +GL_ARB_robustness +GL_ARB_shader_bit_encoding +GL_ARB_timer_query +GL_ARB_texture_storage +GL_EXT_transform_feedback +GL_ARB_invalidate_subdata + +[max texture size] +8192 + +[max texture units] +8 diff --git a/gliar b/gliar new file mode 100755 index 0000000..b812c10 --- /dev/null +++ b/gliar @@ -0,0 +1,3 @@ +#!/bin/sh + +LD_PRELOAD=libgliar.so $* diff --git a/gliar.conf b/gliar.conf index 2082d0e..e37a289 100644 --- a/gliar.conf +++ b/gliar.conf @@ -1,19 +1,227 @@ -[vendor] -Mutant Stargoat +# Example GLIAR configuration +# Copyright: Canonical Ltd, 2013 +# Author: Eleni Maria Stea +# +# Instructions: +# Copy this file to ~/.gliar.conf or to gliar.conf in the +# libgliar directory. Then run: +# LD_PRELOAD=./libgliar.so +# -[extensions] -GL_MSG_hikiko_ext -GL_ARB_multitexture -GL_MSG_test +[vendor] +VMWare, Inc [renderer] -fake_mesa +Gallium 0.4 on llvmpipe (LLVM 0x301) + +[version] +2.1 Mesa 9.0.2 [sl version] -fake_sl +1.20 -[max texture units] -2 +[extensions] +GL_ARB_multisample +GL_EXT_abgr +GL_EXT_bgra +GL_EXT_blend_color +GL_EXT_blend_minmax +GL_EXT_blend_subtract +GL_EXT_copy_texture +GL_EXT_polygon_offset +GL_EXT_subtexture +GL_EXT_texture_object +GL_EXT_vertex_array +GL_EXT_compiled_vertex_array +GL_EXT_texture +GL_EXT_texture3D +GL_IBM_rasterpos_clip +GL_ARB_point_parameters +GL_EXT_draw_range_elements +GL_EXT_packed_pixels +GL_EXT_point_parameters +GL_EXT_rescale_normal +GL_EXT_separate_specular_color +GL_EXT_texture_edge_clamp +GL_SGIS_generate_mipmap +GL_SGIS_texture_border_clamp +GL_SGIS_texture_edge_clamp +GL_SGIS_texture_lod +GL_ARB_multitexture +GL_IBM_multimode_draw_arrays +GL_IBM_texture_mirrored_repeat +GL_ARB_texture_cube_map +GL_ARB_texture_env_add +GL_ARB_transpose_matrix +GL_EXT_blend_func_separate +GL_EXT_fog_coord +GL_EXT_multi_draw_arrays +GL_EXT_secondary_color +GL_EXT_texture_env_add +GL_EXT_texture_lod_bias +GL_INGR_blend_func_separate +GL_NV_blend_square +GL_NV_light_max_exponent +GL_NV_texgen_reflection +GL_NV_texture_env_combine4 +GL_S3_s3tc +GL_SUN_multi_draw_arrays +GL_ARB_texture_border_clamp +GL_ARB_texture_compression +GL_EXT_framebuffer_object +GL_EXT_texture_compression_s3tc +GL_EXT_texture_env_combine +GL_EXT_texture_env_dot3 +GL_MESA_window_pos +GL_NV_packed_depth_stencil +GL_NV_texture_rectangle +GL_ARB_depth_texture +GL_ARB_occlusion_query +GL_ARB_shadow +GL_ARB_texture_env_combine +GL_ARB_texture_env_crossbar +GL_ARB_texture_env_dot3 +GL_ARB_texture_mirrored_repeat +GL_ARB_window_pos +GL_EXT_stencil_two_side +GL_EXT_texture_cube_map +GL_NV_fog_distance +GL_APPLE_packed_pixels +GL_APPLE_vertex_array_object +GL_ARB_draw_buffers +GL_ARB_fragment_program +GL_ARB_fragment_shader +GL_ARB_shader_objects +GL_ARB_vertex_program +GL_ARB_vertex_shader +GL_ATI_draw_buffers +GL_ATI_texture_env_combine3 +GL_ATI_texture_float +GL_EXT_shadow_funcs +GL_EXT_stencil_wrap +GL_MESA_pack_invert +GL_MESA_ycbcr_texture +GL_NV_primitive_restart +GL_ARB_fragment_program_shadow +GL_ARB_half_float_pixel +GL_ARB_occlusion_query2 +GL_ARB_point_sprite +GL_ARB_shading_language_100 +GL_ARB_sync +GL_ARB_texture_non_power_of_two +GL_ARB_vertex_buffer_object +GL_ATI_blend_equation_separate +GL_EXT_blend_equation_separate +GL_OES_read_format +GL_ARB_pixel_buffer_object +GL_ARB_texture_compression_rgtc +GL_ARB_texture_float +GL_ARB_texture_rectangle +GL_ATI_texture_compression_3dc +GL_EXT_packed_float +GL_EXT_pixel_buffer_object +GL_EXT_texture_compression_s3tc +GL_EXT_texture_env_combine +GL_EXT_texture_env_dot3 +GL_MESA_window_pos +GL_NV_packed_depth_stencil +GL_NV_texture_rectangle +GL_ARB_depth_texture +GL_ARB_occlusion_query +GL_ARB_shadow +GL_ARB_texture_env_combine +GL_ARB_texture_env_crossbar +GL_ARB_texture_env_dot3 +GL_ARB_texture_mirrored_repeat +GL_ARB_window_pos +GL_EXT_stencil_two_side +GL_EXT_texture_cube_map +GL_NV_fog_distance +GL_APPLE_packed_pixels +GL_APPLE_vertex_array_object +GL_ARB_draw_buffers +GL_ARB_fragment_program +GL_ARB_fragment_shader +GL_ARB_shader_objects +GL_ARB_vertex_program +GL_ARB_vertex_shader +GL_ATI_draw_buffers +GL_ATI_texture_env_combine3 +GL_ATI_texture_float +GL_EXT_shadow_funcs +GL_EXT_stencil_wrap +GL_MESA_pack_invert +GL_MESA_ycbcr_texture +GL_NV_primitive_restart +GL_ARB_fragment_program_shadow +GL_ARB_half_float_pixel +GL_ARB_occlusion_query2 +GL_ARB_point_sprite +GL_ARB_shading_language_100 +GL_ARB_sync +GL_ARB_texture_non_power_of_two +GL_ARB_vertex_buffer_object +GL_ATI_blend_equation_separate +GL_EXT_blend_equation_separate +GL_OES_read_format +GL_ARB_pixel_buffer_object, +GL_ARB_texture_compression_rgtc +GL_ARB_texture_float, +GL_ARB_texture_rectangle +GL_ATI_texture_compression_3dc, +GL_EXT_packed_float +GL_EXT_pixel_buffer_object, +GL_EXT_texture_compression_dxt1 +GL_EXT_texture_compression_rgtc, +GL_EXT_texture_mirror_clamp +GL_EXT_texture_rectangle, +GL_EXT_texture_sRGB +GL_EXT_texture_shared_exponent, +GL_ARB_framebuffer_object +GL_EXT_framebuffer_blit, +GL_EXT_framebuffer_multisample +GL_EXT_packed_depth_stencil, +GL_ARB_vertex_array_object +GL_ATI_separate_stencil, +GL_ATI_texture_mirror_once +GL_EXT_draw_buffers2 +GL_EXT_draw_instanced, +GL_EXT_gpu_program_parameters +GL_EXT_texture_compression_latc, +GL_EXT_texture_sRGB_decode +GL_OES_EGL_image +GL_ARB_copy_buffer, +GL_ARB_draw_instanced +GL_ARB_half_float_vertex +GL_ARB_instanced_arrays, +GL_ARB_map_buffer_range +GL_ARB_texture_rg +GL_ARB_texture_swizzle, +GL_ARB_vertex_array_bgra +GL_EXT_separate_shader_objects, +GL_EXT_texture_swizzle +GL_EXT_vertex_array_bgra, +GL_NV_conditional_render +GL_AMD_draw_buffers_blend, +GL_ARB_ES2_compatibility +GL_ARB_debug_output +GL_ARB_draw_buffers_blend, +GL_ARB_draw_elements_base_vertex +GL_ARB_explicit_attrib_location, +GL_ARB_fragment_coord_conventions +GL_ARB_provoking_vertex, +GL_ARB_sampler_objects +GL_ARB_shader_texture_lod, +GL_ARB_vertex_type_2_10_10_10_rev +GL_EXT_provoking_vertex, +GL_EXT_texture_snorm +GL_MESA_texture_signed_rgba +GL_ARB_robustness, +GL_ARB_texture_storage +GL_ARB_invalidate_subdata [max texture size] -2048 +8192 + +[max texture units] +8