aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--[-rwxr-xr-x]X11/xtrans/Xtrans.c0
-rw-r--r--gl/glext.h69
-rw-r--r--gl/glxext.h32
-rw-r--r--gl/internal/dri_interface.h10
-rw-r--r--libX11/man/xkb/XkbGetMap.man2
-rw-r--r--libX11/nls/km_KH.UTF-8/Compose.pre2
-rw-r--r--libX11/nls/sr_CS.UTF-8/Compose.pre32
-rw-r--r--libX11/src/KeyBind.c72
-rw-r--r--libX11/src/Xrm.c4
-rw-r--r--libX11/src/xkb/XKBBind.c102
-rw-r--r--libxcb/src/xcb_conn.c3
-rw-r--r--libxcb/src/xcbint.h1
-rw-r--r--libxcb/xcb-proto/xcbgen/matcher.py2
-rw-r--r--libxcb/xcb-proto/xcbgen/state.py4
-rw-r--r--mesalib/configure.ac344
-rw-r--r--mesalib/docs/GL3.txt12
-rw-r--r--mesalib/docs/README.VCE43
-rw-r--r--mesalib/docs/relnotes/10.1.html1
-rw-r--r--mesalib/docs/specs/MESA_query_renderer.spec13
-rw-r--r--mesalib/include/GL/glext.h69
-rw-r--r--mesalib/include/GL/glxext.h32
-rw-r--r--mesalib/include/GL/internal/dri_interface.h10
-rw-r--r--mesalib/include/GL/wglext.h6
-rw-r--r--mesalib/m4/ax_gcc_builtin.m4168
-rw-r--r--mesalib/scons/gallium.py8
-rw-r--r--mesalib/src/gallium/Automake.inc12
-rw-r--r--mesalib/src/gallium/auxiliary/Makefile.sources4
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_flush.c391
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_flush.h138
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format.c21
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format.h2
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.h26
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_range.h2
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_upload_mgr.c75
-rw-r--r--mesalib/src/glsl/Makefile.sources1
-rw-r--r--mesalib/src/glsl/ast.h54
-rw-r--r--mesalib/src/glsl/ast_function.cpp58
-rw-r--r--mesalib/src/glsl/ast_to_hir.cpp203
-rw-r--r--mesalib/src/glsl/ast_type.cpp111
-rwxr-xr-xmesalib/src/glsl/builtin_functions.cpp264
-rw-r--r--mesalib/src/glsl/builtin_type_macros.h124
-rw-r--r--mesalib/src/glsl/builtin_types.cpp70
-rw-r--r--mesalib/src/glsl/builtin_variables.cpp22
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y28
-rw-r--r--[-rwxr-xr-x]mesalib/src/glsl/glcpp/glcpp.c0
-rw-r--r--mesalib/src/glsl/glsl_lexer.ll76
-rw-r--r--mesalib/src/glsl/glsl_parser.yy222
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.cpp23
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.h44
-rw-r--r--mesalib/src/glsl/glsl_types.cpp36
-rw-r--r--mesalib/src/glsl/glsl_types.h29
-rw-r--r--mesalib/src/glsl/ir.cpp22
-rw-r--r--mesalib/src/glsl/ir.h29
-rw-r--r--[-rwxr-xr-x]mesalib/src/glsl/ir_builder.h0
-rw-r--r--mesalib/src/glsl/ir_clone.cpp1
-rw-r--r--mesalib/src/glsl/ir_optimization.h6
-rw-r--r--mesalib/src/glsl/ir_print_visitor.cpp221
-rw-r--r--mesalib/src/glsl/ir_print_visitor.h3
-rw-r--r--mesalib/src/glsl/ir_uniform.h41
-rw-r--r--mesalib/src/glsl/link_uniform_initializers.cpp1
-rw-r--r--mesalib/src/glsl/link_uniforms.cpp78
-rw-r--r--mesalib/src/glsl/linker.cpp68
-rw-r--r--mesalib/src/glsl/lower_instructions.cpp32
-rw-r--r--mesalib/src/glsl/lower_offset_array.cpp90
-rw-r--r--mesalib/src/glsl/main.cpp2
-rw-r--r--mesalib/src/glsl/opt_algebraic.cpp6
-rw-r--r--mesalib/src/glsl/opt_array_splitting.cpp2
-rw-r--r--mesalib/src/glsl/opt_vectorize.cpp29
-rw-r--r--mesalib/src/glsl/test_optpass.cpp4
-rw-r--r--[-rwxr-xr-x]mesalib/src/loader/loader.c0
-rw-r--r--mesalib/src/mapi/glapi/Makefile.am1
-rw-r--r--mesalib/src/mapi/glapi/Makefile.sources1
-rw-r--r--mesalib/src/mapi/glapi/SConscript1
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml401
-rw-r--r--mesalib/src/mapi/glapi/gen/Makefile.am1
-rw-r--r--mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml1
-rwxr-xr-xmesalib/src/mapi/glapi/gen/glX_proto_recv.py1
-rwxr-xr-xmesalib/src/mapi/glapi/gen/glX_proto_send.py1
-rwxr-xr-xmesalib/src/mapi/glapi/gen/gl_API.xml25
-rwxr-xr-xmesalib/src/mapi/glapi/gen/gl_functions.py2
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_genexec.py1
-rw-r--r--mesalib/src/mapi/glapi/glapi.h26
-rw-r--r--mesalib/src/mapi/glapi/glthread.c7
-rw-r--r--mesalib/src/mapi/glapi/glthread.h28
-rw-r--r--mesalib/src/mesa/Makefile.sources2
-rw-r--r--mesalib/src/mesa/SConscript2
-rw-r--r--mesalib/src/mesa/drivers/common/meta.c1868
-rw-r--r--mesalib/src/mesa/drivers/common/meta.h361
-rw-r--r--mesalib/src/mesa/drivers/common/meta_blit.c825
-rw-r--r--mesalib/src/mesa/drivers/dri/common/dri_util.c26
-rw-r--r--mesalib/src/mesa/main/api_arrayelt.c14
-rw-r--r--mesalib/src/mesa/main/api_loopback.c1
-rw-r--r--mesalib/src/mesa/main/api_loopback.h1
-rw-r--r--mesalib/src/mesa/main/api_validate.c7
-rw-r--r--mesalib/src/mesa/main/arrayobj.c12
-rw-r--r--mesalib/src/mesa/main/attrib.c1
-rw-r--r--mesalib/src/mesa/main/bufferobj.c443
-rw-r--r--mesalib/src/mesa/main/bufferobj.h23
-rw-r--r--mesalib/src/mesa/main/context.c114
-rw-r--r--mesalib/src/mesa/main/dd.h21
-rw-r--r--mesalib/src/mesa/main/dlist.c9
-rw-r--r--mesalib/src/mesa/main/drawpix.c4
-rw-r--r--mesalib/src/mesa/main/enable.c33
-rw-r--r--mesalib/src/mesa/main/errors.c487
-rw-r--r--mesalib/src/mesa/main/errors.h3
-rw-r--r--mesalib/src/mesa/main/execmem.c11
-rw-r--r--mesalib/src/mesa/main/extensions.c5
-rw-r--r--mesalib/src/mesa/main/fbobject.c22
-rw-r--r--mesalib/src/mesa/main/format_pack.c22
-rw-r--r--mesalib/src/mesa/main/format_unpack.c34
-rw-r--r--mesalib/src/mesa/main/formats.c16
-rw-r--r--mesalib/src/mesa/main/formats.h100
-rw-r--r--mesalib/src/mesa/main/framebuffer.c14
-rw-r--r--mesalib/src/mesa/main/get.c21
-rw-r--r--mesalib/src/mesa/main/get_hash_params.py6
-rw-r--r--mesalib/src/mesa/main/getstring.c20
-rw-r--r--mesalib/src/mesa/main/glformats.c24
-rw-r--r--mesalib/src/mesa/main/hash.c45
-rw-r--r--mesalib/src/mesa/main/imports.h2
-rw-r--r--mesalib/src/mesa/main/mtypes.h94
-rw-r--r--mesalib/src/mesa/main/pbo.c22
-rw-r--r--mesalib/src/mesa/main/pipelineobj.c445
-rw-r--r--mesalib/src/mesa/main/pipelineobj.h95
-rw-r--r--mesalib/src/mesa/main/readpix.c4
-rw-r--r--mesalib/src/mesa/main/renderbuffer.c12
-rw-r--r--mesalib/src/mesa/main/samplerobj.c12
-rw-r--r--mesalib/src/mesa/main/shaderapi.c131
-rw-r--r--mesalib/src/mesa/main/shaderapi.h8
-rw-r--r--mesalib/src/mesa/main/shaderobj.c1
-rw-r--r--mesalib/src/mesa/main/shared.c22
-rw-r--r--mesalib/src/mesa/main/syncobj.c14
-rw-r--r--mesalib/src/mesa/main/texcompress_etc.c3
-rw-r--r--mesalib/src/mesa/main/texformat.c6
-rw-r--r--mesalib/src/mesa/main/texgetimage.c25
-rw-r--r--mesalib/src/mesa/main/teximage.c44
-rw-r--r--mesalib/src/mesa/main/teximage.h4
-rw-r--r--mesalib/src/mesa/main/texobj.c34
-rw-r--r--mesalib/src/mesa/main/texparam.c3
-rw-r--r--mesalib/src/mesa/main/texstore.c8
-rw-r--r--mesalib/src/mesa/main/uniform_query.cpp36
-rw-r--r--mesalib/src/mesa/main/uniforms.c393
-rw-r--r--mesalib/src/mesa/main/uniforms.h83
-rw-r--r--mesalib/src/mesa/main/vdpau.c9
-rw-r--r--mesalib/src/mesa/main/vdpau.h2
-rw-r--r--mesalib/src/mesa/main/version.c1
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp25
-rw-r--r--mesalib/src/mesa/program/program.c9
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_scissor.c77
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_viewport.c37
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c133
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h2
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c17
-rw-r--r--mesalib/src/mesa/state_tracker/st_context.h4
-rw-r--r--mesalib/src/mesa/state_tracker/st_draw_feedback.c2
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.c22
-rw-r--r--mesalib/src/mesa/state_tracker/st_format.c8
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp121
-rw-r--r--mesalib/src/mesa/state_tracker/st_manager.c9
-rw-r--r--mesalib/src/mesa/state_tracker/st_program.c10
-rw-r--r--mesalib/src/mesa/swrast/s_depth.c14
-rw-r--r--mesalib/src/mesa/swrast/s_drawpix.c4
-rw-r--r--mesalib/src/mesa/swrast/s_renderbuffer.c2
-rw-r--r--mesalib/src/mesa/swrast/s_stencil.c2
-rw-r--r--mesalib/src/mesa/swrast/s_texfetch.c4
-rw-r--r--mesalib/src/mesa/swrast/s_texfetch_tmp.h4
-rw-r--r--mesalib/src/mesa/tnl/t_draw.c21
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_api.c10
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_array.c40
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_draw.c30
-rw-r--r--mesalib/src/mesa/vbo/vbo_primitive_restart.c17
-rw-r--r--mesalib/src/mesa/vbo/vbo_rebase.c9
-rw-r--r--mesalib/src/mesa/vbo/vbo_save_api.c17
-rw-r--r--mesalib/src/mesa/vbo/vbo_save_draw.c6
-rw-r--r--mesalib/src/mesa/vbo/vbo_split_copy.c28
-rw-r--r--mesalib/windows/VC8/mesa/mesa/mesa.vcxproj2
-rw-r--r--mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters6
-rw-r--r--xorg-server/Makefile.am2
-rw-r--r--xorg-server/Xext/sync.c7
-rw-r--r--[-rwxr-xr-x]xorg-server/Xext/xres.c0
-rw-r--r--xorg-server/Xi/exevents.c3
-rw-r--r--xorg-server/Xi/extinit.c4
-rw-r--r--xorg-server/Xi/listdev.c2
-rw-r--r--xorg-server/Xi/xipassivegrab.c4
-rw-r--r--xorg-server/config/Makefile.am2
-rw-r--r--xorg-server/config/non-seat0.conf.multi-seat18
-rw-r--r--xorg-server/config/udev.c14
-rw-r--r--xorg-server/configure.ac12
-rw-r--r--xorg-server/dix/devices.c3
-rw-r--r--[-rwxr-xr-x]xorg-server/dix/dispatch.c4
-rw-r--r--[-rwxr-xr-x]xorg-server/dix/dixfonts.c0
-rw-r--r--xorg-server/dix/getevents.c2
-rw-r--r--xorg-server/dix/inpututils.c19
-rw-r--r--xorg-server/glamor/Makefile.am5
-rw-r--r--xorg-server/glamor/glamor.c74
-rw-r--r--xorg-server/glamor/glamor.h7
-rw-r--r--xorg-server/glamor/glamor_context.h56
-rw-r--r--xorg-server/glamor/glamor_copyarea.c138
-rw-r--r--xorg-server/glamor/glamor_core.c130
-rw-r--r--xorg-server/glamor/glamor_egl.c184
-rw-r--r--xorg-server/glamor/glamor_egl_stubs.c12
-rw-r--r--xorg-server/glamor/glamor_fbo.c53
-rw-r--r--xorg-server/glamor/glamor_fill.c83
-rw-r--r--xorg-server/glamor/glamor_gl_dispatch.c118
-rw-r--r--xorg-server/glamor/glamor_gl_dispatch.h128
-rw-r--r--xorg-server/glamor/glamor_glext.h63
-rw-r--r--xorg-server/glamor/glamor_glx.c82
-rw-r--r--xorg-server/glamor/glamor_glyphs.c8
-rw-r--r--xorg-server/glamor/glamor_gradient.c619
-rw-r--r--xorg-server/glamor/glamor_picture.c3
-rw-r--r--xorg-server/glamor/glamor_pixmap.c549
-rw-r--r--xorg-server/glamor/glamor_priv.h48
-rw-r--r--xorg-server/glamor/glamor_putimage.c82
-rw-r--r--xorg-server/glamor/glamor_render.c319
-rw-r--r--xorg-server/glamor/glamor_tile.c103
-rw-r--r--xorg-server/glamor/glamor_trapezoid.c213
-rw-r--r--xorg-server/glamor/glamor_utils.h373
-rw-r--r--xorg-server/glamor/glamor_xv.c146
-rw-r--r--xorg-server/glx/dispatch.h1056
-rw-r--r--xorg-server/glx/glapi.h26
-rw-r--r--xorg-server/glx/glapitable.h520
-rw-r--r--xorg-server/glx/glfunctions.h46
-rw-r--r--xorg-server/glx/glprocs.h1732
-rw-r--r--xorg-server/glx/glthread.c204
-rw-r--r--xorg-server/glx/glxext.c4
-rw-r--r--xorg-server/glx/glxserver.h1
-rw-r--r--xorg-server/glx/indirect_dispatch.c1
-rw-r--r--xorg-server/glx/indirect_dispatch.h8
-rw-r--r--xorg-server/glx/indirect_dispatch_swap.c1
-rw-r--r--xorg-server/glx/indirect_texture_compression.c11
-rw-r--r--xorg-server/glx/remap_helper.h9988
-rw-r--r--xorg-server/glx/u_thread.h (renamed from xorg-server/glx/glthread.h)0
-rw-r--r--xorg-server/hw/kdrive/ephyr/ephyr.c15
-rw-r--r--xorg-server/hw/xfree86/common/xf86Config.c16
-rw-r--r--xorg-server/hw/xfree86/common/xf86Configure.c42
-rw-r--r--xorg-server/hw/xfree86/common/xf86Xinput.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Xinput.h4
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/lnx_video.c2
-rw-r--r--xorg-server/hw/xfree86/parser/InputClass.c24
-rw-r--r--xorg-server/hw/xfree86/parser/xf86Parser.h10
-rw-r--r--xorg-server/hw/xquartz/quartzCocoa.m8
-rw-r--r--xorg-server/hw/xwin/InitOutput.c5
-rwxr-xr-xxorg-server/hw/xwin/glx/gen_gl_wrappers.py44
-rw-r--r--xorg-server/hw/xwin/glx/genheaders.py4
-rw-r--r--xorg-server/hw/xwin/glx/gl.xml564
-rw-r--r--xorg-server/hw/xwin/glx/indirect.c2
-rw-r--r--xorg-server/hw/xwin/glx/reg.py2
-rw-r--r--xorg-server/hw/xwin/glx/wgl.xml2
-rw-r--r--xorg-server/hw/xwin/glx/wglext.h6
-rw-r--r--xorg-server/hw/xwin/win.h6
-rw-r--r--xorg-server/hw/xwin/winallpriv.c4
-rw-r--r--xorg-server/hw/xwin/winclipboardinit.c2
-rw-r--r--xorg-server/hw/xwin/winclipboardxevents.c5
-rw-r--r--xorg-server/hw/xwin/wincursor.c10
-rw-r--r--[-rwxr-xr-x]xorg-server/hw/xwin/wingc.c0
-rw-r--r--xorg-server/hw/xwin/winkeybd.c2
-rw-r--r--xorg-server/hw/xwin/winmonitors.h2
-rw-r--r--xorg-server/hw/xwin/winmultiwindowwm.c91
-rw-r--r--xorg-server/hw/xwin/winnativegdi.c3
-rw-r--r--xorg-server/hw/xwin/winprefslex.l3
-rw-r--r--xorg-server/hw/xwin/winprefsyacc.y25
-rw-r--r--xorg-server/hw/xwin/winshadgdi.c6
-rw-r--r--xorg-server/hw/xwin/winwin32rootless.c7
-rw-r--r--xorg-server/hw/xwin/winwindow.c2
-rw-r--r--[-rwxr-xr-x]xorg-server/hw/xwin/winwindowswm.c4
-rw-r--r--[-rwxr-xr-x]xorg-server/include/gc.h0
-rw-r--r--xorg-server/include/input.h16
-rw-r--r--xorg-server/include/inputstr.h2
-rw-r--r--xorg-server/include/misc.h2
-rw-r--r--xorg-server/include/xkbrules.h10
-rw-r--r--xorg-server/include/xkbsrv.h8
-rw-r--r--xorg-server/mi/mieq.c2
-rw-r--r--[-rwxr-xr-x]xorg-server/os/access.c0
-rw-r--r--xorg-server/os/log.c4
-rw-r--r--xorg-server/os/utils.c6
-rw-r--r--[-rwxr-xr-x]xorg-server/os/xdmcp.c0
-rw-r--r--xorg-server/randr/rrcrtc.c14
-rw-r--r--xorg-server/test/Makefile.am2
-rw-r--r--xorg-server/test/input.c60
-rw-r--r--xorg-server/test/os.c4
-rw-r--r--xorg-server/test/signal-logging.c4
-rw-r--r--xorg-server/test/touch.c20
-rw-r--r--xorg-server/test/xkb.c18
-rw-r--r--xorg-server/xkb/xkbInit.c25
-rw-r--r--xorg-server/xkeyboard-config/rules/base.xml.in2
-rw-r--r--xorg-server/xkeyboard-config/symbols/ara2
-rw-r--r--xorg-server/xkeyboard-config/symbols/cz163
-rw-r--r--xorg-server/xkeyboard-config/symbols/es2
-rw-r--r--xorg-server/xkeyboard-config/symbols/il2
-rw-r--r--xorg-server/xkeyboard-config/symbols/in6
-rw-r--r--xorg-server/xkeyboard-config/symbols/it2
-rw-r--r--xorg-server/xkeyboard-config/symbols/kz2
-rw-r--r--xorg-server/xkeyboard-config/symbols/lv4
-rw-r--r--xorg-server/xkeyboard-config/symbols/ru826
-rw-r--r--xorg-server/xkeyboard-config/symbols/se51
-rw-r--r--xorg-server/xkeyboard-config/symbols/sk138
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/pl2
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/sk2
-rw-r--r--xorg-server/xkeyboard-config/symbols/tr413
-rw-r--r--xorg-server/xkeyboard-config/symbols/ua477
299 files changed, 18298 insertions, 13220 deletions
diff --git a/X11/xtrans/Xtrans.c b/X11/xtrans/Xtrans.c
index 0d6ebaa78..0d6ebaa78 100755..100644
--- a/X11/xtrans/Xtrans.c
+++ b/X11/xtrans/Xtrans.c
diff --git a/gl/glext.h b/gl/glext.h
index 7d6033e10..7ea5a0d4d 100644
--- a/gl/glext.h
+++ b/gl/glext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 24502 $ on $Date: 2013-12-12 13:14:39 -0800 (Thu, 12 Dec 2013) $
+** Khronos $Revision: 25406 $ on $Date: 2014-02-18 16:34:26 -0800 (Tue, 18 Feb 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -53,7 +53,7 @@ extern "C" {
#define GLAPI extern
#endif
-#define GL_GLEXT_VERSION 20131212
+#define GL_GLEXT_VERSION 20140218
/* Generated C header for:
* API: gl
@@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
+typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
@@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui
GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
+GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
#endif
#endif /* GL_VERSION_3_2 */
@@ -8126,6 +8126,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void
#endif
#endif /* GL_INTEL_parallel_arrays */
+#ifndef GL_INTEL_performance_query
+#define GL_INTEL_performance_query 1
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
+typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
+typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
+typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
+GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
+GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
+GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
+GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
+GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#endif
+#endif /* GL_INTEL_performance_query */
+
#ifndef GL_MESAX_texture_stack
#define GL_MESAX_texture_stack 1
#define GL_TEXTURE_1D_STACK_MESAX 0x8759
@@ -8220,6 +8266,15 @@ GLAPI void APIENTRY glEndConditionalRenderNVX (void);
#endif
#endif /* GL_NVX_conditional_render */
+#ifndef GL_NVX_gpu_memory_info
+#define GL_NVX_gpu_memory_info 1
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
+#endif /* GL_NVX_gpu_memory_info */
+
#ifndef GL_NV_bindless_multi_draw_indirect
#define GL_NV_bindless_multi_draw_indirect 1
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
@@ -9647,7 +9702,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void
typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
@@ -9658,7 +9713,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd
GLAPI void APIENTRY glVDPAUFiniNV (void);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
+GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
diff --git a/gl/glxext.h b/gl/glxext.h
index 8c642f354..826fda5b5 100644
--- a/gl/glxext.h
+++ b/gl/glxext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,10 +33,10 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 24777 $ on $Date: 2014-01-14 14:02:32 -0800 (Tue, 14 Jan 2014) $
+** Khronos $Revision: 25407 $ on $Date: 2014-02-18 16:51:56 -0800 (Tue, 18 Feb 2014) $
*/
-#define GLX_GLXEXT_VERSION 20140114
+#define GLX_GLXEXT_VERSION 20140218
/* Generated C header for:
* API: glx
@@ -407,6 +407,32 @@ GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixm
#endif
#endif /* GLX_MESA_pixmap_colormap */
+#ifndef GLX_MESA_query_renderer
+#define GLX_MESA_query_renderer 1
+#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
+#define GLX_RENDERER_VERSION_MESA 0x8185
+#define GLX_RENDERER_ACCELERATED_MESA 0x8186
+#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+#define GLX_RENDERER_ID_MESA 0x818E
+typedef Bool ( *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value);
+typedef const char *( *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
+typedef Bool ( *PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
+typedef const char *( *PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute);
+#ifdef GLX_GLXEXT_PROTOTYPES
+Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int *value);
+const char *glXQueryCurrentRendererStringMESA (int attribute);
+Bool glXQueryRendererIntegerMESA (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
+const char *glXQueryRendererStringMESA (Display *dpy, int screen, int renderer, int attribute);
+#endif
+#endif /* GLX_MESA_query_renderer */
+
#ifndef GLX_MESA_release_buffers
#define GLX_MESA_release_buffers 1
typedef Bool ( *PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
diff --git a/gl/internal/dri_interface.h b/gl/internal/dri_interface.h
index 6b9e5ecbc..0fb645dd5 100644
--- a/gl/internal/dri_interface.h
+++ b/gl/internal/dri_interface.h
@@ -253,6 +253,8 @@ struct __DRItexBufferExtensionRec {
* __DRIdrawable, including the required texture format attribute.
*
* For GLX_EXT_texture_from_pixmap with AIGLX.
+ *
+ * \since 2
*/
void (*setTexBuffer2)(__DRIcontext *pDRICtx,
GLint target,
@@ -263,6 +265,8 @@ struct __DRItexBufferExtensionRec {
* need this.
*
* For GLX_EXT_texture_from_pixmap with AIGLX.
+ *
+ * \since 3
*/
void (*releaseTexBuffer)(__DRIcontext *pDRICtx,
GLint target,
@@ -468,6 +472,8 @@ struct __DRIswrastLoaderExtensionRec {
/**
* Put image to drawable
+ *
+ * \since 2
*/
void (*putImage2)(__DRIdrawable *drawable, int op,
int x, int y, int width, int height, int stride,
@@ -852,6 +858,8 @@ struct __DRIdri2LoaderExtensionRec {
* \param driDrawable Drawable whose front-buffer is to be flushed
* \param loaderPrivate Loader's private data that was previously passed
* into __DRIdri2ExtensionRec::createNewDrawable
+ *
+ * \since 2
*/
void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
@@ -874,6 +882,8 @@ struct __DRIdri2LoaderExtensionRec {
* \c attachments.
* \param loaderPrivate Loader's private data that was previously passed
* into __DRIdri2ExtensionRec::createNewDrawable.
+ *
+ * \since 3
*/
__DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable,
int *width, int *height,
diff --git a/libX11/man/xkb/XkbGetMap.man b/libX11/man/xkb/XkbGetMap.man
index b51704c74..c78d4545d 100644
--- a/libX11/man/xkb/XkbGetMap.man
+++ b/libX11/man/xkb/XkbGetMap.man
@@ -106,7 +106,7 @@ in
are undefined), or BadImplementation (a compatible version of the Xkb extension
is not
available in the server). To free the returned data, use
-.I XkbFreeClientMap.
+.I XkbFreeKeyboard.
Xkb also provides convenience functions to get partial component definitions
from the
diff --git a/libX11/nls/km_KH.UTF-8/Compose.pre b/libX11/nls/km_KH.UTF-8/Compose.pre
index 77651d085..dc89119ae 100644
--- a/libX11/nls/km_KH.UTF-8/Compose.pre
+++ b/libX11/nls/km_KH.UTF-8/Compose.pre
@@ -1,6 +1,6 @@
include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
-# Khmer digraphs
+XCOMM Khmer digraphs
<U17ff> : "ាំ"
<U17fe> : "ោះ"
<U17fd> : "េះ"
diff --git a/libX11/nls/sr_CS.UTF-8/Compose.pre b/libX11/nls/sr_CS.UTF-8/Compose.pre
index 119e23ec4..b2397f7b3 100644
--- a/libX11/nls/sr_CS.UTF-8/Compose.pre
+++ b/libX11/nls/sr_CS.UTF-8/Compose.pre
@@ -1,17 +1,17 @@
include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
-# Serbian accented Cyrillic
-# а А - U+0430, U+0410 Cyrillic_a, Cyrillic_A
-# е Е - U+0435, U+0415 Cyrillic_e, Cyrillic_E
-# о О - U+043E, U+041E Cyrillic_o, Cyrillic_O
-# у У - U+0443, U+0423 Cyrillic_u, Cyrillic_U
-# и И - U+0438, U+0418 Cyrillic_i, Cyrillic_I
-#
-# ̀ - U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave>
-# ́ - U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute>
-# ̂ - U+0302 <dead_circumflex>, <Multi_key> <asciicircum>
-# ̏ - U+030F <dead_diaeresis>, <dead_doubleacute>
-# ̀ - kratkouzlazni, U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave>
+XCOMM Serbian accented Cyrillic
+XCOMM а А - U+0430, U+0410 Cyrillic_a, Cyrillic_A
+XCOMM е Е - U+0435, U+0415 Cyrillic_e, Cyrillic_E
+XCOMM о О - U+043E, U+041E Cyrillic_o, Cyrillic_O
+XCOMM у У - U+0443, U+0423 Cyrillic_u, Cyrillic_U
+XCOMM и И - U+0438, U+0418 Cyrillic_i, Cyrillic_I
+XCOMM
+XCOMM ̀ - U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave>
+XCOMM ́ - U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute>
+XCOMM ̂ - U+0302 <dead_circumflex>, <Multi_key> <asciicircum>
+XCOMM ̏ - U+030F <dead_diaeresis>, <dead_doubleacute>
+XCOMM ̀ - kratkouzlazni, U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave>
<dead_grave> <Cyrillic_a> : "а̀"
<combining_grave> <Cyrillic_a> : "а̀"
<Multi_key> <grave> <Cyrillic_a> : "а̀"
@@ -42,7 +42,7 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
<dead_grave> <Cyrillic_U> : "У̀"
<combining_grave> <Cyrillic_U> : "У̀"
<Multi_key> <grave> <Cyrillic_U> : "У̀"
-# ́ - dugouzlazni, U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute>
+XCOMM ́ - dugouzlazni, U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute>
<dead_acute> <Cyrillic_a> : "а́"
<combining_acute> <Cyrillic_a> : "а́"
<Multi_key> <acute> <Cyrillic_a> : "а́"
@@ -83,7 +83,7 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
<combining_acute> <Cyrillic_U> : "У́"
<Multi_key> <acute> <Cyrillic_U> : "У́"
<Multi_key> <apostrophe> <Cyrillic_U> : "У́"
-# ̂ - dugosilazni, U+0302 <dead_circumflex>, <Multi_key> <asciicircum>
+XCOMM ̂ - dugosilazni, U+0302 <dead_circumflex>, <Multi_key> <asciicircum>
<dead_circumflex> <Cyrillic_a> : "а̂"
<Multi_key> <asciicircum> <Cyrillic_a> : "а̂"
<dead_circumflex> <Cyrillic_A> : "А̂"
@@ -104,8 +104,8 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
<Multi_key> <asciicircum> <Cyrillic_u> : "у̂"
<dead_circumflex> <Cyrillic_U> : "У̂"
<Multi_key> <asciicircum> <Cyrillic_U> : "У̂"
-# ̏ - kratkosilazni, U+030F <dead_diaeresis>, <dead_doubleacute>
-# there's no appropriate dead_doublegrave, so we use these two dead keys
+XCOMM ̏ - kratkosilazni, U+030F <dead_diaeresis>, <dead_doubleacute>
+XCOMM there's no appropriate dead_doublegrave, so we use these two dead keys
<dead_diaeresis> <Cyrillic_a> : "а̏"
<dead_doubleacute> <Cyrillic_a> : "а̏"
<dead_diaeresis> <Cyrillic_A> : "А̏"
diff --git a/libX11/src/KeyBind.c b/libX11/src/KeyBind.c
index a49de3d78..f64f116b8 100644
--- a/libX11/src/KeyBind.c
+++ b/libX11/src/KeyBind.c
@@ -48,11 +48,6 @@ in this Software without prior written authorization from The Open Group.
#include <X11/keysymdef.h>
#include <stdio.h>
-#ifdef USE_OWN_COMPOSE
-#include "imComp.h"
-
-#endif
-
#include "Xresource.h"
#include "Key.h"
@@ -891,73 +886,6 @@ XLookupString (
&modifiers, &symbol))
return 0;
-#ifdef USE_OWN_COMPOSE
- if ( status ) {
- static int been_here= 0;
- if ( !been_here ) {
- XimCompInitTables();
- been_here = 1;
- }
- if ( !XimCompLegalStatus(status) ) {
- status->compose_ptr = NULL;
- status->chars_matched = 0;
- }
- if ( ((status->chars_matched>0)&&(status->compose_ptr!=NULL)) ||
- XimCompIsComposeKey(symbol,event->keycode,status) ) {
- XimCompRtrn rtrn;
- switch (XimCompProcessSym(status,symbol,&rtrn)) {
- case XIM_COMP_IGNORE:
- break;
- case XIM_COMP_IN_PROGRESS:
- if ( keysym!=NULL )
- *keysym = NoSymbol;
- return 0;
- case XIM_COMP_FAIL:
- {
- int n = 0, len= 0;
- for (n=len=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
- if ( nbytes-len > 0 ) {
- len+= _XTranslateKeySym(event->display,rtrn.sym[n],
- event->state,
- buffer+len,nbytes-len);
- }
- }
- if ( keysym!=NULL ) {
- if ( n==1 ) *keysym = rtrn.sym[0];
- else *keysym = NoSymbol;
- }
- return len;
- }
- case XIM_COMP_SUCCEED:
- {
- int len,n = 0;
-
- symbol = rtrn.matchSym;
- if ( keysym!=NULL ) *keysym = symbol;
- if ( rtrn.str[0]!='\0' ) {
- strncpy(buffer,rtrn.str,nbytes-1);
- buffer[nbytes-1]= '\0';
- len = strlen(buffer);
- }
- else {
- len = _XTranslateKeySym(event->display,symbol,
- event->state,
- buffer,nbytes);
- }
- for (n=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
- if ( nbytes-len > 0 ) {
- len+= _XTranslateKeySym(event->display,rtrn.sym[n],
- event->state,
- buffer+len,nbytes-len);
- }
- }
- return len;
- }
- }
- }
- }
-#endif
-
if (keysym)
*keysym = symbol;
/* arguable whether to use (event->state & ~modifiers) here */
diff --git a/libX11/src/Xrm.c b/libX11/src/Xrm.c
index 36b71d699..74495f25f 100644
--- a/libX11/src/Xrm.c
+++ b/libX11/src/Xrm.c
@@ -349,7 +349,7 @@ void XrmSetDatabase(
XrmDatabase database)
{
LockDisplay(display);
- /* destroy database if set up imlicitely by XGetDefault() */
+ /* destroy database if set up implicitly by XGetDefault() */
if (display->db && (display->flags & XlibDisplayDfltRMDB)) {
XrmDestroyDatabase(display->db);
display->flags &= ~XlibDisplayDfltRMDB;
@@ -508,7 +508,7 @@ static XrmDatabase NewDatabase(void)
}
/* move all values from ftable to ttable, and free ftable's buckets.
- * ttable is quaranteed empty to start with.
+ * ttable is guaranteed empty to start with.
*/
static void MoveValues(
LTable ftable,
diff --git a/libX11/src/xkb/XKBBind.c b/libX11/src/xkb/XKBBind.c
index b08e9d3ba..071e02f70 100644
--- a/libX11/src/xkb/XKBBind.c
+++ b/libX11/src/xkb/XKBBind.c
@@ -69,11 +69,6 @@ from The Open Group.
#include <X11/extensions/XKBproto.h>
#include "XKBlibint.h"
-#ifdef USE_OWN_COMPOSE
-#define COMPOSE_NO_CONST_MEMBERS
-#include "imComp.h"
-#endif
-
#define AllMods (ShiftMask|LockMask|ControlMask| \
Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
@@ -753,103 +748,6 @@ XLookupString(register XKeyEvent *event,
}
}
-#ifdef USE_OWN_COMPOSE
- if (status) {
- static int been_here = 0;
-
- if (!been_here) {
- XimCompInitTables();
- been_here = 1;
- }
- if (!XimCompLegalStatus(status)) {
- status->compose_ptr = NULL;
- status->chars_matched = 0;
- }
- if (((status->chars_matched > 0) && (status->compose_ptr != NULL)) ||
- XimCompIsComposeKey(*keysym, event->keycode, status)) {
- XimCompRtrn rtrn;
-
- switch (XimCompProcessSym(status, *keysym, &rtrn)) {
- case XIM_COMP_IGNORE:
- break;
- case XIM_COMP_IN_PROGRESS:
- if (keysym != NULL)
- *keysym = NoSymbol;
-#ifndef NO_COMPOSE_LED
- if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) {
- XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED,
- True, True, False, NULL);
- }
-#endif
- return 0;
- case XIM_COMP_FAIL:
- {
- static Atom _ComposeFail = None;
- int n = 0, len = 0;
-
-#ifndef NO_COMPOSE_LED
- if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) {
- XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED,
- True, False, False, NULL);
- }
-#endif
-#ifndef NO_BELL_ON_COMPOSE_FAIL
- if (dpy->xkb_info->xlib_ctrls & XkbLC_BeepOnComposeFail) {
- if (_ComposeFail == None)
- _ComposeFail = XInternAtom(dpy, "ComposeFail", 0);
- XkbBell(dpy, event->window, 0, _ComposeFail);
- }
-#endif
- for (n = len = 0; rtrn.sym[n] != XK_VoidSymbol; n++) {
- if (nbytes - len > 0) {
- len += XkbTranslateKeySym(dpy, &rtrn.sym[n], new_mods,
- buffer + len, nbytes - len,
- NULL);
- }
- }
- if (keysym != NULL) {
- if (n == 1)
- *keysym = rtrn.sym[0];
- else
- *keysym = NoSymbol;
- }
- return len;
- }
- case XIM_COMP_SUCCEED:
- {
- int len, n = 0;
-
-#ifndef NO_COMPOSE_LED
- if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) {
- XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED,
- True, False, False, NULL);
- }
-#endif
- *keysym = rtrn.matchSym;
- if (rtrn.str[0] != '\0') {
- strncpy(buffer, rtrn.str, nbytes - 1);
- buffer[nbytes - 1] = '\0';
- len = (int) strlen(buffer);
- }
- else {
- len = XkbTranslateKeySym(dpy, keysym, new_mods,
- buffer, nbytes, NULL);
- }
- for (n = 0; rtrn.sym[n] != XK_VoidSymbol; n++) {
- if (nbytes - len > 0) {
- len += XkbTranslateKeySym(dpy, &rtrn.sym[n],
- event->state,
- buffer + len, nbytes - len,
- NULL);
- }
- }
- return len;
- }
- }
- }
- }
-#endif
-
/* We *should* use the new_mods (which does not contain any modifiers */
/* that were used to compute the symbol here, but pre-XKB XLookupString */
/* did not and we have to remain compatible. Sigh. */
diff --git a/libxcb/src/xcb_conn.c b/libxcb/src/xcb_conn.c
index 72c4af7c2..7a4ae5646 100644
--- a/libxcb/src/xcb_conn.c
+++ b/libxcb/src/xcb_conn.c
@@ -395,6 +395,9 @@ void _xcb_conn_shutdown(xcb_connection_t *c, int err)
/* Return connection error state.
* To make thread-safe, I need a seperate static
* variable for every possible error.
+ * has_error is the first field in xcb_connection_t, so just
+ * return a casted int here; checking has_error (and only
+ * has_error) will be safe.
*/
xcb_connection_t *_xcb_conn_ret_error(int err)
{
diff --git a/libxcb/src/xcbint.h b/libxcb/src/xcbint.h
index b25f03b3e..67cf5711e 100644
--- a/libxcb/src/xcbint.h
+++ b/libxcb/src/xcbint.h
@@ -192,6 +192,7 @@ void _xcb_ext_destroy(xcb_connection_t *c);
/* xcb_conn.c */
struct xcb_connection_t {
+ /* This must be the first field; see _xcb_conn_ret_error(). */
int has_error;
/* constant data */
diff --git a/libxcb/xcb-proto/xcbgen/matcher.py b/libxcb/xcb-proto/xcbgen/matcher.py
index 6e45b236c..bfa315eb5 100644
--- a/libxcb/xcb-proto/xcbgen/matcher.py
+++ b/libxcb/xcb-proto/xcbgen/matcher.py
@@ -18,10 +18,12 @@ def import_(node, module, namespace):
'''
# To avoid circular import error
from xcbgen import state
+ module.import_level = module.import_level + 1
new_file = join(namespace.dir, '%s.xml' % node.text)
new_root = parse(new_file).getroot()
new_namespace = state.Namespace(new_file)
execute(module, new_namespace)
+ module.import_level = module.import_level - 1
if not module.has_import(node.text):
module.add_import(node.text, new_namespace)
diff --git a/libxcb/xcb-proto/xcbgen/state.py b/libxcb/xcb-proto/xcbgen/state.py
index 52b8d8da7..a6ad3a11e 100644
--- a/libxcb/xcb-proto/xcbgen/state.py
+++ b/libxcb/xcb-proto/xcbgen/state.py
@@ -65,6 +65,8 @@ class Module(object):
self.output = output
self.imports = []
+ self.direct_imports = []
+ self.import_level = 0
self.types = {}
self.events = {}
self.errors = {}
@@ -107,6 +109,8 @@ class Module(object):
# Keeps track of what's been imported so far.
def add_import(self, name, namespace):
+ if self.import_level == 0:
+ self.direct_imports.append((name, namespace.header))
self.imports.append((name, namespace.header))
def has_import(self, name):
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index 8bf9b9441..d54cba36d 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -27,7 +27,7 @@ OSMESA_VERSION=8
AC_SUBST([OSMESA_VERSION])
dnl Versions for external dependencies
-LIBDRM_REQUIRED=2.4.24
+LIBDRM_REQUIRED=2.4.38
LIBDRM_RADEON_REQUIRED=2.4.50
LIBDRM_INTEL_REQUIRED=2.4.52
LIBDRM_NVVIEUX_REQUIRED=2.4.33
@@ -38,6 +38,13 @@ DRI3PROTO_REQUIRED=1.0
PRESENTPROTO_REQUIRED=1.0
LIBUDEV_REQUIRED=151
GLPROTO_REQUIRED=1.4.14
+LIBOMXIL_BELLAGIO_REQUIRED=0.0
+VDPAU_REQUIRED=0.4.1
+WAYLAND_REQUIRED=1.2.0
+XCBDRI2_REQUIRED=1.8
+XCBGLX_REQUIRED=1.8.1
+XSHMFENCE_REQUIRED=1.1
+XVMC_REQUIRED=1.0.6
dnl Check for progs
AC_PROG_CPP
@@ -119,6 +126,11 @@ if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
GEN_ASM_OFFSETS=yes
fi
fi
+
+dnl Check for compiler builtins
+AX_GCC_BUILTIN([__builtin_bswap32])
+AX_GCC_BUILTIN([__builtin_bswap64])
+
AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
dnl Make sure the pkg-config macros are defined
@@ -506,13 +518,15 @@ AC_ARG_ENABLE([selinux],
[MESA_SELINUX="$enableval"],
[MESA_SELINUX=no])
if test "x$enable_selinux" = "xyes"; then
- AC_CHECK_HEADER([selinux/selinux.h],[],
- [AC_MSG_ERROR([SELinux headers not found])])
- AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
- [AC_MSG_ERROR([SELinux library not found])])
- SELINUX_LIBS="-lselinux"
+ PKG_CHECK_MODULES([SELINUX], [libselinux], [],
+ [AC_CHECK_HEADER([selinux/selinux.h],[],
+ [AC_MSG_ERROR([SELinux headers not found])])
+ AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
+ [AC_MSG_ERROR([SELinux library not found])])
+ SELINUX_LIBS="-lselinux"])
DEFINES="$DEFINES -DMESA_SELINUX"
fi
+AC_SUBST([SELINUX_CFLAGS])
AC_SUBST([SELINUX_LIBS])
dnl Options for APIs
@@ -725,11 +739,20 @@ AC_ARG_ENABLE([shared-glapi],
[AS_HELP_STRING([--enable-shared-glapi],
[Enable shared glapi for OpenGL @<:@default=yes@:>@])],
[enable_shared_glapi="$enableval"],
- [enable_shared_glapi="$enable_dri"])
+ [enable_shared_glapi=yes])
-# Shared GLAPI is only useful for DRI
-if test "x$enable_dri" = xno; then
- AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
+case "x$enable_opengl$enable_gles1$enable_gles2" in
+x*yes*yes*)
+ if test "x$enable_shared_glapi" = xno; then
+ AC_MSG_ERROR([shared GLAPI required when building two or more of
+ the following APIs - opengl, gles1 gles2])
+ fi
+ ;;
+esac
+
+# Building Xlib-GLX requires shared glapi to be disabled.
+if test "x$enable_xlib_glx" = xyes; then
+ AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
enable_shared_glapi=no
fi
@@ -845,10 +868,10 @@ xyesno)
fi
# find the DRI deps for libGL
- dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
+ dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= $XCBGLX_REQUIRED xcb-dri2 >= $XCBDRI2_REQUIRED"
if test x"$enable_dri3" = xyes; then
- dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= 1.1"
+ dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
fi
# add xf86vidmode if available
@@ -862,11 +885,6 @@ xyesno)
X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
GL_LIB_DEPS="$DRIGL_LIBS"
- if test x"$enable_dri3$have_libudev" = xyesyes; then
- X11_INCLUDES="$X11_INCLUDES $LIBUDEV_CFLAGS"
- GL_LIB_DEPS="$GL_LIB_DEPS"
- fi
-
# need DRM libs, $PTHREAD_LIBS, etc.
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
@@ -948,40 +966,24 @@ AC_SUBST([DRI_DRIVER_SEARCH_DIR])
dnl Which drivers to build - default is chosen by platform
AC_ARG_WITH([dri-drivers],
[AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
- [comma delimited DRI drivers list, e.g.
+ [comma delimited classic DRI drivers list, e.g.
"swrast,i965,radeon" @<:@default=auto@:>@])],
[with_dri_drivers="$withval"],
- [with_dri_drivers=yes])
-if test "x$with_dri_drivers" = x; then
- with_dri_drivers=no
-fi
-
-dnl If $with_dri_drivers is yes, directories will be added through
-dnl platform checks
-DRI_DIRS=""
-case "$with_dri_drivers" in
-no) ;;
-yes)
- # classic DRI drivers
- if test "x$enable_opengl" = xyes; then
- DRI_DIRS="yes"
- fi
- ;;
-*)
- # verify the requested driver directories exist
- dri_drivers=`IFS=', '; echo $with_dri_drivers`
- for driver in $dri_drivers; do
- test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
- AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
- done
- DRI_DIRS="$dri_drivers"
- if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
- AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
+ [with_dri_drivers=auto])
+
+if test "x$with_dri_drivers" = xauto; then
+ if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
+ with_dri_drivers="yes"
+ else
+ with_dri_drivers="no"
fi
- ;;
-esac
+fi
+if test "x$with_dri_drivers" = xno; then
+ with_dri_drivers=''
+fi
-dnl Set DRI_DIRS, DEFINES and LIB_DEPS
+dnl If $with_dri_drivers is yes, drivers will be added through
+dnl platform checks. Set DEFINES and LIB_DEPS
if test "x$enable_dri" = xyes; then
# Platform specific settings and drivers to build
case "$host_os" in
@@ -993,21 +995,10 @@ if test "x$enable_dri" = xyes; then
fi
case "$host_cpu" in
- x86_64|amd64)
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
- fi
- ;;
- powerpc*)
- # Build only the drivers for cards that exist on PowerPC.
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="r200 radeon swrast"
- fi
- ;;
- sparc*)
- # Build only the drivers for cards that exist on sparc
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="r200 radeon swrast"
+ powerpc* | sparc*)
+ # Build only the drivers for cards that exist on PowerPC/sparc
+ if test "x$with_dri_drivers" = "xyes"; then
+ with_dri_drivers="r200 radeon swrast"
fi
;;
esac
@@ -1015,10 +1006,6 @@ if test "x$enable_dri" = xyes; then
*freebsd* | dragonfly* | *netbsd* | openbsd*)
DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
DEFINES="$DEFINES -DHAVE_ALIAS"
-
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
- fi
;;
gnu*)
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
@@ -1029,19 +1016,17 @@ if test "x$enable_dri" = xyes; then
;;
cygwin*)
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="swrast"
+ if test "x$with_dri_drivers" = "xyes"; then
+ with_dri_drivers="swrast"
fi
;;
esac
# default drivers
- if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
+ if test "x$with_dri_drivers" = "xyes"; then
+ with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
fi
- DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
-
# Check for expat
PKG_CHECK_EXISTS([EXPAT], [have_expat=yes], [have_expat=no])
if test "x$have_expat" = "xyes"; then
@@ -1053,8 +1038,8 @@ if test "x$enable_dri" = xyes; then
fi
# If we are building any DRI driver other than swrast.
- if test -n "$DRI_DIRS"; then
- if test x"$DRI_DIRS" != xswrast; then
+ if test -n "$with_dri_drivers"; then
+ if test "x$with_dri_drivers" != xswrast; then
# ... libdrm is required
if test "x$have_libdrm" != xyes; then
AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
@@ -1071,61 +1056,55 @@ if test "x$enable_dri" = xyes; then
fi
-AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
-AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
- "x$enable_osmesa" = xyes -o \
- -n "$DRI_DIRS")
AC_SUBST([DRI_LIB_DEPS])
AC_SUBST([GALLIUM_DRI_LIB_DEPS])
-case $DRI_DIRS in
-*i915*|*i965*)
- PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
+DRI_DIRS=''
+dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
+if test -n "$with_dri_drivers"; then
+ if test "x$enable_opengl" != xyes; then
+ AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
+ fi
- for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
- case $d in
- i915)
+ dri_drivers=`IFS=', '; echo $with_dri_drivers`
+ for driver in $dri_drivers; do
+ DRI_DIRS+="$driver "
+ case "x$driver" in
+ xi915)
HAVE_I915_DRI=yes;
+ PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
- i965)
+ xi965)
HAVE_I965_DRI=yes;
+ PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
- esac
- done
-
- ;;
-esac
-
-case $DRI_DIRS in
-*nouveau*)
- PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
- HAVE_NOUVEAU_DRI=yes;
- ;;
-esac
-
-case $DRI_DIRS in
-*radeon*|*r200*)
- PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
-
- for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
- case $d in
- radeon)
+ xnouveau)
+ HAVE_NOUVEAU_DRI=yes;
+ PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
+ ;;
+ xradeon)
HAVE_RADEON_DRI=yes;
+ PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
;;
- r200)
+ xr200)
HAVE_R200_DRI=yes;
+ PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
+ ;;
+ xswrast)
+ HAVE_SWRAST_DRI=yes;
+ ;;
+ *)
+ AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
;;
esac
done
+ DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
+fi
- ;;
-esac
-
-case $DRI_DIRS in
-*swrast*)
- HAVE_SWRAST_DRI=yes;
- ;;
-esac
+AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
+AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
+ "x$enable_osmesa" = xyes -o \
+ -n "$DRI_DIRS")
dnl
dnl OSMesa configuration
@@ -1185,7 +1164,7 @@ if test "x$enable_gbm" = xauto; then
fi
if test "x$enable_gbm" = xyes; then
if test x"$have_libudev" != xyes; then
- AC_MSG_ERROR([gbm needs udev])
+ AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED])
fi
if test "x$enable_dri" = xyes; then
@@ -1196,7 +1175,7 @@ if test "x$enable_gbm" = xyes; then
fi
fi
AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
-GBM_PC_REQ_PRIV="libudev"
+GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
AC_SUBST([GBM_PC_REQ_PRIV])
AC_SUBST([GBM_PC_LIB_PRIV])
@@ -1225,7 +1204,7 @@ dnl
dnl EGL Gallium configuration
dnl
if test "x$enable_gallium_egl" = xyes; then
- if test "x$with_gallium_drivers" = x; then
+ if test -z "$with_gallium_drivers"; then
AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
fi
if test "x$enable_egl" = xno; then
@@ -1252,7 +1231,7 @@ if test "x$enable_gallium_gbm" = xauto; then
esac
fi
if test "x$enable_gallium_gbm" = xyes; then
- if test "x$with_gallium_drivers" = x; then
+ if test -z "$with_gallium_drivers"; then
AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
fi
if test "x$enable_gbm" = xno; then
@@ -1273,7 +1252,16 @@ dnl
dnl XA configuration
dnl
if test "x$enable_xa" = xyes; then
+ if test "x$with_gallium_drivers" = xswrast; then
+ AC_MSG_ERROR([
+ Building xa requires at least one non swrast gallium driver.
+ If you are looking to use libxatracker.so with vmware's virtual gpu,
+ make sure to include svga in the gallium drivers list, apart from
+ enabling XA.
+ Example: ./configure --enable-xa --with-gallium-drivers=svga...])
+ fi
GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
+ enable_gallium_loader=yes
fi
AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
@@ -1286,7 +1274,7 @@ if test "x$enable_openvg" = xyes; then
if test "x$enable_egl" = xno; then
AC_MSG_ERROR([cannot enable OpenVG without EGL])
fi
- if test "x$with_gallium_drivers" = x; then
+ if test -z "$with_gallium_drivers"; then
AC_MSG_ERROR([cannot enable OpenVG without Gallium])
fi
if test "x$enable_gallium_egl" = xno; then
@@ -1319,19 +1307,20 @@ if test -n "$with_gallium_drivers"; then
fi
if test "x$enable_xvmc" = xyes; then
- PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
+ PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
fi
AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
if test "x$enable_vdpau" = xyes; then
- PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
+ PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
+ [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
fi
AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
if test "x$enable_omx" = xyes; then
- PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= 0.0 x11-xcb xcb-dri2 >= 1.8])
+ PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx"
fi
AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
@@ -1344,9 +1333,9 @@ AC_ARG_WITH([libclc-path],
[AS_HELP_STRING([--with-libclc-path],
[DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
[LIBCLC_PATH="$withval"],
- [LIBCLC_PATH=""])
+ [LIBCLC_PATH=''])
-if test "x$LIBCLC_PATH" != x; then
+if test -n "$LIBCLC_PATH"; then
AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
Please review the updated build instructions for clover:
http://dri.freedesktop.org/wiki/GalliumCompute])
@@ -1357,12 +1346,12 @@ AC_ARG_WITH([clang-libdir],
[AS_HELP_STRING([--with-clang-libdir],
[Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
[CLANG_LIBDIR="$withval"],
- [CLANG_LIBDIR=""])
+ [CLANG_LIBDIR=''])
PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
if test "x$enable_opencl" = xyes; then
- if test "x$with_gallium_drivers" = x; then
+ if test -z "$with_gallium_drivers"; then
AC_MSG_ERROR([cannot enable OpenCL without Gallium])
fi
@@ -1444,7 +1433,7 @@ egl_platforms=`IFS=', '; echo $with_egl_platforms`
for plat in $egl_platforms; do
case "$plat" in
wayland)
- PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.2.0 wayland-server >= 1.2.0])
+ PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
@@ -1453,7 +1442,7 @@ for plat in $egl_platforms; do
;;
x11)
- PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
+ PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
;;
drm)
@@ -1473,7 +1462,7 @@ for plat in $egl_platforms; do
case "$plat$have_libudev" in
waylandno|drmno)
- AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
+ AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;;
esac
done
@@ -1487,6 +1476,7 @@ else
fi
if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then
+ GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
NEED_WINSYS_XLIB=yes
fi
AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
@@ -1538,17 +1528,17 @@ AC_ARG_ENABLE([gallium-llvm],
[enable_gallium_llvm="$enableval"],
[enable_gallium_llvm=auto])
-AC_ARG_WITH([llvm-shared-libs],
- [AS_HELP_STRING([--with-llvm-shared-libs],
- [link with LLVM shared libraries @<:@default=disabled@:>@])],
+AC_ARG_ENABLE([llvm-shared-libs],
+ [AS_HELP_STRING([--enable-llvm-shared-libs],
+ [link with LLVM shared libraries @<:@default=enabled@:>@])],
[],
- [with_llvm_shared_libs=no])
+ [with_llvm_shared_libs=yes])
AC_ARG_WITH([llvm-prefix],
[AS_HELP_STRING([--with-llvm-prefix],
[Prefix for LLVM installations in non-standard locations])],
[llvm_prefix="$withval"],
- [llvm_prefix=""])
+ [llvm_prefix=''])
# Call this inside ` ` to get the return value.
@@ -1562,12 +1552,19 @@ strip_unwanted_llvm_flags() {
-e 's/-O.\>//g' \
-e 's/-g\>//g' \
-e 's/-Wall\>//g' \
+ -e 's/-Wcast-qual\>//g' \
+ -e 's/-Woverloaded-virtual\>//g' \
-e 's/-fcolor-diagnostics\>//g' \
- -e 's/-fomit-frame-pointer\>//g'
+ -e 's/-fdata-sections\>//g' \
+ -e 's/-ffunction-sections\>//g' \
+ -e 's/-fno-exceptions\>//g' \
+ -e 's/-fomit-frame-pointer\>//g' \
+ -e 's/-fvisibility-inlines-hidden\>//g' \
+ -e 's/-fPIC\>//g'
}
-if test "x$with_gallium_drivers" = x; then
+if test -z "$with_gallium_drivers"; then
enable_gallium_llvm=no
fi
if test "x$enable_gallium_llvm" = xauto; then
@@ -1576,7 +1573,7 @@ if test "x$enable_gallium_llvm" = xauto; then
esac
fi
if test "x$enable_gallium_llvm" = xyes; then
- if test "x$llvm_prefix" != x; then
+ if test -n "$llvm_prefix"; then
AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
else
AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
@@ -1591,13 +1588,14 @@ if test "x$enable_gallium_llvm" = xyes; then
LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
+ LLVM_LDFLAGS="-Wl,-rpath,$LLVM_LIBDIR $LLVM_LDFLAGS"
AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
[#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
[#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
- if test "x${LLVM_VERSION_MAJOR}" != x; then
+ if test -n "${LLVM_VERSION_MAJOR}"; then
LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
else
LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
@@ -1624,7 +1622,7 @@ if test "x$enable_gallium_llvm" = xyes; then
dnl Check for Clang internal headers
if test "x$enable_opencl" = xyes; then
- if test "x$CLANG_LIBDIR" = x; then
+ if test -z "$CLANG_LIBDIR"; then
CLANG_LIBDIR=${LLVM_LIBDIR}
fi
CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
@@ -1694,20 +1692,20 @@ gallium_check_st() {
fi
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
fi
- if test "x$enable_dri" = xyes && test "x$2" != x; then
+ if test "x$enable_dri" = xyes && test -n "$2"; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
fi
- if test "x$enable_xa" = xyes && test "x$3" != x; then
+ if test "x$enable_xa" = xyes && test -n "$3"; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
fi
- if test "x$enable_xvmc" = xyes && test "x$4" != x; then
+ if test "x$enable_xvmc" = xyes && test -n "$4"; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
fi
- if test "x$enable_vdpau" = xyes && test "x$5" != x; then
+ if test "x$enable_vdpau" = xyes && test -n "$5"; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
fi
if test "x$enable_omx" = xyes && test "x$6" != x; then
- GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
+ GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
fi
}
@@ -1721,8 +1719,9 @@ gallium_require_llvm() {
gallium_require_drm_loader() {
if test "x$enable_gallium_loader" = xyes; then
- PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
- AC_MSG_ERROR([Gallium drm loader requires libudev]))
+ if test "x$have_libudev" != xyes; then
+ AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED])
+ fi
if test "x$have_libdrm" != xyes; then
AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
fi
@@ -1731,10 +1730,13 @@ gallium_require_drm_loader() {
}
radeon_llvm_check() {
+ if test "x$enable_gallium_llvm" != "xyes"; then
+ AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
+ fi
LLVM_REQUIRED_VERSION_MAJOR="3"
LLVM_REQUIRED_VERSION_MINOR="3"
if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
- AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for r600g and radeonsi.])
+ AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for $1])
fi
if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
@@ -1744,7 +1746,7 @@ radeon_llvm_check() {
LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
NEED_RADEON_LLVM=yes
AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf],
- [AC_MSG_ERROR([radeonsi and r600g require libelf when using LLVM])])
+ [AC_MSG_ERROR([$1 requires libelf when using LLVM])])
}
dnl Gallium drivers
@@ -1755,18 +1757,20 @@ fi
AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes)
dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
-if test "x$with_gallium_drivers" != x; then
+if test -n "$with_gallium_drivers"; then
gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
for driver in $gallium_drivers; do
case "x$driver" in
xsvga)
HAVE_GALLIUM_SVGA=yes
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
- gallium_check_st "svga/drm" "dri-vmwgfx" "xa-vmwgfx"
+ gallium_require_drm_loader
+ gallium_check_st "svga/drm" "dri-vmwgfx" ""
;;
xi915)
HAVE_GALLIUM_I915=yes
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
+ gallium_require_drm_loader
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
if test "x$MESA_LLVM" = x1; then
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
@@ -1786,6 +1790,7 @@ if test "x$with_gallium_drivers" != x; then
xr300)
HAVE_GALLIUM_R300=yes
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
+ gallium_require_drm_loader
gallium_require_llvm "Gallium R300"
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
gallium_check_st "radeon/drm" "r300/dri" "" "" ""
@@ -1797,7 +1802,7 @@ if test "x$with_gallium_drivers" != x; then
gallium_require_drm_loader
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
- radeon_llvm_check
+ radeon_llvm_check "r600g"
LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
fi
if test "x$enable_r600_llvm" = xyes; then
@@ -1814,7 +1819,7 @@ if test "x$with_gallium_drivers" != x; then
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
gallium_require_drm_loader
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
- radeon_llvm_check
+ radeon_llvm_check "radeonsi"
gallium_check_st "radeon/drm" "radeonsi/dri" "" "" "radeonsi/vdpau" "radeonsi/omx"
DRICOMMON_NEED_LIBDRM=yes
;;
@@ -1914,22 +1919,39 @@ AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -
"x$HAVE_GALLIUM_SOFTPIPE" = xyes \
&& test "x$MESA_LLVM" = x1)
+# NOTE: anything using xcb or other client side libs ends up in separate
+# _CLIENT variables. The pipe loader is built in two variants,
+# one that is standalone and does not link any x client libs (for
+# use by XA tracker in particular, but could be used in any case
+# where communication with xserver is not desired).
if test "x$enable_gallium_loader" = xyes; then
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
+ if test "x$enable_gallium_xlib_loader" = xyes; then
+ GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
+ NEED_WINSYS_XLIB="yes"
+ GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
+ fi
+
if test "x$enable_gallium_drm_loader" = xyes; then
GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
if test "x$pipe_loader_have_xcb" = xyes; then
- GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB"
- GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
+ GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
+ GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
fi
fi
+ GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
+ GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
+
AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
+ AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
+ AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
fi
+AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes)
AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
@@ -1971,7 +1993,7 @@ AC_SUBST([XVMC_MAJOR], 1)
AC_SUBST([XVMC_MINOR], 0)
AC_SUBST([XA_MAJOR], 2)
-AC_SUBST([XA_MINOR], 1)
+AC_SUBST([XA_MINOR], 2)
AC_SUBST([XA_TINY], 0)
AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
@@ -2028,8 +2050,8 @@ AC_CONFIG_FILES([Makefile
src/gallium/state_trackers/egl/Makefile
src/gallium/state_trackers/gbm/Makefile
src/gallium/state_trackers/glx/xlib/Makefile
- src/gallium/state_trackers/osmesa/Makefile
src/gallium/state_trackers/omx/Makefile
+ src/gallium/state_trackers/osmesa/Makefile
src/gallium/state_trackers/vdpau/Makefile
src/gallium/state_trackers/vega/Makefile
src/gallium/state_trackers/xa/Makefile
@@ -2044,6 +2066,8 @@ AC_CONFIG_FILES([Makefile
src/gallium/targets/egl-static/Makefile
src/gallium/targets/gbm/Makefile
src/gallium/targets/opencl/Makefile
+ src/gallium/targets/xa/Makefile
+ src/gallium/targets/xa/xatracker.pc
src/gallium/targets/osmesa/Makefile
src/gallium/targets/osmesa/osmesa.pc
src/gallium/targets/pipe-loader/Makefile
@@ -2057,8 +2081,6 @@ AC_CONFIG_FILES([Makefile
src/gallium/targets/r600/xvmc/Makefile
src/gallium/targets/libgl-xlib/Makefile
src/gallium/targets/vdpau-nouveau/Makefile
- src/gallium/targets/xa-vmwgfx/Makefile
- src/gallium/targets/xa-vmwgfx/xatracker.pc
src/gallium/targets/xvmc-nouveau/Makefile
src/gallium/tests/trivial/Makefile
src/gallium/tests/unit/Makefile
@@ -2150,12 +2172,10 @@ xnono)
esac
if test "x$enable_dri" != xno; then
- # cleanup the drivers var
- dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
- if test "x$DRI_DIRS" = x; then
+ if test -z "$DRI_DIRS"; then
echo " DRI drivers: no"
else
- echo " DRI drivers: $dri_dirs"
+ echo " DRI drivers: $DRI_DIRS"
fi
echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
fi
diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt
index 09c8caa28..755a89c0f 100644
--- a/mesalib/docs/GL3.txt
+++ b/mesalib/docs/GL3.txt
@@ -30,7 +30,7 @@ GL 3.0 --- all DONE: i965, nv50, nvc0, r600, radeonsi
GL_EXT_texture_shared_exponent DONE (swrast)
Float depth buffers (GL_ARB_depth_buffer_float) DONE ()
Framebuffer objects (GL_ARB_framebuffer_object) DONE (r300, swrast)
- GL_ARB_half_float_pixel DONE (r300, swrast)
+ GL_ARB_half_float_pixel DONE (all drivers)
GL_ARB_half_float_vertex DONE (r300, swrast)
GL_EXT_texture_integer DONE ()
GL_EXT_texture_array DONE ()
@@ -105,9 +105,9 @@ GL 4.0:
GL_ARB_sample_shading DONE (i965)
GL_ARB_shader_subroutine not started
GL_ARB_tessellation_shader not started
- GL_ARB_texture_buffer_object_rgb32 DONE (i965, r600, radeonsi, softpipe)
- GL_ARB_texture_cube_map_array DONE (i965, nvc0, r600, softpipe)
- GL_ARB_texture_gather DONE (i965)
+ GL_ARB_texture_buffer_object_rgb32 DONE (i965, nvc0, r600, radeonsi, softpipe)
+ GL_ARB_texture_cube_map_array DONE (i965, nv50, nvc0, r600, softpipe)
+ GL_ARB_texture_gather DONE (i965, nv50)
GL_ARB_transform_feedback2 DONE (i965, nv50, nvc0, r600, radeonsi)
GL_ARB_transform_feedback3 DONE (i965, nv50, nvc0, r600, radeonsi)
@@ -120,7 +120,7 @@ GL 4.1:
GL_ARB_separate_shader_objects started (Ian Romanick, Gregory Hainaut)
GL_ARB_shader_precision not started
GL_ARB_vertex_attrib_64bit not started
- GL_ARB_viewport_array DONE (i965)
+ GL_ARB_viewport_array DONE (i965, nv50, r600)
GL 4.2:
@@ -170,7 +170,7 @@ GL 4.4:
GLSL 4.4 not started
GL_MAX_VERTEX_ATTRIB_STRIDE not started
- GL_ARB_buffer_storage not started
+ GL_ARB_buffer_storage DONE (r300, r600, radeonsi)
GL_ARB_clear_texture not started
GL_ARB_enhanced_layouts not started
GL_ARB_multi_bind started (Fredrik Höglund)
diff --git a/mesalib/docs/README.VCE b/mesalib/docs/README.VCE
new file mode 100644
index 000000000..d4b4cc5a1
--- /dev/null
+++ b/mesalib/docs/README.VCE
@@ -0,0 +1,43 @@
+The software may implement third party technologies (e.g. third party
+libraries) that are not licensed to you by AMD and for which you may need
+to obtain licenses from other parties. Unless explicitly stated otherwise,
+these third party technologies are not licensed hereunder. Such third
+party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
+AVC, and VC-1.
+
+For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
+THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY
+PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT
+PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers
+Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A.
+
+WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
+BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
+UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
+COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
+ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied
+warranties, so the above exclusion may not apply to You.
+
+LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT,
+UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
+INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
+THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You
+for all damages, losses, and causes of action (whether in contract, tort
+(including negligence) or otherwise) exceed the amount of $100 USD. You agree
+to defend, indemnify and hold harmless AMD and its licensors, and any of their
+directors, officers, employees, affiliates or agents from and against any and
+all loss, damage, liability and other expenses (including reasonable
+attorneys' fees), resulting from Your use of the Software or violation of the
+terms and conditions of this Agreement.
+
+U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
+RIGHTS." Use, duplication, or disclosure by the Government is subject to the
+restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
+its successor. Use of the Software by the Government constitutes
+acknowledgement of AMD's proprietary rights in them.
+
+EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
+stated in the Software License Agreement.
diff --git a/mesalib/docs/relnotes/10.1.html b/mesalib/docs/relnotes/10.1.html
index c9566adfc..8626b65fd 100644
--- a/mesalib/docs/relnotes/10.1.html
+++ b/mesalib/docs/relnotes/10.1.html
@@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers.
</p>
<ul>
+<li>GL_ARB_buffer_storage on r300, r600, and radeonsi</li>
<li>GL_ARB_draw_indirect on i965.</li>
<li>GL_ARB_clear_buffer_object</li>
<li>GL_ARB_viewport_array on i965.</li>
diff --git a/mesalib/docs/specs/MESA_query_renderer.spec b/mesalib/docs/specs/MESA_query_renderer.spec
index bf0975669..dd45e02ba 100644
--- a/mesalib/docs/specs/MESA_query_renderer.spec
+++ b/mesalib/docs/specs/MESA_query_renderer.spec
@@ -16,11 +16,11 @@ IP Status
Status
- Incomplete. DO NOT SHIP.
+ Shipping as of Mesa 10.0
Version
- Version 6, 7-November-2013
+ Version 8, 14-February-2014
Number
@@ -211,7 +211,7 @@ Additions to the GLX 1.4 Specification
The attribute name GLX_RENDERER_ID_MESA specified the index of the render
against which the context should be created. The default value of
- GLX_RENDER_ID_MESA is 0.
+ GLX_RENDERER_ID_MESA is 0.
[Add to list of errors for glXCreateContextAttribsARB in section section
@@ -373,7 +373,7 @@ Issues
should make every attempt to return as much information as is
possible. For example, if the implementation is running on a non-PCI
SoC with a Qualcomm GPU, GLX_RENDERER_VENDOR_ID_MESA should return
- 0x168C, but GLX_RENDERER_DEVICE_ID_MESA will return 0x0000.
+ 0x5143, but GLX_RENDERER_DEVICE_ID_MESA will return 0xFFFFFFFF.
Revision History
@@ -403,3 +403,8 @@ Revision History
Version 7, 2013/11/07 - Fix a couple more typos. Add issue #17 regarding
the PCI queries on systems that don't have PCI.
+
+ Version 8, 2014/02/14 - Fix a couple typos. GLX_RENDER_ID_MESA should
+ read GLX_RENDERER_ID_MESA. The VENDOR/DEVICE_ID
+ example given in issue #17 should be 0x5143 and
+ 0xFFFFFFFF respectively.
diff --git a/mesalib/include/GL/glext.h b/mesalib/include/GL/glext.h
index 7d6033e10..7ea5a0d4d 100644
--- a/mesalib/include/GL/glext.h
+++ b/mesalib/include/GL/glext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 24502 $ on $Date: 2013-12-12 13:14:39 -0800 (Thu, 12 Dec 2013) $
+** Khronos $Revision: 25406 $ on $Date: 2014-02-18 16:34:26 -0800 (Tue, 18 Feb 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -53,7 +53,7 @@ extern "C" {
#define GLAPI extern
#endif
-#define GL_GLEXT_VERSION 20131212
+#define GL_GLEXT_VERSION 20140218
/* Generated C header for:
* API: gl
@@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
-typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
+typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
@@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui
GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
-GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
+GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);
#endif
#endif /* GL_VERSION_3_2 */
@@ -8126,6 +8126,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void
#endif
#endif /* GL_INTEL_parallel_arrays */
+#ifndef GL_INTEL_performance_query
+#define GL_INTEL_performance_query 1
+#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
+#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
+#define GL_PERFQUERY_WAIT_INTEL 0x83FB
+#define GL_PERFQUERY_FLUSH_INTEL 0x83FA
+#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9
+#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0
+#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
+#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
+#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
+#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4
+#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
+#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
+#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
+#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
+#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
+#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
+#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
+#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
+#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
+#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
+typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);
+typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);
+typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);
+typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
+typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);
+typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);
+GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);
+GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);
+GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);
+GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);
+GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten);
+GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);
+GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);
+#endif
+#endif /* GL_INTEL_performance_query */
+
#ifndef GL_MESAX_texture_stack
#define GL_MESAX_texture_stack 1
#define GL_TEXTURE_1D_STACK_MESAX 0x8759
@@ -8220,6 +8266,15 @@ GLAPI void APIENTRY glEndConditionalRenderNVX (void);
#endif
#endif /* GL_NVX_conditional_render */
+#ifndef GL_NVX_gpu_memory_info
+#define GL_NVX_gpu_memory_info 1
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B
+#endif /* GL_NVX_gpu_memory_info */
+
#ifndef GL_NV_bindless_multi_draw_indirect
#define GL_NV_bindless_multi_draw_indirect 1
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);
@@ -9647,7 +9702,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void
typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
+typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);
typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);
@@ -9658,7 +9713,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd
GLAPI void APIENTRY glVDPAUFiniNV (void);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);
-GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
+GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);
GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);
diff --git a/mesalib/include/GL/glxext.h b/mesalib/include/GL/glxext.h
index 8c642f354..826fda5b5 100644
--- a/mesalib/include/GL/glxext.h
+++ b/mesalib/include/GL/glxext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,10 +33,10 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 24777 $ on $Date: 2014-01-14 14:02:32 -0800 (Tue, 14 Jan 2014) $
+** Khronos $Revision: 25407 $ on $Date: 2014-02-18 16:51:56 -0800 (Tue, 18 Feb 2014) $
*/
-#define GLX_GLXEXT_VERSION 20140114
+#define GLX_GLXEXT_VERSION 20140218
/* Generated C header for:
* API: glx
@@ -407,6 +407,32 @@ GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixm
#endif
#endif /* GLX_MESA_pixmap_colormap */
+#ifndef GLX_MESA_query_renderer
+#define GLX_MESA_query_renderer 1
+#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
+#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
+#define GLX_RENDERER_VERSION_MESA 0x8185
+#define GLX_RENDERER_ACCELERATED_MESA 0x8186
+#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
+#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
+#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
+#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
+#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
+#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
+#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
+#define GLX_RENDERER_ID_MESA 0x818E
+typedef Bool ( *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value);
+typedef const char *( *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute);
+typedef Bool ( *PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
+typedef const char *( *PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute);
+#ifdef GLX_GLXEXT_PROTOTYPES
+Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int *value);
+const char *glXQueryCurrentRendererStringMESA (int attribute);
+Bool glXQueryRendererIntegerMESA (Display *dpy, int screen, int renderer, int attribute, unsigned int *value);
+const char *glXQueryRendererStringMESA (Display *dpy, int screen, int renderer, int attribute);
+#endif
+#endif /* GLX_MESA_query_renderer */
+
#ifndef GLX_MESA_release_buffers
#define GLX_MESA_release_buffers 1
typedef Bool ( *PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable);
diff --git a/mesalib/include/GL/internal/dri_interface.h b/mesalib/include/GL/internal/dri_interface.h
index 6b9e5ecbc..0fb645dd5 100644
--- a/mesalib/include/GL/internal/dri_interface.h
+++ b/mesalib/include/GL/internal/dri_interface.h
@@ -253,6 +253,8 @@ struct __DRItexBufferExtensionRec {
* __DRIdrawable, including the required texture format attribute.
*
* For GLX_EXT_texture_from_pixmap with AIGLX.
+ *
+ * \since 2
*/
void (*setTexBuffer2)(__DRIcontext *pDRICtx,
GLint target,
@@ -263,6 +265,8 @@ struct __DRItexBufferExtensionRec {
* need this.
*
* For GLX_EXT_texture_from_pixmap with AIGLX.
+ *
+ * \since 3
*/
void (*releaseTexBuffer)(__DRIcontext *pDRICtx,
GLint target,
@@ -468,6 +472,8 @@ struct __DRIswrastLoaderExtensionRec {
/**
* Put image to drawable
+ *
+ * \since 2
*/
void (*putImage2)(__DRIdrawable *drawable, int op,
int x, int y, int width, int height, int stride,
@@ -852,6 +858,8 @@ struct __DRIdri2LoaderExtensionRec {
* \param driDrawable Drawable whose front-buffer is to be flushed
* \param loaderPrivate Loader's private data that was previously passed
* into __DRIdri2ExtensionRec::createNewDrawable
+ *
+ * \since 2
*/
void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate);
@@ -874,6 +882,8 @@ struct __DRIdri2LoaderExtensionRec {
* \c attachments.
* \param loaderPrivate Loader's private data that was previously passed
* into __DRIdri2ExtensionRec::createNewDrawable.
+ *
+ * \since 3
*/
__DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable,
int *width, int *height,
diff --git a/mesalib/include/GL/wglext.h b/mesalib/include/GL/wglext.h
index dc73a01aa..cf9781ddd 100644
--- a/mesalib/include/GL/wglext.h
+++ b/mesalib/include/GL/wglext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 23649 $ on $Date: 2013-10-23 00:21:49 -0700 (Wed, 23 Oct 2013) $
+** Khronos $Revision: 25401 $ on $Date: 2014-02-18 15:43:24 -0800 (Tue, 18 Feb 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -41,7 +41,7 @@ extern "C" {
#include <windows.h>
#endif
-#define WGL_WGLEXT_VERSION 20130916
+#define WGL_WGLEXT_VERSION 20140203
/* Generated C header for:
* API: wgl
diff --git a/mesalib/m4/ax_gcc_builtin.m4 b/mesalib/m4/ax_gcc_builtin.m4
new file mode 100644
index 000000000..b28a91b14
--- /dev/null
+++ b/mesalib/m4/ax_gcc_builtin.m4
@@ -0,0 +1,168 @@
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_gcc_builtin.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_GCC_BUILTIN(BUILTIN)
+#
+# DESCRIPTION
+#
+# This macro checks if the compiler supports one of GCC's built-in
+# functions; many other compilers also provide those same built-ins.
+#
+# The BUILTIN parameter is the name of the built-in function.
+#
+# If BUILTIN is supported define HAVE_<BUILTIN>. Keep in mind that since
+# builtins usually start with two underscores they will be copied over
+# into the HAVE_<BUILTIN> definition (e.g. HAVE___BUILTIN_EXPECT for
+# __builtin_expect()).
+#
+# The macro caches its result in the ax_cv_have_<BUILTIN> variable (e.g.
+# ax_cv_have___builtin_expect).
+#
+# The macro currently supports the following built-in functions:
+#
+# __builtin_assume_aligned
+# __builtin_bswap32
+# __builtin_bswap64
+# __builtin_choose_expr
+# __builtin___clear_cache
+# __builtin_clrsb
+# __builtin_clrsbl
+# __builtin_clrsbll
+# __builtin_clz
+# __builtin_clzl
+# __builtin_clzll
+# __builtin_complex
+# __builtin_constant_p
+# __builtin_ctz
+# __builtin_ctzl
+# __builtin_ctzll
+# __builtin_expect
+# __builtin_ffs
+# __builtin_ffsl
+# __builtin_ffsll
+# __builtin_fpclassify
+# __builtin_huge_val
+# __builtin_huge_valf
+# __builtin_huge_vall
+# __builtin_inf
+# __builtin_infd128
+# __builtin_infd32
+# __builtin_infd64
+# __builtin_inff
+# __builtin_infl
+# __builtin_isinf_sign
+# __builtin_nan
+# __builtin_nand128
+# __builtin_nand32
+# __builtin_nand64
+# __builtin_nanf
+# __builtin_nanl
+# __builtin_nans
+# __builtin_nansf
+# __builtin_nansl
+# __builtin_object_size
+# __builtin_parity
+# __builtin_parityl
+# __builtin_parityll
+# __builtin_popcount
+# __builtin_popcountl
+# __builtin_popcountll
+# __builtin_powi
+# __builtin_powif
+# __builtin_powil
+# __builtin_prefetch
+# __builtin_trap
+# __builtin_types_compatible_p
+# __builtin_unreachable
+#
+# Unsuppored built-ins will be tested with an empty parameter set and the
+# result of the check might be wrong or meaningless so use with care.
+#
+# LICENSE
+#
+# Copyright (c) 2013 Gabriele Svelto <gabriele.svelto@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 2
+
+AC_DEFUN([AX_GCC_BUILTIN], [
+ AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1])
+
+ AC_CACHE_CHECK([for $1], [ac_var], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [
+ m4_case([$1],
+ [__builtin_assume_aligned], [$1("", 0)],
+ [__builtin_bswap32], [$1(0)],
+ [__builtin_bswap64], [$1(0)],
+ [__builtin_choose_expr], [$1(0, 0, 0)],
+ [__builtin___clear_cache], [$1("", "")],
+ [__builtin_clrsb], [$1(0)],
+ [__builtin_clrsbl], [$1(0)],
+ [__builtin_clrsbll], [$1(0)],
+ [__builtin_clz], [$1(0)],
+ [__builtin_clzl], [$1(0)],
+ [__builtin_clzll], [$1(0)],
+ [__builtin_complex], [$1(0.0, 0.0)],
+ [__builtin_constant_p], [$1(0)],
+ [__builtin_ctz], [$1(0)],
+ [__builtin_ctzl], [$1(0)],
+ [__builtin_ctzll], [$1(0)],
+ [__builtin_expect], [$1(0, 0)],
+ [__builtin_ffs], [$1(0)],
+ [__builtin_ffsl], [$1(0)],
+ [__builtin_ffsll], [$1(0)],
+ [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)],
+ [__builtin_huge_val], [$1()],
+ [__builtin_huge_valf], [$1()],
+ [__builtin_huge_vall], [$1()],
+ [__builtin_inf], [$1()],
+ [__builtin_infd128], [$1()],
+ [__builtin_infd32], [$1()],
+ [__builtin_infd64], [$1()],
+ [__builtin_inff], [$1()],
+ [__builtin_infl], [$1()],
+ [__builtin_isinf_sign], [$1(0.0)],
+ [__builtin_nan], [$1("")],
+ [__builtin_nand128], [$1("")],
+ [__builtin_nand32], [$1("")],
+ [__builtin_nand64], [$1("")],
+ [__builtin_nanf], [$1("")],
+ [__builtin_nanl], [$1("")],
+ [__builtin_nans], [$1("")],
+ [__builtin_nansf], [$1("")],
+ [__builtin_nansl], [$1("")],
+ [__builtin_object_size], [$1("", 0)],
+ [__builtin_parity], [$1(0)],
+ [__builtin_parityl], [$1(0)],
+ [__builtin_parityll], [$1(0)],
+ [__builtin_popcount], [$1(0)],
+ [__builtin_popcountl], [$1(0)],
+ [__builtin_popcountll], [$1(0)],
+ [__builtin_powi], [$1(0, 0)],
+ [__builtin_powif], [$1(0, 0)],
+ [__builtin_powil], [$1(0, 0)],
+ [__builtin_prefetch], [$1("")],
+ [__builtin_trap], [$1()],
+ [__builtin_types_compatible_p], [$1(int, int)],
+ [__builtin_unreachable], [$1()],
+ [m4_warn([syntax], [Unsupported built-in $1, the test may fail])
+ $1()]
+ )
+ ])],
+ [AS_VAR_SET([ac_var], [yes])],
+ [AS_VAR_SET([ac_var], [no])])
+ ])
+
+ AS_IF([test yes = AS_VAR_GET([ac_var])],
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1,
+ [Define to 1 if the system has the `$1' built-in function])], [])
+
+ AS_VAR_POPDEF([ac_var])
+])
diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py
index 70ee89b0d..f505a62be 100644
--- a/mesalib/scons/gallium.py
+++ b/mesalib/scons/gallium.py
@@ -533,11 +533,9 @@ def generate(env):
env.PkgCheckModules('X11', ['x11', 'xext', 'xdamage', 'xfixes'])
env.PkgCheckModules('XCB', ['x11-xcb', 'xcb-glx >= 1.8.1'])
env.PkgCheckModules('XF86VIDMODE', ['xxf86vm'])
- env.PkgCheckModules('DRM', ['libdrm >= 2.4.24'])
- env.PkgCheckModules('DRM_INTEL', ['libdrm_intel >= 2.4.30'])
- env.PkgCheckModules('XORG', ['xorg-server >= 1.6.0'])
- env.PkgCheckModules('KMS', ['libkms >= 2.4.24'])
- env.PkgCheckModules('UDEV', ['libudev > 150'])
+ env.PkgCheckModules('DRM', ['libdrm >= 2.4.38'])
+ env.PkgCheckModules('DRM_INTEL', ['libdrm_intel >= 2.4.52'])
+ env.PkgCheckModules('UDEV', ['libudev >= 151'])
env['dri'] = env['x11'] and env['drm']
diff --git a/mesalib/src/gallium/Automake.inc b/mesalib/src/gallium/Automake.inc
index 1e4a34f5d..1acc99ef5 100644
--- a/mesalib/src/gallium/Automake.inc
+++ b/mesalib/src/gallium/Automake.inc
@@ -51,12 +51,14 @@ GALLIUM_VIDEO_CFLAGS = \
$(VISIBILITY_CFLAGS)
-# TODO: add -export-symbols-regex
+DRI_VERSION_SCRIPT ?= $(top_srcdir)/src/gallium/state_trackers/dri/dri.link
+
GALLIUM_DRI_LINKER_FLAGS = \
-module \
-avoid-version \
+ -Wl,--version-script=$(DRI_VERSION_SCRIPT) \
-shared \
- -Wl,-Bsymbolic
+ -no-undefined
GALLIUM_VDPAU_LINKER_FLAGS = \
-module \
@@ -76,7 +78,11 @@ GALLIUM_VDPAU_LIB_DEPS = \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
$(top_builddir)/src/gallium/state_trackers/vdpau/libvdpautracker.la \
$(VDPAU_LIBS) \
- $(LIBDRM_LIBS)
+ $(LIBDRM_LIBS) \
+ -lm \
+ $(CLOCK_LIB) \
+ $(PTHREAD_LIBS) \
+ $(DLOPEN_LIBS)
GALLIUM_XVMC_LIB_DEPS = \
$(top_builddir)/src/gallium/auxiliary/libgallium.la \
diff --git a/mesalib/src/gallium/auxiliary/Makefile.sources b/mesalib/src/gallium/auxiliary/Makefile.sources
index c89cbddd0..8919783c2 100644
--- a/mesalib/src/gallium/auxiliary/Makefile.sources
+++ b/mesalib/src/gallium/auxiliary/Makefile.sources
@@ -91,6 +91,7 @@ C_SOURCES := \
translate/translate_sse.c \
util/u_debug.c \
util/u_debug_describe.c \
+ util/u_debug_flush.c \
util/u_debug_memory.c \
util/u_debug_refcnt.c \
util/u_debug_stack.c \
@@ -155,7 +156,8 @@ C_SOURCES := \
vl/vl_idct.c \
vl/vl_mc.c \
vl/vl_vertex_buffers.c \
- vl/vl_video_buffer.c
+ vl/vl_video_buffer.c \
+ vl/vl_deint_filter.c
GENERATED_SOURCES := \
indices/u_indices_gen.c \
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_flush.c b/mesalib/src/gallium/auxiliary/util/u_debug_flush.c
new file mode 100644
index 000000000..9cf70db58
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_flush.c
@@ -0,0 +1,391 @@
+/**************************************************************************
+ *
+ * Copyright 2012 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * u_debug_flush.c Debug flush and map-related issues:
+ * - Flush while synchronously mapped.
+ * - Command stream reference while synchronously mapped.
+ * - Synchronous map while referenced on command stream.
+ * - Recursive maps.
+ * - Unmap while not mapped.
+ *
+ * @author Thomas Hellstrom <thellstrom@vmware.com>
+ */
+
+#ifdef DEBUG
+#include "pipe/p_compiler.h"
+#include "util/u_debug_stack.h"
+#include "util/u_debug.h"
+#include "util/u_memory.h"
+#include "util/u_debug_flush.h"
+#include "util/u_hash_table.h"
+#include "util/u_double_list.h"
+#include "util/u_inlines.h"
+#include "os/os_thread.h"
+#include <stdio.h>
+
+struct debug_flush_buf {
+ /* Atomic */
+ struct pipe_reference reference; /* Must be the first member. */
+ pipe_mutex mutex;
+ /* Immutable */
+ boolean supports_unsync;
+ unsigned bt_depth;
+ /* Protected by mutex */
+ boolean mapped;
+ boolean mapped_sync;
+ struct debug_stack_frame *map_frame;
+};
+
+struct debug_flush_item {
+ struct debug_flush_buf *fbuf;
+ unsigned bt_depth;
+ struct debug_stack_frame *ref_frame;
+};
+
+struct debug_flush_ctx {
+ /* Contexts are used by a single thread at a time */
+ unsigned bt_depth;
+ boolean catch_map_of_referenced;
+ struct util_hash_table *ref_hash;
+ struct list_head head;
+};
+
+pipe_static_mutex(list_mutex);
+static struct list_head ctx_list = {&ctx_list, &ctx_list};
+
+static struct debug_stack_frame *
+debug_flush_capture_frame(int start, int depth)
+{
+ struct debug_stack_frame *frames;
+
+ frames = CALLOC(depth, sizeof(*frames));
+ if (!frames)
+ return NULL;
+
+ debug_backtrace_capture(frames, start, depth);
+ return frames;
+}
+
+static int
+debug_flush_pointer_compare(void *key1, void *key2)
+{
+ return (key1 == key2) ? 0 : 1;
+}
+
+static unsigned
+debug_flush_pointer_hash(void *key)
+{
+ return (unsigned) (unsigned long) key;
+}
+
+struct debug_flush_buf *
+debug_flush_buf_create(boolean supports_unsync, unsigned bt_depth)
+{
+ struct debug_flush_buf *fbuf = CALLOC_STRUCT(debug_flush_buf);
+
+ if (!fbuf)
+ goto out_no_buf;
+
+ fbuf->supports_unsync = supports_unsync;
+ fbuf->bt_depth = bt_depth;
+ pipe_reference_init(&fbuf->reference, 1);
+ pipe_mutex_init(fbuf->mutex);
+
+ return fbuf;
+out_no_buf:
+ debug_printf("Debug flush buffer creation failed.\n");
+ debug_printf("Debug flush checking for this buffer will be incomplete.\n");
+ return NULL;
+}
+
+void
+debug_flush_buf_reference(struct debug_flush_buf **dst,
+ struct debug_flush_buf *src)
+{
+ struct debug_flush_buf *fbuf = *dst;
+
+ if (pipe_reference(&(*dst)->reference, &src->reference)) {
+ if (fbuf->map_frame)
+ FREE(fbuf->map_frame);
+
+ FREE(fbuf);
+ }
+
+ *dst = src;
+}
+
+static void
+debug_flush_item_destroy(struct debug_flush_item *item)
+{
+ debug_flush_buf_reference(&item->fbuf, NULL);
+
+ if (item->ref_frame)
+ FREE(item->ref_frame);
+
+ FREE(item);
+}
+
+struct debug_flush_ctx *
+debug_flush_ctx_create(boolean catch_reference_of_mapped, unsigned bt_depth)
+{
+ struct debug_flush_ctx *fctx = CALLOC_STRUCT(debug_flush_ctx);
+
+ if (!fctx)
+ goto out_no_ctx;
+
+ fctx->ref_hash = util_hash_table_create(debug_flush_pointer_hash,
+ debug_flush_pointer_compare);
+
+ if (!fctx->ref_hash)
+ goto out_no_ref_hash;
+
+ fctx->bt_depth = bt_depth;
+ pipe_mutex_lock(list_mutex);
+ list_addtail(&fctx->head, &ctx_list);
+ pipe_mutex_unlock(list_mutex);
+
+ return fctx;
+
+ out_no_ref_hash:
+ FREE(fctx);
+out_no_ctx:
+ debug_printf("Debug flush context creation failed.\n");
+ debug_printf("Debug flush checking for this context will be incomplete.\n");
+ return NULL;
+}
+
+static void
+debug_flush_alert(const char *s, const char *op,
+ unsigned start, unsigned depth,
+ boolean continued,
+ boolean capture,
+ const struct debug_stack_frame *frame)
+{
+ if (capture)
+ frame = debug_flush_capture_frame(start, depth);
+
+ if (s)
+ debug_printf("%s ", s);
+ if (frame) {
+ debug_printf("%s backtrace follows:\n", op);
+ debug_backtrace_dump(frame, depth);
+ } else
+ debug_printf("No %s backtrace was captured.\n", op);
+
+ if (continued)
+ debug_printf("**********************************\n");
+ else
+ debug_printf("*********END OF MESSAGE***********\n\n\n");
+
+ if (capture)
+ FREE((void *)frame);
+}
+
+
+void
+debug_flush_map(struct debug_flush_buf *fbuf, unsigned flags)
+{
+ boolean mapped_sync = FALSE;
+
+ if (!fbuf)
+ return;
+
+ pipe_mutex_lock(fbuf->mutex);
+ if (fbuf->mapped) {
+ debug_flush_alert("Recursive map detected.", "Map",
+ 2, fbuf->bt_depth, TRUE, TRUE, NULL);
+ debug_flush_alert(NULL, "Previous map", 0, fbuf->bt_depth, FALSE,
+ FALSE, fbuf->map_frame);
+ } else if (!(flags & PIPE_TRANSFER_UNSYNCHRONIZED) ||
+ !fbuf->supports_unsync) {
+ fbuf->mapped_sync = mapped_sync = TRUE;
+ }
+ fbuf->map_frame = debug_flush_capture_frame(1, fbuf->bt_depth);
+ fbuf->mapped = TRUE;
+ pipe_mutex_unlock(fbuf->mutex);
+
+ if (mapped_sync) {
+ struct debug_flush_ctx *fctx;
+
+ pipe_mutex_lock(list_mutex);
+ LIST_FOR_EACH_ENTRY(fctx, &ctx_list, head) {
+ struct debug_flush_item *item =
+ util_hash_table_get(fctx->ref_hash, fbuf);
+
+ if (item && fctx->catch_map_of_referenced) {
+ debug_flush_alert("Already referenced map detected.",
+ "Map", 2, fbuf->bt_depth, TRUE, TRUE, NULL);
+ debug_flush_alert(NULL, "Reference", 0, item->bt_depth,
+ FALSE, FALSE, item->ref_frame);
+ }
+ }
+ pipe_mutex_unlock(list_mutex);
+ }
+}
+
+void
+debug_flush_unmap(struct debug_flush_buf *fbuf)
+{
+ if (!fbuf)
+ return;
+
+ pipe_mutex_lock(fbuf->mutex);
+ if (!fbuf->mapped)
+ debug_flush_alert("Unmap not previously mapped detected.", "Map",
+ 2, fbuf->bt_depth, FALSE, TRUE, NULL);
+
+ fbuf->mapped_sync = FALSE;
+ fbuf->mapped = FALSE;
+ if (fbuf->map_frame) {
+ FREE(fbuf->map_frame);
+ fbuf->map_frame = NULL;
+ }
+ pipe_mutex_unlock(fbuf->mutex);
+}
+
+void
+debug_flush_cb_reference(struct debug_flush_ctx *fctx,
+ struct debug_flush_buf *fbuf)
+{
+ struct debug_flush_item *item;
+
+ if (!fctx || !fbuf)
+ return;
+
+ item = util_hash_table_get(fctx->ref_hash, fbuf);
+
+ pipe_mutex_lock(fbuf->mutex);
+ if (fbuf->mapped_sync) {
+ debug_flush_alert("Reference of mapped buffer detected.", "Reference",
+ 2, fctx->bt_depth, TRUE, TRUE, NULL);
+ debug_flush_alert(NULL, "Map", 0, fbuf->bt_depth, FALSE,
+ FALSE, fbuf->map_frame);
+ }
+ pipe_mutex_unlock(fbuf->mutex);
+
+ if (!item) {
+ item = CALLOC_STRUCT(debug_flush_item);
+ if (item) {
+ debug_flush_buf_reference(&item->fbuf, fbuf);
+ item->bt_depth = fctx->bt_depth;
+ item->ref_frame = debug_flush_capture_frame(2, item->bt_depth);
+ if (util_hash_table_set(fctx->ref_hash, fbuf, item) != PIPE_OK) {
+ debug_flush_item_destroy(item);
+ goto out_no_item;
+ }
+ return;
+ }
+ goto out_no_item;
+ }
+ return;
+
+out_no_item:
+ debug_printf("Debug flush command buffer reference creation failed.\n");
+ debug_printf("Debug flush checking will be incomplete "
+ "for this command batch.\n");
+}
+
+static enum pipe_error
+debug_flush_might_flush_cb(void *key, void *value, void *data)
+{
+ struct debug_flush_item *item =
+ (struct debug_flush_item *) value;
+ struct debug_flush_buf *fbuf = item->fbuf;
+ const char *reason = (const char *) data;
+ char message[80];
+
+ snprintf(message, sizeof(message),
+ "%s referenced mapped buffer detected.", reason);
+
+ pipe_mutex_lock(fbuf->mutex);
+ if (fbuf->mapped_sync) {
+ debug_flush_alert(message, reason, 3, item->bt_depth, TRUE, TRUE, NULL);
+ debug_flush_alert(NULL, "Map", 0, fbuf->bt_depth, TRUE, FALSE,
+ fbuf->map_frame);
+ debug_flush_alert(NULL, "First reference", 0, item->bt_depth, FALSE,
+ FALSE, item->ref_frame);
+ }
+ pipe_mutex_unlock(fbuf->mutex);
+
+ return PIPE_OK;
+}
+
+void
+debug_flush_might_flush(struct debug_flush_ctx *fctx)
+{
+ if (!fctx)
+ return;
+
+ util_hash_table_foreach(fctx->ref_hash,
+ debug_flush_might_flush_cb,
+ "Might flush");
+}
+
+static enum pipe_error
+debug_flush_flush_cb(void *key, void *value, void *data)
+{
+ struct debug_flush_item *item =
+ (struct debug_flush_item *) value;
+
+ debug_flush_item_destroy(item);
+
+ return PIPE_OK;
+}
+
+
+void
+debug_flush_flush(struct debug_flush_ctx *fctx)
+{
+ if (!fctx)
+ return;
+
+ util_hash_table_foreach(fctx->ref_hash,
+ debug_flush_might_flush_cb,
+ "Flush");
+ util_hash_table_foreach(fctx->ref_hash,
+ debug_flush_flush_cb,
+ NULL);
+ util_hash_table_clear(fctx->ref_hash);
+}
+
+void
+debug_flush_ctx_destroy(struct debug_flush_ctx *fctx)
+{
+ if (!fctx)
+ return;
+
+ list_del(&fctx->head);
+ util_hash_table_foreach(fctx->ref_hash,
+ debug_flush_flush_cb,
+ NULL);
+ util_hash_table_clear(fctx->ref_hash);
+ util_hash_table_destroy(fctx->ref_hash);
+ FREE(fctx);
+}
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_flush.h b/mesalib/src/gallium/auxiliary/util/u_debug_flush.h
new file mode 100644
index 000000000..a604167f0
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_flush.h
@@ -0,0 +1,138 @@
+/**************************************************************************
+ *
+ * Copyright 2012 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * u_debug_flush.h - Header for debugging flush- and map- related issues.
+ * - Flush while synchronously mapped.
+ * - Command stream reference while synchronously mapped.
+ * - Synchronous map while referenced on command stream.
+ * - Recursive maps.
+ * - Unmap while not mapped.
+ *
+ * @author Thomas Hellstrom <thellstrom@vmware.com>
+ */
+#ifdef DEBUG
+
+#ifndef U_DEBUG_FLUSH_H_
+#define U_DEBUG_FLUSH_H_
+
+struct debug_flush_buf;
+struct debug_flush_ctx;
+
+/**
+ * Create a buffer (AKA allocation) representation.
+ *
+ * @param support_unsync Whether unsynchronous maps are truly supported.
+ * @param bt_depth Depth of backtrace to be captured for this buffer
+ * representation.
+ */
+struct debug_flush_buf *
+debug_flush_buf_create(boolean supports_unsync, unsigned bt_depth);
+
+/**
+ * Reference a buffer representation.
+ *
+ * @param dst Pointer copy destination
+ * @param src Pointer copy source (may be NULL).
+ *
+ * Replace a pointer to a buffer representation with proper refcounting.
+ */
+void
+debug_flush_buf_reference(struct debug_flush_buf **dst,
+ struct debug_flush_buf *src);
+
+/**
+ * Create a context representation.
+ *
+ * @param catch_map_of_referenced Whether to catch synchronous maps of buffers
+ * already present on the command stream.
+ * @param bt_depth Depth of backtrace to be captured for this context
+ * representation.
+ */
+struct debug_flush_ctx *
+debug_flush_ctx_create(boolean catch_map_of_referenced, unsigned bt_depth);
+
+/**
+ * Destroy a context representation.
+ *
+ * @param fctx The context representation to destroy.
+ */
+void
+debug_flush_ctx_destroy(struct debug_flush_ctx *fctx);
+
+/**
+ * Map annotation
+ *
+ * @param fbuf The buffer representation to map.
+ * @param flags Pipebuffer flags for the map.
+ *
+ * Used to annotate a map of the buffer described by the buffer representation.
+ */
+void debug_flush_map(struct debug_flush_buf *fbuf, unsigned flags);
+
+/**
+ * Unmap annotation
+ *
+ * @param fbuf The buffer representation to map.
+ *
+ * Used to annotate an unmap of the buffer described by the
+ * buffer representation.
+ */
+void debug_flush_unmap(struct debug_flush_buf *fbuf);
+
+/**
+ * Might flush annotation
+ *
+ * @param fctx The context representation that might be flushed.
+ *
+ * Used to annotate a conditional (possible) flush of the given context.
+ */
+void debug_flush_might_flush(struct debug_flush_ctx *fctx);
+
+/**
+ * Flush annotation
+ *
+ * @param fctx The context representation that is flushed.
+ *
+ * Used to annotate a real flush of the given context.
+ */
+void debug_flush_flush(struct debug_flush_ctx *fctx);
+
+
+/**
+ * Flush annotation
+ *
+ * @param fctx The context representation that is flushed.
+ *
+ * Used to annotate a real flush of the given context.
+ */
+void debug_flush_cb_reference(struct debug_flush_ctx *fctx,
+ struct debug_flush_buf *fbuf);
+
+#endif
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_format.c b/mesalib/src/gallium/auxiliary/util/u_format.c
index 6b602bf32..056f82f72 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format.c
+++ b/mesalib/src/gallium/auxiliary/util/u_format.c
@@ -527,7 +527,7 @@ util_format_fits_8unorm(const struct util_format_description *format_desc)
}
-void
+boolean
util_format_translate(enum pipe_format dst_format,
void *dst, unsigned dst_stride,
unsigned dst_x, unsigned dst_y,
@@ -555,7 +555,7 @@ util_format_translate(enum pipe_format dst_format,
util_copy_rect(dst, dst_format, dst_stride, dst_x, dst_y,
width, height, src, (int)src_stride,
src_x, src_y);
- return;
+ return TRUE;
}
assert(dst_x % dst_format_desc->block.width == 0);
@@ -621,7 +621,7 @@ util_format_translate(enum pipe_format dst_format,
FREE(tmp_z);
- return;
+ return TRUE;
}
if (util_format_fits_8unorm(src_format_desc) ||
@@ -629,10 +629,15 @@ util_format_translate(enum pipe_format dst_format,
unsigned tmp_stride;
uint8_t *tmp_row;
+ if (!src_format_desc->unpack_rgba_8unorm ||
+ !dst_format_desc->pack_rgba_8unorm) {
+ return FALSE;
+ }
+
tmp_stride = MAX2(width, x_step) * 4 * sizeof *tmp_row;
tmp_row = MALLOC(y_step * tmp_stride);
if (!tmp_row)
- return;
+ return FALSE;
while (height >= y_step) {
src_format_desc->unpack_rgba_8unorm(tmp_row, tmp_stride, src_row, src_stride, width, y_step);
@@ -654,10 +659,15 @@ util_format_translate(enum pipe_format dst_format,
unsigned tmp_stride;
float *tmp_row;
+ if (!src_format_desc->unpack_rgba_float ||
+ !dst_format_desc->pack_rgba_float) {
+ return FALSE;
+ }
+
tmp_stride = MAX2(width, x_step) * 4 * sizeof *tmp_row;
tmp_row = MALLOC(y_step * tmp_stride);
if (!tmp_row)
- return;
+ return FALSE;
while (height >= y_step) {
src_format_desc->unpack_rgba_float(tmp_row, tmp_stride, src_row, src_stride, width, y_step);
@@ -675,6 +685,7 @@ util_format_translate(enum pipe_format dst_format,
FREE(tmp_row);
}
+ return TRUE;
}
void util_format_compose_swizzles(const unsigned char swz1[4],
diff --git a/mesalib/src/gallium/auxiliary/util/u_format.h b/mesalib/src/gallium/auxiliary/util/u_format.h
index 5f86e2d2c..e36a9e237 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format.h
@@ -1190,7 +1190,7 @@ util_format_write_4i(enum pipe_format format,
boolean
util_format_fits_8unorm(const struct util_format_description *format_desc);
-void
+boolean
util_format_translate(enum pipe_format dst_format,
void *dst, unsigned dst_stride,
unsigned dst_x, unsigned dst_y,
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h
index b5e06630a..ec03e4e58 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.h
+++ b/mesalib/src/gallium/auxiliary/util/u_math.h
@@ -112,10 +112,13 @@ static INLINE float logf( float f )
#define logf(x) ((float)log((double)(x)))
#endif /* logf */
+#if _MSC_VER < 1800
#define isfinite(x) _finite((double)(x))
#define isnan(x) _isnan((double)(x))
+#endif /* _MSC_VER < 1800 */
#endif /* _MSC_VER < 1400 && !defined(__cplusplus) */
+#if _MSC_VER < 1800
static INLINE double log2( double x )
{
const double invln2 = 1.442695041;
@@ -133,6 +136,7 @@ roundf(float x)
{
return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
}
+#endif
#define INFINITY (DBL_MAX + DBL_MAX)
#define NAN (INFINITY - INFINITY)
@@ -717,13 +721,18 @@ util_bitcount(unsigned n)
*/
#ifdef PIPE_ARCH_BIG_ENDIAN
+#define util_le64_to_cpu(x) util_bswap64(x)
#define util_le32_to_cpu(x) util_bswap32(x)
#define util_le16_to_cpu(x) util_bswap16(x)
#else
+#define util_le64_to_cpu(x) (x)
#define util_le32_to_cpu(x) (x)
#define util_le16_to_cpu(x) (x)
#endif
+#define util_cpu_to_le64(x) util_le64_to_cpu(x)
+#define util_cpu_to_le32(x) util_le32_to_cpu(x)
+#define util_cpu_to_le16(x) util_le16_to_cpu(x)
/**
* Reverse byte order of a 32 bit word.
@@ -731,7 +740,8 @@ util_bitcount(unsigned n)
static INLINE uint32_t
util_bswap32(uint32_t n)
{
-#if defined(PIPE_CC_GCC) && (PIPE_CC_GCC_VERSION >= 403)
+/* We need the gcc version checks for non-autoconf build system */
+#if defined(HAVE___BUILTIN_BSWAP32) || (defined(PIPE_CC_GCC) && (PIPE_CC_GCC_VERSION >= 403))
return __builtin_bswap32(n);
#else
return (n >> 24) |
@@ -741,6 +751,20 @@ util_bswap32(uint32_t n)
#endif
}
+/**
+ * Reverse byte order of a 64bit word.
+ */
+static INLINE uint64_t
+util_bswap64(uint64_t n)
+{
+#if defined(HAVE___BUILTIN_BSWAP64)
+ return __builtin_bswap64(n);
+#else
+ return ((uint64_t)util_bswap32(n) << 32) |
+ util_bswap32((n >> 32));
+#endif
+}
+
/**
* Reverse byte order of a 16 bit word.
diff --git a/mesalib/src/gallium/auxiliary/util/u_range.h b/mesalib/src/gallium/auxiliary/util/u_range.h
index 4b1d0d1be..efe25ef5e 100644
--- a/mesalib/src/gallium/auxiliary/util/u_range.h
+++ b/mesalib/src/gallium/auxiliary/util/u_range.h
@@ -36,6 +36,8 @@
#include "os/os_thread.h"
+#include "util/u_math.h"
+
struct util_range {
unsigned start; /* inclusive */
unsigned end; /* exclusive */
diff --git a/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c b/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c
index 7349d0068..744ea2e5e 100644
--- a/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c
+++ b/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c
@@ -44,11 +44,12 @@ struct u_upload_mgr {
unsigned default_size; /* Minimum size of the upload buffer, in bytes. */
unsigned alignment; /* Alignment of each sub-allocation. */
unsigned bind; /* Bitmask of PIPE_BIND_* flags. */
+ unsigned map_flags; /* Bitmask of PIPE_TRANSFER_* flags. */
+ boolean map_persistent; /* If persistent mappings are supported. */
struct pipe_resource *buffer; /* Upload buffer. */
struct pipe_transfer *transfer; /* Transfer object for the upload buffer. */
uint8_t *map; /* Pointer to the mapped upload buffer. */
- unsigned size; /* Actual size of the upload buffer. */
unsigned offset; /* Aligned offset to the upload buffer, pointing
* at the first unused byte. */
};
@@ -67,20 +68,39 @@ struct u_upload_mgr *u_upload_create( struct pipe_context *pipe,
upload->default_size = default_size;
upload->alignment = alignment;
upload->bind = bind;
- upload->buffer = NULL;
+
+ upload->map_persistent =
+ pipe->screen->get_param(pipe->screen,
+ PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT);
+
+ if (upload->map_persistent) {
+ upload->map_flags = PIPE_TRANSFER_WRITE |
+ PIPE_TRANSFER_PERSISTENT |
+ PIPE_TRANSFER_COHERENT;
+ }
+ else {
+ upload->map_flags = PIPE_TRANSFER_WRITE |
+ PIPE_TRANSFER_UNSYNCHRONIZED |
+ PIPE_TRANSFER_FLUSH_EXPLICIT;
+ }
return upload;
}
-void u_upload_unmap( struct u_upload_mgr *upload )
+
+static void upload_unmap_internal(struct u_upload_mgr *upload, boolean destroying)
{
+ if (!destroying && upload->map_persistent)
+ return;
+
if (upload->transfer) {
struct pipe_box *box = &upload->transfer->box;
- if ((int) upload->offset > box->x) {
+ if (!upload->map_persistent && (int) upload->offset > box->x) {
pipe_buffer_flush_mapped_range(upload->pipe, upload->transfer,
box->x, upload->offset - box->x);
}
+
pipe_transfer_unmap(upload->pipe, upload->transfer);
upload->transfer = NULL;
upload->map = NULL;
@@ -88,12 +108,17 @@ void u_upload_unmap( struct u_upload_mgr *upload )
}
+void u_upload_unmap( struct u_upload_mgr *upload )
+{
+ upload_unmap_internal(upload, FALSE);
+}
+
+
static void u_upload_release_buffer(struct u_upload_mgr *upload)
{
/* Unmap and unreference the upload buffer. */
- u_upload_unmap(upload);
+ upload_unmap_internal(upload, TRUE);
pipe_resource_reference( &upload->buffer, NULL );
- upload->size = 0;
}
@@ -108,6 +133,8 @@ static enum pipe_error
u_upload_alloc_buffer( struct u_upload_mgr *upload,
unsigned min_size )
{
+ struct pipe_screen *screen = upload->pipe->screen;
+ struct pipe_resource buffer;
unsigned size;
/* Release the old buffer, if present:
@@ -118,28 +145,36 @@ u_upload_alloc_buffer( struct u_upload_mgr *upload,
*/
size = align(MAX2(upload->default_size, min_size), 4096);
- upload->buffer = pipe_buffer_create( upload->pipe->screen,
- upload->bind,
- PIPE_USAGE_STREAM,
- size );
+ memset(&buffer, 0, sizeof buffer);
+ buffer.target = PIPE_BUFFER;
+ buffer.format = PIPE_FORMAT_R8_UNORM; /* want TYPELESS or similar */
+ buffer.bind = upload->bind;
+ buffer.usage = PIPE_USAGE_STREAM;
+ buffer.width0 = size;
+ buffer.height0 = 1;
+ buffer.depth0 = 1;
+ buffer.array_size = 1;
+
+ if (upload->map_persistent) {
+ buffer.flags = PIPE_RESOURCE_FLAG_MAP_PERSISTENT |
+ PIPE_RESOURCE_FLAG_MAP_COHERENT;
+ }
+
+ upload->buffer = screen->resource_create(screen, &buffer);
if (upload->buffer == NULL) {
return PIPE_ERROR_OUT_OF_MEMORY;
}
/* Map the new buffer. */
upload->map = pipe_buffer_map_range(upload->pipe, upload->buffer,
- 0, size,
- PIPE_TRANSFER_WRITE |
- PIPE_TRANSFER_FLUSH_EXPLICIT,
+ 0, size, upload->map_flags,
&upload->transfer);
if (upload->map == NULL) {
upload->transfer = NULL;
- upload->size = 0;
pipe_resource_reference(&upload->buffer, NULL);
return PIPE_ERROR_OUT_OF_MEMORY;
}
- upload->size = size;
upload->offset = 0;
return PIPE_OK;
}
@@ -164,7 +199,8 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
/* Make sure we have enough space in the upload buffer
* for the sub-allocation. */
- if (MAX2(upload->offset, alloc_offset) + alloc_size > upload->size) {
+ if (!upload->buffer ||
+ MAX2(upload->offset, alloc_offset) + alloc_size > upload->buffer->width0) {
enum pipe_error ret = u_upload_alloc_buffer(upload,
alloc_offset + alloc_size);
if (ret != PIPE_OK)
@@ -175,10 +211,9 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload,
if (!upload->map) {
upload->map = pipe_buffer_map_range(upload->pipe, upload->buffer,
- offset, upload->size - offset,
- PIPE_TRANSFER_WRITE |
- PIPE_TRANSFER_FLUSH_EXPLICIT |
- PIPE_TRANSFER_UNSYNCHRONIZED,
+ offset,
+ upload->buffer->width0 - offset,
+ upload->map_flags,
&upload->transfer);
if (!upload->map) {
upload->transfer = NULL;
diff --git a/mesalib/src/glsl/Makefile.sources b/mesalib/src/glsl/Makefile.sources
index e69c1ac61..5945590a5 100644
--- a/mesalib/src/glsl/Makefile.sources
+++ b/mesalib/src/glsl/Makefile.sources
@@ -67,6 +67,7 @@ LIBGLSL_FILES = \
$(GLSL_SRCDIR)/lower_jumps.cpp \
$(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \
$(GLSL_SRCDIR)/lower_noise.cpp \
+ $(GLSL_SRCDIR)/lower_offset_array.cpp \
$(GLSL_SRCDIR)/lower_packed_varyings.cpp \
$(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \
$(GLSL_SRCDIR)/lower_packing_builtins.cpp \
diff --git a/mesalib/src/glsl/ast.h b/mesalib/src/glsl/ast.h
index e4c00a408..c7710e5d6 100644
--- a/mesalib/src/glsl/ast.h
+++ b/mesalib/src/glsl/ast.h
@@ -284,14 +284,14 @@ class ast_array_specifier : public ast_node {
public:
/** Unsized array specifier ([]) */
explicit ast_array_specifier(const struct YYLTYPE &locp)
- : dimension_count(1), is_unsized_array(true)
+ : is_unsized_array(true)
{
set_location(locp);
}
/** Sized array specifier ([dim]) */
ast_array_specifier(const struct YYLTYPE &locp, ast_expression *dim)
- : dimension_count(1), is_unsized_array(false)
+ : is_unsized_array(false)
{
set_location(locp);
array_dimensions.push_tail(&dim->link);
@@ -300,14 +300,10 @@ public:
void add_dimension(ast_expression *dim)
{
array_dimensions.push_tail(&dim->link);
- dimension_count++;
}
virtual void print(void) const;
- /* Count including sized and unsized dimensions */
- unsigned dimension_count;
-
/* If true, this means that the array has an unsized outermost dimension. */
bool is_unsized_array;
@@ -470,17 +466,36 @@ struct ast_type_qualifier {
* local_size_x, and so on.
*/
unsigned local_size:3;
+
+ /** \name Layout and memory qualifiers for ARB_shader_image_load_store. */
+ /** \{ */
+ unsigned early_fragment_tests:1;
+ unsigned explicit_image_format:1;
+ unsigned coherent:1;
+ unsigned _volatile:1;
+ unsigned restrict_flag:1;
+ unsigned read_only:1; /**< "readonly" qualifier. */
+ unsigned write_only:1; /**< "writeonly" qualifier. */
+ /** \} */
+
+ /** \name Layout qualifiers for GL_ARB_gpu_shader5 */
+ /** \{ */
+ unsigned invocations:1;
+ /** \} */
}
/** \brief Set of flags, accessed by name. */
q;
/** \brief Set of flags, accessed as a bitmask. */
- unsigned i;
+ uint64_t i;
} flags;
/** Precision of the type (highp/medium/lowp). */
unsigned precision:2;
+ /** Geometry shader invocations for GL_ARB_gpu_shader5. */
+ int invocations;
+
/**
* Location specified via GL_ARB_explicit_attrib_location layout
*
@@ -527,6 +542,25 @@ struct ast_type_qualifier {
int local_size[3];
/**
+ * Image format specified with an ARB_shader_image_load_store
+ * layout qualifier.
+ *
+ * \note
+ * This field is only valid if \c explicit_image_format is set.
+ */
+ GLenum image_format;
+
+ /**
+ * Base type of the data read from or written to this image. Only
+ * the following enumerants are allowed: GLSL_TYPE_UINT,
+ * GLSL_TYPE_INT, GLSL_TYPE_FLOAT.
+ *
+ * \note
+ * This field is only valid if \c explicit_image_format is set.
+ */
+ glsl_base_type image_base_type;
+
+ /**
* Return true if and only if an interpolation qualifier is present.
*/
bool has_interpolation() const;
@@ -561,6 +595,12 @@ struct ast_type_qualifier {
bool merge_qualifier(YYLTYPE *loc,
_mesa_glsl_parse_state *state,
ast_type_qualifier q);
+
+ bool merge_in_qualifier(YYLTYPE *loc,
+ _mesa_glsl_parse_state *state,
+ ast_type_qualifier q,
+ ast_node* &node);
+
};
class ast_declarator_list;
diff --git a/mesalib/src/glsl/ast_function.cpp b/mesalib/src/glsl/ast_function.cpp
index 4c5b0e4aa..4b8447067 100644
--- a/mesalib/src/glsl/ast_function.cpp
+++ b/mesalib/src/glsl/ast_function.cpp
@@ -93,6 +93,57 @@ prototype_string(const glsl_type *return_type, const char *name,
return str;
}
+static bool
+verify_image_parameter(YYLTYPE *loc, _mesa_glsl_parse_state *state,
+ const ir_variable *formal, const ir_variable *actual)
+{
+ /**
+ * From the ARB_shader_image_load_store specification:
+ *
+ * "The values of image variables qualified with coherent,
+ * volatile, restrict, readonly, or writeonly may not be passed
+ * to functions whose formal parameters lack such
+ * qualifiers. [...] It is legal to have additional qualifiers
+ * on a formal parameter, but not to have fewer."
+ */
+ if (actual->data.image.coherent && !formal->data.image.coherent) {
+ _mesa_glsl_error(loc, state,
+ "function call parameter `%s' drops "
+ "`coherent' qualifier", formal->name);
+ return false;
+ }
+
+ if (actual->data.image._volatile && !formal->data.image._volatile) {
+ _mesa_glsl_error(loc, state,
+ "function call parameter `%s' drops "
+ "`volatile' qualifier", formal->name);
+ return false;
+ }
+
+ if (actual->data.image.restrict_flag && !formal->data.image.restrict_flag) {
+ _mesa_glsl_error(loc, state,
+ "function call parameter `%s' drops "
+ "`restrict' qualifier", formal->name);
+ return false;
+ }
+
+ if (actual->data.image.read_only && !formal->data.image.read_only) {
+ _mesa_glsl_error(loc, state,
+ "function call parameter `%s' drops "
+ "`readonly' qualifier", formal->name);
+ return false;
+ }
+
+ if (actual->data.image.write_only && !formal->data.image.write_only) {
+ _mesa_glsl_error(loc, state,
+ "function call parameter `%s' drops "
+ "`writeonly' qualifier", formal->name);
+ return false;
+ }
+
+ return true;
+}
+
/**
* Verify that 'out' and 'inout' actual parameters are lvalues. Also, verify
* that 'const_in' formal parameters (an extension in our IR) correspond to
@@ -180,6 +231,13 @@ verify_parameter_modes(_mesa_glsl_parse_state *state,
}
}
+ if (formal->type->is_image() &&
+ actual->variable_referenced()) {
+ if (!verify_image_parameter(&loc, state, formal,
+ actual->variable_referenced()))
+ return false;
+ }
+
actual_ir_node = actual_ir_node->next;
actual_ast_node = actual_ast_node->next;
}
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp
index c89a26bf9..8f6e90174 100644
--- a/mesalib/src/glsl/ast_to_hir.cpp
+++ b/mesalib/src/glsl/ast_to_hir.cpp
@@ -969,6 +969,7 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1)
case GLSL_TYPE_ERROR:
case GLSL_TYPE_VOID:
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
case GLSL_TYPE_INTERFACE:
case GLSL_TYPE_ATOMIC_UINT:
/* I assume a comparison of a struct containing a sampler just
@@ -1796,7 +1797,7 @@ ast_compound_statement::hir(exec_list *instructions,
* Evaluate the given exec_node (which should be an ast_node representing
* a single array dimension) and return its integer value.
*/
-static const unsigned
+static unsigned
process_array_size(exec_node *node,
struct _mesa_glsl_parse_state *state)
{
@@ -2122,11 +2123,16 @@ validate_explicit_location(const struct ast_type_qualifier *qual,
{
bool fail = false;
- /* In the vertex shader only shader inputs can be given explicit
- * locations.
+ /* Between GL_ARB_explicit_attrib_location an
+ * GL_ARB_separate_shader_objects, the inputs and outputs of any shader
+ * stage can be assigned explicit locations. The checking here associates
+ * the correct extension with the correct stage's input / output:
*
- * In the fragment shader only shader outputs can be given explicit
- * locations.
+ * input output
+ * ----- ------
+ * vertex explicit_loc sso
+ * geometry sso sso
+ * fragment sso explicit_loc
*/
switch (state->stage) {
case MESA_SHADER_VERTEX:
@@ -2137,16 +2143,35 @@ validate_explicit_location(const struct ast_type_qualifier *qual,
break;
}
+ if (var->data.mode == ir_var_shader_out) {
+ if (!state->check_separate_shader_objects_allowed(loc, var))
+ return;
+
+ break;
+ }
+
fail = true;
break;
case MESA_SHADER_GEOMETRY:
- _mesa_glsl_error(loc, state,
- "geometry shader variables cannot be given "
- "explicit locations");
- return;
+ if (var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) {
+ if (!state->check_separate_shader_objects_allowed(loc, var))
+ return;
+
+ break;
+ }
+
+ fail = true;
+ break;
case MESA_SHADER_FRAGMENT:
+ if (var->data.mode == ir_var_shader_in) {
+ if (!state->check_separate_shader_objects_allowed(loc, var))
+ return;
+
+ break;
+ }
+
if (var->data.mode == ir_var_shader_out) {
if (!state->check_explicit_attrib_location_allowed(loc, var))
return;
@@ -2180,9 +2205,26 @@ validate_explicit_location(const struct ast_type_qualifier *qual,
* ensures that negative values stay negative.
*/
if (qual->location >= 0) {
- var->data.location = (state->stage == MESA_SHADER_VERTEX)
- ? (qual->location + VERT_ATTRIB_GENERIC0)
- : (qual->location + FRAG_RESULT_DATA0);
+ switch (state->stage) {
+ case MESA_SHADER_VERTEX:
+ var->data.location = (var->data.mode == ir_var_shader_in)
+ ? (qual->location + VERT_ATTRIB_GENERIC0)
+ : (qual->location + VARYING_SLOT_VAR0);
+ break;
+
+ case MESA_SHADER_GEOMETRY:
+ var->data.location = qual->location + VARYING_SLOT_VAR0;
+ break;
+
+ case MESA_SHADER_FRAGMENT:
+ var->data.location = (var->data.mode == ir_var_shader_out)
+ ? (qual->location + FRAG_RESULT_DATA0)
+ : (qual->location + VARYING_SLOT_VAR0);
+ break;
+ case MESA_SHADER_COMPUTE:
+ assert(!"Unexpected shader type");
+ break;
+ }
} else {
var->data.location = qual->location;
}
@@ -2206,8 +2248,54 @@ validate_explicit_location(const struct ast_type_qualifier *qual,
}
}
}
+}
+
+static void
+apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual,
+ ir_variable *var,
+ struct _mesa_glsl_parse_state *state,
+ YYLTYPE *loc)
+{
+ const glsl_type *base_type =
+ (var->type->is_array() ? var->type->element_type() : var->type);
+
+ if (base_type->is_image()) {
+ if (var->data.mode != ir_var_uniform &&
+ var->data.mode != ir_var_function_in) {
+ _mesa_glsl_error(loc, state, "image variables may only be declared as "
+ "function parameters or uniform-qualified "
+ "global variables");
+ }
+
+ var->data.image.read_only |= qual->flags.q.read_only;
+ var->data.image.write_only |= qual->flags.q.write_only;
+ var->data.image.coherent |= qual->flags.q.coherent;
+ var->data.image._volatile |= qual->flags.q._volatile;
+ var->data.image.restrict_flag |= qual->flags.q.restrict_flag;
+ var->data.read_only = true;
+
+ if (qual->flags.q.explicit_image_format) {
+ if (var->data.mode == ir_var_function_in) {
+ _mesa_glsl_error(loc, state, "format qualifiers cannot be "
+ "used on image function parameters");
+ }
+
+ if (qual->image_base_type != base_type->sampler_type) {
+ _mesa_glsl_error(loc, state, "format qualifier doesn't match the "
+ "base data type of the image");
+ }
+
+ var->data.image.format = qual->image_format;
+ } else {
+ if (var->data.mode == ir_var_uniform && !qual->flags.q.write_only) {
+ _mesa_glsl_error(loc, state, "uniforms not qualified with "
+ "`writeonly' must have a format layout "
+ "qualifier");
+ }
- return;
+ var->data.image.format = GL_NONE;
+ }
+ }
}
static void
@@ -2500,6 +2588,9 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
if (qual->flags.q.row_major || qual->flags.q.column_major) {
validate_matrix_layout_for_type(state, loc, var->type, var);
}
+
+ if (var->type->contains_image())
+ apply_image_qualifier_to_variable(qual, var, state, loc);
}
/**
@@ -2659,9 +2750,15 @@ process_initializer(ir_variable *var, ast_declaration *decl,
"cannot initialize uniforms");
}
- if (var->type->is_sampler()) {
+ /* From section 4.1.7 of the GLSL 4.40 spec:
+ *
+ * "Opaque variables [...] are initialized only through the
+ * OpenGL API; they cannot be declared with an initializer in a
+ * shader."
+ */
+ if (var->type->contains_opaque()) {
_mesa_glsl_error(& initializer_loc, state,
- "cannot initialize samplers");
+ "cannot initialize opaque variable");
}
if ((var->data.mode == ir_var_shader_in) && (state->current_function == NULL)) {
@@ -2784,7 +2881,7 @@ handle_geometry_shader_input_decl(struct _mesa_glsl_parse_state *state,
{
unsigned num_vertices = 0;
if (state->gs_input_prim_type_specified) {
- num_vertices = vertices_per_prim(state->gs_input_prim_type);
+ num_vertices = vertices_per_prim(state->in_qualifier->prim_type);
}
/* Geometry shader input variables must be arrays. Caller should have
@@ -2870,10 +2967,17 @@ validate_identifier(const char *identifier, YYLTYPE loc,
* "In addition, all identifiers containing two
* consecutive underscores (__) are reserved as
* possible future keywords."
+ *
+ * The intention is that names containing __ are reserved for internal
+ * use by the implementation, and names prefixed with GL_ are reserved
+ * for use by Khronos. Names simply containing __ are dangerous to use,
+ * but should be allowed.
+ *
+ * A future version of the GLSL specification will clarify this.
*/
- _mesa_glsl_error(&loc, state,
- "identifier `%s' uses reserved `__' string",
- identifier);
+ _mesa_glsl_warning(&loc, state,
+ "identifier `%s' uses reserved `__' string",
+ identifier);
}
}
@@ -3082,6 +3186,7 @@ ast_declarator_list::hir(exec_list *instructions,
*/
if (!state->is_version(130, 300)
&& !state->has_explicit_attrib_location()
+ && !state->has_separate_shader_objects()
&& !state->ARB_fragment_coord_conventions_enable) {
if (this->type->qualifier.flags.q.out) {
_mesa_glsl_error(& loc, state,
@@ -3421,15 +3526,15 @@ ast_declarator_list::hir(exec_list *instructions,
", integer and sampler types");
}
- /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec:
+ /* From section 4.1.7 of the GLSL 4.40 spec:
*
- * "[Sampler types] can only be declared as function
- * parameters or uniform variables (see Section 4.3.5
- * "Uniform")".
+ * "[Opaque types] can only be declared as function
+ * parameters or uniform-qualified variables."
*/
- if (var_type->contains_sampler() &&
+ if (var_type->contains_opaque() &&
!this->type->qualifier.flags.q.uniform) {
- _mesa_glsl_error(&loc, state, "samplers must be declared uniform");
+ _mesa_glsl_error(&loc, state,
+ "opaque variables must be declared uniform");
}
/* Process the initializer and add its instructions to a temporary
@@ -3621,15 +3726,16 @@ ast_parameter_declarator::hir(exec_list *instructions,
apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc,
true);
- /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec:
+ /* From section 4.1.7 of the GLSL 4.40 spec:
*
- * "Samplers cannot be treated as l-values; hence cannot be used
- * as out or inout function parameters, nor can they be assigned
- * into."
+ * "Opaque variables cannot be treated as l-values; hence cannot
+ * be used as out or inout function parameters, nor can they be
+ * assigned into."
*/
if ((var->data.mode == ir_var_function_inout || var->data.mode == ir_var_function_out)
- && type->contains_sampler()) {
- _mesa_glsl_error(&loc, state, "out and inout parameters cannot contain samplers");
+ && type->contains_opaque()) {
+ _mesa_glsl_error(&loc, state, "out and inout parameters cannot "
+ "contain opaque variables");
type = glsl_type::error_type;
}
@@ -3784,15 +3890,15 @@ ast_function::hir(exec_list *instructions,
"sized", name);
}
- /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec:
+ /* From section 4.1.7 of the GLSL 4.40 spec:
*
- * "[Sampler types] can only be declared as function parameters
- * or uniform variables (see Section 4.3.5 "Uniform")".
+ * "[Opaque types] can only be declared as function parameters
+ * or uniform-qualified variables."
*/
- if (return_type->contains_sampler()) {
+ if (return_type->contains_opaque()) {
YYLTYPE loc = this->get_location();
_mesa_glsl_error(&loc, state,
- "function `%s' return type can't contain a sampler",
+ "function `%s' return type can't contain an opaque type",
name);
}
@@ -4693,12 +4799,9 @@ ast_process_structure_or_interface_block(exec_list *instructions,
if (!allow_reserved_names)
validate_identifier(decl->identifier, loc, state);
- /* From the GL_ARB_uniform_buffer_object spec:
+ /* From section 4.3.9 of the GLSL 4.40 spec:
*
- * "Sampler types are not allowed inside of uniform
- * blocks. All other types, arrays, and structures
- * allowed for uniforms are allowed within a uniform
- * block."
+ * "[In interface blocks] opaque types are not allowed."
*
* It should be impossible for decl_type to be NULL here. Cases that
* might naturally lead to decl_type being NULL, especially for the
@@ -4708,10 +4811,11 @@ ast_process_structure_or_interface_block(exec_list *instructions,
const struct glsl_type *field_type =
decl_type != NULL ? decl_type : glsl_type::error_type;
- if (is_interface && field_type->contains_sampler()) {
+ if (is_interface && field_type->contains_opaque()) {
YYLTYPE loc = decl_list->get_location();
_mesa_glsl_error(&loc, state,
- "uniform in non-default uniform block contains sampler");
+ "uniform in non-default uniform block contains "
+ "opaque variable");
}
if (field_type->contains_atomic()) {
@@ -4725,6 +4829,16 @@ ast_process_structure_or_interface_block(exec_list *instructions,
"uniform block");
}
+ if (field_type->contains_image()) {
+ /* FINISHME: Same problem as with atomic counters.
+ * FINISHME: Request clarification from Khronos and add
+ * FINISHME: spec quotation here.
+ */
+ YYLTYPE loc = decl_list->get_location();
+ _mesa_glsl_error(&loc, state,
+ "image in structure or uniform block");
+ }
+
const struct ast_type_qualifier *const qual =
& decl_list->type->qualifier;
if (qual->flags.q.std140 ||
@@ -5258,7 +5372,7 @@ ast_gs_input_layout::hir(exec_list *instructions,
* was consistent with this one.
*/
if (state->gs_input_prim_type_specified &&
- state->gs_input_prim_type != this->prim_type) {
+ state->in_qualifier->prim_type != this->prim_type) {
_mesa_glsl_error(&loc, state,
"geometry shader input layout does not match"
" previous declaration");
@@ -5279,7 +5393,6 @@ ast_gs_input_layout::hir(exec_list *instructions,
}
state->gs_input_prim_type_specified = true;
- state->gs_input_prim_type = this->prim_type;
/* If any shader inputs occurred before this declaration and did not
* specify an array size, their size is determined now.
diff --git a/mesalib/src/glsl/ast_type.cpp b/mesalib/src/glsl/ast_type.cpp
index bbc430808..0ee2c495a 100644
--- a/mesalib/src/glsl/ast_type.cpp
+++ b/mesalib/src/glsl/ast_type.cpp
@@ -190,6 +190,117 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc,
if (q.precision != ast_precision_none)
this->precision = q.precision;
+ if (q.flags.q.explicit_image_format) {
+ this->image_format = q.image_format;
+ this->image_base_type = q.image_base_type;
+ }
+
return true;
}
+bool
+ast_type_qualifier::merge_in_qualifier(YYLTYPE *loc,
+ _mesa_glsl_parse_state *state,
+ ast_type_qualifier q,
+ ast_node* &node)
+{
+ void *mem_ctx = state;
+ bool create_gs_ast = false;
+ bool create_cs_ast = false;
+ ast_type_qualifier valid_in_mask;
+ valid_in_mask.flags.i = 0;
+
+ switch (state->stage) {
+ case MESA_SHADER_GEOMETRY:
+ if (q.flags.q.prim_type) {
+ /* Make sure this is a valid input primitive type. */
+ switch (q.prim_type) {
+ case GL_POINTS:
+ case GL_LINES:
+ case GL_LINES_ADJACENCY:
+ case GL_TRIANGLES:
+ case GL_TRIANGLES_ADJACENCY:
+ break;
+ default:
+ _mesa_glsl_error(loc, state,
+ "invalid geometry shader input primitive type");
+ break;
+ }
+ }
+
+ create_gs_ast |=
+ q.flags.q.prim_type &&
+ !state->in_qualifier->flags.q.prim_type;
+
+ valid_in_mask.flags.q.prim_type = 1;
+ valid_in_mask.flags.q.invocations = 1;
+ break;
+ case MESA_SHADER_FRAGMENT:
+ if (q.flags.q.early_fragment_tests) {
+ state->early_fragment_tests = true;
+ } else {
+ _mesa_glsl_error(loc, state, "invalid input layout qualifier");
+ }
+ break;
+ case MESA_SHADER_COMPUTE:
+ create_cs_ast |=
+ q.flags.q.local_size != 0 &&
+ state->in_qualifier->flags.q.local_size == 0;
+
+ valid_in_mask.flags.q.local_size = 1;
+ break;
+ default:
+ _mesa_glsl_error(loc, state,
+ "input layout qualifiers only valid in "
+ "geometry, fragment and compute shaders");
+ break;
+ }
+
+ /* Generate an error when invalid input layout qualifiers are used. */
+ if ((q.flags.i & ~valid_in_mask.flags.i) != 0) {
+ _mesa_glsl_error(loc, state,
+ "invalid input layout qualifiers used");
+ return false;
+ }
+
+ /* Input layout qualifiers can be specified multiple
+ * times in separate declarations, as long as they match.
+ */
+ if (this->flags.q.prim_type) {
+ if (q.flags.q.prim_type &&
+ this->prim_type != q.prim_type) {
+ _mesa_glsl_error(loc, state,
+ "conflicting input primitive types specified");
+ }
+ } else if (q.flags.q.prim_type) {
+ state->in_qualifier->flags.q.prim_type = 1;
+ state->in_qualifier->prim_type = q.prim_type;
+ }
+
+ if (this->flags.q.invocations &&
+ q.flags.q.invocations &&
+ this->invocations != q.invocations) {
+ _mesa_glsl_error(loc, state,
+ "conflicting invocations counts specified");
+ return false;
+ } else if (q.flags.q.invocations) {
+ this->flags.q.invocations = 1;
+ this->invocations = q.invocations;
+ }
+
+ if (create_gs_ast) {
+ node = new(mem_ctx) ast_gs_input_layout(*loc, q.prim_type);
+ } else if (create_cs_ast) {
+ /* Infer a local_size of 1 for every unspecified dimension */
+ unsigned local_size[3];
+ for (int i = 0; i < 3; i++) {
+ if (q.flags.q.local_size & (1 << i))
+ local_size[i] = q.local_size[i];
+ else
+ local_size[i] = 1;
+ }
+ node = new(mem_ctx) ast_cs_input_layout(*loc, local_size);
+ }
+
+ return true;
+}
diff --git a/mesalib/src/glsl/builtin_functions.cpp b/mesalib/src/glsl/builtin_functions.cpp
index ed58ddddb..c4f39abb7 100755
--- a/mesalib/src/glsl/builtin_functions.cpp
+++ b/mesalib/src/glsl/builtin_functions.cpp
@@ -340,6 +340,13 @@ shader_trinary_minmax(const _mesa_glsl_parse_state *state)
return state->AMD_shader_trinary_minmax_enable;
}
+static bool
+shader_image_load_store(const _mesa_glsl_parse_state *state)
+{
+ return (state->is_version(420, 0) ||
+ state->ARB_shader_image_load_store_enable);
+}
+
/** @} */
/******************************************************************************/
@@ -413,6 +420,33 @@ private:
/** Create a new function and add the given signatures. */
void add_function(const char *name, ...);
+ enum image_function_flags {
+ IMAGE_FUNCTION_EMIT_STUB = (1 << 0),
+ IMAGE_FUNCTION_RETURNS_VOID = (1 << 1),
+ IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE = (1 << 2),
+ IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3),
+ IMAGE_FUNCTION_READ_ONLY = (1 << 4),
+ IMAGE_FUNCTION_WRITE_ONLY = (1 << 5)
+ };
+
+ /**
+ * Create a new image built-in function for all known image types.
+ * \p flags is a bitfield of \c image_function_flags flags.
+ */
+ void add_image_function(const char *name,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags);
+
+ /**
+ * Create new functions for all known image built-ins and types.
+ * If \p glsl is \c true, use the GLSL built-in names and emit code
+ * to call into the actual compiler intrinsic. If \p glsl is
+ * false, emit a function prototype with no body for each image
+ * intrinsic name.
+ */
+ void add_image_functions(bool glsl);
+
ir_function_signature *new_sig(const glsl_type *return_type,
builtin_available_predicate avail,
int num_params, ...);
@@ -580,6 +614,20 @@ private:
B1(max3)
B1(mid3)
+ ir_function_signature *_image_prototype(const glsl_type *image_type,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags);
+ ir_function_signature *_image(const glsl_type *image_type,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags);
+
+ ir_function_signature *_memory_barrier_intrinsic(
+ builtin_available_predicate avail);
+ ir_function_signature *_memory_barrier(
+ builtin_available_predicate avail);
+
#undef B0
#undef B1
#undef B2
@@ -694,6 +742,12 @@ builtin_builder::create_intrinsics()
add_function("__intrinsic_atomic_predecrement",
_atomic_intrinsic(shader_atomic_counters),
NULL);
+
+ add_image_functions(false);
+
+ add_function("__intrinsic_memory_barrier",
+ _memory_barrier_intrinsic(shader_image_load_store),
+ NULL);
}
/**
@@ -2167,6 +2221,12 @@ builtin_builder::create_builtins()
_mid3(glsl_type::uvec4_type),
NULL);
+ add_image_functions(true);
+
+ add_function("memoryBarrier",
+ _memory_barrier(shader_image_load_store),
+ NULL);
+
#undef F
#undef FI
#undef FIU
@@ -2200,6 +2260,104 @@ builtin_builder::add_function(const char *name, ...)
shader->symbols->add_function(f);
}
+void
+builtin_builder::add_image_function(const char *name,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags)
+{
+ static const glsl_type *const types[] = {
+ glsl_type::image1D_type,
+ glsl_type::image2D_type,
+ glsl_type::image3D_type,
+ glsl_type::image2DRect_type,
+ glsl_type::imageCube_type,
+ glsl_type::imageBuffer_type,
+ glsl_type::image1DArray_type,
+ glsl_type::image2DArray_type,
+ glsl_type::imageCubeArray_type,
+ glsl_type::image2DMS_type,
+ glsl_type::image2DMSArray_type,
+ glsl_type::iimage1D_type,
+ glsl_type::iimage2D_type,
+ glsl_type::iimage3D_type,
+ glsl_type::iimage2DRect_type,
+ glsl_type::iimageCube_type,
+ glsl_type::iimageBuffer_type,
+ glsl_type::iimage1DArray_type,
+ glsl_type::iimage2DArray_type,
+ glsl_type::iimageCubeArray_type,
+ glsl_type::iimage2DMS_type,
+ glsl_type::iimage2DMSArray_type,
+ glsl_type::uimage1D_type,
+ glsl_type::uimage2D_type,
+ glsl_type::uimage3D_type,
+ glsl_type::uimage2DRect_type,
+ glsl_type::uimageCube_type,
+ glsl_type::uimageBuffer_type,
+ glsl_type::uimage1DArray_type,
+ glsl_type::uimage2DArray_type,
+ glsl_type::uimageCubeArray_type,
+ glsl_type::uimage2DMS_type,
+ glsl_type::uimage2DMSArray_type
+ };
+ ir_function *f = new(mem_ctx) ir_function(name);
+
+ for (unsigned i = 0; i < Elements(types); ++i) {
+ if (types[i]->sampler_type != GLSL_TYPE_FLOAT ||
+ (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE))
+ f->add_signature(_image(types[i], intrinsic_name,
+ num_arguments, flags));
+ }
+
+ shader->symbols->add_function(f);
+}
+
+void
+builtin_builder::add_image_functions(bool glsl)
+{
+ const unsigned flags = (glsl ? IMAGE_FUNCTION_EMIT_STUB : 0);
+
+ add_image_function(glsl ? "imageLoad" : "__intrinsic_image_load",
+ "__intrinsic_image_load", 0,
+ (flags | IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
+ IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
+ IMAGE_FUNCTION_READ_ONLY));
+
+ add_image_function(glsl ? "imageStore" : "__intrinsic_image_store",
+ "__intrinsic_image_store", 1,
+ (flags | IMAGE_FUNCTION_RETURNS_VOID |
+ IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE |
+ IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE |
+ IMAGE_FUNCTION_WRITE_ONLY));
+
+ add_image_function(glsl ? "imageAtomicAdd" : "__intrinsic_image_atomic_add",
+ "__intrinsic_image_atomic_add", 1, flags);
+
+ add_image_function(glsl ? "imageAtomicMin" : "__intrinsic_image_atomic_min",
+ "__intrinsic_image_atomic_min", 1, flags);
+
+ add_image_function(glsl ? "imageAtomicMax" : "__intrinsic_image_atomic_max",
+ "__intrinsic_image_atomic_max", 1, flags);
+
+ add_image_function(glsl ? "imageAtomicAnd" : "__intrinsic_image_atomic_and",
+ "__intrinsic_image_atomic_and", 1, flags);
+
+ add_image_function(glsl ? "imageAtomicOr" : "__intrinsic_image_atomic_or",
+ "__intrinsic_image_atomic_or", 1, flags);
+
+ add_image_function(glsl ? "imageAtomicXor" : "__intrinsic_image_atomic_xor",
+ "__intrinsic_image_atomic_xor", 1, flags);
+
+ add_image_function((glsl ? "imageAtomicExchange" :
+ "__intrinsic_image_atomic_exchange"),
+ "__intrinsic_image_atomic_exchange", 1, flags);
+
+ add_image_function((glsl ? "imageAtomicCompSwap" :
+ "__intrinsic_image_atomic_comp_swap"),
+ "__intrinsic_image_atomic_comp_swap", 2, flags);
+}
+
ir_variable *
builtin_builder::in_var(const glsl_type *type, const char *name)
{
@@ -3549,7 +3707,7 @@ builtin_builder::_texture(ir_texture_opcode opcode,
ir_texture *tex = new(mem_ctx) ir_texture(opcode);
tex->set_sampler(var_ref(s), return_type);
- const int coord_size = sampler_type->sampler_coordinate_components();
+ const int coord_size = sampler_type->coordinate_components();
if (coord_size == coord_type->vector_elements) {
tex->coordinate = var_ref(P);
@@ -4094,12 +4252,106 @@ builtin_builder::_mid3(const glsl_type *type)
return sig;
}
+ir_function_signature *
+builtin_builder::_image_prototype(const glsl_type *image_type,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags)
+{
+ const glsl_type *data_type = glsl_type::get_instance(
+ image_type->sampler_type,
+ (flags & IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE ? 4 : 1),
+ 1);
+ const glsl_type *ret_type = (flags & IMAGE_FUNCTION_RETURNS_VOID ?
+ glsl_type::void_type : data_type);
+
+ /* Addressing arguments that are always present. */
+ ir_variable *image = in_var(image_type, "image");
+ ir_variable *coord = in_var(
+ glsl_type::ivec(image_type->coordinate_components()), "coord");
+
+ ir_function_signature *sig = new_sig(
+ ret_type, shader_image_load_store, 2, image, coord);
+
+ /* Sample index for multisample images. */
+ if (image_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS)
+ sig->parameters.push_tail(in_var(glsl_type::int_type, "sample"));
+
+ /* Data arguments. */
+ for (unsigned i = 0; i < num_arguments; ++i)
+ sig->parameters.push_tail(in_var(data_type,
+ ralloc_asprintf(NULL, "arg%d", i)));
+
+ /* Set the maximal set of qualifiers allowed for this image
+ * built-in. Function calls with arguments having fewer
+ * qualifiers than present in the prototype are allowed by the
+ * spec, but not with more, i.e. this will make the compiler
+ * accept everything that needs to be accepted, and reject cases
+ * like loads from write-only or stores to read-only images.
+ */
+ image->data.image.read_only = flags & IMAGE_FUNCTION_READ_ONLY;
+ image->data.image.write_only = flags & IMAGE_FUNCTION_WRITE_ONLY;
+ image->data.image.coherent = true;
+ image->data.image._volatile = true;
+ image->data.image.restrict_flag = true;
+
+ return sig;
+}
+
+ir_function_signature *
+builtin_builder::_image(const glsl_type *image_type,
+ const char *intrinsic_name,
+ unsigned num_arguments,
+ unsigned flags)
+{
+ ir_function_signature *sig = _image_prototype(image_type, intrinsic_name,
+ num_arguments, flags);
+
+ if (flags & IMAGE_FUNCTION_EMIT_STUB) {
+ ir_factory body(&sig->body, mem_ctx);
+ ir_function *f = shader->symbols->get_function(intrinsic_name);
+
+ if (flags & IMAGE_FUNCTION_RETURNS_VOID) {
+ body.emit(call(f, NULL, sig->parameters));
+ } else {
+ ir_variable *ret_val =
+ body.make_temp(sig->return_type, "_ret_val");
+ body.emit(call(f, ret_val, sig->parameters));
+ body.emit(ret(ret_val));
+ }
+
+ sig->is_defined = true;
+
+ } else {
+ sig->is_intrinsic = true;
+ }
+
+ return sig;
+}
+
+ir_function_signature *
+builtin_builder::_memory_barrier_intrinsic(builtin_available_predicate avail)
+{
+ MAKE_INTRINSIC(glsl_type::void_type, avail, 0);
+ return sig;
+}
+
+ir_function_signature *
+builtin_builder::_memory_barrier(builtin_available_predicate avail)
+{
+ MAKE_SIG(glsl_type::void_type, avail, 0);
+ body.emit(call(shader->symbols->get_function("__intrinsic_memory_barrier"),
+ NULL, sig->parameters));
+ return sig;
+}
+
/** @} */
/******************************************************************************/
/* The singleton instance of builtin_builder. */
static builtin_builder builtins;
+static mtx_t builtins_lock = _MTX_INITIALIZER_NP;
/**
* External API (exposing the built-in module to the rest of the compiler):
@@ -4108,20 +4360,28 @@ static builtin_builder builtins;
void
_mesa_glsl_initialize_builtin_functions()
{
+ mtx_lock(&builtins_lock);
builtins.initialize();
+ mtx_unlock(&builtins_lock);
}
void
_mesa_glsl_release_builtin_functions()
{
+ mtx_lock(&builtins_lock);
builtins.release();
+ mtx_unlock(&builtins_lock);
}
ir_function_signature *
_mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state,
const char *name, exec_list *actual_parameters)
{
- return builtins.find(state, name, actual_parameters);
+ ir_function_signature * s;
+ mtx_lock(&builtins_lock);
+ s = builtins.find(state, name, actual_parameters);
+ mtx_unlock(&builtins_lock);
+ return s;
}
gl_shader *
diff --git a/mesalib/src/glsl/builtin_type_macros.h b/mesalib/src/glsl/builtin_type_macros.h
index 06b4dbd0f..236e1ce8c 100644
--- a/mesalib/src/glsl/builtin_type_macros.h
+++ b/mesalib/src/glsl/builtin_type_macros.h
@@ -64,51 +64,85 @@ DECL_TYPE(mat3x4, GL_FLOAT_MAT3x4, GLSL_TYPE_FLOAT, 4, 3)
DECL_TYPE(mat4x2, GL_FLOAT_MAT4x2, GLSL_TYPE_FLOAT, 2, 4)
DECL_TYPE(mat4x3, GL_FLOAT_MAT4x3, GLSL_TYPE_FLOAT, 3, 4)
-DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT)
-
-DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT)
-DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT)
-DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT)
-DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT)
-DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT)
-
-DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT)
-DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT)
-DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT)
-DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT)
-DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT)
-
-DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT)
-DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT)
-
-DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT)
+
+DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT)
+DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT)
+DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT)
+DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT)
+DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT)
+
+DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT)
+DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT)
+DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT)
+DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT)
+DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT)
+
+DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT)
+DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT)
+
+DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT)
+
+DECL_TYPE(image1D, GL_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(image2D, GL_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(image3D, GL_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(image2DRect, GL_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(imageCube, GL_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(imageBuffer, GL_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(image1DArray, GL_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT);
+DECL_TYPE(image2DArray, GL_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT);
+DECL_TYPE(imageCubeArray, GL_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT);
+DECL_TYPE(image2DMS, GL_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT);
+DECL_TYPE(image2DMSArray, GL_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT);
+DECL_TYPE(iimage1D, GL_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimage2D, GL_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimage3D, GL_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimage2DRect, GL_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimageCube, GL_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimageBuffer, GL_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimage1DArray, GL_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT);
+DECL_TYPE(iimage2DArray, GL_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT);
+DECL_TYPE(iimageCubeArray, GL_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT);
+DECL_TYPE(iimage2DMS, GL_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT);
+DECL_TYPE(iimage2DMSArray, GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT);
+DECL_TYPE(uimage1D, GL_UNSIGNED_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimage2D, GL_UNSIGNED_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimage3D, GL_UNSIGNED_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimage2DRect, GL_UNSIGNED_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimageCube, GL_UNSIGNED_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimageBuffer, GL_UNSIGNED_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimage1DArray, GL_UNSIGNED_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT);
+DECL_TYPE(uimage2DArray, GL_UNSIGNED_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT);
+DECL_TYPE(uimageCubeArray, GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT);
+DECL_TYPE(uimage2DMS, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT);
+DECL_TYPE(uimage2DMSArray, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT);
DECL_TYPE(atomic_uint, GL_UNSIGNED_INT_ATOMIC_COUNTER, GLSL_TYPE_ATOMIC_UINT, 1, 1)
diff --git a/mesalib/src/glsl/builtin_types.cpp b/mesalib/src/glsl/builtin_types.cpp
index 92e386057..dd42ecb05 100644
--- a/mesalib/src/glsl/builtin_types.cpp
+++ b/mesalib/src/glsl/builtin_types.cpp
@@ -204,6 +204,40 @@ const static struct builtin_type_versions {
T(struct_gl_DepthRangeParameters, 110, 100)
+ T(image1D, 420, 999)
+ T(image2D, 420, 999)
+ T(image3D, 420, 999)
+ T(image2DRect, 420, 999)
+ T(imageCube, 420, 999)
+ T(imageBuffer, 420, 999)
+ T(image1DArray, 420, 999)
+ T(image2DArray, 420, 999)
+ T(imageCubeArray, 420, 999)
+ T(image2DMS, 420, 999)
+ T(image2DMSArray, 420, 999)
+ T(iimage1D, 420, 999)
+ T(iimage2D, 420, 999)
+ T(iimage3D, 420, 999)
+ T(iimage2DRect, 420, 999)
+ T(iimageCube, 420, 999)
+ T(iimageBuffer, 420, 999)
+ T(iimage1DArray, 420, 999)
+ T(iimage2DArray, 420, 999)
+ T(iimageCubeArray, 420, 999)
+ T(iimage2DMS, 420, 999)
+ T(iimage2DMSArray, 420, 999)
+ T(uimage1D, 420, 999)
+ T(uimage2D, 420, 999)
+ T(uimage3D, 420, 999)
+ T(uimage2DRect, 420, 999)
+ T(uimageCube, 420, 999)
+ T(uimageBuffer, 420, 999)
+ T(uimage1DArray, 420, 999)
+ T(uimage2DArray, 420, 999)
+ T(uimageCubeArray, 420, 999)
+ T(uimage2DMS, 420, 999)
+ T(uimage2DMSArray, 420, 999)
+
T(atomic_uint, 420, 999)
};
@@ -287,6 +321,42 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state)
add_type(symbols, glsl_type::sampler3D_type);
}
+ if (state->ARB_shader_image_load_store_enable) {
+ add_type(symbols, glsl_type::image1D_type);
+ add_type(symbols, glsl_type::image2D_type);
+ add_type(symbols, glsl_type::image3D_type);
+ add_type(symbols, glsl_type::image2DRect_type);
+ add_type(symbols, glsl_type::imageCube_type);
+ add_type(symbols, glsl_type::imageBuffer_type);
+ add_type(symbols, glsl_type::image1DArray_type);
+ add_type(symbols, glsl_type::image2DArray_type);
+ add_type(symbols, glsl_type::imageCubeArray_type);
+ add_type(symbols, glsl_type::image2DMS_type);
+ add_type(symbols, glsl_type::image2DMSArray_type);
+ add_type(symbols, glsl_type::iimage1D_type);
+ add_type(symbols, glsl_type::iimage2D_type);
+ add_type(symbols, glsl_type::iimage3D_type);
+ add_type(symbols, glsl_type::iimage2DRect_type);
+ add_type(symbols, glsl_type::iimageCube_type);
+ add_type(symbols, glsl_type::iimageBuffer_type);
+ add_type(symbols, glsl_type::iimage1DArray_type);
+ add_type(symbols, glsl_type::iimage2DArray_type);
+ add_type(symbols, glsl_type::iimageCubeArray_type);
+ add_type(symbols, glsl_type::iimage2DMS_type);
+ add_type(symbols, glsl_type::iimage2DMSArray_type);
+ add_type(symbols, glsl_type::uimage1D_type);
+ add_type(symbols, glsl_type::uimage2D_type);
+ add_type(symbols, glsl_type::uimage3D_type);
+ add_type(symbols, glsl_type::uimage2DRect_type);
+ add_type(symbols, glsl_type::uimageCube_type);
+ add_type(symbols, glsl_type::uimageBuffer_type);
+ add_type(symbols, glsl_type::uimage1DArray_type);
+ add_type(symbols, glsl_type::uimage2DArray_type);
+ add_type(symbols, glsl_type::uimageCubeArray_type);
+ add_type(symbols, glsl_type::uimage2DMS_type);
+ add_type(symbols, glsl_type::uimage2DMSArray_type);
+ }
+
if (state->ARB_shader_atomic_counters_enable) {
add_type(symbols, glsl_type::atomic_uint_type);
}
diff --git a/mesalib/src/glsl/builtin_variables.cpp b/mesalib/src/glsl/builtin_variables.cpp
index cc423383d..4176ae6e6 100644
--- a/mesalib/src/glsl/builtin_variables.cpp
+++ b/mesalib/src/glsl/builtin_variables.cpp
@@ -711,6 +711,26 @@ builtin_variable_generator::generate_constants()
* in ast_cs_input_layout::hir().
*/
}
+
+ if (state->is_version(420, 0) ||
+ state->ARB_shader_image_load_store_enable) {
+ add_const("gl_MaxImageUnits",
+ state->Const.MaxImageUnits);
+ add_const("gl_MaxCombinedImageUnitsAndFragmentOutputs",
+ state->Const.MaxCombinedImageUnitsAndFragmentOutputs);
+ add_const("gl_MaxImageSamples",
+ state->Const.MaxImageSamples);
+ add_const("gl_MaxVertexImageUniforms",
+ state->Const.MaxVertexImageUniforms);
+ add_const("gl_MaxTessControlImageUniforms", 0);
+ add_const("gl_MaxTessEvaluationImageUniforms", 0);
+ add_const("gl_MaxGeometryImageUniforms",
+ state->Const.MaxGeometryImageUniforms);
+ add_const("gl_MaxFragmentImageUniforms",
+ state->Const.MaxFragmentImageUniforms);
+ add_const("gl_MaxCombinedImageUniforms",
+ state->Const.MaxCombinedImageUniforms);
+ }
}
@@ -834,6 +854,8 @@ builtin_variable_generator::generate_gs_special_vars()
add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer");
if (state->ARB_viewport_array_enable)
add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex");
+ if (state->ARB_gpu_shader5_enable)
+ add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, "gl_InvocationID");
/* Although gl_PrimitiveID appears in tessellation control and tessellation
* evaluation shaders, it has a different function there than it has in
diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y
index eeafa4d39..f28d8531e 100644
--- a/mesalib/src/glsl/glcpp/glcpp-parse.y
+++ b/mesalib/src/glsl/glcpp/glcpp-parse.y
@@ -1770,11 +1770,27 @@ static void
_check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc,
const char *identifier)
{
- /* According to the GLSL specification, macro names starting with "__"
- * or "GL_" are reserved for future use. So, don't allow them.
+ /* Section 3.3 (Preprocessor) of the GLSL 1.30 spec (and later) and
+ * the GLSL ES spec (all versions) say:
+ *
+ * "All macro names containing two consecutive underscores ( __ )
+ * are reserved for future use as predefined macro names. All
+ * macro names prefixed with "GL_" ("GL" followed by a single
+ * underscore) are also reserved."
+ *
+ * The intention is that names containing __ are reserved for internal
+ * use by the implementation, and names prefixed with GL_ are reserved
+ * for use by Khronos. Since every extension adds a name prefixed
+ * with GL_ (i.e., the name of the extension), that should be an
+ * error. Names simply containing __ are dangerous to use, but should
+ * be allowed.
+ *
+ * A future version of the GLSL specification will clarify this.
*/
if (strstr(identifier, "__")) {
- glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n");
+ glcpp_warning(loc, parser,
+ "Macro names containing \"__\" are reserved "
+ "for use by the implementation.\n");
}
if (strncmp(identifier, "GL_", 3) == 0) {
glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n");
@@ -2118,6 +2134,9 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio
if (extensions->ARB_texture_gather)
add_builtin_define(parser, "GL_ARB_texture_gather", 1);
+ if (extensions->ARB_separate_shader_objects)
+ add_builtin_define(parser, "GL_ARB_separate_shader_objects", 1);
+
if (extensions->ARB_shader_atomic_counters)
add_builtin_define(parser, "GL_ARB_shader_atomic_counters", 1);
@@ -2126,6 +2145,9 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio
if (extensions->ARB_compute_shader)
add_builtin_define(parser, "GL_ARB_compute_shader", 1);
+
+ if (extensions->ARB_shader_image_load_store)
+ add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1);
}
}
diff --git a/mesalib/src/glsl/glcpp/glcpp.c b/mesalib/src/glsl/glcpp/glcpp.c
index 0144be85b..0144be85b 100755..100644
--- a/mesalib/src/glsl/glcpp/glcpp.c
+++ b/mesalib/src/glsl/glcpp/glcpp.c
diff --git a/mesalib/src/glsl/glsl_lexer.ll b/mesalib/src/glsl/glsl_lexer.ll
index 3208b32da..9fd9b80d3 100644
--- a/mesalib/src/glsl/glsl_lexer.ll
+++ b/mesalib/src/glsl/glsl_lexer.ll
@@ -337,6 +337,51 @@ samplerExternalOES {
return IDENTIFIER;
}
+ /* keywords available with ARB_shader_image_load_store */
+image1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D);
+image2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D);
+image3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D);
+image2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT);
+imageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE);
+imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER);
+image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY);
+image2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY);
+imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY);
+image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS);
+image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY);
+iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D);
+iimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D);
+iimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D);
+iimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT);
+iimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE);
+iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER);
+iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY);
+iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY);
+iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY);
+iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS);
+iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY);
+uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D);
+uimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D);
+uimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D);
+uimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT);
+uimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE);
+uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER);
+uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY);
+uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY);
+uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY);
+uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS);
+uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY);
+image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
+image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
+image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
+image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
+
+coherent KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT);
+volatile KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE);
+restrict KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT);
+readonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY);
+writeonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY);
+
atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT);
struct return STRUCT;
@@ -347,6 +392,7 @@ layout {
|| yyextra->AMD_conservative_depth_enable
|| yyextra->ARB_conservative_depth_enable
|| yyextra->ARB_explicit_attrib_location_enable
+ || yyextra->has_separate_shader_objects()
|| yyextra->ARB_uniform_buffer_object_enable
|| yyextra->ARB_fragment_coord_conventions_enable
|| yyextra->ARB_shading_language_420pack_enable
@@ -436,7 +482,6 @@ switch KEYWORD(110, 100, 130, 300, SWITCH);
default KEYWORD(110, 100, 130, 300, DEFAULT);
inline KEYWORD(110, 100, 0, 0, INLINE_TOK);
noinline KEYWORD(110, 100, 0, 0, NOINLINE);
-volatile KEYWORD(110, 100, 0, 0, VOLATILE);
public KEYWORD(110, 100, 0, 0, PUBLIC_TOK);
static KEYWORD(110, 100, 0, 0, STATIC);
extern KEYWORD(110, 100, 0, 0, EXTERN);
@@ -481,31 +526,6 @@ active KEYWORD(130, 300, 0, 0, ACTIVE);
superp KEYWORD(130, 100, 0, 0, SUPERP);
samplerBuffer KEYWORD(130, 300, 140, 0, SAMPLERBUFFER);
filter KEYWORD(130, 300, 0, 0, FILTER);
-image1D KEYWORD(130, 300, 0, 0, IMAGE1D);
-image2D KEYWORD(130, 300, 0, 0, IMAGE2D);
-image3D KEYWORD(130, 300, 0, 0, IMAGE3D);
-imageCube KEYWORD(130, 300, 0, 0, IMAGECUBE);
-iimage1D KEYWORD(130, 300, 0, 0, IIMAGE1D);
-iimage2D KEYWORD(130, 300, 0, 0, IIMAGE2D);
-iimage3D KEYWORD(130, 300, 0, 0, IIMAGE3D);
-iimageCube KEYWORD(130, 300, 0, 0, IIMAGECUBE);
-uimage1D KEYWORD(130, 300, 0, 0, UIMAGE1D);
-uimage2D KEYWORD(130, 300, 0, 0, UIMAGE2D);
-uimage3D KEYWORD(130, 300, 0, 0, UIMAGE3D);
-uimageCube KEYWORD(130, 300, 0, 0, UIMAGECUBE);
-image1DArray KEYWORD(130, 300, 0, 0, IMAGE1DARRAY);
-image2DArray KEYWORD(130, 300, 0, 0, IMAGE2DARRAY);
-iimage1DArray KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY);
-iimage2DArray KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY);
-uimage1DArray KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY);
-uimage2DArray KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY);
-image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW);
-image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW);
-image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW);
-image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW);
-imageBuffer KEYWORD(130, 300, 0, 0, IMAGEBUFFER);
-iimageBuffer KEYWORD(130, 300, 0, 0, IIMAGEBUFFER);
-uimageBuffer KEYWORD(130, 300, 0, 0, UIMAGEBUFFER);
row_major KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR);
/* Additional reserved words in GLSL 1.40 */
@@ -515,10 +535,6 @@ isamplerBuffer KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER);
usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER);
/* Additional reserved words in GLSL ES 3.00 */
-coherent KEYWORD(0, 300, 0, 0, COHERENT);
-restrict KEYWORD(0, 300, 0, 0, RESTRICT);
-readonly KEYWORD(0, 300, 0, 0, READONLY);
-writeonly KEYWORD(0, 300, 0, 0, WRITEONLY);
resource KEYWORD(0, 300, 0, 0, RESOURCE);
patch KEYWORD(0, 300, 0, 0, PATCH);
sample KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE);
diff --git a/mesalib/src/glsl/glsl_parser.yy b/mesalib/src/glsl/glsl_parser.yy
index c4d01a8cd..8751524c2 100644
--- a/mesalib/src/glsl/glsl_parser.yy
+++ b/mesalib/src/glsl/glsl_parser.yy
@@ -146,6 +146,14 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
%token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS
%token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY
%token SAMPLEREXTERNALOES
+%token IMAGE1D IMAGE2D IMAGE3D IMAGE2DRECT IMAGECUBE IMAGEBUFFER
+%token IMAGE1DARRAY IMAGE2DARRAY IMAGECUBEARRAY IMAGE2DMS IMAGE2DMSARRAY
+%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGE2DRECT IIMAGECUBE IIMAGEBUFFER
+%token IIMAGE1DARRAY IIMAGE2DARRAY IIMAGECUBEARRAY IIMAGE2DMS IIMAGE2DMSARRAY
+%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGE2DRECT UIMAGECUBE UIMAGEBUFFER
+%token UIMAGE1DARRAY UIMAGE2DARRAY UIMAGECUBEARRAY UIMAGE2DMS UIMAGE2DMSARRAY
+%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW
+%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY
%token ATOMIC_UINT
%token STRUCT VOID_TOK WHILE
%token <identifier> IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER
@@ -171,23 +179,17 @@ static bool match_layout_qualifier(const char *s1, const char *s2,
/* Reserved words that are not actually used in the grammar.
*/
%token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO
-%token INLINE_TOK NOINLINE VOLATILE PUBLIC_TOK STATIC EXTERN EXTERNAL
+%token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL
%token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK OUPTUT
%token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4
%token SAMPLER3DRECT
%token SIZEOF CAST NAMESPACE USING
-%token COHERENT RESTRICT READONLY WRITEONLY RESOURCE PATCH SAMPLE
+%token RESOURCE PATCH SAMPLE
%token SUBROUTINE
%token ERROR_TOK
-%token COMMON PARTITION ACTIVE FILTER
-%token IMAGE1D IMAGE2D IMAGE3D IMAGECUBE IMAGE1DARRAY IMAGE2DARRAY
-%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY
-%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY
-%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER
-%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW
-%token ROW_MAJOR
+%token COMMON PARTITION ACTIVE FILTER ROW_MAJOR
%type <identifier> variable_identifier
%type <node> statement
@@ -1230,6 +1232,72 @@ layout_qualifier_id:
}
}
+ /* Layout qualifiers for ARB_shader_image_load_store. */
+ if (state->ARB_shader_image_load_store_enable ||
+ state->is_version(420, 0)) {
+ if (!$$.flags.i) {
+ static const struct {
+ const char *name;
+ GLenum format;
+ glsl_base_type base_type;
+ } map[] = {
+ { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT },
+ { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT },
+ { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT },
+ { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT },
+ { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT },
+ { "r32f", GL_R32F, GLSL_TYPE_FLOAT },
+ { "r16f", GL_R16F, GLSL_TYPE_FLOAT },
+ { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT },
+ { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT },
+ { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT },
+ { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT },
+ { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT },
+ { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT },
+ { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT },
+ { "r32ui", GL_R32UI, GLSL_TYPE_UINT },
+ { "r16ui", GL_R16UI, GLSL_TYPE_UINT },
+ { "r8ui", GL_R8UI, GLSL_TYPE_UINT },
+ { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT },
+ { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT },
+ { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT },
+ { "rg32i", GL_RG32I, GLSL_TYPE_INT },
+ { "rg16i", GL_RG16I, GLSL_TYPE_INT },
+ { "rg8i", GL_RG8I, GLSL_TYPE_INT },
+ { "r32i", GL_R32I, GLSL_TYPE_INT },
+ { "r16i", GL_R16I, GLSL_TYPE_INT },
+ { "r8i", GL_R8I, GLSL_TYPE_INT },
+ { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT },
+ { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT },
+ { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT },
+ { "rg16", GL_RG16, GLSL_TYPE_FLOAT },
+ { "rg8", GL_RG8, GLSL_TYPE_FLOAT },
+ { "r16", GL_R16, GLSL_TYPE_FLOAT },
+ { "r8", GL_R8, GLSL_TYPE_FLOAT },
+ { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT },
+ { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT },
+ { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT },
+ { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT },
+ { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT },
+ { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT }
+ };
+
+ for (unsigned i = 0; i < Elements(map); i++) {
+ if (match_layout_qualifier($1, map[i].name, state) == 0) {
+ $$.flags.q.explicit_image_format = 1;
+ $$.image_format = map[i].format;
+ $$.image_base_type = map[i].base_type;
+ break;
+ }
+ }
+ }
+
+ if (!$$.flags.i &&
+ match_layout_qualifier($1, "early_fragment_tests", state) == 0) {
+ $$.flags.q.early_fragment_tests = 1;
+ }
+ }
+
if (!$$.flags.i) {
_mesa_glsl_error(& @1, state, "unrecognized layout identifier "
"`%s'", $1);
@@ -1320,6 +1388,29 @@ layout_qualifier_id:
}
}
+ if (match_layout_qualifier("invocations", $1, state) == 0) {
+ $$.flags.q.invocations = 1;
+
+ if ($3 <= 0) {
+ _mesa_glsl_error(& @3, state,
+ "invalid invocations %d specified", $3);
+ YYERROR;
+ } else if ($3 > MAX_GEOMETRY_SHADER_INVOCATIONS) {
+ _mesa_glsl_error(& @3, state,
+ "invocations (%d) exceeds "
+ "GL_MAX_GEOMETRY_SHADER_INVOCATIONS", $3);
+ YYERROR;
+ } else {
+ $$.invocations = $3;
+ if (!state->is_version(400, 0) &&
+ !state->ARB_gpu_shader5_enable) {
+ _mesa_glsl_error(& @3, state,
+ "GL_ARB_gpu_shader5 invocations "
+ "qualifier specified", $3);
+ }
+ }
+ }
+
/* If the identifier didn't match any known layout identifiers,
* emit an error.
*/
@@ -1574,6 +1665,32 @@ storage_qualifier:
memset(& $$, 0, sizeof($$));
$$.flags.q.uniform = 1;
}
+ | COHERENT
+ {
+ memset(& $$, 0, sizeof($$));
+ $$.flags.q.coherent = 1;
+ }
+ | VOLATILE
+ {
+ memset(& $$, 0, sizeof($$));
+ $$.flags.q._volatile = 1;
+ }
+ | RESTRICT
+ {
+ STATIC_ASSERT(sizeof($$.flags.q) <= sizeof($$.flags.i));
+ memset(& $$, 0, sizeof($$));
+ $$.flags.q.restrict_flag = 1;
+ }
+ | READONLY
+ {
+ memset(& $$, 0, sizeof($$));
+ $$.flags.q.read_only = 1;
+ }
+ | WRITEONLY
+ {
+ memset(& $$, 0, sizeof($$));
+ $$.flags.q.write_only = 1;
+ }
;
array_specifier:
@@ -1713,6 +1830,39 @@ basic_type_specifier_nonarray:
| SAMPLER2DMSARRAY { $$ = "sampler2DMSArray"; }
| ISAMPLER2DMSARRAY { $$ = "isampler2DMSArray"; }
| USAMPLER2DMSARRAY { $$ = "usampler2DMSArray"; }
+ | IMAGE1D { $$ = "image1D"; }
+ | IMAGE2D { $$ = "image2D"; }
+ | IMAGE3D { $$ = "image3D"; }
+ | IMAGE2DRECT { $$ = "image2DRect"; }
+ | IMAGECUBE { $$ = "imageCube"; }
+ | IMAGEBUFFER { $$ = "imageBuffer"; }
+ | IMAGE1DARRAY { $$ = "image1DArray"; }
+ | IMAGE2DARRAY { $$ = "image2DArray"; }
+ | IMAGECUBEARRAY { $$ = "imageCubeArray"; }
+ | IMAGE2DMS { $$ = "image2DMS"; }
+ | IMAGE2DMSARRAY { $$ = "image2DMSArray"; }
+ | IIMAGE1D { $$ = "iimage1D"; }
+ | IIMAGE2D { $$ = "iimage2D"; }
+ | IIMAGE3D { $$ = "iimage3D"; }
+ | IIMAGE2DRECT { $$ = "iimage2DRect"; }
+ | IIMAGECUBE { $$ = "iimageCube"; }
+ | IIMAGEBUFFER { $$ = "iimageBuffer"; }
+ | IIMAGE1DARRAY { $$ = "iimage1DArray"; }
+ | IIMAGE2DARRAY { $$ = "iimage2DArray"; }
+ | IIMAGECUBEARRAY { $$ = "iimageCubeArray"; }
+ | IIMAGE2DMS { $$ = "iimage2DMS"; }
+ | IIMAGE2DMSARRAY { $$ = "iimage2DMSArray"; }
+ | UIMAGE1D { $$ = "uimage1D"; }
+ | UIMAGE2D { $$ = "uimage2D"; }
+ | UIMAGE3D { $$ = "uimage3D"; }
+ | UIMAGE2DRECT { $$ = "uimage2DRect"; }
+ | UIMAGECUBE { $$ = "uimageCube"; }
+ | UIMAGEBUFFER { $$ = "uimageBuffer"; }
+ | UIMAGE1DARRAY { $$ = "uimage1DArray"; }
+ | UIMAGE2DARRAY { $$ = "uimage2DArray"; }
+ | UIMAGECUBEARRAY { $$ = "uimageCubeArray"; }
+ | UIMAGE2DMS { $$ = "uimage2DMS"; }
+ | UIMAGE2DMSARRAY { $$ = "uimage2DMSArray"; }
| ATOMIC_UINT { $$ = "atomic_uint"; }
;
@@ -2229,7 +2379,7 @@ basic_interface_block:
"an instance name are not allowed");
}
- unsigned interface_type_mask;
+ uint64_t interface_type_mask;
struct ast_type_qualifier temp_type_qualifier;
/* Get a bitmask containing only the in/out/uniform flags, allowing us
@@ -2245,7 +2395,7 @@ basic_interface_block:
* production rule guarantees that only one bit will be set (and
* it will be in/out/uniform).
*/
- unsigned block_interface_qualifier = $1.flags.i;
+ uint64_t block_interface_qualifier = $1.flags.i;
block->layout.flags.i |= block_interface_qualifier;
@@ -2361,55 +2511,9 @@ layout_defaults:
| layout_qualifier IN_TOK ';'
{
- void *ctx = state;
$$ = NULL;
- switch (state->stage) {
- case MESA_SHADER_GEOMETRY: {
- if (!$1.flags.q.prim_type) {
- _mesa_glsl_error(& @1, state,
- "input layout qualifiers must specify a primitive"
- " type");
- } else {
- /* Make sure this is a valid input primitive type. */
- switch ($1.prim_type) {
- case GL_POINTS:
- case GL_LINES:
- case GL_LINES_ADJACENCY:
- case GL_TRIANGLES:
- case GL_TRIANGLES_ADJACENCY:
- $$ = new(ctx) ast_gs_input_layout(@1, $1.prim_type);
- break;
- default:
- _mesa_glsl_error(&@1, state,
- "invalid geometry shader input primitive type");
- break;
- }
- }
- }
- break;
- case MESA_SHADER_COMPUTE: {
- if ($1.flags.q.local_size == 0) {
- _mesa_glsl_error(& @1, state,
- "input layout qualifiers must specify a local "
- "size");
- } else {
- /* Infer a local_size of 1 for every unspecified dimension */
- unsigned local_size[3];
- for (int i = 0; i < 3; i++) {
- if ($1.flags.q.local_size & (1 << i))
- local_size[i] = $1.local_size[i];
- else
- local_size[i] = 1;
- }
- $$ = new(ctx) ast_cs_input_layout(@1, local_size);
- }
- }
- break;
- default:
- _mesa_glsl_error(& @1, state,
- "input layout qualifiers only valid in "
- "geometry and compute shaders");
- break;
+ if (!state->in_qualifier->merge_in_qualifier(& @1, state, $1, $$)) {
+ YYERROR;
}
}
diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp
index b822d2292..d7f5202fe 100644
--- a/mesalib/src/glsl/glsl_parser_extras.cpp
+++ b/mesalib/src/glsl/glsl_parser_extras.cpp
@@ -130,6 +130,14 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupSize); i++)
this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i];
+ this->Const.MaxImageUnits = ctx->Const.MaxImageUnits;
+ this->Const.MaxCombinedImageUnitsAndFragmentOutputs = ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs;
+ this->Const.MaxImageSamples = ctx->Const.MaxImageSamples;
+ this->Const.MaxVertexImageUniforms = ctx->Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms;
+ this->Const.MaxGeometryImageUniforms = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxImageUniforms;
+ this->Const.MaxFragmentImageUniforms = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms;
+ this->Const.MaxCombinedImageUniforms = ctx->Const.MaxCombinedImageUniforms;
+
this->current_function = NULL;
this->toplevel_ir = NULL;
this->found_return = false;
@@ -194,9 +202,10 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx,
this->default_uniform_qualifier->flags.q.column_major = 1;
this->gs_input_prim_type_specified = false;
- this->gs_input_prim_type = GL_POINTS;
this->gs_input_size = 0;
+ this->in_qualifier = new(this) ast_type_qualifier();
this->out_qualifier = new(this) ast_type_qualifier();
+ this->early_fragment_tests = false;
memset(this->atomic_counter_offsets, 0,
sizeof(this->atomic_counter_offsets));
}
@@ -503,6 +512,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(ARB_fragment_coord_conventions, true, false, ARB_fragment_coord_conventions),
EXT(ARB_texture_rectangle, true, false, dummy_true),
EXT(EXT_texture_array, true, false, EXT_texture_array),
+ EXT(ARB_separate_shader_objects, true, false, ARB_separate_shader_objects),
EXT(ARB_shader_texture_lod, true, false, ARB_shader_texture_lod),
EXT(ARB_shader_stencil_export, true, false, ARB_shader_stencil_export),
EXT(AMD_conservative_depth, true, false, ARB_conservative_depth),
@@ -527,6 +537,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(AMD_shader_trinary_minmax, true, false, dummy_true),
EXT(ARB_viewport_array, true, false, ARB_viewport_array),
EXT(ARB_compute_shader, true, false, ARB_compute_shader),
+ EXT(ARB_shader_image_load_store, true, false, ARB_shader_image_load_store),
};
#undef EXT
@@ -1338,7 +1349,7 @@ set_shader_inout_layout(struct gl_shader *shader,
{
if (shader->Stage != MESA_SHADER_GEOMETRY) {
/* Should have been prevented by the parser. */
- assert(!state->gs_input_prim_type_specified);
+ assert(!state->in_qualifier->flags.i);
assert(!state->out_qualifier->flags.i);
}
@@ -1354,7 +1365,7 @@ set_shader_inout_layout(struct gl_shader *shader,
shader->Geom.VerticesOut = state->out_qualifier->max_vertices;
if (state->gs_input_prim_type_specified) {
- shader->Geom.InputType = state->gs_input_prim_type;
+ shader->Geom.InputType = state->in_qualifier->prim_type;
} else {
shader->Geom.InputType = PRIM_UNKNOWN;
}
@@ -1364,6 +1375,10 @@ set_shader_inout_layout(struct gl_shader *shader,
} else {
shader->Geom.OutputType = PRIM_UNKNOWN;
}
+
+ shader->Geom.Invocations = 0;
+ if (state->in_qualifier->flags.q.invocations)
+ shader->Geom.Invocations = state->in_qualifier->invocations;
break;
case MESA_SHADER_COMPUTE:
@@ -1419,7 +1434,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader,
/* Print out the unoptimized IR. */
if (dump_hir) {
- _mesa_print_ir(shader->ir, state);
+ _mesa_print_ir(stdout, shader->ir, state);
}
}
diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h
index 7b0fbbfa1..2e22c8c91 100644
--- a/mesalib/src/glsl/glsl_parser_extras.h
+++ b/mesalib/src/glsl/glsl_parser_extras.h
@@ -139,6 +139,23 @@ struct _mesa_glsl_parse_state {
return true;
}
+ bool check_separate_shader_objects_allowed(YYLTYPE *locp,
+ const ir_variable *var)
+ {
+ if (!this->has_separate_shader_objects()) {
+ const char *const requirement = this->es_shader
+ ? "GL_EXT_separate_shader_objects (not supported by this "
+ "implementation)"
+ : "GL_ARB_separate_shader_objects extension or GLSL 420";
+
+ _mesa_glsl_error(locp, this, "%s explicit location requires %s",
+ mode_string(var), requirement);
+ return false;
+ }
+
+ return true;
+ }
+
bool has_explicit_attrib_location() const
{
return ARB_explicit_attrib_location_enable || is_version(330, 300);
@@ -149,6 +166,11 @@ struct _mesa_glsl_parse_state {
return ARB_uniform_buffer_object_enable || is_version(140, 300);
}
+ bool has_separate_shader_objects() const
+ {
+ return ARB_separate_shader_objects_enable || is_version(410, 0);
+ }
+
void process_version_directive(YYLTYPE *locp, int version,
const char *ident);
@@ -194,11 +216,8 @@ struct _mesa_glsl_parse_state {
*/
bool gs_input_prim_type_specified;
- /**
- * If gs_input_prim_type_specified is true, the primitive type that was
- * specified. Otherwise ignored.
- */
- GLenum gs_input_prim_type;
+ /** Input layout qualifiers from GLSL 1.50. (geometry shader controls)*/
+ struct ast_type_qualifier *in_qualifier;
/**
* True if a compute shader input local size was specified using a layout
@@ -273,6 +292,15 @@ struct _mesa_glsl_parse_state {
/* ARB_compute_shader */
unsigned MaxComputeWorkGroupCount[3];
unsigned MaxComputeWorkGroupSize[3];
+
+ /* ARB_shader_image_load_store */
+ unsigned MaxImageUnits;
+ unsigned MaxCombinedImageUnitsAndFragmentOutputs;
+ unsigned MaxImageSamples;
+ unsigned MaxVertexImageUniforms;
+ unsigned MaxGeometryImageUniforms;
+ unsigned MaxFragmentImageUniforms;
+ unsigned MaxCombinedImageUniforms;
} Const;
/**
@@ -333,6 +361,8 @@ struct _mesa_glsl_parse_state {
bool ARB_texture_gather_warn;
bool EXT_texture_array_enable;
bool EXT_texture_array_warn;
+ bool ARB_separate_shader_objects_enable;
+ bool ARB_separate_shader_objects_warn;
bool ARB_shader_texture_lod_enable;
bool ARB_shader_texture_lod_warn;
bool ARB_shader_stencil_export_enable;
@@ -381,6 +411,8 @@ struct _mesa_glsl_parse_state {
bool ARB_viewport_array_warn;
bool ARB_compute_shader_enable;
bool ARB_compute_shader_warn;
+ bool ARB_shader_image_load_store_enable;
+ bool ARB_shader_image_load_store_warn;
/*@}*/
/** Extensions supported by the OpenGL implementation. */
@@ -397,6 +429,8 @@ struct _mesa_glsl_parse_state {
*/
unsigned gs_input_size;
+ bool early_fragment_tests;
+
/** Atomic counter offsets by binding */
unsigned atomic_counter_offsets[MAX_COMBINED_ATOMIC_BUFFERS];
};
diff --git a/mesalib/src/glsl/glsl_types.cpp b/mesalib/src/glsl/glsl_types.cpp
index 1b0b3ef88..849a79af4 100644
--- a/mesalib/src/glsl/glsl_types.cpp
+++ b/mesalib/src/glsl/glsl_types.cpp
@@ -64,20 +64,26 @@ glsl_type::glsl_type(GLenum gl_type,
memset(& fields, 0, sizeof(fields));
}
-glsl_type::glsl_type(GLenum gl_type,
+glsl_type::glsl_type(GLenum gl_type, glsl_base_type base_type,
enum glsl_sampler_dim dim, bool shadow, bool array,
unsigned type, const char *name) :
gl_type(gl_type),
- base_type(GLSL_TYPE_SAMPLER),
+ base_type(base_type),
sampler_dimensionality(dim), sampler_shadow(shadow),
sampler_array(array), sampler_type(type), interface_packing(0),
- vector_elements(0), matrix_columns(0),
length(0)
{
init_ralloc_type_ctx();
assert(name != NULL);
this->name = ralloc_strdup(this->mem_ctx, name);
memset(& fields, 0, sizeof(fields));
+
+ if (base_type == GLSL_TYPE_SAMPLER) {
+ /* Samplers take no storage whatsoever. */
+ matrix_columns = vector_elements = 0;
+ } else {
+ matrix_columns = vector_elements = 1;
+ }
}
glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields,
@@ -174,6 +180,7 @@ bool
glsl_type::contains_opaque() const {
switch (base_type) {
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
case GLSL_TYPE_ATOMIC_UINT:
return true;
case GLSL_TYPE_ARRAY:
@@ -219,6 +226,21 @@ glsl_type::sampler_index() const
}
}
+bool
+glsl_type::contains_image() const
+{
+ if (this->is_array()) {
+ return this->fields.array->contains_image();
+ } else if (this->is_record()) {
+ for (unsigned int i = 0; i < this->length; i++) {
+ if (this->fields.structure[i].type->contains_image())
+ return true;
+ }
+ return false;
+ } else {
+ return this->is_image();
+ }
+}
const glsl_type *glsl_type::get_base_type() const
{
@@ -642,6 +664,9 @@ glsl_type::component_slots() const
case GLSL_TYPE_ARRAY:
return this->length * this->fields.array->component_slots();
+ case GLSL_TYPE_IMAGE:
+ return 1;
+
case GLSL_TYPE_SAMPLER:
case GLSL_TYPE_ATOMIC_UINT:
case GLSL_TYPE_VOID:
@@ -932,6 +957,7 @@ glsl_type::count_attribute_slots() const
return this->length * this->fields.array->count_attribute_slots();
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
case GLSL_TYPE_ATOMIC_UINT:
case GLSL_TYPE_VOID:
case GLSL_TYPE_ERROR:
@@ -944,10 +970,8 @@ glsl_type::count_attribute_slots() const
}
int
-glsl_type::sampler_coordinate_components() const
+glsl_type::coordinate_components() const
{
- assert(is_sampler());
-
int size;
switch (sampler_dimensionality) {
diff --git a/mesalib/src/glsl/glsl_types.h b/mesalib/src/glsl/glsl_types.h
index f88758a9a..ae3829f30 100644
--- a/mesalib/src/glsl/glsl_types.h
+++ b/mesalib/src/glsl/glsl_types.h
@@ -53,6 +53,7 @@ enum glsl_base_type {
GLSL_TYPE_FLOAT,
GLSL_TYPE_BOOL,
GLSL_TYPE_SAMPLER,
+ GLSL_TYPE_IMAGE,
GLSL_TYPE_ATOMIC_UINT,
GLSL_TYPE_STRUCT,
GLSL_TYPE_INTERFACE,
@@ -89,8 +90,9 @@ struct glsl_type {
unsigned sampler_dimensionality:3; /**< \see glsl_sampler_dim */
unsigned sampler_shadow:1;
unsigned sampler_array:1;
- unsigned sampler_type:2; /**< Type of data returned using this sampler.
- * only \c GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT,
+ unsigned sampler_type:2; /**< Type of data returned using this
+ * sampler or image. Only \c
+ * GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT,
* and \c GLSL_TYPE_UINT are valid.
*/
unsigned interface_packing:2;
@@ -402,6 +404,20 @@ struct glsl_type {
gl_texture_index sampler_index() const;
/**
+ * Query whether or not type is an image, or for struct and array
+ * types, contains an image.
+ */
+ bool contains_image() const;
+
+ /**
+ * Query whether or not a type is an image
+ */
+ bool is_image() const
+ {
+ return base_type == GLSL_TYPE_IMAGE;
+ }
+
+ /**
* Query whether or not a type is an array
*/
bool is_array() const
@@ -531,7 +547,8 @@ struct glsl_type {
}
/**
- * Return the number of coordinate components needed for this sampler type.
+ * Return the number of coordinate components needed for this
+ * sampler or image type.
*
* This is based purely on the sampler's dimensionality. For example, this
* returns 1 for sampler1D, and 3 for sampler2DArray.
@@ -540,7 +557,7 @@ struct glsl_type {
* a texturing built-in function, since those pack additional values (such
* as the shadow comparitor or projector) into the coordinate type.
*/
- int sampler_coordinate_components() const;
+ int coordinate_components() const;
/**
* Compare a record type against another record type.
@@ -564,8 +581,8 @@ private:
glsl_base_type base_type, unsigned vector_elements,
unsigned matrix_columns, const char *name);
- /** Constructor for sampler types */
- glsl_type(GLenum gl_type,
+ /** Constructor for sampler or image types */
+ glsl_type(GLenum gl_type, glsl_base_type base_type,
enum glsl_sampler_dim dim, bool shadow, bool array,
unsigned type, const char *name);
diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp
index 77638ef26..85fbfa9c4 100644
--- a/mesalib/src/glsl/ir.cpp
+++ b/mesalib/src/glsl/ir.cpp
@@ -1311,13 +1311,13 @@ ir_dereference::is_lvalue() const
if ((var == NULL) || var->data.read_only)
return false;
- /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec:
+ /* From section 4.1.7 of the GLSL 4.40 spec:
*
- * "Samplers cannot be treated as l-values; hence cannot be used
- * as out or inout function parameters, nor can they be
- * assigned into."
+ * "Opaque variables cannot be treated as l-values; hence cannot
+ * be used as out or inout function parameters, nor can they be
+ * assigned into."
*/
- if (this->type->contains_sampler())
+ if (this->type->contains_opaque())
return false;
return true;
@@ -1554,6 +1554,11 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
this->data.max_array_access = 0;
this->data.atomic.buffer_index = 0;
this->data.atomic.offset = 0;
+ this->data.image.read_only = false;
+ this->data.image.write_only = false;
+ this->data.image.coherent = false;
+ this->data.image._volatile = false;
+ this->data.image.restrict_flag = false;
if (type != NULL) {
if (type->base_type == GLSL_TYPE_SAMPLER)
@@ -1658,7 +1663,12 @@ ir_function_signature::qualifiers_match(exec_list *params)
!modes_match(a->data.mode, b->data.mode) ||
a->data.interpolation != b->data.interpolation ||
a->data.centroid != b->data.centroid ||
- a->data.sample != b->data.sample) {
+ a->data.sample != b->data.sample ||
+ a->data.image.read_only != b->data.image.read_only ||
+ a->data.image.write_only != b->data.image.write_only ||
+ a->data.image.coherent != b->data.image.coherent ||
+ a->data.image._volatile != b->data.image._volatile ||
+ a->data.image.restrict_flag != b->data.image.restrict_flag) {
/* parameter a's qualifiers don't match */
return a->name;
diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h
index e266328b2..ed3f086ce 100644
--- a/mesalib/src/glsl/ir.h
+++ b/mesalib/src/glsl/ir.h
@@ -106,6 +106,7 @@ public:
/** ir_print_visitor helper for debugging. */
void print(void) const;
+ void fprint(FILE *f) const;
virtual void accept(ir_visitor *) = 0;
virtual ir_visitor_status accept(ir_hierarchical_visitor *) = 0;
@@ -691,6 +692,20 @@ public:
} atomic;
/**
+ * ARB_shader_image_load_store qualifiers.
+ */
+ struct {
+ bool read_only; /**< "readonly" qualifier. */
+ bool write_only; /**< "writeonly" qualifier. */
+ bool coherent;
+ bool _volatile;
+ bool restrict_flag;
+
+ /** Image internal format if specified explicitly, otherwise GL_NONE. */
+ GLenum format;
+ } image;
+
+ /**
* Highest element accessed with a constant expression array index
*
* Not used for non-array variables.
@@ -1444,6 +1459,18 @@ public:
}
/**
+ * Return whether the expression operates on vectors horizontally.
+ */
+ bool is_horizontal() const
+ {
+ return operation == ir_binop_all_equal ||
+ operation == ir_binop_any_nequal ||
+ operation == ir_unop_any ||
+ operation == ir_binop_dot ||
+ operation == ir_quadop_vector;
+ }
+
+ /**
* Return a string representing this expression's operator.
*/
const char *operator_string();
@@ -2339,7 +2366,7 @@ mode_string(const ir_variable *var);
extern "C" {
#endif /* __cplusplus */
-extern void _mesa_print_ir(struct exec_list *instructions,
+extern void _mesa_print_ir(FILE *f, struct exec_list *instructions,
struct _mesa_glsl_parse_state *state);
#ifdef __cplusplus
diff --git a/mesalib/src/glsl/ir_builder.h b/mesalib/src/glsl/ir_builder.h
index f00e6f3b3..f00e6f3b3 100755..100644
--- a/mesalib/src/glsl/ir_builder.h
+++ b/mesalib/src/glsl/ir_builder.h
diff --git a/mesalib/src/glsl/ir_clone.cpp b/mesalib/src/glsl/ir_clone.cpp
index cb732a51a..311c992be 100644
--- a/mesalib/src/glsl/ir_clone.cpp
+++ b/mesalib/src/glsl/ir_clone.cpp
@@ -373,6 +373,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const
}
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
case GLSL_TYPE_ATOMIC_UINT:
case GLSL_TYPE_VOID:
case GLSL_TYPE_ERROR:
diff --git a/mesalib/src/glsl/ir_optimization.h b/mesalib/src/glsl/ir_optimization.h
index 055d65547..5f4a2f405 100644
--- a/mesalib/src/glsl/ir_optimization.h
+++ b/mesalib/src/glsl/ir_optimization.h
@@ -36,9 +36,8 @@
#define LOG_TO_LOG2 0x10
#define MOD_TO_FRACT 0x20
#define INT_DIV_TO_MUL_RCP 0x40
-#define LRP_TO_ARITH 0x80
-#define BITFIELD_INSERT_TO_BFM_BFI 0x100
-#define LDEXP_TO_ARITH 0x200
+#define BITFIELD_INSERT_TO_BFM_BFI 0x80
+#define LDEXP_TO_ARITH 0x100
/**
* \see class lower_packing_builtins_visitor
@@ -120,6 +119,7 @@ bool lower_vector_insert(exec_list *instructions, bool lower_nonconstant_index);
void lower_named_interface_blocks(void *mem_ctx, gl_shader *shader);
bool optimize_redundant_jumps(exec_list *instructions);
bool optimize_split_arrays(exec_list *instructions, bool linked);
+bool lower_offset_arrays(exec_list *instructions);
ir_rvalue *
compare_index_block(exec_list *instructions, ir_variable *index,
diff --git a/mesalib/src/glsl/ir_print_visitor.cpp b/mesalib/src/glsl/ir_print_visitor.cpp
index 935782184..c7786ba9f 100644
--- a/mesalib/src/glsl/ir_print_visitor.cpp
+++ b/mesalib/src/glsl/ir_print_visitor.cpp
@@ -27,52 +27,59 @@
#include "main/macros.h"
#include "program/hash_table.h"
-static void print_type(const glsl_type *t);
+static void print_type(FILE *f, const glsl_type *t);
void
ir_instruction::print(void) const
{
+ this->fprint(stdout);
+}
+
+void
+ir_instruction::fprint(FILE *f) const
+{
ir_instruction *deconsted = const_cast<ir_instruction *>(this);
- ir_print_visitor v;
+ ir_print_visitor v(f);
deconsted->accept(&v);
}
extern "C" {
void
-_mesa_print_ir(exec_list *instructions,
+_mesa_print_ir(FILE *f, exec_list *instructions,
struct _mesa_glsl_parse_state *state)
{
if (state) {
for (unsigned i = 0; i < state->num_user_structures; i++) {
const glsl_type *const s = state->user_structures[i];
- printf("(structure (%s) (%s@%p) (%u) (\n",
- s->name, s->name, (void *) s, s->length);
+ fprintf(f, "(structure (%s) (%s@%p) (%u) (\n",
+ s->name, s->name, (void *) s, s->length);
for (unsigned j = 0; j < s->length; j++) {
- printf("\t((");
- print_type(s->fields.structure[j].type);
- printf(")(%s))\n", s->fields.structure[j].name);
+ fprintf(f, "\t((");
+ print_type(f, s->fields.structure[j].type);
+ fprintf(f, ")(%s))\n", s->fields.structure[j].name);
}
- printf(")\n");
+ fprintf(f, ")\n");
}
}
- printf("(\n");
+ fprintf(f, "(\n");
foreach_list(n, instructions) {
ir_instruction *ir = (ir_instruction *) n;
- ir->print();
+ ir->fprint(f);
if (ir->ir_type != ir_type_function)
- printf("\n");
+ fprintf(f, "\n");
}
- printf("\n)");
+ fprintf(f, "\n)");
}
} /* extern "C" */
-ir_print_visitor::ir_print_visitor()
+ir_print_visitor::ir_print_visitor(FILE *f)
+ : f(f)
{
indentation = 0;
printable_names =
@@ -91,7 +98,7 @@ ir_print_visitor::~ir_print_visitor()
void ir_print_visitor::indent(void)
{
for (int i = 0; i < indentation; i++)
- printf(" ");
+ fprintf(f, " ");
}
const char *
@@ -125,28 +132,28 @@ ir_print_visitor::unique_name(ir_variable *var)
}
static void
-print_type(const glsl_type *t)
+print_type(FILE *f, const glsl_type *t)
{
if (t->base_type == GLSL_TYPE_ARRAY) {
- printf("(array ");
- print_type(t->fields.array);
- printf(" %u)", t->length);
+ fprintf(f, "(array ");
+ print_type(f, t->fields.array);
+ fprintf(f, " %u)", t->length);
} else if ((t->base_type == GLSL_TYPE_STRUCT)
&& (strncmp("gl_", t->name, 3) != 0)) {
- printf("%s@%p", t->name, (void *) t);
+ fprintf(f, "%s@%p", t->name, (void *) t);
} else {
- printf("%s", t->name);
+ fprintf(f, "%s", t->name);
}
}
void ir_print_visitor::visit(ir_rvalue *ir)
{
- printf("error");
+ fprintf(f, "error");
}
void ir_print_visitor::visit(ir_variable *ir)
{
- printf("(declare ");
+ fprintf(f, "(declare ");
const char *const cent = (ir->data.centroid) ? "centroid " : "";
const char *const samp = (ir->data.sample) ? "sample " : "";
@@ -158,25 +165,25 @@ void ir_print_visitor::visit(ir_variable *ir)
const char *const interp[] = { "", "smooth", "flat", "noperspective" };
STATIC_ASSERT(ARRAY_SIZE(interp) == INTERP_QUALIFIER_COUNT);
- printf("(%s%s%s%s%s) ",
+ fprintf(f, "(%s%s%s%s%s) ",
cent, samp, inv, mode[ir->data.mode], interp[ir->data.interpolation]);
- print_type(ir->type);
- printf(" %s)", unique_name(ir));
+ print_type(f, ir->type);
+ fprintf(f, " %s)", unique_name(ir));
}
void ir_print_visitor::visit(ir_function_signature *ir)
{
_mesa_symbol_table_push_scope(symbols);
- printf("(signature ");
+ fprintf(f, "(signature ");
indentation++;
- print_type(ir->return_type);
- printf("\n");
+ print_type(f, ir->return_type);
+ fprintf(f, "\n");
indent();
- printf("(parameters\n");
+ fprintf(f, "(parameters\n");
indentation++;
foreach_list(n, &ir->parameters) {
@@ -184,16 +191,16 @@ void ir_print_visitor::visit(ir_function_signature *ir)
indent();
inst->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf(")\n");
+ fprintf(f, ")\n");
indent();
- printf("(\n");
+ fprintf(f, "(\n");
indentation++;
foreach_list(n, &ir->body) {
@@ -201,11 +208,11 @@ void ir_print_visitor::visit(ir_function_signature *ir)
indent();
inst->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf("))\n");
+ fprintf(f, "))\n");
indentation--;
_mesa_symbol_table_pop_scope(symbols);
}
@@ -213,58 +220,58 @@ void ir_print_visitor::visit(ir_function_signature *ir)
void ir_print_visitor::visit(ir_function *ir)
{
- printf("(function %s\n", ir->name);
+ fprintf(f, "(function %s\n", ir->name);
indentation++;
foreach_list(n, &ir->signatures) {
ir_function_signature *const sig = (ir_function_signature *) n;
indent();
sig->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf(")\n\n");
+ fprintf(f, ")\n\n");
}
void ir_print_visitor::visit(ir_expression *ir)
{
- printf("(expression ");
+ fprintf(f, "(expression ");
- print_type(ir->type);
+ print_type(f, ir->type);
- printf(" %s ", ir->operator_string());
+ fprintf(f, " %s ", ir->operator_string());
for (unsigned i = 0; i < ir->get_num_operands(); i++) {
ir->operands[i]->accept(this);
}
- printf(") ");
+ fprintf(f, ") ");
}
void ir_print_visitor::visit(ir_texture *ir)
{
- printf("(%s ", ir->opcode_string());
+ fprintf(f, "(%s ", ir->opcode_string());
- print_type(ir->type);
- printf(" ");
+ print_type(f, ir->type);
+ fprintf(f, " ");
ir->sampler->accept(this);
- printf(" ");
+ fprintf(f, " ");
if (ir->op != ir_txs && ir->op != ir_query_levels) {
ir->coordinate->accept(this);
- printf(" ");
+ fprintf(f, " ");
if (ir->offset != NULL) {
ir->offset->accept(this);
} else {
- printf("0");
+ fprintf(f, "0");
}
- printf(" ");
+ fprintf(f, " ");
}
if (ir->op != ir_txf && ir->op != ir_txf_ms &&
@@ -273,17 +280,17 @@ void ir_print_visitor::visit(ir_texture *ir)
if (ir->projector)
ir->projector->accept(this);
else
- printf("1");
+ fprintf(f, "1");
if (ir->shadow_comparitor) {
- printf(" ");
+ fprintf(f, " ");
ir->shadow_comparitor->accept(this);
} else {
- printf(" ()");
+ fprintf(f, " ()");
}
}
- printf(" ");
+ fprintf(f, " ");
switch (ir->op)
{
case ir_tex:
@@ -302,17 +309,17 @@ void ir_print_visitor::visit(ir_texture *ir)
ir->lod_info.sample_index->accept(this);
break;
case ir_txd:
- printf("(");
+ fprintf(f, "(");
ir->lod_info.grad.dPdx->accept(this);
- printf(" ");
+ fprintf(f, " ");
ir->lod_info.grad.dPdy->accept(this);
- printf(")");
+ fprintf(f, ")");
break;
case ir_tg4:
ir->lod_info.component->accept(this);
break;
};
- printf(")");
+ fprintf(f, ")");
}
@@ -325,43 +332,43 @@ void ir_print_visitor::visit(ir_swizzle *ir)
ir->mask.w,
};
- printf("(swiz ");
+ fprintf(f, "(swiz ");
for (unsigned i = 0; i < ir->mask.num_components; i++) {
- printf("%c", "xyzw"[swiz[i]]);
+ fprintf(f, "%c", "xyzw"[swiz[i]]);
}
- printf(" ");
+ fprintf(f, " ");
ir->val->accept(this);
- printf(")");
+ fprintf(f, ")");
}
void ir_print_visitor::visit(ir_dereference_variable *ir)
{
ir_variable *var = ir->variable_referenced();
- printf("(var_ref %s) ", unique_name(var));
+ fprintf(f, "(var_ref %s) ", unique_name(var));
}
void ir_print_visitor::visit(ir_dereference_array *ir)
{
- printf("(array_ref ");
+ fprintf(f, "(array_ref ");
ir->array->accept(this);
ir->array_index->accept(this);
- printf(") ");
+ fprintf(f, ") ");
}
void ir_print_visitor::visit(ir_dereference_record *ir)
{
- printf("(record_ref ");
+ fprintf(f, "(record_ref ");
ir->record->accept(this);
- printf(" %s) ", ir->field);
+ fprintf(f, " %s) ", ir->field);
}
void ir_print_visitor::visit(ir_assignment *ir)
{
- printf("(assign ");
+ fprintf(f, "(assign ");
if (ir->condition)
ir->condition->accept(this);
@@ -377,22 +384,22 @@ void ir_print_visitor::visit(ir_assignment *ir)
}
mask[j] = '\0';
- printf(" (%s) ", mask);
+ fprintf(f, " (%s) ", mask);
ir->lhs->accept(this);
- printf(" ");
+ fprintf(f, " ");
ir->rhs->accept(this);
- printf(") ");
+ fprintf(f, ") ");
}
void ir_print_visitor::visit(ir_constant *ir)
{
- printf("(constant ");
- print_type(ir->type);
- printf(" (");
+ fprintf(f, "(constant ");
+ print_type(f, ir->type);
+ fprintf(f, " (");
if (ir->type->is_array()) {
for (unsigned i = 0; i < ir->type->length; i++)
@@ -400,91 +407,91 @@ void ir_print_visitor::visit(ir_constant *ir)
} else if (ir->type->is_record()) {
ir_constant *value = (ir_constant *) ir->components.get_head();
for (unsigned i = 0; i < ir->type->length; i++) {
- printf("(%s ", ir->type->fields.structure[i].name);
+ fprintf(f, "(%s ", ir->type->fields.structure[i].name);
value->accept(this);
- printf(")");
+ fprintf(f, ")");
value = (ir_constant *) value->next;
}
} else {
for (unsigned i = 0; i < ir->type->components(); i++) {
if (i != 0)
- printf(" ");
+ fprintf(f, " ");
switch (ir->type->base_type) {
- case GLSL_TYPE_UINT: printf("%u", ir->value.u[i]); break;
- case GLSL_TYPE_INT: printf("%d", ir->value.i[i]); break;
+ case GLSL_TYPE_UINT: fprintf(f, "%u", ir->value.u[i]); break;
+ case GLSL_TYPE_INT: fprintf(f, "%d", ir->value.i[i]); break;
case GLSL_TYPE_FLOAT:
if (ir->value.f[i] == 0.0f)
/* 0.0 == -0.0, so print with %f to get the proper sign. */
- printf("%.1f", ir->value.f[i]);
+ fprintf(f, "%.1f", ir->value.f[i]);
else if (fabs(ir->value.f[i]) < 0.000001f)
- printf("%a", ir->value.f[i]);
+ fprintf(f, "%a", ir->value.f[i]);
else if (fabs(ir->value.f[i]) > 1000000.0f)
- printf("%e", ir->value.f[i]);
+ fprintf(f, "%e", ir->value.f[i]);
else
- printf("%f", ir->value.f[i]);
+ fprintf(f, "%f", ir->value.f[i]);
break;
- case GLSL_TYPE_BOOL: printf("%d", ir->value.b[i]); break;
+ case GLSL_TYPE_BOOL: fprintf(f, "%d", ir->value.b[i]); break;
default: assert(0);
}
}
}
- printf(")) ");
+ fprintf(f, ")) ");
}
void
ir_print_visitor::visit(ir_call *ir)
{
- printf("(call %s ", ir->callee_name());
+ fprintf(f, "(call %s ", ir->callee_name());
if (ir->return_deref)
ir->return_deref->accept(this);
- printf(" (");
+ fprintf(f, " (");
foreach_list(n, &ir->actual_parameters) {
ir_rvalue *const param = (ir_rvalue *) n;
param->accept(this);
}
- printf("))\n");
+ fprintf(f, "))\n");
}
void
ir_print_visitor::visit(ir_return *ir)
{
- printf("(return");
+ fprintf(f, "(return");
ir_rvalue *const value = ir->get_value();
if (value) {
- printf(" ");
+ fprintf(f, " ");
value->accept(this);
}
- printf(")");
+ fprintf(f, ")");
}
void
ir_print_visitor::visit(ir_discard *ir)
{
- printf("(discard ");
+ fprintf(f, "(discard ");
if (ir->condition != NULL) {
- printf(" ");
+ fprintf(f, " ");
ir->condition->accept(this);
}
- printf(")");
+ fprintf(f, ")");
}
void
ir_print_visitor::visit(ir_if *ir)
{
- printf("(if ");
+ fprintf(f, "(if ");
ir->condition->accept(this);
- printf("(\n");
+ fprintf(f, "(\n");
indentation++;
foreach_list(n, &ir->then_instructions) {
@@ -492,16 +499,16 @@ ir_print_visitor::visit(ir_if *ir)
indent();
inst->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf(")\n");
+ fprintf(f, ")\n");
indent();
if (!ir->else_instructions.is_empty()) {
- printf("(\n");
+ fprintf(f, "(\n");
indentation++;
foreach_list(n, &ir->else_instructions) {
@@ -509,13 +516,13 @@ ir_print_visitor::visit(ir_if *ir)
indent();
inst->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf("))\n");
+ fprintf(f, "))\n");
} else {
- printf("())\n");
+ fprintf(f, "())\n");
}
}
@@ -523,7 +530,7 @@ ir_print_visitor::visit(ir_if *ir)
void
ir_print_visitor::visit(ir_loop *ir)
{
- printf("(loop (\n");
+ fprintf(f, "(loop (\n");
indentation++;
foreach_list(n, &ir->body_instructions) {
@@ -531,28 +538,28 @@ ir_print_visitor::visit(ir_loop *ir)
indent();
inst->accept(this);
- printf("\n");
+ fprintf(f, "\n");
}
indentation--;
indent();
- printf("))\n");
+ fprintf(f, "))\n");
}
void
ir_print_visitor::visit(ir_loop_jump *ir)
{
- printf("%s", ir->is_break() ? "break" : "continue");
+ fprintf(f, "%s", ir->is_break() ? "break" : "continue");
}
void
ir_print_visitor::visit(ir_emit_vertex *ir)
{
- printf("(emit-vertex)");
+ fprintf(f, "(emit-vertex)");
}
void
ir_print_visitor::visit(ir_end_primitive *ir)
{
- printf("(end-primitive)");
+ fprintf(f, "(end-primitive)");
}
diff --git a/mesalib/src/glsl/ir_print_visitor.h b/mesalib/src/glsl/ir_print_visitor.h
index 865376fe0..98f041d1a 100644
--- a/mesalib/src/glsl/ir_print_visitor.h
+++ b/mesalib/src/glsl/ir_print_visitor.h
@@ -38,7 +38,7 @@ extern "C" {
*/
class ir_print_visitor : public ir_visitor {
public:
- ir_print_visitor();
+ ir_print_visitor(FILE *f);
virtual ~ir_print_visitor();
void indent(void);
@@ -87,6 +87,7 @@ private:
_mesa_symbol_table *symbols;
void *mem_ctx;
+ FILE *f;
int indentation;
};
diff --git a/mesalib/src/glsl/ir_uniform.h b/mesalib/src/glsl/ir_uniform.h
index f678c2c5c..7508f795d 100644
--- a/mesalib/src/glsl/ir_uniform.h
+++ b/mesalib/src/glsl/ir_uniform.h
@@ -78,6 +78,26 @@ struct gl_uniform_driver_storage {
void *data;
};
+struct gl_opaque_uniform_index {
+ /**
+ * Base opaque uniform index
+ *
+ * If \c gl_uniform_storage::base_type is an opaque type, this
+ * represents its uniform index. If \c
+ * gl_uniform_storage::array_elements is not zero, the array will
+ * use opaque uniform indices \c index through \c index + \c
+ * gl_uniform_storage::array_elements - 1, inclusive.
+ *
+ * Note that the index may be different in each shader stage.
+ */
+ uint8_t index;
+
+ /**
+ * Whether this opaque uniform is used in this shader stage.
+ */
+ bool active;
+};
+
struct gl_uniform_storage {
char *name;
/** Type of this uniform data stored.
@@ -99,24 +119,9 @@ struct gl_uniform_storage {
*/
bool initialized;
- struct {
- /**
- * Base sampler index
- *
- * If \c ::base_type is \c GLSL_TYPE_SAMPLER, this represents the index
- * of this sampler. If \c ::array_elements is not zero, the array will
- * use sampler indices \c ::sampler through \c ::sampler +
- * \c ::array_elements - 1, inclusive.
- *
- * Note that the index may be different in each shader stage.
- */
- uint8_t index;
-
- /**
- * Whether this sampler is used in this shader stage.
- */
- bool active;
- } sampler[MESA_SHADER_STAGES];
+ struct gl_opaque_uniform_index sampler[MESA_SHADER_STAGES];
+
+ struct gl_opaque_uniform_index image[MESA_SHADER_STAGES];
/**
* Storage used by the driver for the uniform
diff --git a/mesalib/src/glsl/link_uniform_initializers.cpp b/mesalib/src/glsl/link_uniform_initializers.cpp
index 7d5c1472d..9d6977d57 100644
--- a/mesalib/src/glsl/link_uniform_initializers.cpp
+++ b/mesalib/src/glsl/link_uniform_initializers.cpp
@@ -69,6 +69,7 @@ copy_constant_to_storage(union gl_constant_value *storage,
break;
case GLSL_TYPE_ARRAY:
case GLSL_TYPE_STRUCT:
+ case GLSL_TYPE_IMAGE:
case GLSL_TYPE_ATOMIC_UINT:
case GLSL_TYPE_INTERFACE:
case GLSL_TYPE_VOID:
diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp
index 2255f7e6e..8d38324fb 100644
--- a/mesalib/src/glsl/link_uniforms.cpp
+++ b/mesalib/src/glsl/link_uniforms.cpp
@@ -240,7 +240,8 @@ class count_uniform_size : public program_resource_visitor {
public:
count_uniform_size(struct string_to_uint_map *map)
: num_active_uniforms(0), num_values(0), num_shader_samplers(0),
- num_shader_uniform_components(0), is_ubo_var(false), map(map)
+ num_shader_images(0), num_shader_uniform_components(0),
+ is_ubo_var(false), map(map)
{
/* empty */
}
@@ -248,6 +249,7 @@ public:
void start_shader()
{
this->num_shader_samplers = 0;
+ this->num_shader_images = 0;
this->num_shader_uniform_components = 0;
}
@@ -277,6 +279,11 @@ public:
unsigned num_shader_samplers;
/**
+ * Number of images used
+ */
+ unsigned num_shader_images;
+
+ /**
* Number of uniforms used in the current shader
*/
unsigned num_shader_uniform_components;
@@ -303,6 +310,15 @@ private:
if (type->contains_sampler()) {
this->num_shader_samplers +=
type->is_array() ? type->array_size() : 1;
+ } else if (type->contains_image()) {
+ this->num_shader_images += values;
+
+ /* As drivers are likely to represent image uniforms as
+ * scalar indices, count them against the limit of uniform
+ * components in the default block. The spec allows image
+ * uniforms to use up no more than one scalar slot.
+ */
+ this->num_shader_uniform_components += values;
} else {
/* Accumulate the total number of uniform slots used by this shader.
* Note that samplers do not count against this limit because they
@@ -364,6 +380,7 @@ public:
this->shader_samplers_used = 0;
this->shader_shadow_samplers = 0;
this->next_sampler = 0;
+ this->next_image = 0;
memset(this->targets, 0, sizeof(this->targets));
}
@@ -460,6 +477,24 @@ private:
}
}
+ void handle_images(const glsl_type *base_type,
+ struct gl_uniform_storage *uniform)
+ {
+ if (base_type->is_image()) {
+ uniform->image[shader_type].index = this->next_image;
+ uniform->image[shader_type].active = true;
+
+ /* Increment the image index by 1 for non-arrays and by the
+ * number of array elements for arrays.
+ */
+ this->next_image += MAX2(1, uniform->array_elements);
+
+ } else {
+ uniform->image[shader_type].index = ~0;
+ uniform->image[shader_type].active = false;
+ }
+ }
+
virtual void visit_field(const glsl_type *type, const char *name,
bool row_major)
{
@@ -495,8 +530,9 @@ private:
base_type = type;
}
- /* This assigns sampler uniforms to sampler units. */
+ /* This assigns uniform indices to sampler and image uniforms. */
handle_samplers(base_type, &this->uniforms[id]);
+ handle_images(base_type, &this->uniforms[id]);
/* If there is already storage associated with this uniform, it means
* that it was set while processing an earlier shader stage. For
@@ -554,6 +590,7 @@ private:
struct gl_uniform_storage *uniforms;
unsigned next_sampler;
+ unsigned next_image;
public:
union gl_constant_value *values;
@@ -720,6 +757,40 @@ link_assign_uniform_block_offsets(struct gl_shader *shader)
}
}
+/**
+ * Scan the program for image uniforms and store image unit access
+ * information into the gl_shader data structure.
+ */
+static void
+link_set_image_access_qualifiers(struct gl_shader_program *prog)
+{
+ for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
+ gl_shader *sh = prog->_LinkedShaders[i];
+
+ if (sh == NULL)
+ continue;
+
+ foreach_list(node, sh->ir) {
+ ir_variable *var = ((ir_instruction *) node)->as_variable();
+
+ if (var && var->data.mode == ir_var_uniform &&
+ var->type->contains_image()) {
+ unsigned id;
+ bool found = prog->UniformHash->get(id, var->name);
+ assert(found);
+ const gl_uniform_storage *storage = &prog->UniformStorage[id];
+ const unsigned index = storage->image[i].index;
+ const GLenum access = (var->data.image.read_only ? GL_READ_ONLY :
+ var->data.image.write_only ? GL_WRITE_ONLY :
+ GL_READ_WRITE);
+
+ for (unsigned j = 0; j < MAX2(1, storage->array_elements); ++j)
+ sh->ImageAccess[index + j] = access;
+ }
+ }
+ }
+}
+
void
link_assign_uniform_locations(struct gl_shader_program *prog)
{
@@ -757,6 +828,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog)
* types cannot have initializers."
*/
memset(sh->SamplerUnits, 0, sizeof(sh->SamplerUnits));
+ memset(sh->ImageUnits, 0, sizeof(sh->ImageUnits));
link_update_uniform_buffer_variables(sh);
@@ -782,6 +854,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog)
}
sh->num_samplers = uniform_size.num_shader_samplers;
+ sh->NumImages = uniform_size.num_shader_images;
sh->num_uniform_components = uniform_size.num_shader_uniform_components;
sh->num_combined_uniform_components = sh->num_uniform_components;
@@ -861,6 +934,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog)
prog->NumUserUniformStorage = num_user_uniforms;
prog->UniformStorage = uniforms;
+ link_set_image_access_qualifiers(prog);
link_set_uniform_initializers(prog);
return;
diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp
index bcd739476..f6b266185 100644
--- a/mesalib/src/glsl/linker.cpp
+++ b/mesalib/src/glsl/linker.cpp
@@ -1206,6 +1206,7 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
unsigned num_shaders)
{
linked_shader->Geom.VerticesOut = 0;
+ linked_shader->Geom.Invocations = 0;
linked_shader->Geom.InputType = PRIM_UNKNOWN;
linked_shader->Geom.OutputType = PRIM_UNKNOWN;
@@ -1259,6 +1260,18 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
}
linked_shader->Geom.VerticesOut = shader->Geom.VerticesOut;
}
+
+ if (shader->Geom.Invocations != 0) {
+ if (linked_shader->Geom.Invocations != 0 &&
+ linked_shader->Geom.Invocations != shader->Geom.Invocations) {
+ linker_error(prog, "geometry shader defined with conflicting "
+ "invocation count (%d and %d)\n",
+ linked_shader->Geom.Invocations,
+ shader->Geom.Invocations);
+ return;
+ }
+ linked_shader->Geom.Invocations = shader->Geom.Invocations;
+ }
}
/* Just do the intrastage -> interstage propagation right now,
@@ -1285,6 +1298,11 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
return;
}
prog->Geom.VerticesOut = linked_shader->Geom.VerticesOut;
+
+ if (linked_shader->Geom.Invocations == 0)
+ linked_shader->Geom.Invocations = 1;
+
+ prog->Geom.Invocations = linked_shader->Geom.Invocations;
}
@@ -2031,6 +2049,46 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog)
}
}
+/**
+ * Validate shader image resources.
+ */
+static void
+check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog)
+{
+ unsigned total_image_units = 0;
+ unsigned fragment_outputs = 0;
+
+ if (!ctx->Extensions.ARB_shader_image_load_store)
+ return;
+
+ for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
+ struct gl_shader *sh = prog->_LinkedShaders[i];
+
+ if (sh) {
+ if (sh->NumImages > ctx->Const.Program[i].MaxImageUniforms)
+ linker_error(prog, "Too many %s shader image uniforms",
+ _mesa_shader_stage_to_string(i));
+
+ total_image_units += sh->NumImages;
+
+ if (i == MESA_SHADER_FRAGMENT) {
+ foreach_list(node, sh->ir) {
+ ir_variable *var = ((ir_instruction *)node)->as_variable();
+ if (var && var->data.mode == ir_var_shader_out)
+ fragment_outputs += var->type->count_attribute_slots();
+ }
+ }
+ }
+ }
+
+ if (total_image_units > ctx->Const.MaxCombinedImageUniforms)
+ linker_error(prog, "Too many combined image uniforms");
+
+ if (total_image_units + fragment_outputs >
+ ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs)
+ linker_error(prog, "Too many combined image uniforms and fragment outputs");
+}
+
void
link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
{
@@ -2394,17 +2452,19 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
store_fragdepth_layout(prog);
check_resources(ctx, prog);
+ check_image_resources(ctx, prog);
link_check_atomic_counter_resources(ctx, prog);
if (!prog->LinkStatus)
goto done;
/* OpenGL ES requires that a vertex shader and a fragment shader both be
- * present in a linked program. By checking prog->IsES, we also
- * catch the GL_ARB_ES2_compatibility case.
+ * present in a linked program. GL_ARB_ES2_compatibility doesn't say
+ * anything about shader linking when one of the shaders (vertex or
+ * fragment shader) is absent. So, the extension shouldn't change the
+ * behavior specified in GLSL specification.
*/
- if (!prog->InternalSeparateShader &&
- (ctx->API == API_OPENGLES2 || prog->IsES)) {
+ if (!prog->InternalSeparateShader && ctx->API == API_OPENGLES2) {
if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
linker_error(prog, "program lacks a vertex shader\n");
} else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
diff --git a/mesalib/src/glsl/lower_instructions.cpp b/mesalib/src/glsl/lower_instructions.cpp
index 44a6e8021..01ea0f01f 100644
--- a/mesalib/src/glsl/lower_instructions.cpp
+++ b/mesalib/src/glsl/lower_instructions.cpp
@@ -38,7 +38,6 @@
* - LOG_TO_LOG2
* - MOD_TO_FRACT
* - LDEXP_TO_ARITH
- * - LRP_TO_ARITH
* - BITFIELD_INSERT_TO_BFM_BFI
*
* SUB_TO_ADD_NEG:
@@ -87,10 +86,6 @@
* -------------
* Converts ir_binop_ldexp to arithmetic and bit operations.
*
- * LRP_TO_ARITH:
- * -------------
- * Converts ir_triop_lrp to (op0 * (1.0f - op2)) + (op1 * op2).
- *
* BITFIELD_INSERT_TO_BFM_BFI:
* ---------------------------
* Breaks ir_quadop_bitfield_insert into ir_binop_bfm (bitfield mask) and
@@ -130,7 +125,6 @@ private:
void exp_to_exp2(ir_expression *);
void pow_to_exp2(ir_expression *);
void log_to_log2(ir_expression *);
- void lrp_to_arith(ir_expression *);
void bitfield_insert_to_bfm_bfi(ir_expression *);
void ldexp_to_arith(ir_expression *);
};
@@ -299,27 +293,6 @@ lower_instructions_visitor::mod_to_fract(ir_expression *ir)
}
void
-lower_instructions_visitor::lrp_to_arith(ir_expression *ir)
-{
- /* (lrp x y a) -> x*(1-a) + y*a */
-
- /* Save op2 */
- ir_variable *temp = new(ir) ir_variable(ir->operands[2]->type, "lrp_factor",
- ir_var_temporary);
- this->base_ir->insert_before(temp);
- this->base_ir->insert_before(assign(temp, ir->operands[2]));
-
- ir_constant *one = new(ir) ir_constant(1.0f);
-
- ir->operation = ir_binop_add;
- ir->operands[0] = mul(ir->operands[0], sub(one, temp));
- ir->operands[1] = mul(ir->operands[1], temp);
- ir->operands[2] = NULL;
-
- this->progress = true;
-}
-
-void
lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir)
{
/* Translates
@@ -499,11 +472,6 @@ lower_instructions_visitor::visit_leave(ir_expression *ir)
pow_to_exp2(ir);
break;
- case ir_triop_lrp:
- if (lowering(LRP_TO_ARITH))
- lrp_to_arith(ir);
- break;
-
case ir_quadop_bitfield_insert:
if (lowering(BITFIELD_INSERT_TO_BFM_BFI))
bitfield_insert_to_bfm_bfi(ir);
diff --git a/mesalib/src/glsl/lower_offset_array.cpp b/mesalib/src/glsl/lower_offset_array.cpp
new file mode 100644
index 000000000..0c235eda3
--- /dev/null
+++ b/mesalib/src/glsl/lower_offset_array.cpp
@@ -0,0 +1,90 @@
+/*
+ * Copyright © 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file brw_lower_offset_array.cpp
+ *
+ * IR lower pass to decompose ir_texture ir_tg4 with an array of offsets
+ * into four ir_tg4s with a single ivec2 offset, select the .w component of each,
+ * and return those four values packed into a gvec4.
+ *
+ * \author Chris Forbes <chrisf@ijw.co.nz>
+ */
+
+#include "glsl_types.h"
+#include "ir.h"
+#include "ir_builder.h"
+#include "ir_optimization.h"
+#include "ir_rvalue_visitor.h"
+
+using namespace ir_builder;
+
+class brw_lower_offset_array_visitor : public ir_rvalue_visitor {
+public:
+ brw_lower_offset_array_visitor()
+ {
+ progress = false;
+ }
+
+ void handle_rvalue(ir_rvalue **rv);
+
+ bool progress;
+};
+
+void
+brw_lower_offset_array_visitor::handle_rvalue(ir_rvalue **rv)
+{
+ if (*rv == NULL || (*rv)->ir_type != ir_type_texture)
+ return;
+
+ ir_texture *ir = (ir_texture *) *rv;
+ if (ir->op != ir_tg4 || !ir->offset || !ir->offset->type->is_array())
+ return;
+
+ void *mem_ctx = ralloc_parent(ir);
+
+ ir_variable *var = new (mem_ctx) ir_variable(ir->type, "result", ir_var_auto);
+ base_ir->insert_before(var);
+
+ for (int i = 0; i < 4; i++) {
+ ir_texture *tex = ir->clone(mem_ctx, NULL);
+ tex->offset = new (mem_ctx) ir_dereference_array(tex->offset,
+ new (mem_ctx) ir_constant(i));
+
+ base_ir->insert_before(assign(var, swizzle_w(tex), 1 << i));
+ }
+
+ *rv = new (mem_ctx) ir_dereference_variable(var);
+
+ progress = true;
+}
+
+bool
+lower_offset_arrays(exec_list *instructions)
+{
+ brw_lower_offset_array_visitor v;
+
+ visit_list_elements(&v, instructions);
+
+ return v.progress;
+}
diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp
index 48ab1c73a..0d8c01f6a 100644
--- a/mesalib/src/glsl/main.cpp
+++ b/mesalib/src/glsl/main.cpp
@@ -305,7 +305,7 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader)
/* Print out the resulting IR */
if (!state->error && dump_lir) {
- _mesa_print_ir(shader->ir, state);
+ _mesa_print_ir(stdout, shader->ir, state);
}
return;
diff --git a/mesalib/src/glsl/opt_algebraic.cpp b/mesalib/src/glsl/opt_algebraic.cpp
index 1b4d31936..5c49a785c 100644
--- a/mesalib/src/glsl/opt_algebraic.cpp
+++ b/mesalib/src/glsl/opt_algebraic.cpp
@@ -568,6 +568,12 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
return ir->operands[1];
} else if (ir->operands[0]->equals(ir->operands[1])) {
return ir->operands[0];
+ } else if (is_vec_zero(op_const[0])) {
+ return mul(ir->operands[1], ir->operands[2]);
+ } else if (is_vec_zero(op_const[1])) {
+ unsigned op2_components = ir->operands[2]->type->vector_elements;
+ ir_constant *one = new(mem_ctx) ir_constant(1.0f, op2_components);
+ return mul(ir->operands[0], add(one, neg(ir->operands[2])));
}
break;
diff --git a/mesalib/src/glsl/opt_array_splitting.cpp b/mesalib/src/glsl/opt_array_splitting.cpp
index f37d09022..97d3a57e9 100644
--- a/mesalib/src/glsl/opt_array_splitting.cpp
+++ b/mesalib/src/glsl/opt_array_splitting.cpp
@@ -400,7 +400,7 @@ optimize_split_arrays(exec_list *instructions, bool linked)
visit_list_elements(&split, instructions);
if (debug)
- _mesa_print_ir(instructions, NULL);
+ _mesa_print_ir(stdout, instructions, NULL);
ralloc_free(mem_ctx);
diff --git a/mesalib/src/glsl/opt_vectorize.cpp b/mesalib/src/glsl/opt_vectorize.cpp
index 8ee81f1a3..13faac05e 100644
--- a/mesalib/src/glsl/opt_vectorize.cpp
+++ b/mesalib/src/glsl/opt_vectorize.cpp
@@ -82,6 +82,8 @@ public:
virtual ir_visitor_status visit_enter(ir_assignment *);
virtual ir_visitor_status visit_enter(ir_swizzle *);
+ virtual ir_visitor_status visit_enter(ir_dereference_array *);
+ virtual ir_visitor_status visit_enter(ir_expression *);
virtual ir_visitor_status visit_enter(ir_if *);
virtual ir_visitor_status visit_enter(ir_loop *);
@@ -289,6 +291,33 @@ ir_vectorize_visitor::visit_enter(ir_swizzle *ir)
return visit_continue;
}
+/* Upon entering an ir_array_dereference, remove the current assignment from
+ * further consideration. Since the index of an array dereference must scalar,
+ * we are not able to vectorize it.
+ *
+ * FINISHME: If all of scalar indices are identical we could vectorize.
+ */
+ir_visitor_status
+ir_vectorize_visitor::visit_enter(ir_dereference_array *ir)
+{
+ this->current_assignment = NULL;
+ return visit_continue_with_parent;
+}
+
+/**
+ * Upon entering an ir_expression, remove the current assignment from further
+ * consideration if the expression operates horizontally on vectors.
+ */
+ir_visitor_status
+ir_vectorize_visitor::visit_enter(ir_expression *ir)
+{
+ if (ir->is_horizontal()) {
+ this->current_assignment = NULL;
+ return visit_continue_with_parent;
+ }
+ return visit_continue;
+}
+
/* Since there is no statement to visit between the "then" and "else"
* instructions try to vectorize before, in between, and after them to avoid
* combining statements from different basic blocks.
diff --git a/mesalib/src/glsl/test_optpass.cpp b/mesalib/src/glsl/test_optpass.cpp
index 1a15f3c63..f1b9579cd 100644
--- a/mesalib/src/glsl/test_optpass.cpp
+++ b/mesalib/src/glsl/test_optpass.cpp
@@ -235,7 +235,7 @@ int test_optpass(int argc, char **argv)
/* Print out the initial IR */
if (!state->error && !quiet) {
printf("*** pre-optimization IR:\n");
- _mesa_print_ir(shader->ir, state);
+ _mesa_print_ir(stdout, shader->ir, state);
printf("\n--\n");
}
@@ -255,7 +255,7 @@ int test_optpass(int argc, char **argv)
if (!quiet) {
printf("*** resulting IR:\n");
}
- _mesa_print_ir(shader->ir, state);
+ _mesa_print_ir(stdout, shader->ir, state);
if (!quiet) {
printf("\n--\n");
}
diff --git a/mesalib/src/loader/loader.c b/mesalib/src/loader/loader.c
index 811f8a257..811f8a257 100755..100644
--- a/mesalib/src/loader/loader.c
+++ b/mesalib/src/loader/loader.c
diff --git a/mesalib/src/mapi/glapi/Makefile.am b/mesalib/src/mapi/glapi/Makefile.am
index bf653a305..e425bacea 100644
--- a/mesalib/src/mapi/glapi/Makefile.am
+++ b/mesalib/src/mapi/glapi/Makefile.am
@@ -27,6 +27,7 @@ include ../Makefile.sources
AM_CPPFLAGS = \
$(DEFINES) \
+ $(SELINUX_CFLAGS) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/mapi \
-I$(top_builddir)/src/mapi \
diff --git a/mesalib/src/mapi/glapi/Makefile.sources b/mesalib/src/mapi/glapi/Makefile.sources
index 58d28c52c..100e6347e 100644
--- a/mesalib/src/mapi/glapi/Makefile.sources
+++ b/mesalib/src/mapi/glapi/Makefile.sources
@@ -6,7 +6,6 @@ GLAPI_SOURCES = \
glapi_gentable.c \
glapi_getproc.c \
glapi_nop.c \
- glthread.c \
glapi.c
X86_API = \
diff --git a/mesalib/src/mapi/glapi/SConscript b/mesalib/src/mapi/glapi/SConscript
index 152818d22..bc1c43aa8 100644
--- a/mesalib/src/mapi/glapi/SConscript
+++ b/mesalib/src/mapi/glapi/SConscript
@@ -34,7 +34,6 @@ glapi_sources = [
'glapi_entrypoint.c',
'glapi_getproc.c',
'glapi_nop.c',
- 'glthread.c',
'glapi.c',
]
diff --git a/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml b/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml
new file mode 100644
index 000000000..80234ea5e
--- /dev/null
+++ b/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml
@@ -0,0 +1,401 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+ <category name="ARB_separate_shader_objects" number="97">
+ <enum name="ACTIVE_PROGRAM" value="0x8259"/>
+ <enum name="PROGRAM_PIPELINE_BINDING" value="0x825A"/>
+ <enum name="VERTEX_SHADER_BIT" value="0x00000001"/>
+ <enum name="FRAGMENT_SHADER_BIT" value="0x00000002"/>
+ <enum name="GEOMETRY_SHADER_BIT" value="0x00000004"/>
+ <enum name="TESS_CONTROL_SHADER_BIT" value="0x00000008"/>
+ <enum name="TESS_EVALUATION_SHADER_BIT" value="0x00000010"/>
+ <enum name="ALL_SHADER_BITS" value="0xFFFFFFFF"/>
+ <enum name="PROGRAM_SEPARABLE" value="0x8258"/>
+
+ <function name="UseProgramStages" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ <param name="stages" type="GLbitfield" />
+ <param name="program" type="GLuint" />
+ </function>
+ <function name="ActiveShaderProgram" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ <param name="program" type="GLuint" />
+ </function>
+ <function name="CreateShaderProgramv" offset="assign">
+ <param name="type" type="GLenum" />
+ <param name="count" type="GLsizei" />
+ <param name="strings" type="const GLchar * const *" />
+ <return type="GLuint"/>
+ </function>
+ <function name="BindProgramPipeline" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ </function>
+ <function name="DeleteProgramPipelines" offset="assign">
+ <param name="n" type="GLsizei" />
+ <param name="pipelines" type="const GLuint *" />
+ </function>
+ <function name="GenProgramPipelines" offset="assign">
+ <param name="n" type="GLsizei" />
+ <param name="pipelines" type="GLuint *" />
+ </function>
+ <function name="IsProgramPipeline" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ <return type="GLboolean"/>
+ </function>
+ <!-- Function already included on ARB_get_program_binary.xml. Keep a commented
+ version here for completeness -->
+ <!--
+ <function name="ProgramParameteri" offset="assign" es2="3.0">
+ <param name="program" type="GLuint"/>
+ <param name="pname" type="GLenum"/>
+ <param name="value" type="GLint"/>
+ </function>
+ -->
+ <function name="GetProgramPipelineiv" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ <param name="pname" type="GLenum" />
+ <param name="params" type="GLint *" />
+ </function>
+ <function name="ProgramUniform1i" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLint" />
+ </function>
+ <function name="ProgramUniform2i" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLint" />
+ <param name="y" type="GLint" />
+ </function>
+ <function name="ProgramUniform3i" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLint" />
+ <param name="y" type="GLint" />
+ <param name="z" type="GLint" />
+ </function>
+ <function name="ProgramUniform4i" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLint" />
+ <param name="y" type="GLint" />
+ <param name="z" type="GLint" />
+ <param name="w" type="GLint" />
+ </function>
+ <function name="ProgramUniform1ui" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLuint" />
+ </function>
+ <function name="ProgramUniform2ui" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLuint" />
+ <param name="y" type="GLuint" />
+ </function>
+ <function name="ProgramUniform3ui" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLuint" />
+ <param name="y" type="GLuint" />
+ <param name="z" type="GLuint" />
+ </function>
+ <function name="ProgramUniform4ui" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLuint" />
+ <param name="y" type="GLuint" />
+ <param name="z" type="GLuint" />
+ <param name="w" type="GLuint" />
+ </function>
+ <function name="ProgramUniform1f" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLfloat" />
+ </function>
+ <function name="ProgramUniform2f" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLfloat" />
+ <param name="y" type="GLfloat" />
+ </function>
+ <function name="ProgramUniform3f" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLfloat" />
+ <param name="y" type="GLfloat" />
+ <param name="z" type="GLfloat" />
+ </function>
+ <function name="ProgramUniform4f" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLfloat" />
+ <param name="y" type="GLfloat" />
+ <param name="z" type="GLfloat" />
+ <param name="w" type="GLfloat" />
+ </function>
+ <function name="ProgramUniform1iv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLint *" />
+ </function>
+ <function name="ProgramUniform2iv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLint *" />
+ </function>
+ <function name="ProgramUniform3iv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLint *" />
+ </function>
+ <function name="ProgramUniform4iv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLint *" />
+ </function>
+ <function name="ProgramUniform1uiv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint *" />
+ </function>
+ <function name="ProgramUniform2uiv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint *" />
+ </function>
+ <function name="ProgramUniform3uiv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint *" />
+ </function>
+ <function name="ProgramUniform4uiv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLuint *" />
+ </function>
+ <function name="ProgramUniform1fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniform2fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniform3fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniform4fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix2fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix3fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix4fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix2x3fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix3x2fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix2x4fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix4x2fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix3x4fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ProgramUniformMatrix4x3fv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLfloat *" />
+ </function>
+ <function name="ValidateProgramPipeline" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ </function>
+ <function name="GetProgramPipelineInfoLog" offset="assign">
+ <param name="pipeline" type="GLuint" />
+ <param name="bufSize" type="GLsizei" />
+ <param name="length" type="GLsizei *" />
+ <param name="infoLog" type="GLchar *" />
+ </function>
+
+ <!-- depends on GL_ARB_gpu_shader_fp64
+ <function name="ProgramUniform1d" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLdouble" />
+ </function>
+ <function name="ProgramUniform2d" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLdouble" />
+ <param name="y" type="GLdouble" />
+ </function>
+ <function name="ProgramUniform3d" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLdouble" />
+ <param name="y" type="GLdouble" />
+ <param name="z" type="GLdouble" />
+ </function>
+ <function name="ProgramUniform4d" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="x" type="GLdouble" />
+ <param name="y" type="GLdouble" />
+ <param name="z" type="GLdouble" />
+ <param name="w" type="GLdouble" />
+ </function>
+ <function name="ProgramUniformMatrix2x3dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix3x2dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix2x4dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix4x2dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix3x4dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix4x3dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix2dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix3dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniformMatrix4dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="transpose" type="GLboolean" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniform1dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniform2dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniform3dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ <function name="ProgramUniform4dv" offset="assign">
+ <param name="program" type="GLuint" />
+ <param name="location" type="GLint" />
+ <param name="count" type="GLsizei" />
+ <param name="value" type="const GLdouble *" />
+ </function>
+ -->
+ </category>
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/Makefile.am b/mesalib/src/mapi/glapi/gen/Makefile.am
index 9e6fe5261..7b3c118f0 100644
--- a/mesalib/src/mapi/glapi/gen/Makefile.am
+++ b/mesalib/src/mapi/glapi/gen/Makefile.am
@@ -113,6 +113,7 @@ API_XML = \
ARB_sample_shading.xml \
ARB_sampler_objects.xml \
ARB_seamless_cube_map.xml \
+ ARB_separate_shader_objects.xml \
ARB_shader_atomic_counters.xml \
ARB_shader_image_load_store.xml \
ARB_sync.xml \
diff --git a/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml b/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml
index cf5f0eddd..0b19e1a85 100644
--- a/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml
+++ b/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml
@@ -29,6 +29,7 @@
</function>
<function name="VDPAUIsSurfaceNV" offset="assign">
+ <return type="GLboolean"/>
<param name="surface" type="GLintptr"/>
</function>
diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py
index 84526581a..086fc97d7 100755
--- a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py
+++ b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py
@@ -97,7 +97,6 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto):
print '#include "singlesize.h"'
print '#include "glapi.h"'
print '#include "glapitable.h"'
- print '#include "glthread.h"'
print '#include "dispatch.h"'
print ''
print '#define __GLX_PAD(x) (((x) + 3) & ~3)'
diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_send.py b/mesalib/src/mapi/glapi/gen/glX_proto_send.py
index 8b804418b..a98f63e99 100755
--- a/mesalib/src/mapi/glapi/gen/glX_proto_send.py
+++ b/mesalib/src/mapi/glapi/gen/glX_proto_send.py
@@ -167,7 +167,6 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
print '#include "glxclient.h"'
print '#include "indirect_size.h"'
print '#include "glapi.h"'
- print '#include "glthread.h"'
print '#include <GL/glxproto.h>'
print '#include <X11/Xlib-xcb.h>'
print '#include <xcb/xcb.h>'
diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml
index d5467a823..8f175e6be 100755
--- a/mesalib/src/mapi/glapi/gen/gl_API.xml
+++ b/mesalib/src/mapi/glapi/gen/gl_API.xml
@@ -8275,7 +8275,11 @@
</function>
</category>
-<!-- ARB extensions #95...#108 -->
+<!-- ARB extensions #95...#96 -->
+
+<xi:include href="ARB_separate_shader_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- ARB extensions #98...#108 -->
<xi:include href="ARB_ES2_compatibility.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
@@ -8492,6 +8496,25 @@
<xi:include href="ARB_texture_storage_multisample.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<!-- ARB extension 142 - 143. -->
+
+<category name="GL_ARB_buffer_storage" number="144">
+ <enum name="MAP_PERSISTENT_BIT" value="0x40" />
+ <enum name="MAP_COHERENT_BIT" value="0x80" />
+ <enum name="DYNAMIC_STORAGE_BIT" value="0x100" />
+ <enum name="CLIENT_STORAGE_BIT" value="0x200" />
+ <enum name="BUFFER_IMMUTABLE_STORAGE" value="0x821F" />
+ <enum name="BUFFER_STORAGE_FLAGS" value="0x8220" />
+ <enum name="CLIENT_MAPPED_BUFFER_BARRIER_BIT" value="0x4000" />
+
+ <function name="BufferStorage" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="size" type="GLsizeiptr"/>
+ <param name="data" type="const GLvoid *"/>
+ <param name="flags" type="GLbitfield"/>
+ </function>
+</category>
+
<!-- Non-ARB extensions sorted by extension number. -->
<category name="GL_EXT_blend_color" number="2">
diff --git a/mesalib/src/mapi/glapi/gen/gl_functions.py b/mesalib/src/mapi/glapi/gen/gl_functions.py
index 3db72bba8..cd408ade2 100755
--- a/mesalib/src/mapi/glapi/gen/gl_functions.py
+++ b/mesalib/src/mapi/glapi/gen/gl_functions.py
@@ -43,7 +43,7 @@ class PrintFunctionTable(gl_XML.gl_print_base):
print """
#include "glapitable.h"
#include "glapi.h"
-#include "glthread.h"
+#include "u_thread.h"
#include "dispatch.h"
"""
return
diff --git a/mesalib/src/mapi/glapi/gen/gl_genexec.py b/mesalib/src/mapi/glapi/gen/gl_genexec.py
index 1765a51ad..460919397 100644
--- a/mesalib/src/mapi/glapi/gen/gl_genexec.py
+++ b/mesalib/src/mapi/glapi/gen/gl_genexec.py
@@ -86,6 +86,7 @@ header = """/**
#include "main/multisample.h"
#include "main/objectlabel.h"
#include "main/performance_monitor.h"
+#include "main/pipelineobj.h"
#include "main/pixel.h"
#include "main/pixelstore.h"
#include "main/points.h"
diff --git a/mesalib/src/mapi/glapi/glapi.h b/mesalib/src/mapi/glapi/glapi.h
index b10f19a63..67bf1f42e 100644
--- a/mesalib/src/mapi/glapi/glapi.h
+++ b/mesalib/src/mapi/glapi/glapi.h
@@ -44,13 +44,14 @@
#ifndef _GLAPI_H
#define _GLAPI_H
-#include "glthread.h"
+#include "u_thread.h"
#ifdef __cplusplus
extern "C" {
#endif
+
#ifdef _GLAPI_NO_EXPORTS
# define _GLAPI_EXPORT
#else /* _GLAPI_NO_EXPORTS */
@@ -69,7 +70,6 @@ extern "C" {
#include "GL/gl.h"
#include "GL/glext.h"
-#include "glthread.h"
struct _glapi_table;
@@ -84,8 +84,8 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
#define _glapi_get_dispatch _mglapi_get_dispatch
#define _glapi_set_context _mglapi_set_context
#define _glapi_get_context _mglapi_get_context
-#define _glapi_Context _mglapi_Context
#define _glapi_Dispatch _mglapi_Dispatch
+#define _glapi_Context _mglapi_Context
#endif
/*
@@ -100,12 +100,14 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
**/
#if defined (GLX_USE_TLS)
-_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch;
+_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch
+ ;
-_GLAPI_EXPORT extern const void *_glapi_Context;
-_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+_GLAPI_EXPORT extern __thread void * _glapi_tls_Context
+ ;
-_GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
+_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+_GLAPI_EXPORT extern const void *_glapi_Context;
# define GET_DISPATCH() _glapi_tls_Dispatch
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context
@@ -118,20 +120,22 @@ _GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
#define SERVEXTERN _declspec(dllexport)
#endif
-SERVEXTERN void *_glapi_Context;
SERVEXTERN struct _glapi_table *_glapi_Dispatch;
+SERVEXTERN void *_glapi_Context;
# ifdef THREADS
# define GET_DISPATCH() \
(likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch())
-
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \
(likely(_glapi_Context) ? _glapi_Context : _glapi_get_context())
+
# else
+
# define GET_DISPATCH() _glapi_Dispatch
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context
+
# endif
#endif /* defined (GLX_USE_TLS) */
@@ -183,8 +187,10 @@ _glapi_get_proc_address(const char *funcName);
extern struct _glapi_table *
_glapi_create_table_from_handle(void *handle, const char *symbol_prefix);
-#endif
+
#ifdef __cplusplus
}
#endif
+
+#endif /* _GLAPI_H */
diff --git a/mesalib/src/mapi/glapi/glthread.c b/mesalib/src/mapi/glapi/glthread.c
deleted file mode 100644
index 239090ecf..000000000
--- a/mesalib/src/mapi/glapi/glthread.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "glapi/glapi.h"
-
-unsigned long _GLAPI_EXPORT
-_glthread_GetID(void)
-{
- return u_thread_self();
-}
diff --git a/mesalib/src/mapi/glapi/glthread.h b/mesalib/src/mapi/glapi/glthread.h
deleted file mode 100644
index 2399abb2b..000000000
--- a/mesalib/src/mapi/glapi/glthread.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef GLTHREAD_H
-#define GLTHREAD_H
-
-#include "u_thread.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _glthread_DECLARE_STATIC_MUTEX(name) u_mutex_declare_static(name)
-#define _glthread_INIT_MUTEX(name) u_mutex_init(name)
-#define _glthread_DESTROY_MUTEX(name) u_mutex_destroy(name)
-#define _glthread_LOCK_MUTEX(name) u_mutex_lock(name)
-#define _glthread_UNLOCK_MUTEX(name) u_mutex_unlock(name)
-
-#define _glthread_InitTSD(tsd) u_tsd_init(tsd);
-#define _glthread_DestroyTSD(tsd) u_tsd_destroy(tsd);
-#define _glthread_GetTSD(tsd) u_tsd_get(tsd);
-#define _glthread_SetTSD(tsd, ptr) u_tsd_set(tsd, ptr);
-
-typedef struct u_tsd _glthread_TSD;
-typedef u_mutex _glthread_Mutex;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GLTHREAD_H */
diff --git a/mesalib/src/mesa/Makefile.sources b/mesalib/src/mesa/Makefile.sources
index bd02d3ee8..f6f4062a4 100644
--- a/mesalib/src/mesa/Makefile.sources
+++ b/mesalib/src/mesa/Makefile.sources
@@ -69,6 +69,7 @@ MAIN_FILES = \
$(SRCDIR)main/pack.c \
$(SRCDIR)main/pbo.c \
$(SRCDIR)main/performance_monitor.c \
+ $(SRCDIR)main/pipelineobj.c \
$(SRCDIR)main/pixel.c \
$(SRCDIR)main/pixelstore.c \
$(SRCDIR)main/pixeltransfer.c \
@@ -319,6 +320,7 @@ SPARC_FILES = \
COMMON_DRIVER_FILES = \
$(SRCDIR)drivers/common/driverfuncs.c \
+ $(SRCDIR)drivers/common/meta_blit.c \
$(SRCDIR)drivers/common/meta.c
diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript
index b52bbdc23..7f4e41983 100644
--- a/mesalib/src/mesa/SConscript
+++ b/mesalib/src/mesa/SConscript
@@ -98,6 +98,7 @@ main_sources = [
'main/pack.c',
'main/pbo.c',
'main/performance_monitor.c',
+ 'main/pipelineobj.c',
'main/pixel.c',
'main/pixelstore.c',
'main/pixeltransfer.c',
@@ -325,6 +326,7 @@ program_sources = [
common_driver_sources = [
'drivers/common/driverfuncs.c',
'drivers/common/meta.c',
+ 'drivers/common/meta_blit.c'
]
mesa_sources = (
diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c
index f12bcaab1..cde34f99f 100644
--- a/mesalib/src/mesa/drivers/common/meta.c
+++ b/mesalib/src/mesa/drivers/common/meta.c
@@ -51,6 +51,8 @@
#include "main/macros.h"
#include "main/matrix.h"
#include "main/mipmap.h"
+#include "main/multisample.h"
+#include "main/objectlabel.h"
#include "main/pixel.h"
#include "main/pbo.h"
#include "main/polygon.h"
@@ -82,283 +84,18 @@
/** Return offset in bytes of the field within a vertex struct */
#define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD))
-/**
- * State which we may save/restore across meta ops.
- * XXX this may be incomplete...
- */
-struct save_state
-{
- GLbitfield SavedState; /**< bitmask of MESA_META_* flags */
-
- /** MESA_META_CLEAR (and others?) */
- struct gl_query_object *CurrentOcclusionObject;
-
- /** MESA_META_ALPHA_TEST */
- GLboolean AlphaEnabled;
- GLenum AlphaFunc;
- GLclampf AlphaRef;
-
- /** MESA_META_BLEND */
- GLbitfield BlendEnabled;
- GLboolean ColorLogicOpEnabled;
-
- /** MESA_META_COLOR_MASK */
- GLubyte ColorMask[MAX_DRAW_BUFFERS][4];
-
- /** MESA_META_DEPTH_TEST */
- struct gl_depthbuffer_attrib Depth;
-
- /** MESA_META_FOG */
- GLboolean Fog;
-
- /** MESA_META_PIXEL_STORE */
- struct gl_pixelstore_attrib Pack, Unpack;
-
- /** MESA_META_PIXEL_TRANSFER */
- GLfloat RedBias, RedScale;
- GLfloat GreenBias, GreenScale;
- GLfloat BlueBias, BlueScale;
- GLfloat AlphaBias, AlphaScale;
- GLfloat DepthBias, DepthScale;
- GLboolean MapColorFlag;
-
- /** MESA_META_RASTERIZATION */
- GLenum FrontPolygonMode, BackPolygonMode;
- GLboolean PolygonOffset;
- GLboolean PolygonSmooth;
- GLboolean PolygonStipple;
- GLboolean PolygonCull;
-
- /** MESA_META_SCISSOR */
- struct gl_scissor_attrib Scissor;
-
- /** MESA_META_SHADER */
- GLboolean VertexProgramEnabled;
- struct gl_vertex_program *VertexProgram;
- GLboolean FragmentProgramEnabled;
- struct gl_fragment_program *FragmentProgram;
- GLboolean ATIFragmentShaderEnabled;
- struct gl_shader_program *Shader[MESA_SHADER_STAGES];
- struct gl_shader_program *ActiveShader;
-
- /** MESA_META_STENCIL_TEST */
- struct gl_stencil_attrib Stencil;
-
- /** MESA_META_TRANSFORM */
- GLenum MatrixMode;
- GLfloat ModelviewMatrix[16];
- GLfloat ProjectionMatrix[16];
- GLfloat TextureMatrix[16];
-
- /** MESA_META_CLIP */
- GLbitfield ClipPlanesEnabled;
-
- /** MESA_META_TEXTURE */
- GLuint ActiveUnit;
- GLuint ClientActiveUnit;
- /** for unit[0] only */
- struct gl_texture_object *CurrentTexture[NUM_TEXTURE_TARGETS];
- /** mask of TEXTURE_2D_BIT, etc */
- GLbitfield TexEnabled[MAX_TEXTURE_UNITS];
- GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS];
- GLuint EnvMode; /* unit[0] only */
-
- /** MESA_META_VERTEX */
- struct gl_vertex_array_object *VAO;
- struct gl_buffer_object *ArrayBufferObj;
-
- /** MESA_META_VIEWPORT */
- GLfloat ViewportX, ViewportY, ViewportW, ViewportH;
- GLclampd DepthNear, DepthFar;
-
- /** MESA_META_CLAMP_FRAGMENT_COLOR */
- GLenum ClampFragmentColor;
-
- /** MESA_META_CLAMP_VERTEX_COLOR */
- GLenum ClampVertexColor;
-
- /** MESA_META_CONDITIONAL_RENDER */
- struct gl_query_object *CondRenderQuery;
- GLenum CondRenderMode;
-
- /** MESA_META_SELECT_FEEDBACK */
- GLenum RenderMode;
- struct gl_selection Select;
- struct gl_feedback Feedback;
-
- /** MESA_META_MULTISAMPLE */
- GLboolean MultisampleEnabled;
-
- /** MESA_META_FRAMEBUFFER_SRGB */
- GLboolean sRGBEnabled;
-
- /** Miscellaneous (always disabled) */
- GLboolean Lighting;
- GLboolean RasterDiscard;
- GLboolean TransformFeedbackNeedsResume;
-};
-
-/**
- * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc.
- * This is currently shared by all the meta ops. But we could create a
- * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc.
- */
-struct temp_texture
-{
- GLuint TexObj;
- GLenum Target; /**< GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE */
- GLsizei MinSize; /**< Min texture size to allocate */
- GLsizei MaxSize; /**< Max possible texture size */
- GLboolean NPOT; /**< Non-power of two size OK? */
- GLsizei Width, Height; /**< Current texture size */
- GLenum IntFormat;
- GLfloat Sright, Ttop; /**< right, top texcoords */
-};
-
-
-/**
- * State for glBlitFramebufer()
- */
-struct blit_state
-{
- GLuint VAO;
- GLuint VBO;
- GLuint DepthFP;
- GLuint ShaderProg;
- GLuint RectShaderProg;
- struct temp_texture depthTex;
-};
-
-
-/**
- * State for glClear()
- */
-struct clear_state
-{
- GLuint VAO;
- GLuint VBO;
- GLuint ShaderProg;
- GLint ColorLocation;
- GLint LayerLocation;
-
- GLuint IntegerShaderProg;
- GLint IntegerColorLocation;
- GLint IntegerLayerLocation;
-};
+static struct blit_shader *
+choose_blit_shader(GLenum target, struct blit_shader_table *table);
-
-/**
- * State for glCopyPixels()
- */
-struct copypix_state
-{
- GLuint VAO;
- GLuint VBO;
-};
-
-
-/**
- * State for glDrawPixels()
- */
-struct drawpix_state
-{
- GLuint VAO;
-
- GLuint StencilFP; /**< Fragment program for drawing stencil images */
- GLuint DepthFP; /**< Fragment program for drawing depth images */
-};
-
-
-/**
- * State for glBitmap()
- */
-struct bitmap_state
-{
- GLuint VAO;
- GLuint VBO;
- struct temp_texture Tex; /**< separate texture from other meta ops */
-};
-
-/**
- * State for GLSL texture sampler which is used to generate fragment
- * shader in _mesa_meta_generate_mipmap().
- */
-struct glsl_sampler {
- const char *type;
- const char *func;
- const char *texcoords;
- GLuint shader_prog;
-};
-
-/**
- * State for _mesa_meta_generate_mipmap()
- */
-struct gen_mipmap_state
-{
- GLuint VAO;
- GLuint VBO;
- GLuint FBO;
- GLuint Sampler;
- GLuint ShaderProg;
- struct glsl_sampler sampler_1d;
- struct glsl_sampler sampler_2d;
- struct glsl_sampler sampler_3d;
- struct glsl_sampler sampler_cubemap;
- struct glsl_sampler sampler_1d_array;
- struct glsl_sampler sampler_2d_array;
-};
-
-/**
- * State for texture decompression
- */
-struct decompress_state
-{
- GLuint VAO;
- GLuint VBO, FBO, RBO, Sampler;
- GLint Width, Height;
-};
-
-/**
- * State for glDrawTex()
- */
-struct drawtex_state
-{
- GLuint VAO;
- GLuint VBO;
-};
-
-#define MAX_META_OPS_DEPTH 8
-/**
- * All per-context meta state.
- */
-struct gl_meta_state
-{
- /** Stack of state saved during meta-ops */
- struct save_state Save[MAX_META_OPS_DEPTH];
- /** Save stack depth */
- GLuint SaveStackDepth;
-
- struct temp_texture TempTex;
-
- struct blit_state Blit; /**< For _mesa_meta_BlitFramebuffer() */
- struct clear_state Clear; /**< For _mesa_meta_Clear() */
- struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */
- struct drawpix_state DrawPix; /**< For _mesa_meta_DrawPixels() */
- struct bitmap_state Bitmap; /**< For _mesa_meta_Bitmap() */
- struct gen_mipmap_state Mipmap; /**< For _mesa_meta_GenerateMipmap() */
- struct decompress_state Decompress; /**< For texture decompression */
- struct drawtex_state DrawTex; /**< For _mesa_meta_DrawTex() */
-};
-
-static void meta_glsl_blit_cleanup(struct blit_state *blit);
static void cleanup_temp_texture(struct temp_texture *tex);
static void meta_glsl_clear_cleanup(struct clear_state *clear);
static void meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap);
static void meta_decompress_cleanup(struct decompress_state *decompress);
static void meta_drawpix_cleanup(struct drawpix_state *drawpix);
-static GLuint
-compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB *source)
+GLuint
+_mesa_meta_compile_shader_with_debug(struct gl_context *ctx, GLenum target,
+ const GLcharARB *source)
{
GLuint shader;
GLint ok, size;
@@ -384,7 +121,7 @@ compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB
return 0;
}
- _mesa_GetProgramInfoLog(shader, size, NULL, info);
+ _mesa_GetShaderInfoLog(shader, size, NULL, info);
_mesa_problem(ctx,
"meta program compile failed:\n%s\n"
"source:\n%s\n",
@@ -396,8 +133,8 @@ compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB
return 0;
}
-static GLuint
-link_program_with_debug(struct gl_context *ctx, GLuint program)
+GLuint
+_mesa_meta_link_program_with_debug(struct gl_context *ctx, GLuint program)
{
GLint ok, size;
GLchar *info;
@@ -425,6 +162,182 @@ link_program_with_debug(struct gl_context *ctx, GLuint program)
}
/**
+ * Generate a generic shader to blit from a texture to a framebuffer
+ *
+ * \param ctx Current GL context
+ * \param texTarget Texture target that will be the source of the blit
+ *
+ * \returns a handle to a shader program on success or zero on failure.
+ */
+void
+_mesa_meta_setup_blit_shader(struct gl_context *ctx,
+ GLenum target,
+ struct blit_shader_table *table)
+{
+ const char *vs_source;
+ char *fs_source;
+ GLuint vs, fs;
+ void *const mem_ctx = ralloc_context(NULL);
+ struct blit_shader *shader = choose_blit_shader(target, table);
+ char *name;
+
+ assert(shader != NULL);
+
+ if (shader->shader_prog != 0) {
+ _mesa_UseProgram(shader->shader_prog);
+ return;
+ }
+
+ if (ctx->Const.GLSLVersion < 130) {
+ vs_source =
+ "attribute vec2 position;\n"
+ "attribute vec4 textureCoords;\n"
+ "varying vec4 texCoords;\n"
+ "void main()\n"
+ "{\n"
+ " texCoords = textureCoords;\n"
+ " gl_Position = vec4(position, 0.0, 1.0);\n"
+ "}\n";
+
+ fs_source = ralloc_asprintf(mem_ctx,
+ "#extension GL_EXT_texture_array : enable\n"
+ "#extension GL_ARB_texture_cube_map_array: enable\n"
+ "uniform %s texSampler;\n"
+ "varying vec4 texCoords;\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragColor = %s(texSampler, %s);\n"
+ " gl_FragDepth = gl_FragColor.x;\n"
+ "}\n",
+ shader->type,
+ shader->func, shader->texcoords);
+ }
+ else {
+ vs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "in vec2 position;\n"
+ "in vec4 textureCoords;\n"
+ "out vec4 texCoords;\n"
+ "void main()\n"
+ "{\n"
+ " texCoords = textureCoords;\n"
+ " gl_Position = vec4(position, 0.0, 1.0);\n"
+ "}\n");
+ fs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "#extension GL_ARB_texture_cube_map_array: enable\n"
+ "uniform %s texSampler;\n"
+ "in vec4 texCoords;\n"
+ "out vec4 out_color;\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " out_color = texture(texSampler, %s);\n"
+ " gl_FragDepth = out_color.x;\n"
+ "}\n",
+ shader->type,
+ shader->texcoords);
+ }
+
+ vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source);
+ fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source);
+
+ shader->shader_prog = _mesa_CreateProgramObjectARB();
+ _mesa_AttachShader(shader->shader_prog, fs);
+ _mesa_DeleteObjectARB(fs);
+ _mesa_AttachShader(shader->shader_prog, vs);
+ _mesa_DeleteObjectARB(vs);
+ _mesa_BindAttribLocation(shader->shader_prog, 0, "position");
+ _mesa_BindAttribLocation(shader->shader_prog, 1, "texcoords");
+ _mesa_meta_link_program_with_debug(ctx, shader->shader_prog);
+ name = ralloc_asprintf(mem_ctx, "%s blit", shader->type);
+ _mesa_ObjectLabel(GL_PROGRAM, shader->shader_prog, -1, name);
+ ralloc_free(mem_ctx);
+
+ _mesa_UseProgram(shader->shader_prog);
+}
+
+/**
+ * Configure vertex buffer and vertex array objects for tests
+ *
+ * Regardless of whether a new VAO and new VBO are created, the objects
+ * referenced by \c VAO and \c VBO will be bound into the GL state vector
+ * when this function terminates.
+ *
+ * \param VAO Storage for vertex array object handle. If 0, a new VAO
+ * will be created.
+ * \param VBO Storage for vertex buffer object handle. If 0, a new VBO
+ * will be created. The new VBO will have storage for 4
+ * \c vertex structures.
+ * \param use_generic_attributes Should generic attributes 0 and 1 be used,
+ * or should traditional, fixed-function color and texture
+ * coordinate be used?
+ * \param vertex_size Number of components for attribute 0 / vertex.
+ * \param texcoord_size Number of components for attribute 1 / texture
+ * coordinate. If this is 0, attribute 1 will not be set or
+ * enabled.
+ * \param color_size Number of components for attribute 1 / primary color.
+ * If this is 0, attribute 1 will not be set or enabled.
+ *
+ * \note If \c use_generic_attributes is \c true, \c color_size must be zero.
+ * Use \c texcoord_size instead.
+ */
+void
+_mesa_meta_setup_vertex_objects(GLuint *VAO, GLuint *VBO,
+ bool use_generic_attributes,
+ unsigned vertex_size, unsigned texcoord_size,
+ unsigned color_size)
+{
+ if (*VAO == 0) {
+ assert(*VBO == 0);
+
+ /* create vertex array object */
+ _mesa_GenVertexArrays(1, VAO);
+ _mesa_BindVertexArray(*VAO);
+
+ /* create vertex array buffer */
+ _mesa_GenBuffers(1, VBO);
+ _mesa_BindBuffer(GL_ARRAY_BUFFER, *VBO);
+ _mesa_BufferData(GL_ARRAY_BUFFER, 4 * sizeof(struct vertex), NULL,
+ GL_DYNAMIC_DRAW);
+
+ /* setup vertex arrays */
+ if (use_generic_attributes) {
+ assert(color_size == 0);
+
+ _mesa_VertexAttribPointer(0, vertex_size, GL_FLOAT, GL_FALSE,
+ sizeof(struct vertex), OFFSET(x));
+ _mesa_EnableVertexAttribArray(0);
+
+ if (texcoord_size > 0) {
+ _mesa_VertexAttribPointer(1, texcoord_size, GL_FLOAT, GL_FALSE,
+ sizeof(struct vertex), OFFSET(tex));
+ _mesa_EnableVertexAttribArray(1);
+ }
+ } else {
+ _mesa_VertexPointer(vertex_size, GL_FLOAT, sizeof(struct vertex),
+ OFFSET(x));
+ _mesa_EnableClientState(GL_VERTEX_ARRAY);
+
+ if (texcoord_size > 0) {
+ _mesa_TexCoordPointer(texcoord_size, GL_FLOAT,
+ sizeof(struct vertex), OFFSET(tex));
+ _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
+ }
+
+ if (color_size > 0) {
+ _mesa_ColorPointer(color_size, GL_FLOAT,
+ sizeof(struct vertex), OFFSET(r));
+ _mesa_EnableClientState(GL_COLOR_ARRAY);
+ }
+ }
+ } else {
+ _mesa_BindVertexArray(*VAO);
+ _mesa_BindBuffer(GL_ARRAY_BUFFER, *VBO);
+ }
+}
+
+/**
* Initialize meta-ops for a context.
* To be called once during context creation.
*/
@@ -446,7 +359,7 @@ _mesa_meta_free(struct gl_context *ctx)
{
GET_CURRENT_CONTEXT(old_context);
_mesa_make_current(ctx, NULL, NULL);
- meta_glsl_blit_cleanup(&ctx->Meta->Blit);
+ _mesa_meta_glsl_blit_cleanup(&ctx->Meta->Blit);
meta_glsl_clear_cleanup(&ctx->Meta->Clear);
meta_glsl_generate_mipmap_cleanup(&ctx->Meta->Mipmap);
cleanup_temp_texture(&ctx->Meta->TempTex);
@@ -480,6 +393,13 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
memset(save, 0, sizeof(*save));
save->SavedState = state;
+ /* We always push into desktop GL mode and pop out at the end. No sense in
+ * writing our shaders varying based on the user's context choice, when
+ * Mesa can handle either.
+ */
+ save->API = ctx->API;
+ ctx->API = API_OPENGL_COMPAT;
+
/* Pausing transform feedback needs to be done early, or else we won't be
* able to change other state.
*/
@@ -539,9 +459,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE);
}
- if ((state & MESA_META_FOG)
- && ctx->API != API_OPENGL_CORE
- && ctx->API != API_OPENGLES2) {
+ if (state & MESA_META_FOG) {
save->Fog = ctx->Fog.Enabled;
if (ctx->Fog.Enabled)
_mesa_set_enable(ctx, GL_FOG, GL_FALSE);
@@ -586,10 +504,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
save->PolygonCull = ctx->Polygon.CullFlag;
_mesa_PolygonMode(GL_FRONT_AND_BACK, GL_FILL);
_mesa_set_enable(ctx, GL_POLYGON_OFFSET_FILL, GL_FALSE);
- if (ctx->API == API_OPENGL_COMPAT) {
- _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, GL_FALSE);
- _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, GL_FALSE);
- }
+ _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, GL_FALSE);
+ _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, GL_FALSE);
_mesa_set_enable(ctx, GL_CULL_FACE, GL_FALSE);
}
@@ -601,21 +517,21 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
if (state & MESA_META_SHADER) {
int i;
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_vertex_program) {
+ if (ctx->Extensions.ARB_vertex_program) {
save->VertexProgramEnabled = ctx->VertexProgram.Enabled;
_mesa_reference_vertprog(ctx, &save->VertexProgram,
ctx->VertexProgram.Current);
_mesa_set_enable(ctx, GL_VERTEX_PROGRAM_ARB, GL_FALSE);
}
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_fragment_program) {
+ if (ctx->Extensions.ARB_fragment_program) {
save->FragmentProgramEnabled = ctx->FragmentProgram.Enabled;
_mesa_reference_fragprog(ctx, &save->FragmentProgram,
ctx->FragmentProgram.Current);
_mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_FALSE);
}
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ATI_fragment_shader) {
+ if (ctx->Extensions.ATI_fragment_shader) {
save->ATIFragmentShaderEnabled = ctx->ATIFragmentShader.Enabled;
_mesa_set_enable(ctx, GL_FRAGMENT_SHADER_ATI, GL_FALSE);
}
@@ -645,33 +561,24 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
save->EnvMode = ctx->Texture.Unit[0].EnvMode;
/* Disable all texture units */
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
- for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
- save->TexEnabled[u] = ctx->Texture.Unit[u].Enabled;
- save->TexGenEnabled[u] = ctx->Texture.Unit[u].TexGenEnabled;
- if (ctx->Texture.Unit[u].Enabled ||
- ctx->Texture.Unit[u].TexGenEnabled) {
- _mesa_ActiveTexture(GL_TEXTURE0 + u);
- _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE);
- if (ctx->Extensions.ARB_texture_cube_map)
- _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
- if (_mesa_is_gles(ctx) &&
- ctx->Extensions.OES_EGL_image_external)
- _mesa_set_enable(ctx, GL_TEXTURE_EXTERNAL_OES, GL_FALSE);
-
- if (ctx->API == API_OPENGL_COMPAT) {
- _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE);
- if (ctx->Extensions.NV_texture_rectangle)
- _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, GL_FALSE);
- } else {
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_STR_OES, GL_FALSE);
- }
- }
+ for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
+ save->TexEnabled[u] = ctx->Texture.Unit[u].Enabled;
+ save->TexGenEnabled[u] = ctx->Texture.Unit[u].TexGenEnabled;
+ if (ctx->Texture.Unit[u].Enabled ||
+ ctx->Texture.Unit[u].TexGenEnabled) {
+ _mesa_ActiveTexture(GL_TEXTURE0 + u);
+ _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE);
+ if (ctx->Extensions.ARB_texture_cube_map)
+ _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
+
+ _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE);
+ if (ctx->Extensions.NV_texture_rectangle)
+ _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, GL_FALSE);
}
}
@@ -684,9 +591,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
/* set defaults for unit[0] */
_mesa_ActiveTexture(GL_TEXTURE0);
_mesa_ClientActiveTexture(GL_TEXTURE0);
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- }
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
if (state & MESA_META_TRANSFORM) {
@@ -799,9 +704,20 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
}
if (state & MESA_META_MULTISAMPLE) {
- save->MultisampleEnabled = ctx->Multisample.Enabled;
+ save->Multisample = ctx->Multisample; /* struct copy */
+
if (ctx->Multisample.Enabled)
_mesa_set_multisample(ctx, GL_FALSE);
+ if (ctx->Multisample.SampleCoverage)
+ _mesa_set_enable(ctx, GL_SAMPLE_COVERAGE, GL_FALSE);
+ if (ctx->Multisample.SampleAlphaToCoverage)
+ _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_FALSE);
+ if (ctx->Multisample.SampleAlphaToOne)
+ _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_ONE, GL_FALSE);
+ if (ctx->Multisample.SampleShading)
+ _mesa_set_enable(ctx, GL_SAMPLE_SHADING, GL_FALSE);
+ if (ctx->Multisample.SampleMask)
+ _mesa_set_enable(ctx, GL_SAMPLE_MASK, GL_FALSE);
}
if (state & MESA_META_FRAMEBUFFER_SRGB) {
@@ -892,9 +808,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_DepthMask(save->Depth.Mask);
}
- if ((state & MESA_META_FOG)
- && ctx->API != API_OPENGL_CORE
- && ctx->API != API_OPENGLES2) {
+ if (state & MESA_META_FOG) {
_mesa_set_enable(ctx, GL_FOG, save->Fog);
}
@@ -918,18 +832,10 @@ _mesa_meta_end(struct gl_context *ctx)
}
if (state & MESA_META_RASTERIZATION) {
- /* Core context requires that front and back mode be the same.
- */
- if (ctx->API == API_OPENGL_CORE) {
- _mesa_PolygonMode(GL_FRONT_AND_BACK, save->FrontPolygonMode);
- } else {
- _mesa_PolygonMode(GL_FRONT, save->FrontPolygonMode);
- _mesa_PolygonMode(GL_BACK, save->BackPolygonMode);
- }
- if (ctx->API == API_OPENGL_COMPAT) {
- _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, save->PolygonStipple);
- _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, save->PolygonSmooth);
- }
+ _mesa_PolygonMode(GL_FRONT, save->FrontPolygonMode);
+ _mesa_PolygonMode(GL_BACK, save->BackPolygonMode);
+ _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, save->PolygonStipple);
+ _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, save->PolygonSmooth);
_mesa_set_enable(ctx, GL_POLYGON_OFFSET_FILL, save->PolygonOffset);
_mesa_set_enable(ctx, GL_CULL_FACE, save->PolygonCull);
}
@@ -949,7 +855,7 @@ _mesa_meta_end(struct gl_context *ctx)
}
if (state & MESA_META_SHADER) {
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_vertex_program) {
+ if (ctx->Extensions.ARB_vertex_program) {
_mesa_set_enable(ctx, GL_VERTEX_PROGRAM_ARB,
save->VertexProgramEnabled);
_mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current,
@@ -957,7 +863,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_reference_vertprog(ctx, &save->VertexProgram, NULL);
}
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_fragment_program) {
+ if (ctx->Extensions.ARB_fragment_program) {
_mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB,
save->FragmentProgramEnabled);
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram.Current,
@@ -965,7 +871,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_reference_fragprog(ctx, &save->FragmentProgram, NULL);
}
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ATI_fragment_shader) {
+ if (ctx->Extensions.ATI_fragment_shader) {
_mesa_set_enable(ctx, GL_FRAGMENT_SHADER_ATI,
save->ATIFragmentShaderEnabled);
}
@@ -996,7 +902,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_set_enable(ctx, GL_STENCIL_TEST, stencil->Enabled);
_mesa_ClearStencil(stencil->Clear);
- if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.EXT_stencil_two_side) {
+ if (ctx->Extensions.EXT_stencil_two_side) {
_mesa_set_enable(ctx, GL_STENCIL_TEST_TWO_SIDE_EXT,
stencil->TestTwoSide);
_mesa_ActiveStencilFaceEXT(stencil->ActiveFace
@@ -1028,9 +934,7 @@ _mesa_meta_end(struct gl_context *ctx)
ASSERT(ctx->Texture.CurrentUnit == 0);
/* restore texenv for unit[0] */
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, save->EnvMode);
- }
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, save->EnvMode);
/* restore texture objects for unit[0] only */
for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) {
@@ -1043,17 +947,15 @@ _mesa_meta_end(struct gl_context *ctx)
}
/* Restore fixed function texture enables, texgen */
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
- for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
- if (ctx->Texture.Unit[u].Enabled != save->TexEnabled[u]) {
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- ctx->Texture.Unit[u].Enabled = save->TexEnabled[u];
- }
+ for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
+ if (ctx->Texture.Unit[u].Enabled != save->TexEnabled[u]) {
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ ctx->Texture.Unit[u].Enabled = save->TexEnabled[u];
+ }
- if (ctx->Texture.Unit[u].TexGenEnabled != save->TexGenEnabled[u]) {
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- ctx->Texture.Unit[u].TexGenEnabled = save->TexGenEnabled[u];
- }
+ if (ctx->Texture.Unit[u].TexGenEnabled != save->TexGenEnabled[u]) {
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ ctx->Texture.Unit[u].TexGenEnabled = save->TexGenEnabled[u];
}
}
@@ -1137,8 +1039,30 @@ _mesa_meta_end(struct gl_context *ctx)
}
if (state & MESA_META_MULTISAMPLE) {
- if (ctx->Multisample.Enabled != save->MultisampleEnabled)
- _mesa_set_multisample(ctx, save->MultisampleEnabled);
+ struct gl_multisample_attrib *ctx_ms = &ctx->Multisample;
+ struct gl_multisample_attrib *save_ms = &save->Multisample;
+
+ if (ctx_ms->Enabled != save_ms->Enabled)
+ _mesa_set_multisample(ctx, save_ms->Enabled);
+ if (ctx_ms->SampleCoverage != save_ms->SampleCoverage)
+ _mesa_set_enable(ctx, GL_SAMPLE_COVERAGE, save_ms->SampleCoverage);
+ if (ctx_ms->SampleAlphaToCoverage != save_ms->SampleAlphaToCoverage)
+ _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_COVERAGE, save_ms->SampleAlphaToCoverage);
+ if (ctx_ms->SampleAlphaToOne != save_ms->SampleAlphaToOne)
+ _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_ONE, save_ms->SampleAlphaToOne);
+ if (ctx_ms->SampleCoverageValue != save_ms->SampleCoverageValue ||
+ ctx_ms->SampleCoverageInvert != save_ms->SampleCoverageInvert) {
+ _mesa_SampleCoverage(save_ms->SampleCoverageValue,
+ save_ms->SampleCoverageInvert);
+ }
+ if (ctx_ms->SampleShading != save_ms->SampleShading)
+ _mesa_set_enable(ctx, GL_SAMPLE_SHADING, save_ms->SampleShading);
+ if (ctx_ms->SampleMask != save_ms->SampleMask)
+ _mesa_set_enable(ctx, GL_SAMPLE_MASK, save_ms->SampleMask);
+ if (ctx_ms->SampleMaskValue != save_ms->SampleMaskValue)
+ _mesa_SampleMaski(0, save_ms->SampleMaskValue);
+ if (ctx_ms->MinSampleShadingValue != save_ms->MinSampleShadingValue)
+ _mesa_MinSampleShading(save_ms->MinSampleShadingValue);
}
if (state & MESA_META_FRAMEBUFFER_SRGB) {
@@ -1157,6 +1081,8 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_ResumeTransformFeedback();
ctx->Meta->SaveStackDepth--;
+
+ ctx->API = save->API;
}
@@ -1224,8 +1150,8 @@ cleanup_temp_texture(struct temp_texture *tex)
* Return pointer to temp_texture info for non-bitmap ops.
* This does some one-time init if needed.
*/
-static struct temp_texture *
-get_temp_texture(struct gl_context *ctx)
+struct temp_texture *
+_mesa_meta_get_temp_texture(struct gl_context *ctx)
{
struct temp_texture *tex = &ctx->Meta->TempTex;
@@ -1258,8 +1184,8 @@ get_bitmap_temp_texture(struct gl_context *ctx)
* Return pointer to depth temp_texture.
* This does some one-time init if needed.
*/
-static struct temp_texture *
-get_temp_depth_texture(struct gl_context *ctx)
+struct temp_texture *
+_mesa_meta_get_temp_depth_texture(struct gl_context *ctx)
{
struct temp_texture *tex = &ctx->Meta->Blit.depthTex;
@@ -1279,9 +1205,9 @@ get_temp_depth_texture(struct gl_context *ctx)
*
* \return GL_TRUE if new texture is needed, GL_FALSE otherwise
*/
-static GLboolean
-alloc_texture(struct temp_texture *tex,
- GLsizei width, GLsizei height, GLenum intFormat)
+GLboolean
+_mesa_meta_alloc_texture(struct temp_texture *tex,
+ GLsizei width, GLsizei height, GLenum intFormat)
{
GLboolean newTex = GL_FALSE;
@@ -1332,19 +1258,22 @@ alloc_texture(struct temp_texture *tex,
/**
* Setup/load texture for glCopyPixels or glBlitFramebuffer.
*/
-static void
-setup_copypix_texture(struct gl_context *ctx,
- struct temp_texture *tex,
- GLboolean newTex,
- GLint srcX, GLint srcY,
- GLsizei width, GLsizei height, GLenum intFormat,
- GLenum filter)
+void
+_mesa_meta_setup_copypix_texture(struct gl_context *ctx,
+ struct temp_texture *tex,
+ GLint srcX, GLint srcY,
+ GLsizei width, GLsizei height,
+ GLenum intFormat,
+ GLenum filter)
{
+ bool newTex;
+
_mesa_BindTexture(tex->Target, tex->TexObj);
_mesa_TexParameteri(tex->Target, GL_TEXTURE_MIN_FILTER, filter);
_mesa_TexParameteri(tex->Target, GL_TEXTURE_MAG_FILTER, filter);
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES)
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+
+ newTex = _mesa_meta_alloc_texture(tex, width, height, intFormat);
/* copy framebuffer image to texture */
if (newTex) {
@@ -1375,20 +1304,18 @@ setup_copypix_texture(struct gl_context *ctx,
/**
* Setup/load texture for glDrawPixels.
*/
-static void
-setup_drawpix_texture(struct gl_context *ctx,
- struct temp_texture *tex,
- GLboolean newTex,
- GLenum texIntFormat,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const GLvoid *pixels)
+void
+_mesa_meta_setup_drawpix_texture(struct gl_context *ctx,
+ struct temp_texture *tex,
+ GLboolean newTex,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type,
+ const GLvoid *pixels)
{
_mesa_BindTexture(tex->Target, tex->TexObj);
_mesa_TexParameteri(tex->Target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
_mesa_TexParameteri(tex->Target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES)
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
/* copy pixel data to texture */
if (newTex) {
@@ -1422,617 +1349,24 @@ setup_drawpix_texture(struct gl_context *ctx,
}
}
-
-
-/**
- * One-time init for drawing depth pixels.
- */
-static void
-init_blit_depth_pixels(struct gl_context *ctx)
-{
- static const char *program =
- "!!ARBfp1.0\n"
- "TEX result.depth, fragment.texcoord[0], texture[0], %s; \n"
- "END \n";
- char program2[200];
- struct blit_state *blit = &ctx->Meta->Blit;
- struct temp_texture *tex = get_temp_texture(ctx);
- const char *texTarget;
-
- assert(blit->DepthFP == 0);
-
- /* replace %s with "RECT" or "2D" */
- assert(strlen(program) + 4 < sizeof(program2));
- if (tex->Target == GL_TEXTURE_RECTANGLE)
- texTarget = "RECT";
- else
- texTarget = "2D";
- _mesa_snprintf(program2, sizeof(program2), program, texTarget);
-
- _mesa_GenProgramsARB(1, &blit->DepthFP);
- _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP);
- _mesa_ProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
- strlen(program2), (const GLubyte *) program2);
-}
-
-static void
-setup_ff_blit_framebuffer(struct blit_state *blit)
+void
+_mesa_meta_setup_ff_tnl_for_blit(GLuint *VAO, GLuint *VBO,
+ unsigned texcoord_size)
{
- struct vertex {
- GLfloat x, y, s, t;
- };
- struct vertex verts[4];
-
- if (blit->VAO == 0) {
- /* one-time setup */
-
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &blit->VAO);
- _mesa_BindVertexArray(blit->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &blit->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
- _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
- NULL, GL_DYNAMIC_DRAW_ARB);
-
- /* setup vertex arrays */
- _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
- }
+ _mesa_meta_setup_vertex_objects(VAO, VBO, false, 2, texcoord_size, 0);
/* setup projection matrix */
_mesa_MatrixMode(GL_PROJECTION);
_mesa_LoadIdentity();
- _mesa_Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
-
-}
-
-static void
-setup_glsl_blit_framebuffer(struct gl_context *ctx,
- struct blit_state *blit,
- GLenum target)
-{
- struct vertex {
- GLfloat x, y, s, t;
- };
- struct vertex verts[4];
- const char *vs_source;
- char *fs_source;
- GLuint vs, fs;
- void *mem_ctx;
- GLuint ShaderProg;
- GLboolean texture_2d = (target == GL_TEXTURE_2D);
-
- /* target = GL_TEXTURE_RECTANGLE is not supported in GLES 3.0 */
- assert(_mesa_is_desktop_gl(ctx) || texture_2d);
-
- /* Check if already initialized */
- if (blit->VAO == 0) {
-
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &blit->VAO);
- _mesa_BindVertexArray(blit->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &blit->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
- _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
- NULL, GL_DYNAMIC_DRAW_ARB);
-
- /* setup vertex arrays */
- _mesa_VertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE,
- sizeof(struct vertex), OFFSET(x));
- _mesa_VertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE,
- sizeof(struct vertex), OFFSET(s));
-
- _mesa_EnableVertexAttribArray(0);
- _mesa_EnableVertexAttribArray(1);
- }
-
- /* Generate a relevant fragment shader program for the texture target */
- if ((target == GL_TEXTURE_2D && blit->ShaderProg != 0) ||
- (target == GL_TEXTURE_RECTANGLE && blit->RectShaderProg != 0)) {
- return;
- }
-
- mem_ctx = ralloc_context(NULL);
-
- if (ctx->Const.GLSLVersion < 130) {
- vs_source =
- "attribute vec2 position;\n"
- "attribute vec2 textureCoords;\n"
- "varying vec2 texCoords;\n"
- "void main()\n"
- "{\n"
- " texCoords = textureCoords;\n"
- " gl_Position = vec4(position, 0.0, 1.0);\n"
- "}\n";
-
- fs_source = ralloc_asprintf(mem_ctx,
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
- "uniform %s texSampler;\n"
- "varying vec2 texCoords;\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = %s(texSampler, texCoords);\n"
- " gl_FragDepth = gl_FragColor.r;\n"
- "}\n",
- texture_2d ? "sampler2D" : "sampler2DRect",
- texture_2d ? "texture2D" : "texture2DRect");
- }
- else {
- vs_source = ralloc_asprintf(mem_ctx,
- "#version %s\n"
- "in vec2 position;\n"
- "in vec2 textureCoords;\n"
- "out vec2 texCoords;\n"
- "void main()\n"
- "{\n"
- " texCoords = textureCoords;\n"
- " gl_Position = vec4(position, 0.0, 1.0);\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es");
- fs_source = ralloc_asprintf(mem_ctx,
- "#version %s\n"
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
- "uniform %s texSampler;\n"
- "in vec2 texCoords;\n"
- "out vec4 out_color;\n"
- "\n"
- "void main()\n"
- "{\n"
- " out_color = %s(texSampler, texCoords);\n"
- " gl_FragDepth = out_color.r;\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es",
- texture_2d ? "sampler2D" : "sampler2DRect",
- texture_2d ? "texture" : "texture2DRect");
- }
-
- vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source);
- fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source);
-
- ShaderProg = _mesa_CreateProgramObjectARB();
- _mesa_AttachShader(ShaderProg, fs);
- _mesa_DeleteObjectARB(fs);
- _mesa_AttachShader(ShaderProg, vs);
- _mesa_DeleteObjectARB(vs);
- _mesa_BindAttribLocation(ShaderProg, 0, "position");
- _mesa_BindAttribLocation(ShaderProg, 1, "texcoords");
- link_program_with_debug(ctx, ShaderProg);
- ralloc_free(mem_ctx);
- if (texture_2d)
- blit->ShaderProg = ShaderProg;
- else
- blit->RectShaderProg = ShaderProg;
}
/**
- * Try to do a glBlitFramebuffer using no-copy texturing.
- * We can do this when the src renderbuffer is actually a texture.
- * But if the src buffer == dst buffer we cannot do this.
- *
- * \return new buffer mask indicating the buffers left to blit using the
- * normal path.
- */
-static GLbitfield
-blitframebuffer_texture(struct gl_context *ctx,
- GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
- GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter, GLint flipX,
- GLint flipY, GLboolean glsl_version)
-{
- if (mask & GL_COLOR_BUFFER_BIT) {
- const struct gl_framebuffer *drawFb = ctx->DrawBuffer;
- const struct gl_framebuffer *readFb = ctx->ReadBuffer;
- const struct gl_renderbuffer_attachment *drawAtt;
- const struct gl_renderbuffer_attachment *readAtt =
- &readFb->Attachment[readFb->_ColorReadBufferIndex];
-
- if (readAtt && readAtt->Texture) {
- struct blit_state *blit = &ctx->Meta->Blit;
- const GLint dstX = MIN2(dstX0, dstX1);
- const GLint dstY = MIN2(dstY0, dstY1);
- const GLint dstW = abs(dstX1 - dstX0);
- const GLint dstH = abs(dstY1 - dstY0);
- const struct gl_texture_object *texObj = readAtt->Texture;
- const GLuint srcLevel = readAtt->TextureLevel;
- const GLint baseLevelSave = texObj->BaseLevel;
- const GLint maxLevelSave = texObj->MaxLevel;
- const GLenum target = texObj->Target;
- GLuint sampler, samplerSave =
- ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ?
- ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0;
- int i;
-
- /* Iterate through all draw buffers */
- for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) {
- int idx = ctx->DrawBuffer->_ColorDrawBufferIndexes[i];
- if (idx == -1)
- continue;
- drawAtt = &drawFb->Attachment[idx];
-
- if (drawAtt->Texture == readAtt->Texture) {
- /* Can't use same texture as both the source and dest. We need
- * to handle overlapping blits and besides, some hw may not
- * support this.
- */
- return mask;
- }
- }
-
- if (target != GL_TEXTURE_2D && target != GL_TEXTURE_RECTANGLE_ARB) {
- /* Can't handle other texture types at this time */
- return mask;
- }
-
- /* Choose between glsl version and fixed function version of
- * BlitFramebuffer function.
- */
- if (glsl_version) {
- setup_glsl_blit_framebuffer(ctx, blit, target);
- if (target == GL_TEXTURE_2D)
- _mesa_UseProgram(blit->ShaderProg);
- else
- _mesa_UseProgram(blit->RectShaderProg);
- }
- else {
- setup_ff_blit_framebuffer(&ctx->Meta->Blit);
- }
-
- _mesa_BindVertexArray(blit->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
-
- _mesa_GenSamplers(1, &sampler);
- _mesa_BindSampler(ctx->Texture.CurrentUnit, sampler);
-
- /*
- printf("Blit from texture!\n");
- printf(" srcAtt %p dstAtt %p\n", readAtt, drawAtt);
- printf(" srcTex %p dstText %p\n", texObj, drawAtt->Texture);
- */
-
- /* Prepare src texture state */
- _mesa_BindTexture(target, texObj->Name);
- _mesa_SamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, filter);
- _mesa_SamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, filter);
- if (target != GL_TEXTURE_RECTANGLE_ARB) {
- _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
- _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
- }
- _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- /* Always do our blits with no sRGB decode or encode. Note that
- * GL_FRAMEBUFFER_SRGB has already been disabled by
- * _mesa_meta_begin().
- */
- if (ctx->Extensions.EXT_texture_sRGB_decode) {
- _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT,
- GL_SKIP_DECODE_EXT);
- }
-
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) {
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- _mesa_set_enable(ctx, target, GL_TRUE);
- }
-
- /* Prepare vertex data (the VBO was previously created and bound) */
- {
- struct vertex {
- GLfloat x, y, s, t;
- };
- struct vertex verts[4];
- GLfloat s0, t0, s1, t1;
-
- if (target == GL_TEXTURE_2D) {
- const struct gl_texture_image *texImage
- = _mesa_select_tex_image(ctx, texObj, target, srcLevel);
- s0 = srcX0 / (float) texImage->Width;
- s1 = srcX1 / (float) texImage->Width;
- t0 = srcY0 / (float) texImage->Height;
- t1 = srcY1 / (float) texImage->Height;
- }
- else {
- assert(target == GL_TEXTURE_RECTANGLE_ARB);
- s0 = (float) srcX0;
- s1 = (float) srcX1;
- t0 = (float) srcY0;
- t1 = (float) srcY1;
- }
-
- /* setup vertex positions */
- verts[0].x = -1.0F * flipX;
- verts[0].y = -1.0F * flipY;
- verts[1].x = 1.0F * flipX;
- verts[1].y = -1.0F * flipY;
- verts[2].x = 1.0F * flipX;
- verts[2].y = 1.0F * flipY;
- verts[3].x = -1.0F * flipX;
- verts[3].y = 1.0F * flipY;
-
- verts[0].s = s0;
- verts[0].t = t0;
- verts[1].s = s1;
- verts[1].t = t0;
- verts[2].s = s1;
- verts[2].t = t1;
- verts[3].s = s0;
- verts[3].t = t1;
-
- _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
- }
-
- /* setup viewport */
- _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
- _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- _mesa_DepthMask(GL_FALSE);
- _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
-
- /* Restore texture object state, the texture binding will
- * be restored by _mesa_meta_end().
- */
- if (target != GL_TEXTURE_RECTANGLE_ARB) {
- _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
- _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
- }
-
- _mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave);
- _mesa_DeleteSamplers(1, &sampler);
-
- /* Done with color buffer */
- mask &= ~GL_COLOR_BUFFER_BIT;
- }
- }
-
- return mask;
-}
-
-
-/**
- * Meta implementation of ctx->Driver.BlitFramebuffer() in terms
- * of texture mapping and polygon rendering.
- */
-void
-_mesa_meta_BlitFramebuffer(struct gl_context *ctx,
- GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
- GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter)
-{
- struct blit_state *blit = &ctx->Meta->Blit;
- struct temp_texture *tex = get_temp_texture(ctx);
- struct temp_texture *depthTex = get_temp_depth_texture(ctx);
- const GLsizei maxTexSize = tex->MaxSize;
- const GLint srcX = MIN2(srcX0, srcX1);
- const GLint srcY = MIN2(srcY0, srcY1);
- const GLint srcW = abs(srcX1 - srcX0);
- const GLint srcH = abs(srcY1 - srcY0);
- const GLint dstX = MIN2(dstX0, dstX1);
- const GLint dstY = MIN2(dstY0, dstY1);
- const GLint dstW = abs(dstX1 - dstX0);
- const GLint dstH = abs(dstY1 - dstY0);
- const GLint srcFlipX = (srcX1 - srcX0) / srcW;
- const GLint srcFlipY = (srcY1 - srcY0) / srcH;
- const GLint dstFlipX = (dstX1 - dstX0) / dstW;
- const GLint dstFlipY = (dstY1 - dstY0) / dstH;
- const GLint flipX = srcFlipX * dstFlipX;
- const GLint flipY = srcFlipY * dstFlipY;
-
- struct vertex {
- GLfloat x, y, s, t;
- };
- struct vertex verts[4];
- GLboolean newTex;
- const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader &&
- ctx->Extensions.ARB_fragment_shader &&
- (ctx->API != API_OPENGLES);
-
- /* In addition to falling back if the blit size is larger than the maximum
- * texture size, fallback if the source is multisampled. This fallback can
- * be removed once Mesa gets support ARB_texture_multisample.
- */
- if (srcW > maxTexSize || srcH > maxTexSize
- || ctx->ReadBuffer->Visual.samples > 0) {
- /* XXX avoid this fallback */
- _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1, mask, filter);
- return;
- }
-
- /* only scissor effects blit so save/clear all other relevant state */
- _mesa_meta_begin(ctx, ~MESA_META_SCISSOR);
-
- /* Try faster, direct texture approach first */
- mask = blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1, mask, filter,
- dstFlipX, dstFlipY, use_glsl_version);
- if (mask == 0x0) {
- _mesa_meta_end(ctx);
- return;
- }
-
- /* Choose between glsl version and fixed function version of
- * BlitFramebuffer function.
- */
- if (use_glsl_version) {
- setup_glsl_blit_framebuffer(ctx, blit, tex->Target);
- if (tex->Target == GL_TEXTURE_2D)
- _mesa_UseProgram(blit->ShaderProg);
- else
- _mesa_UseProgram(blit->RectShaderProg);
- }
- else {
- setup_ff_blit_framebuffer(blit);
- }
-
- _mesa_BindVertexArray(blit->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
-
- /* Continue with "normal" approach which involves copying the src rect
- * into a temporary texture and is "blitted" by drawing a textured quad.
- */
- {
- /* setup vertex positions */
- verts[0].x = -1.0F * flipX;
- verts[0].y = -1.0F * flipY;
- verts[1].x = 1.0F * flipX;
- verts[1].y = -1.0F * flipY;
- verts[2].x = 1.0F * flipX;
- verts[2].y = 1.0F * flipY;
- verts[3].x = -1.0F * flipX;
- verts[3].y = 1.0F * flipY;
-
- }
-
- /* glEnable() in gles2 and gles3 doesn't allow GL_TEXTURE_{1D, 2D, etc.}
- * tokens.
- */
- if (_mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES)
- _mesa_set_enable(ctx, tex->Target, GL_TRUE);
-
- if (mask & GL_COLOR_BUFFER_BIT) {
- const struct gl_framebuffer *readFb = ctx->ReadBuffer;
- const struct gl_renderbuffer *colorReadRb = readFb->_ColorReadBuffer;
- const GLenum rb_base_format =
- _mesa_base_tex_format(ctx, colorReadRb->InternalFormat);
-
- /* Using the exact source rectangle to create the texture does incorrect
- * linear filtering along the edges. So, allocate the texture extended along
- * edges by one pixel in x, y directions.
- */
- newTex = alloc_texture(tex, srcW + 2, srcH + 2, rb_base_format);
- setup_copypix_texture(ctx, tex, newTex,
- srcX - 1, srcY - 1, srcW + 2, srcH + 2,
- rb_base_format, filter);
- /* texcoords (after texture allocation!) */
- {
- verts[0].s = 1.0F;
- verts[0].t = 1.0F;
- verts[1].s = tex->Sright - 1.0F;
- verts[1].t = 1.0F;
- verts[2].s = tex->Sright - 1.0F;
- verts[2].t = tex->Ttop - 1.0F;
- verts[3].s = 1.0F;
- verts[3].t = tex->Ttop - 1.0F;
-
- /* upload new vertex data */
- _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
- }
-
- _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
- _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE);
- _mesa_DepthMask(GL_FALSE);
- _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
- mask &= ~GL_COLOR_BUFFER_BIT;
- }
-
- if ((mask & GL_DEPTH_BUFFER_BIT) &&
- _mesa_is_desktop_gl(ctx) &&
- ctx->Extensions.ARB_depth_texture &&
- ctx->Extensions.ARB_fragment_program) {
-
- GLuint *tmp = malloc(srcW * srcH * sizeof(GLuint));
-
- if (tmp) {
-
- newTex = alloc_texture(depthTex, srcW, srcH, GL_DEPTH_COMPONENT);
- _mesa_ReadPixels(srcX, srcY, srcW, srcH, GL_DEPTH_COMPONENT,
- GL_UNSIGNED_INT, tmp);
- setup_drawpix_texture(ctx, depthTex, newTex, GL_DEPTH_COMPONENT,
- srcW, srcH, GL_DEPTH_COMPONENT,
- GL_UNSIGNED_INT, tmp);
-
- /* texcoords (after texture allocation!) */
- {
- verts[0].s = 0.0F;
- verts[0].t = 0.0F;
- verts[1].s = depthTex->Sright;
- verts[1].t = 0.0F;
- verts[2].s = depthTex->Sright;
- verts[2].t = depthTex->Ttop;
- verts[3].s = 0.0F;
- verts[3].t = depthTex->Ttop;
-
- /* upload new vertex data */
- _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
- }
-
- if (!blit->DepthFP)
- init_blit_depth_pixels(ctx);
-
- _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP);
- _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_TRUE);
- _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
- _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_TRUE);
- _mesa_DepthFunc(GL_ALWAYS);
- _mesa_DepthMask(GL_TRUE);
-
- _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
- _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
- _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
- mask &= ~GL_DEPTH_BUFFER_BIT;
-
- free(tmp);
- }
- }
-
- if (mask & GL_STENCIL_BUFFER_BIT) {
- /* XXX can't easily do stencil */
- }
-
- if (_mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES)
- _mesa_set_enable(ctx, tex->Target, GL_FALSE);
-
- _mesa_meta_end(ctx);
-
- if (mask) {
- _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1, mask, filter);
- }
-}
-
-static void
-meta_glsl_blit_cleanup(struct blit_state *blit)
-{
- if (blit->VAO) {
- _mesa_DeleteVertexArrays(1, &blit->VAO);
- blit->VAO = 0;
- _mesa_DeleteBuffers(1, &blit->VBO);
- blit->VBO = 0;
- }
- if (blit->DepthFP) {
- _mesa_DeleteProgramsARB(1, &blit->DepthFP);
- blit->DepthFP = 0;
- }
-
- _mesa_DeleteObjectARB(blit->ShaderProg);
- blit->ShaderProg = 0;
- _mesa_DeleteObjectARB(blit->RectShaderProg);
- blit->RectShaderProg = 0;
-
- _mesa_DeleteTextures(1, &blit->depthTex.TexObj);
- blit->depthTex.TexObj = 0;
-}
-
-
-/**
* Meta implementation of ctx->Driver.Clear() in terms of polygon rendering.
*/
void
_mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
{
struct clear_state *clear = &ctx->Meta->Clear;
- struct vertex {
- GLfloat x, y, z, r, g, b, a;
- };
struct vertex verts[4];
/* save all state but scissor, pixel pack/unpack */
GLbitfield metaSave = (MESA_META_ALL -
@@ -2049,27 +1383,7 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
_mesa_meta_begin(ctx, metaSave);
- if (clear->VAO == 0) {
- /* one-time setup */
-
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &clear->VAO);
- _mesa_BindVertexArray(clear->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &clear->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
-
- /* setup vertex arrays */
- _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_COLOR_ARRAY);
- }
- else {
- _mesa_BindVertexArray(clear->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
- }
+ _mesa_meta_setup_vertex_objects(&clear->VAO, &clear->VBO, false, 3, 0, 4);
/* GL_COLOR_BUFFER_BIT */
if (buffers & BUFFER_BITS_COLOR) {
@@ -2171,9 +1485,6 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
" }\n"
"}\n";
const char *fs_source =
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
"uniform vec4 color;\n"
"void main()\n"
"{\n"
@@ -2182,20 +1493,10 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
GLuint vs, gs = 0, fs;
bool has_integer_textures;
- if (clear->VAO != 0)
- return;
-
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &clear->VAO);
- _mesa_BindVertexArray(clear->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &clear->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
+ _mesa_meta_setup_vertex_objects(&clear->VAO, &clear->VBO, true, 3, 0, 0);
- /* setup vertex arrays */
- _mesa_VertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void *)0);
- _mesa_EnableVertexAttribArray(0);
+ if (clear->ShaderProg != 0)
+ return;
vs = _mesa_CreateShaderObjectARB(GL_VERTEX_SHADER);
_mesa_ShaderSource(vs, 1, &vs_source, NULL);
@@ -2235,30 +1536,27 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
void *shader_source_mem_ctx = ralloc_context(NULL);
const char *vs_int_source =
ralloc_asprintf(shader_source_mem_ctx,
- "#version %s\n"
+ "#version 130\n"
"in vec4 position;\n"
"void main()\n"
"{\n"
" gl_Position = position;\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es");
+ "}\n");
const char *fs_int_source =
ralloc_asprintf(shader_source_mem_ctx,
- "#version %s\n"
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
+ "#version 130\n"
"uniform ivec4 color;\n"
"out ivec4 out_color;\n"
"\n"
"void main()\n"
"{\n"
" out_color = color;\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es");
+ "}\n");
- vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_int_source);
- fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_int_source);
+ vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER,
+ vs_int_source);
+ fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER,
+ fs_int_source);
ralloc_free(shader_source_mem_ctx);
clear->IntegerShaderProg = _mesa_CreateProgramObjectARB();
@@ -2275,7 +1573,9 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
* BindFragDataLocation to 0.
*/
- link_program_with_debug(ctx, clear->IntegerShaderProg);
+ _mesa_ObjectLabel(GL_PROGRAM, clear->IntegerShaderProg, -1,
+ "integer clear");
+ _mesa_meta_link_program_with_debug(ctx, clear->IntegerShaderProg);
clear->IntegerColorLocation =
_mesa_GetUniformLocation(clear->IntegerShaderProg, "color");
@@ -2321,9 +1621,7 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers)
const float x1 = ((float)fb->_Xmax / fb->Width) * 2.0f - 1.0f;
const float y1 = ((float)fb->_Ymax / fb->Height) * 2.0f - 1.0f;
const float z = -invert_z(ctx->Depth.Clear);
- struct vertex {
- GLfloat x, y, z;
- } verts[4];
+ struct vertex verts[4];
metaSave = (MESA_META_ALPHA_TEST |
MESA_META_BLEND |
@@ -2359,9 +1657,6 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers)
ctx->Color.ClearColor.f);
}
- _mesa_BindVertexArray(clear->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
-
/* GL_COLOR_BUFFER_BIT */
if (buffers & BUFFER_BITS_COLOR) {
/* leave colormask, glDrawBuffer state as-is */
@@ -2443,13 +1738,8 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
GLint dstX, GLint dstY, GLenum type)
{
struct copypix_state *copypix = &ctx->Meta->CopyPix;
- struct temp_texture *tex = get_temp_texture(ctx);
- struct vertex {
- GLfloat x, y, z, s, t;
- };
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
struct vertex verts[4];
- GLboolean newTex;
- GLenum intFormat = GL_RGBA;
if (type != GL_COLOR ||
ctx->_ImageTransferState ||
@@ -2472,31 +1762,15 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
MESA_META_VERTEX |
MESA_META_VIEWPORT));
- if (copypix->VAO == 0) {
- /* one-time setup */
+ _mesa_meta_setup_vertex_objects(&copypix->VAO, &copypix->VBO, false,
+ 3, 2, 0);
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &copypix->VAO);
- _mesa_BindVertexArray(copypix->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &copypix->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, copypix->VBO);
- _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
- NULL, GL_DYNAMIC_DRAW_ARB);
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
- /* setup vertex arrays */
- _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
- }
- else {
- _mesa_BindVertexArray(copypix->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, copypix->VBO);
- }
-
- newTex = alloc_texture(tex, width, height, intFormat);
+ /* Alloc/setup texture */
+ _mesa_meta_setup_copypix_texture(ctx, tex, srcX, srcY, width, height,
+ GL_RGBA, GL_NEAREST);
/* vertex positions, texcoords (after texture allocation!) */
{
@@ -2509,32 +1783,28 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
verts[0].x = dstX0;
verts[0].y = dstY0;
verts[0].z = z;
- verts[0].s = 0.0F;
- verts[0].t = 0.0F;
+ verts[0].tex[0] = 0.0F;
+ verts[0].tex[1] = 0.0F;
verts[1].x = dstX1;
verts[1].y = dstY0;
verts[1].z = z;
- verts[1].s = tex->Sright;
- verts[1].t = 0.0F;
+ verts[1].tex[0] = tex->Sright;
+ verts[1].tex[1] = 0.0F;
verts[2].x = dstX1;
verts[2].y = dstY1;
verts[2].z = z;
- verts[2].s = tex->Sright;
- verts[2].t = tex->Ttop;
+ verts[2].tex[0] = tex->Sright;
+ verts[2].tex[1] = tex->Ttop;
verts[3].x = dstX0;
verts[3].y = dstY1;
verts[3].z = z;
- verts[3].s = 0.0F;
- verts[3].t = tex->Ttop;
+ verts[3].tex[0] = 0.0F;
+ verts[3].tex[1] = tex->Ttop;
/* upload new vertex data */
_mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
}
- /* Alloc/setup texture */
- setup_copypix_texture(ctx, tex, newTex, srcX, srcY, width, height,
- GL_RGBA, GL_NEAREST);
-
_mesa_set_enable(ctx, tex->Target, GL_TRUE);
/* draw textured quad */
@@ -2551,6 +1821,9 @@ meta_drawpix_cleanup(struct drawpix_state *drawpix)
if (drawpix->VAO != 0) {
_mesa_DeleteVertexArrays(1, &drawpix->VAO);
drawpix->VAO = 0;
+
+ _mesa_DeleteBuffers(1, &drawpix->VBO);
+ drawpix->VBO = 0;
}
if (drawpix->StencilFP != 0) {
@@ -2646,7 +1919,7 @@ init_draw_stencil_pixels(struct gl_context *ctx)
"END \n";
char program2[1000];
struct drawpix_state *drawpix = &ctx->Meta->DrawPix;
- struct temp_texture *tex = get_temp_texture(ctx);
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
const char *texTarget;
assert(drawpix->StencilFP == 0);
@@ -2680,7 +1953,7 @@ init_draw_depth_pixels(struct gl_context *ctx)
"END \n";
char program2[200];
struct drawpix_state *drawpix = &ctx->Meta->DrawPix;
- struct temp_texture *tex = get_temp_texture(ctx);
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
const char *texTarget;
assert(drawpix->DepthFP == 0);
@@ -2712,17 +1985,13 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
const GLvoid *pixels)
{
struct drawpix_state *drawpix = &ctx->Meta->DrawPix;
- struct temp_texture *tex = get_temp_texture(ctx);
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
const struct gl_pixelstore_attrib unpackSave = ctx->Unpack;
const GLuint origStencilMask = ctx->Stencil.WriteMask[0];
- struct vertex {
- GLfloat x, y, z, s, t;
- };
struct vertex verts[4];
GLenum texIntFormat;
GLboolean fallback, newTex;
GLbitfield metaExtraSave = 0x0;
- GLuint vbo;
/*
* Determine if we can do the glDrawPixels with texture mapping.
@@ -2812,7 +2081,13 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
MESA_META_VIEWPORT |
metaExtraSave));
- newTex = alloc_texture(tex, width, height, texIntFormat);
+ newTex = _mesa_meta_alloc_texture(tex, width, height, texIntFormat);
+
+ _mesa_meta_setup_vertex_objects(&drawpix->VAO, &drawpix->VBO, false,
+ 3, 2, 0);
+
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
/* vertex positions, texcoords (after texture allocation!) */
{
@@ -2825,43 +2100,29 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
verts[0].x = x0;
verts[0].y = y0;
verts[0].z = z;
- verts[0].s = 0.0F;
- verts[0].t = 0.0F;
+ verts[0].tex[0] = 0.0F;
+ verts[0].tex[1] = 0.0F;
verts[1].x = x1;
verts[1].y = y0;
verts[1].z = z;
- verts[1].s = tex->Sright;
- verts[1].t = 0.0F;
+ verts[1].tex[0] = tex->Sright;
+ verts[1].tex[1] = 0.0F;
verts[2].x = x1;
verts[2].y = y1;
verts[2].z = z;
- verts[2].s = tex->Sright;
- verts[2].t = tex->Ttop;
+ verts[2].tex[0] = tex->Sright;
+ verts[2].tex[1] = tex->Ttop;
verts[3].x = x0;
verts[3].y = y1;
verts[3].z = z;
- verts[3].s = 0.0F;
- verts[3].t = tex->Ttop;
- }
-
- if (drawpix->VAO == 0) {
- /* one-time setup: create vertex array object */
- _mesa_GenVertexArrays(1, &drawpix->VAO);
+ verts[3].tex[0] = 0.0F;
+ verts[3].tex[1] = tex->Ttop;
}
- _mesa_BindVertexArray(drawpix->VAO);
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &vbo);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, vbo);
+ /* upload new vertex data */
_mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
verts, GL_DYNAMIC_DRAW_ARB);
- /* setup vertex arrays */
- _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
-
/* set given unpack params */
ctx->Unpack = *unpack;
@@ -2874,8 +2135,8 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
if (!drawpix->StencilFP)
init_draw_stencil_pixels(ctx);
- setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height,
- GL_ALPHA, type, pixels);
+ _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height,
+ GL_ALPHA, type, pixels);
_mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
@@ -2917,22 +2178,20 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
_mesa_ProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 0,
ctx->Current.RasterColor);
- setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height,
- format, type, pixels);
+ _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height,
+ format, type, pixels);
_mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
else {
/* Drawing RGBA */
- setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height,
- format, type, pixels);
+ _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height,
+ format, type, pixels);
_mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
_mesa_set_enable(ctx, tex->Target, GL_FALSE);
- _mesa_DeleteBuffers(1, &vbo);
-
/* restore unpack params */
ctx->Unpack = unpackSave;
@@ -2984,9 +2243,6 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
const GLenum texIntFormat = GL_ALPHA;
const struct gl_pixelstore_attrib unpackSave = *unpack;
GLubyte fg, bg;
- struct vertex {
- GLfloat x, y, z, s, t, r, g, b, a;
- };
struct vertex verts[4];
GLboolean newTex;
GLubyte *bitmap8;
@@ -3020,33 +2276,12 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
MESA_META_VERTEX |
MESA_META_VIEWPORT));
- if (bitmap->VAO == 0) {
- /* one-time setup */
+ _mesa_meta_setup_vertex_objects(&bitmap->VAO, &bitmap->VBO, false, 3, 2, 4);
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &bitmap->VAO);
- _mesa_BindVertexArray(bitmap->VAO);
+ newTex = _mesa_meta_alloc_texture(tex, width, height, texIntFormat);
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &bitmap->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, bitmap->VBO);
- _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
- NULL, GL_DYNAMIC_DRAW_ARB);
-
- /* setup vertex arrays */
- _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s));
- _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
- _mesa_EnableClientState(GL_COLOR_ARRAY);
- }
- else {
- _mesa_BindVertexArray(bitmap->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, bitmap->VBO);
- }
-
- newTex = alloc_texture(tex, width, height, texIntFormat);
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
/* vertex positions, texcoords, colors (after texture allocation!) */
{
@@ -3060,23 +2295,23 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
verts[0].x = x0;
verts[0].y = y0;
verts[0].z = z;
- verts[0].s = 0.0F;
- verts[0].t = 0.0F;
+ verts[0].tex[0] = 0.0F;
+ verts[0].tex[1] = 0.0F;
verts[1].x = x1;
verts[1].y = y0;
verts[1].z = z;
- verts[1].s = tex->Sright;
- verts[1].t = 0.0F;
+ verts[1].tex[0] = tex->Sright;
+ verts[1].tex[1] = 0.0F;
verts[2].x = x1;
verts[2].y = y1;
verts[2].z = z;
- verts[2].s = tex->Sright;
- verts[2].t = tex->Ttop;
+ verts[2].tex[0] = tex->Sright;
+ verts[2].tex[1] = tex->Ttop;
verts[3].x = x0;
verts[3].y = y1;
verts[3].z = z;
- verts[3].s = 0.0F;
- verts[3].t = tex->Ttop;
+ verts[3].tex[0] = 0.0F;
+ verts[3].tex[1] = tex->Ttop;
for (i = 0; i < 4; i++) {
verts[i].r = ctx->Current.RasterColor[0];
@@ -3110,8 +2345,8 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
_mesa_set_enable(ctx, GL_ALPHA_TEST, GL_TRUE);
_mesa_AlphaFunc(GL_NOTEQUAL, UBYTE_TO_FLOAT(bg));
- setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height,
- GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8);
+ _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height,
+ GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8);
_mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
@@ -3236,10 +2471,10 @@ setup_texture_coords(GLenum faceTarget,
GLint width,
GLint height,
GLint depth,
- GLfloat coords0[3],
- GLfloat coords1[3],
- GLfloat coords2[3],
- GLfloat coords3[3])
+ GLfloat coords0[4],
+ GLfloat coords1[4],
+ GLfloat coords2[4],
+ GLfloat coords3[4])
{
static const GLfloat st[4][2] = {
{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}
@@ -3247,6 +2482,13 @@ setup_texture_coords(GLenum faceTarget,
GLuint i;
GLfloat r;
+ /* Currently all texture targets want the W component to be 1.0.
+ */
+ coords0[3] = 1.0F;
+ coords1[3] = 1.0F;
+ coords2[3] = 1.0F;
+ coords3[3] = 1.0F;
+
switch (faceTarget) {
case GL_TEXTURE_1D:
case GL_TEXTURE_2D:
@@ -3337,6 +2579,8 @@ setup_texture_coords(GLenum faceTarget,
assert(0);
}
+ coord[3] = (float) (slice / 6);
+
switch (faceTarget) {
case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
coord[0] = 1.0f;
@@ -3378,74 +2622,53 @@ setup_texture_coords(GLenum faceTarget,
}
}
-
-static void
-setup_ff_generate_mipmap(struct gen_mipmap_state *mipmap)
-{
- struct vertex {
- GLfloat x, y, tex[3];
- };
-
- if (mipmap->VAO == 0) {
- /* one-time setup */
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &mipmap->VAO);
- _mesa_BindVertexArray(mipmap->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &mipmap->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO);
- /* setup vertex arrays */
- _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(tex));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
- }
-
- /* setup projection matrix */
- _mesa_MatrixMode(GL_PROJECTION);
- _mesa_LoadIdentity();
- _mesa_Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
-}
-
-
-static struct glsl_sampler *
-setup_texture_sampler(GLenum target, struct gen_mipmap_state *mipmap)
+static struct blit_shader *
+choose_blit_shader(GLenum target, struct blit_shader_table *table)
{
switch(target) {
case GL_TEXTURE_1D:
- mipmap->sampler_1d.type = "sampler1D";
- mipmap->sampler_1d.func = "texture1D";
- mipmap->sampler_1d.texcoords = "texCoords.x";
- return &mipmap->sampler_1d;
+ table->sampler_1d.type = "sampler1D";
+ table->sampler_1d.func = "texture1D";
+ table->sampler_1d.texcoords = "texCoords.x";
+ return &table->sampler_1d;
case GL_TEXTURE_2D:
- mipmap->sampler_2d.type = "sampler2D";
- mipmap->sampler_2d.func = "texture2D";
- mipmap->sampler_2d.texcoords = "texCoords.xy";
- return &mipmap->sampler_2d;
+ table->sampler_2d.type = "sampler2D";
+ table->sampler_2d.func = "texture2D";
+ table->sampler_2d.texcoords = "texCoords.xy";
+ return &table->sampler_2d;
+ case GL_TEXTURE_RECTANGLE:
+ table->sampler_rect.type = "sampler2DRect";
+ table->sampler_rect.func = "texture2DRect";
+ table->sampler_rect.texcoords = "texCoords.xy";
+ return &table->sampler_rect;
case GL_TEXTURE_3D:
/* Code for mipmap generation with 3D textures is not used yet.
* It's a sw fallback.
*/
- mipmap->sampler_3d.type = "sampler3D";
- mipmap->sampler_3d.func = "texture3D";
- mipmap->sampler_3d.texcoords = "texCoords";
- return &mipmap->sampler_3d;
+ table->sampler_3d.type = "sampler3D";
+ table->sampler_3d.func = "texture3D";
+ table->sampler_3d.texcoords = "texCoords.xyz";
+ return &table->sampler_3d;
case GL_TEXTURE_CUBE_MAP:
- mipmap->sampler_cubemap.type = "samplerCube";
- mipmap->sampler_cubemap.func = "textureCube";
- mipmap->sampler_cubemap.texcoords = "texCoords";
- return &mipmap->sampler_cubemap;
+ table->sampler_cubemap.type = "samplerCube";
+ table->sampler_cubemap.func = "textureCube";
+ table->sampler_cubemap.texcoords = "texCoords.xyz";
+ return &table->sampler_cubemap;
case GL_TEXTURE_1D_ARRAY:
- mipmap->sampler_1d_array.type = "sampler1DArray";
- mipmap->sampler_1d_array.func = "texture1DArray";
- mipmap->sampler_1d_array.texcoords = "texCoords.xy";
- return &mipmap->sampler_1d_array;
+ table->sampler_1d_array.type = "sampler1DArray";
+ table->sampler_1d_array.func = "texture1DArray";
+ table->sampler_1d_array.texcoords = "texCoords.xy";
+ return &table->sampler_1d_array;
case GL_TEXTURE_2D_ARRAY:
- mipmap->sampler_2d_array.type = "sampler2DArray";
- mipmap->sampler_2d_array.func = "texture2DArray";
- mipmap->sampler_2d_array.texcoords = "texCoords";
- return &mipmap->sampler_2d_array;
+ table->sampler_2d_array.type = "sampler2DArray";
+ table->sampler_2d_array.func = "texture2DArray";
+ table->sampler_2d_array.texcoords = "texCoords.xyz";
+ return &table->sampler_2d_array;
+ case GL_TEXTURE_CUBE_MAP_ARRAY:
+ table->sampler_cubemap_array.type = "samplerCubeArray";
+ table->sampler_cubemap_array.func = "textureCubeArray";
+ table->sampler_cubemap_array.texcoords = "texCoords.xyzw";
+ return &table->sampler_cubemap_array;
default:
_mesa_problem(NULL, "Unexpected texture target 0x%x in"
" setup_texture_sampler()\n", target);
@@ -3453,122 +2676,28 @@ setup_texture_sampler(GLenum target, struct gen_mipmap_state *mipmap)
}
}
-
-static void
-setup_glsl_generate_mipmap(struct gl_context *ctx,
- struct gen_mipmap_state *mipmap,
- GLenum target)
+void
+_mesa_meta_blit_shader_table_cleanup(struct blit_shader_table *table)
{
- struct vertex {
- GLfloat x, y, tex[3];
- };
- struct glsl_sampler *sampler;
- const char *vs_source;
- char *fs_source;
- GLuint vs, fs;
- void *mem_ctx;
-
- /* Check if already initialized */
- if (mipmap->VAO == 0) {
-
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &mipmap->VAO);
- _mesa_BindVertexArray(mipmap->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &mipmap->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO);
-
- /* setup vertex arrays */
- _mesa_VertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE,
- sizeof(struct vertex), OFFSET(x));
- _mesa_VertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE,
- sizeof(struct vertex), OFFSET(tex));
- _mesa_EnableVertexAttribArray(0);
- _mesa_EnableVertexAttribArray(1);
- }
-
- /* Generate a fragment shader program appropriate for the texture target */
- sampler = setup_texture_sampler(target, mipmap);
- assert(sampler != NULL);
- if (sampler->shader_prog != 0) {
- mipmap->ShaderProg = sampler->shader_prog;
- return;
- }
-
- mem_ctx = ralloc_context(NULL);
-
- if (ctx->API == API_OPENGLES2 || ctx->Const.GLSLVersion < 130) {
- vs_source =
- "attribute vec2 position;\n"
- "attribute vec3 textureCoords;\n"
- "varying vec3 texCoords;\n"
- "void main()\n"
- "{\n"
- " texCoords = textureCoords;\n"
- " gl_Position = vec4(position, 0.0, 1.0);\n"
- "}\n";
-
- fs_source = ralloc_asprintf(mem_ctx,
- "#extension GL_EXT_texture_array : enable\n"
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
- "uniform %s texSampler;\n"
- "varying vec3 texCoords;\n"
- "void main()\n"
- "{\n"
- " gl_FragColor = %s(texSampler, %s);\n"
- "}\n",
- sampler->type,
- sampler->func, sampler->texcoords);
- }
- else {
- vs_source = ralloc_asprintf(mem_ctx,
- "#version %s\n"
- "in vec2 position;\n"
- "in vec3 textureCoords;\n"
- "out vec3 texCoords;\n"
- "void main()\n"
- "{\n"
- " texCoords = textureCoords;\n"
- " gl_Position = vec4(position, 0.0, 1.0);\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es");
- fs_source = ralloc_asprintf(mem_ctx,
- "#version %s\n"
- "#ifdef GL_ES\n"
- "precision highp float;\n"
- "#endif\n"
- "uniform %s texSampler;\n"
- "in vec3 texCoords;\n"
- "out vec4 out_color;\n"
- "\n"
- "void main()\n"
- "{\n"
- " out_color = texture(texSampler, %s);\n"
- "}\n",
- _mesa_is_desktop_gl(ctx) ? "130" : "300 es",
- sampler->type,
- sampler->texcoords);
- }
-
- vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source);
- fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source);
-
- mipmap->ShaderProg = _mesa_CreateProgramObjectARB();
- _mesa_AttachShader(mipmap->ShaderProg, fs);
- _mesa_DeleteObjectARB(fs);
- _mesa_AttachShader(mipmap->ShaderProg, vs);
- _mesa_DeleteObjectARB(vs);
- _mesa_BindAttribLocation(mipmap->ShaderProg, 0, "position");
- _mesa_BindAttribLocation(mipmap->ShaderProg, 1, "texcoords");
- link_program_with_debug(ctx, mipmap->ShaderProg);
- sampler->shader_prog = mipmap->ShaderProg;
- ralloc_free(mem_ctx);
+ _mesa_DeleteObjectARB(table->sampler_1d.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_2d.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_3d.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_rect.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_cubemap.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_1d_array.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_2d_array.shader_prog);
+ _mesa_DeleteObjectARB(table->sampler_cubemap_array.shader_prog);
+
+ table->sampler_1d.shader_prog = 0;
+ table->sampler_2d.shader_prog = 0;
+ table->sampler_3d.shader_prog = 0;
+ table->sampler_rect.shader_prog = 0;
+ table->sampler_cubemap.shader_prog = 0;
+ table->sampler_1d_array.shader_prog = 0;
+ table->sampler_2d_array.shader_prog = 0;
+ table->sampler_cubemap_array.shader_prog = 0;
}
-
static void
meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap)
{
@@ -3579,19 +2708,7 @@ meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap)
_mesa_DeleteBuffers(1, &mipmap->VBO);
mipmap->VBO = 0;
- _mesa_DeleteObjectARB(mipmap->sampler_1d.shader_prog);
- _mesa_DeleteObjectARB(mipmap->sampler_2d.shader_prog);
- _mesa_DeleteObjectARB(mipmap->sampler_3d.shader_prog);
- _mesa_DeleteObjectARB(mipmap->sampler_cubemap.shader_prog);
- _mesa_DeleteObjectARB(mipmap->sampler_1d_array.shader_prog);
- _mesa_DeleteObjectARB(mipmap->sampler_2d_array.shader_prog);
-
- mipmap->sampler_1d.shader_prog = 0;
- mipmap->sampler_2d.shader_prog = 0;
- mipmap->sampler_3d.shader_prog = 0;
- mipmap->sampler_cubemap.shader_prog = 0;
- mipmap->sampler_1d_array.shader_prog = 0;
- mipmap->sampler_2d_array.shader_prog = 0;
+ _mesa_meta_blit_shader_table_cleanup(&mipmap->shaders);
}
@@ -3605,9 +2722,6 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
struct gl_texture_object *texObj)
{
struct gen_mipmap_state *mipmap = &ctx->Meta->Mipmap;
- struct vertex {
- GLfloat x, y, tex[3];
- };
struct vertex verts[4];
const GLuint baseLevel = texObj->BaseLevel;
const GLuint maxLevel = texObj->MaxLevel;
@@ -3616,8 +2730,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
const GLuint fboSave = ctx->DrawBuffer->Name;
const GLuint currentTexUnitSave = ctx->Texture.CurrentUnit;
const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader &&
- ctx->Extensions.ARB_fragment_shader &&
- (ctx->API != API_OPENGLES);
+ ctx->Extensions.ARB_fragment_shader;
GLenum faceTarget;
GLuint dstLevel;
const GLint slice = 0;
@@ -3643,17 +2756,15 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
* GenerateMipmap function.
*/
if (use_glsl_version) {
- setup_glsl_generate_mipmap(ctx, mipmap, target);
- _mesa_UseProgram(mipmap->ShaderProg);
+ _mesa_meta_setup_vertex_objects(&mipmap->VAO, &mipmap->VBO, true,
+ 2, 3, 0);
+ _mesa_meta_setup_blit_shader(ctx, target, &mipmap->shaders);
}
else {
- setup_ff_generate_mipmap(mipmap);
+ _mesa_meta_setup_ff_tnl_for_blit(&mipmap->VAO, &mipmap->VBO, 3);
_mesa_set_enable(ctx, target, GL_TRUE);
}
- _mesa_BindVertexArray(mipmap->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO);
-
samplerSave = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ?
ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0;
@@ -3691,10 +2802,10 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
_mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, mipmap->FBO);
- if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES)
- _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE);
- else
- assert(!genMipmapSave);
+ _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE);
+
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
/* Setup texture coordinates */
setup_texture_coords(faceTarget,
@@ -3895,6 +3006,12 @@ _mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
GLint bpp;
void *buf;
+ /* The gl_renderbuffer is part of the interface for
+ * dd_function_table::CopyTexSubImage, but this implementation does not use
+ * it.
+ */
+ (void) rb;
+
/* Choose format/type for temporary image buffer */
format = _mesa_get_format_base_format(texImage->TexFormat);
if (format == GL_LUMINANCE ||
@@ -4004,17 +3121,17 @@ decompress_texture_image(struct gl_context *ctx,
const GLint depth = texImage->Height;
const GLenum target = texObj->Target;
GLenum faceTarget;
- struct vertex {
- GLfloat x, y, tex[3];
- };
struct vertex verts[4];
GLuint fboDrawSave, fboReadSave;
GLuint rbSave;
GLuint samplerSave;
+ const bool use_glsl_version = ctx->Extensions.ARB_vertex_shader &&
+ ctx->Extensions.ARB_fragment_shader;
if (slice > 0) {
assert(target == GL_TEXTURE_3D ||
- target == GL_TEXTURE_2D_ARRAY);
+ target == GL_TEXTURE_2D_ARRAY ||
+ target == GL_TEXTURE_CUBE_MAP_ARRAY);
}
switch (target) {
@@ -4027,10 +3144,9 @@ decompress_texture_image(struct gl_context *ctx,
assert(!"No compressed 3D textures.");
return;
- case GL_TEXTURE_2D_ARRAY:
case GL_TEXTURE_CUBE_MAP_ARRAY:
- /* These targets are just broken currently. */
- return;
+ faceTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_X + (slice % 6);
+ break;
case GL_TEXTURE_CUBE_MAP:
faceTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_X + texImage->Face;
@@ -4075,27 +3191,13 @@ decompress_texture_image(struct gl_context *ctx,
decompress->Height = height;
}
- /* setup VBO data */
- if (decompress->VAO == 0) {
- /* create vertex array object */
- _mesa_GenVertexArrays(1, &decompress->VAO);
- _mesa_BindVertexArray(decompress->VAO);
-
- /* create vertex array buffer */
- _mesa_GenBuffers(1, &decompress->VBO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, decompress->VBO);
- _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts),
- NULL, GL_DYNAMIC_DRAW_ARB);
+ if (use_glsl_version) {
+ _mesa_meta_setup_vertex_objects(&decompress->VAO, &decompress->VBO, true,
+ 2, 4, 0);
- /* setup vertex arrays */
- _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x));
- _mesa_TexCoordPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(tex));
- _mesa_EnableClientState(GL_VERTEX_ARRAY);
- _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
- }
- else {
- _mesa_BindVertexArray(decompress->VAO);
- _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, decompress->VBO);
+ _mesa_meta_setup_blit_shader(ctx, target, &decompress->shaders);
+ } else {
+ _mesa_meta_setup_ff_tnl_for_blit(&decompress->VAO, &decompress->VBO, 3);
}
if (!decompress->Sampler) {
@@ -4114,6 +3216,9 @@ decompress_texture_image(struct gl_context *ctx,
_mesa_BindSampler(ctx->Texture.CurrentUnit, decompress->Sampler);
}
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
+
setup_texture_coords(faceTarget, slice, width, height, depth,
verts[0].tex,
verts[1].tex,
@@ -4130,8 +3235,6 @@ decompress_texture_image(struct gl_context *ctx,
verts[3].x = -1.0F;
verts[3].y = 1.0F;
- _mesa_MatrixMode(GL_PROJECTION);
- _mesa_LoadIdentity();
_mesa_set_viewport(ctx, 0, 0, 0, width, height);
/* upload new vertex data */
@@ -4139,7 +3242,9 @@ decompress_texture_image(struct gl_context *ctx,
/* setup texture state */
_mesa_BindTexture(target, texObj->Name);
- _mesa_set_enable(ctx, target, GL_TRUE);
+
+ if (!use_glsl_version)
+ _mesa_set_enable(ctx, target, GL_TRUE);
{
/* save texture object state */
@@ -4199,7 +3304,8 @@ decompress_texture_image(struct gl_context *ctx,
}
/* disable texture unit */
- _mesa_set_enable(ctx, target, GL_FALSE);
+ if (!use_glsl_version)
+ _mesa_set_enable(ctx, target, GL_FALSE);
_mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave);
@@ -4231,8 +3337,7 @@ _mesa_meta_GetTexImage(struct gl_context *ctx,
* unsigned, normalized values. We could handle signed and unnormalized
* with floating point renderbuffers...
*/
- if (texImage->TexObject->Target != GL_TEXTURE_CUBE_MAP_ARRAY
- && _mesa_is_format_compressed(texImage->TexFormat) &&
+ if (_mesa_is_format_compressed(texImage->TexFormat) &&
_mesa_get_format_datatype(texImage->TexFormat)
== GL_UNSIGNED_NORMALIZED) {
struct gl_texture_object *texObj = texImage->TexObject;
@@ -4241,7 +3346,8 @@ _mesa_meta_GetTexImage(struct gl_context *ctx,
_mesa_unlock_texture(ctx, texObj);
for (slice = 0; slice < texImage->Depth; slice++) {
void *dst;
- if (texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY) {
+ if (texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY
+ || texImage->TexObject->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
/* Setup pixel packing. SkipPixels and SkipRows will be applied
* in the decompress_texture_image() function's call to
* glReadPixels but we need to compute the dest slice's address
diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h
index 53d7b8ab5..fcf45c403 100644
--- a/mesalib/src/mesa/drivers/common/meta.h
+++ b/mesalib/src/mesa/drivers/common/meta.h
@@ -60,6 +60,311 @@
#define MESA_META_OCCLUSION_QUERY 0x400000
/**\}*/
+/**
+ * State which we may save/restore across meta ops.
+ * XXX this may be incomplete...
+ */
+struct save_state
+{
+ GLbitfield SavedState; /**< bitmask of MESA_META_* flags */
+
+ /* Always saved/restored with meta. */
+ gl_api API;
+
+ /** MESA_META_CLEAR (and others?) */
+ struct gl_query_object *CurrentOcclusionObject;
+
+ /** MESA_META_ALPHA_TEST */
+ GLboolean AlphaEnabled;
+ GLenum AlphaFunc;
+ GLclampf AlphaRef;
+
+ /** MESA_META_BLEND */
+ GLbitfield BlendEnabled;
+ GLboolean ColorLogicOpEnabled;
+
+ /** MESA_META_COLOR_MASK */
+ GLubyte ColorMask[MAX_DRAW_BUFFERS][4];
+
+ /** MESA_META_DEPTH_TEST */
+ struct gl_depthbuffer_attrib Depth;
+
+ /** MESA_META_FOG */
+ GLboolean Fog;
+
+ /** MESA_META_PIXEL_STORE */
+ struct gl_pixelstore_attrib Pack, Unpack;
+
+ /** MESA_META_PIXEL_TRANSFER */
+ GLfloat RedBias, RedScale;
+ GLfloat GreenBias, GreenScale;
+ GLfloat BlueBias, BlueScale;
+ GLfloat AlphaBias, AlphaScale;
+ GLfloat DepthBias, DepthScale;
+ GLboolean MapColorFlag;
+
+ /** MESA_META_RASTERIZATION */
+ GLenum FrontPolygonMode, BackPolygonMode;
+ GLboolean PolygonOffset;
+ GLboolean PolygonSmooth;
+ GLboolean PolygonStipple;
+ GLboolean PolygonCull;
+
+ /** MESA_META_SCISSOR */
+ struct gl_scissor_attrib Scissor;
+
+ /** MESA_META_SHADER */
+ GLboolean VertexProgramEnabled;
+ struct gl_vertex_program *VertexProgram;
+ GLboolean FragmentProgramEnabled;
+ struct gl_fragment_program *FragmentProgram;
+ GLboolean ATIFragmentShaderEnabled;
+ struct gl_shader_program *Shader[MESA_SHADER_STAGES];
+ struct gl_shader_program *ActiveShader;
+
+ /** MESA_META_STENCIL_TEST */
+ struct gl_stencil_attrib Stencil;
+
+ /** MESA_META_TRANSFORM */
+ GLenum MatrixMode;
+ GLfloat ModelviewMatrix[16];
+ GLfloat ProjectionMatrix[16];
+ GLfloat TextureMatrix[16];
+
+ /** MESA_META_CLIP */
+ GLbitfield ClipPlanesEnabled;
+
+ /** MESA_META_TEXTURE */
+ GLuint ActiveUnit;
+ GLuint ClientActiveUnit;
+ /** for unit[0] only */
+ struct gl_texture_object *CurrentTexture[NUM_TEXTURE_TARGETS];
+ /** mask of TEXTURE_2D_BIT, etc */
+ GLbitfield TexEnabled[MAX_TEXTURE_UNITS];
+ GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS];
+ GLuint EnvMode; /* unit[0] only */
+
+ /** MESA_META_VERTEX */
+ struct gl_vertex_array_object *VAO;
+ struct gl_buffer_object *ArrayBufferObj;
+
+ /** MESA_META_VIEWPORT */
+ GLfloat ViewportX, ViewportY, ViewportW, ViewportH;
+ GLclampd DepthNear, DepthFar;
+
+ /** MESA_META_CLAMP_FRAGMENT_COLOR */
+ GLenum ClampFragmentColor;
+
+ /** MESA_META_CLAMP_VERTEX_COLOR */
+ GLenum ClampVertexColor;
+
+ /** MESA_META_CONDITIONAL_RENDER */
+ struct gl_query_object *CondRenderQuery;
+ GLenum CondRenderMode;
+
+ /** MESA_META_SELECT_FEEDBACK */
+ GLenum RenderMode;
+ struct gl_selection Select;
+ struct gl_feedback Feedback;
+
+ /** MESA_META_MULTISAMPLE */
+ struct gl_multisample_attrib Multisample;
+
+ /** MESA_META_FRAMEBUFFER_SRGB */
+ GLboolean sRGBEnabled;
+
+ /** Miscellaneous (always disabled) */
+ GLboolean Lighting;
+ GLboolean RasterDiscard;
+ GLboolean TransformFeedbackNeedsResume;
+};
+
+/**
+ * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc.
+ * This is currently shared by all the meta ops. But we could create a
+ * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc.
+ */
+struct temp_texture
+{
+ GLuint TexObj;
+ GLenum Target; /**< GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE */
+ GLsizei MinSize; /**< Min texture size to allocate */
+ GLsizei MaxSize; /**< Max possible texture size */
+ GLboolean NPOT; /**< Non-power of two size OK? */
+ GLsizei Width, Height; /**< Current texture size */
+ GLenum IntFormat;
+ GLfloat Sright, Ttop; /**< right, top texcoords */
+};
+
+/**
+ * State for GLSL texture sampler which is used to generate fragment
+ * shader in _mesa_meta_generate_mipmap().
+ */
+struct blit_shader {
+ const char *type;
+ const char *func;
+ const char *texcoords;
+ GLuint shader_prog;
+};
+
+/**
+ * Table of all sampler types and shaders for accessing them.
+ */
+struct blit_shader_table {
+ struct blit_shader sampler_1d;
+ struct blit_shader sampler_2d;
+ struct blit_shader sampler_3d;
+ struct blit_shader sampler_rect;
+ struct blit_shader sampler_cubemap;
+ struct blit_shader sampler_1d_array;
+ struct blit_shader sampler_2d_array;
+ struct blit_shader sampler_cubemap_array;
+};
+
+/**
+ * Indices in the blit_state->msaa_shaders[] array
+ *
+ * Note that setup_glsl_msaa_blit_shader() assumes that the _INT enums are one
+ * more than the non-_INT version and _UINT is one beyond that.
+ */
+enum blit_msaa_shader {
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_INT,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_UINT,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE,
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY,
+ BLIT_MSAA_SHADER_COUNT,
+};
+
+/**
+ * State for glBlitFramebufer()
+ */
+struct blit_state
+{
+ GLuint VAO;
+ GLuint VBO;
+ GLuint DepthFP;
+ struct blit_shader_table shaders;
+ GLuint msaa_shaders[BLIT_MSAA_SHADER_COUNT];
+ struct temp_texture depthTex;
+};
+
+
+/**
+ * State for glClear()
+ */
+struct clear_state
+{
+ GLuint VAO;
+ GLuint VBO;
+ GLuint ShaderProg;
+ GLint ColorLocation;
+ GLint LayerLocation;
+
+ GLuint IntegerShaderProg;
+ GLint IntegerColorLocation;
+ GLint IntegerLayerLocation;
+};
+
+
+/**
+ * State for glCopyPixels()
+ */
+struct copypix_state
+{
+ GLuint VAO;
+ GLuint VBO;
+};
+
+
+/**
+ * State for glDrawPixels()
+ */
+struct drawpix_state
+{
+ GLuint VAO;
+ GLuint VBO;
+
+ GLuint StencilFP; /**< Fragment program for drawing stencil images */
+ GLuint DepthFP; /**< Fragment program for drawing depth images */
+};
+
+
+/**
+ * State for glBitmap()
+ */
+struct bitmap_state
+{
+ GLuint VAO;
+ GLuint VBO;
+ struct temp_texture Tex; /**< separate texture from other meta ops */
+};
+
+/**
+ * State for _mesa_meta_generate_mipmap()
+ */
+struct gen_mipmap_state
+{
+ GLuint VAO;
+ GLuint VBO;
+ GLuint FBO;
+ GLuint Sampler;
+
+ struct blit_shader_table shaders;
+};
+
+/**
+ * State for texture decompression
+ */
+struct decompress_state
+{
+ GLuint VAO;
+ GLuint VBO, FBO, RBO, Sampler;
+ GLint Width, Height;
+
+ struct blit_shader_table shaders;
+};
+
+/**
+ * State for glDrawTex()
+ */
+struct drawtex_state
+{
+ GLuint VAO;
+ GLuint VBO;
+};
+
+#define MAX_META_OPS_DEPTH 8
+/**
+ * All per-context meta state.
+ */
+struct gl_meta_state
+{
+ /** Stack of state saved during meta-ops */
+ struct save_state Save[MAX_META_OPS_DEPTH];
+ /** Save stack depth */
+ GLuint SaveStackDepth;
+
+ struct temp_texture TempTex;
+
+ struct blit_state Blit; /**< For _mesa_meta_BlitFramebuffer() */
+ struct clear_state Clear; /**< For _mesa_meta_Clear() */
+ struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */
+ struct drawpix_state DrawPix; /**< For _mesa_meta_DrawPixels() */
+ struct bitmap_state Bitmap; /**< For _mesa_meta_Bitmap() */
+ struct gen_mipmap_state Mipmap; /**< For _mesa_meta_GenerateMipmap() */
+ struct decompress_state Decompress; /**< For texture decompression */
+ struct drawtex_state DrawTex; /**< For _mesa_meta_DrawTex() */
+};
+
+struct vertex {
+ GLfloat x, y, z, tex[4];
+ GLfloat r, g, b, a;
+};
+
extern void
_mesa_meta_init(struct gl_context *ctx);
@@ -130,4 +435,60 @@ extern void
_mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
GLfloat width, GLfloat height);
+/* meta-internal functions */
+GLuint
+_mesa_meta_compile_shader_with_debug(struct gl_context *ctx, GLenum target,
+ const GLcharARB *source);
+
+
+GLuint
+_mesa_meta_link_program_with_debug(struct gl_context *ctx, GLuint program);
+
+GLboolean
+_mesa_meta_alloc_texture(struct temp_texture *tex,
+ GLsizei width, GLsizei height, GLenum intFormat);
+
+struct temp_texture *
+_mesa_meta_get_temp_texture(struct gl_context *ctx);
+
+struct temp_texture *
+_mesa_meta_get_temp_depth_texture(struct gl_context *ctx);
+
+void
+_mesa_meta_setup_vertex_objects(GLuint *VAO, GLuint *VBO,
+ bool use_generic_attributes,
+ unsigned vertex_size, unsigned texcoord_size,
+ unsigned color_size);
+
+void
+_mesa_meta_setup_ff_tnl_for_blit(GLuint *VAO, GLuint *VBO,
+ unsigned texcoord_size);
+
+void
+_mesa_meta_setup_drawpix_texture(struct gl_context *ctx,
+ struct temp_texture *tex,
+ GLboolean newTex,
+ GLsizei width, GLsizei height,
+ GLenum format, GLenum type,
+ const GLvoid *pixels);
+
+void
+_mesa_meta_setup_copypix_texture(struct gl_context *ctx,
+ struct temp_texture *tex,
+ GLint srcX, GLint srcY,
+ GLsizei width, GLsizei height,
+ GLenum intFormat,
+ GLenum filter);
+
+void
+_mesa_meta_setup_blit_shader(struct gl_context *ctx,
+ GLenum target,
+ struct blit_shader_table *table);
+
+void
+_mesa_meta_glsl_blit_cleanup(struct blit_state *blit);
+
+void
+_mesa_meta_blit_shader_table_cleanup(struct blit_shader_table *table);
+
#endif /* META_H */
diff --git a/mesalib/src/mesa/drivers/common/meta_blit.c b/mesalib/src/mesa/drivers/common/meta_blit.c
new file mode 100644
index 000000000..907c2cdf3
--- /dev/null
+++ b/mesalib/src/mesa/drivers/common/meta_blit.c
@@ -0,0 +1,825 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "main/imports.h"
+#include "main/arbprogram.h"
+#include "main/arrayobj.h"
+#include "main/blend.h"
+#include "main/condrender.h"
+#include "main/depth.h"
+#include "main/enable.h"
+#include "main/enums.h"
+#include "main/fbobject.h"
+#include "main/macros.h"
+#include "main/matrix.h"
+#include "main/multisample.h"
+#include "main/objectlabel.h"
+#include "main/readpix.h"
+#include "main/shaderapi.h"
+#include "main/texobj.h"
+#include "main/texenv.h"
+#include "main/teximage.h"
+#include "main/texparam.h"
+#include "main/varray.h"
+#include "main/viewport.h"
+#include "swrast/swrast.h"
+#include "drivers/common/meta.h"
+#include "../glsl/ralloc.h"
+
+/** Return offset in bytes of the field within a vertex struct */
+#define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD))
+
+/**
+ * One-time init for drawing depth pixels.
+ */
+static void
+init_blit_depth_pixels(struct gl_context *ctx)
+{
+ static const char *program =
+ "!!ARBfp1.0\n"
+ "TEX result.depth, fragment.texcoord[0], texture[0], %s; \n"
+ "END \n";
+ char program2[200];
+ struct blit_state *blit = &ctx->Meta->Blit;
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
+ const char *texTarget;
+
+ assert(blit->DepthFP == 0);
+
+ /* replace %s with "RECT" or "2D" */
+ assert(strlen(program) + 4 < sizeof(program2));
+ if (tex->Target == GL_TEXTURE_RECTANGLE)
+ texTarget = "RECT";
+ else
+ texTarget = "2D";
+ _mesa_snprintf(program2, sizeof(program2), program, texTarget);
+
+ _mesa_GenProgramsARB(1, &blit->DepthFP);
+ _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP);
+ _mesa_ProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+ strlen(program2), (const GLubyte *) program2);
+}
+
+static void
+setup_glsl_msaa_blit_shader(struct gl_context *ctx,
+ struct blit_state *blit,
+ struct gl_renderbuffer *src_rb,
+ GLenum target)
+{
+ const char *vs_source;
+ char *fs_source;
+ GLuint vs, fs;
+ void *mem_ctx;
+ enum blit_msaa_shader shader_index;
+ bool dst_is_msaa = false;
+ GLenum src_datatype;
+ const char *vec4_prefix;
+ char *name;
+
+ if (src_rb) {
+ src_datatype = _mesa_get_format_datatype(src_rb->Format);
+ } else {
+ /* depth-or-color glCopyTexImage fallback path that passes a NULL rb and
+ * doesn't handle integer.
+ */
+ src_datatype = GL_UNSIGNED_NORMALIZED;
+ }
+
+ if (ctx->DrawBuffer->Visual.samples > 1) {
+ /* If you're calling meta_BlitFramebuffer with the destination
+ * multisampled, this is the only path that will work -- swrast and
+ * CopyTexImage won't work on it either.
+ */
+ assert(ctx->Extensions.ARB_sample_shading);
+
+ dst_is_msaa = true;
+
+ /* We need shader invocation per sample, not per pixel */
+ _mesa_set_enable(ctx, GL_MULTISAMPLE, GL_TRUE);
+ _mesa_set_enable(ctx, GL_SAMPLE_SHADING, GL_TRUE);
+ _mesa_MinSampleShading(1.0);
+ }
+
+ switch (target) {
+ case GL_TEXTURE_2D_MULTISAMPLE:
+ if (src_rb->_BaseFormat == GL_DEPTH_COMPONENT ||
+ src_rb->_BaseFormat == GL_DEPTH_STENCIL) {
+ if (dst_is_msaa)
+ shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY;
+ else
+ shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE;
+ } else {
+ if (dst_is_msaa)
+ shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY;
+ else
+ shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE;
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Unkown texture target %s\n",
+ _mesa_lookup_enum_by_nr(target));
+ shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE;
+ }
+
+ /* We rely on the enum being sorted this way. */
+ STATIC_ASSERT(BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT ==
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE + 1);
+ STATIC_ASSERT(BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT ==
+ BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE + 2);
+ if (src_datatype == GL_INT) {
+ shader_index++;
+ vec4_prefix = "i";
+ } else if (src_datatype == GL_UNSIGNED_INT) {
+ shader_index += 2;
+ vec4_prefix = "u";
+ } else {
+ vec4_prefix = "";
+ }
+
+ if (blit->msaa_shaders[shader_index]) {
+ _mesa_UseProgram(blit->msaa_shaders[shader_index]);
+ return;
+ }
+
+ mem_ctx = ralloc_context(NULL);
+
+ if (shader_index == BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE ||
+ shader_index == BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY) {
+ char *sample_index;
+ const char *arb_sample_shading_extension_string;
+
+ if (dst_is_msaa) {
+ arb_sample_shading_extension_string = "#extension GL_ARB_sample_shading : enable";
+ sample_index = "gl_SampleID";
+ name = "depth MSAA copy";
+ } else {
+ /* Don't need that extension, since we're drawing to a single-sampled
+ * destination.
+ */
+ arb_sample_shading_extension_string = "";
+ /* From the GL 4.3 spec:
+ *
+ * "If there is a multisample buffer (the value of SAMPLE_BUFFERS
+ * is one), then values are obtained from the depth samples in
+ * this buffer. It is recommended that the depth value of the
+ * centermost sample be used, though implementations may choose
+ * any function of the depth sample values at each pixel.
+ *
+ * We're slacking and instead of choosing centermost, we've got 0.
+ */
+ sample_index = "0";
+ name = "depth MSAA resolve";
+ }
+
+ vs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "in vec2 position;\n"
+ "in vec2 textureCoords;\n"
+ "out vec2 texCoords;\n"
+ "void main()\n"
+ "{\n"
+ " texCoords = textureCoords;\n"
+ " gl_Position = vec4(position, 0.0, 1.0);\n"
+ "}\n");
+ fs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "#extension GL_ARB_texture_multisample : enable\n"
+ "%s\n"
+ "uniform sampler2DMS texSampler;\n"
+ "in vec2 texCoords;\n"
+ "out vec4 out_color;\n"
+ "\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragDepth = texelFetch(texSampler, ivec2(texCoords), %s).r;\n"
+ "}\n",
+ arb_sample_shading_extension_string,
+ sample_index);
+ } else {
+ /* You can create 2D_MULTISAMPLE textures with 0 sample count (meaning 1
+ * sample). Yes, this is ridiculous.
+ */
+ int samples;
+ char *sample_resolve;
+ const char *arb_sample_shading_extension_string;
+ const char *merge_function;
+ name = ralloc_asprintf(mem_ctx, "%svec4 MSAA %s",
+ vec4_prefix,
+ dst_is_msaa ? "copy" : "resolve");
+
+ samples = MAX2(src_rb->NumSamples, 1);
+
+ if (dst_is_msaa) {
+ arb_sample_shading_extension_string = "#extension GL_ARB_sample_shading : enable";
+ sample_resolve = ralloc_asprintf(mem_ctx, " out_color = texelFetch(texSampler, ivec2(texCoords), gl_SampleID);");
+ merge_function = "";
+ } else {
+ int i;
+ int step;
+
+ if (src_datatype == GL_INT || src_datatype == GL_UNSIGNED_INT) {
+ merge_function =
+ "gvec4 merge(gvec4 a, gvec4 b) { return (a >> gvec4(1)) + (b >> gvec4(1)) + (a & b & gvec4(1)); }\n";
+ } else {
+ /* The divide will happen at the end for floats. */
+ merge_function =
+ "vec4 merge(vec4 a, vec4 b) { return (a + b); }\n";
+ }
+
+ arb_sample_shading_extension_string = "";
+
+ /* We're assuming power of two samples for this resolution procedure.
+ *
+ * To avoid losing any floating point precision if the samples all
+ * happen to have the same value, we merge pairs of values at a time
+ * (so the floating point exponent just gets increased), rather than
+ * doing a naive sum and dividing.
+ */
+ assert((samples & (samples - 1)) == 0);
+ /* Fetch each individual sample. */
+ sample_resolve = rzalloc_size(mem_ctx, 1);
+ for (i = 0; i < samples; i++) {
+ ralloc_asprintf_append(&sample_resolve,
+ " gvec4 sample_1_%d = texelFetch(texSampler, ivec2(texCoords), %d);\n",
+ i, i);
+ }
+ /* Now, merge each pair of samples, then merge each pair of those,
+ * etc.
+ */
+ for (step = 2; step <= samples; step *= 2) {
+ for (i = 0; i < samples; i += step) {
+ ralloc_asprintf_append(&sample_resolve,
+ " gvec4 sample_%d_%d = merge(sample_%d_%d, sample_%d_%d);\n",
+ step, i,
+ step / 2, i,
+ step / 2, i + step / 2);
+ }
+ }
+
+ /* Scale the final result. */
+ if (src_datatype == GL_UNSIGNED_INT || src_datatype == GL_INT) {
+ ralloc_asprintf_append(&sample_resolve,
+ " out_color = sample_%d_0;\n",
+ samples);
+ } else {
+ ralloc_asprintf_append(&sample_resolve,
+ " out_color = sample_%d_0 / %f;\n",
+ samples, (float)samples);
+ }
+ }
+
+ vs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "in vec2 position;\n"
+ "in vec2 textureCoords;\n"
+ "out vec2 texCoords;\n"
+ "void main()\n"
+ "{\n"
+ " texCoords = textureCoords;\n"
+ " gl_Position = vec4(position, 0.0, 1.0);\n"
+ "}\n");
+ fs_source = ralloc_asprintf(mem_ctx,
+ "#version 130\n"
+ "#extension GL_ARB_texture_multisample : enable\n"
+ "%s\n"
+ "#define gvec4 %svec4\n"
+ "uniform %ssampler2DMS texSampler;\n"
+ "in vec2 texCoords;\n"
+ "out gvec4 out_color;\n"
+ "\n"
+ "%s" /* merge_function */
+ "void main()\n"
+ "{\n"
+ "%s\n" /* sample_resolve */
+ "}\n",
+ arb_sample_shading_extension_string,
+ vec4_prefix,
+ vec4_prefix,
+ merge_function,
+ sample_resolve);
+ }
+
+ vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source);
+ fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source);
+
+ blit->msaa_shaders[shader_index] = _mesa_CreateProgramObjectARB();
+ _mesa_AttachShader(blit->msaa_shaders[shader_index], fs);
+ _mesa_DeleteObjectARB(fs);
+ _mesa_AttachShader(blit->msaa_shaders[shader_index], vs);
+ _mesa_DeleteObjectARB(vs);
+ _mesa_BindAttribLocation(blit->msaa_shaders[shader_index], 0, "position");
+ _mesa_BindAttribLocation(blit->msaa_shaders[shader_index], 1, "texcoords");
+ _mesa_meta_link_program_with_debug(ctx, blit->msaa_shaders[shader_index]);
+ _mesa_ObjectLabel(GL_PROGRAM, blit->msaa_shaders[shader_index], -1, name);
+ ralloc_free(mem_ctx);
+
+ _mesa_UseProgram(blit->msaa_shaders[shader_index]);
+}
+
+static void
+setup_glsl_blit_framebuffer(struct gl_context *ctx,
+ struct blit_state *blit,
+ struct gl_renderbuffer *src_rb,
+ GLenum target)
+{
+ /* target = GL_TEXTURE_RECTANGLE is not supported in GLES 3.0 */
+ assert(_mesa_is_desktop_gl(ctx) || target == GL_TEXTURE_2D);
+
+ _mesa_meta_setup_vertex_objects(&blit->VAO, &blit->VBO, true, 2, 2, 0);
+
+ if (target == GL_TEXTURE_2D_MULTISAMPLE) {
+ setup_glsl_msaa_blit_shader(ctx, blit, src_rb, target);
+ } else {
+ _mesa_meta_setup_blit_shader(ctx, target, &blit->shaders);
+ }
+}
+
+/**
+ * Try to do a color or depth glBlitFramebuffer using texturing.
+ *
+ * We can do this when the src renderbuffer is actually a texture, or when the
+ * driver exposes BindRenderbufferTexImage().
+ */
+static bool
+blitframebuffer_texture(struct gl_context *ctx,
+ GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+ GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+ GLenum filter, GLint flipX, GLint flipY,
+ GLboolean glsl_version, GLboolean do_depth)
+{
+ const struct gl_framebuffer *readFb = ctx->ReadBuffer;
+ int att_index = do_depth ? BUFFER_DEPTH : readFb->_ColorReadBufferIndex;
+ const struct gl_renderbuffer_attachment *readAtt =
+ &readFb->Attachment[att_index];
+ struct blit_state *blit = &ctx->Meta->Blit;
+ const GLint dstX = MIN2(dstX0, dstX1);
+ const GLint dstY = MIN2(dstY0, dstY1);
+ const GLint dstW = abs(dstX1 - dstX0);
+ const GLint dstH = abs(dstY1 - dstY0);
+ struct gl_texture_object *texObj;
+ GLuint srcLevel;
+ GLint baseLevelSave;
+ GLint maxLevelSave;
+ GLenum target;
+ GLuint sampler, samplerSave =
+ ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ?
+ ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0;
+ GLuint tempTex = 0;
+ struct gl_renderbuffer *rb = readAtt->Renderbuffer;
+
+ if (rb->NumSamples && !ctx->Extensions.ARB_texture_multisample)
+ return false;
+
+ if (filter == GL_SCALED_RESOLVE_FASTEST_EXT ||
+ filter == GL_SCALED_RESOLVE_NICEST_EXT) {
+ filter = GL_LINEAR;
+ }
+
+ if (readAtt->Texture) {
+ /* If there's a texture attached of a type we can handle, then just use
+ * it directly.
+ */
+ srcLevel = readAtt->TextureLevel;
+ texObj = readAtt->Texture;
+ target = texObj->Target;
+
+ switch (target) {
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_RECTANGLE:
+ case GL_TEXTURE_2D_MULTISAMPLE:
+ break;
+ default:
+ return false;
+ }
+ } else if (ctx->Driver.BindRenderbufferTexImage) {
+ /* Otherwise, we need the driver to be able to bind a renderbuffer as
+ * a texture image.
+ */
+ struct gl_texture_image *texImage;
+
+ if (rb->NumSamples > 1)
+ target = GL_TEXTURE_2D_MULTISAMPLE;
+ else
+ target = GL_TEXTURE_2D;
+
+ _mesa_GenTextures(1, &tempTex);
+ _mesa_BindTexture(target, tempTex);
+ srcLevel = 0;
+ texObj = _mesa_lookup_texture(ctx, tempTex);
+ texImage = _mesa_get_tex_image(ctx, texObj, target, srcLevel);
+
+ if (!ctx->Driver.BindRenderbufferTexImage(ctx, rb, texImage)) {
+ _mesa_DeleteTextures(1, &tempTex);
+ return false;
+ } else {
+ if (ctx->Driver.FinishRenderTexture &&
+ !rb->NeedsFinishRenderTexture) {
+ rb->NeedsFinishRenderTexture = true;
+ ctx->Driver.FinishRenderTexture(ctx, rb);
+ }
+
+ if (_mesa_is_winsys_fbo(readFb)) {
+ GLint temp = srcY0;
+ srcY0 = rb->Height - srcY1;
+ srcY1 = rb->Height - temp;
+ flipY = -flipY;
+ }
+ }
+ } else {
+ return false;
+ }
+
+ baseLevelSave = texObj->BaseLevel;
+ maxLevelSave = texObj->MaxLevel;
+
+ if (glsl_version) {
+ setup_glsl_blit_framebuffer(ctx, blit, rb, target);
+ }
+ else {
+ _mesa_meta_setup_ff_tnl_for_blit(&ctx->Meta->Blit.VAO,
+ &ctx->Meta->Blit.VBO,
+ 2);
+ }
+
+ _mesa_GenSamplers(1, &sampler);
+ _mesa_BindSampler(ctx->Texture.CurrentUnit, sampler);
+
+ /*
+ printf("Blit from texture!\n");
+ printf(" srcAtt %p dstAtt %p\n", readAtt, drawAtt);
+ printf(" srcTex %p dstText %p\n", texObj, drawAtt->Texture);
+ */
+
+ /* Prepare src texture state */
+ _mesa_BindTexture(target, texObj->Name);
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, filter);
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, filter);
+ if (target != GL_TEXTURE_RECTANGLE_ARB) {
+ _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
+ _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
+ }
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ /* Always do our blits with no net sRGB decode or encode.
+ *
+ * However, if both the src and dst can be srgb decode/encoded, enable them
+ * so that we do any blending (from scaling or from MSAA resolves) in the
+ * right colorspace.
+ *
+ * Our choice of not doing any net encode/decode is from the GL 3.0
+ * specification:
+ *
+ * "Blit operations bypass the fragment pipeline. The only fragment
+ * operations which affect a blit are the pixel ownership test and the
+ * scissor test."
+ *
+ * The GL 4.4 specification disagrees and says that the sRGB part of the
+ * fragment pipeline applies, but this was found to break applications.
+ */
+ if (ctx->Extensions.EXT_texture_sRGB_decode) {
+ if (_mesa_get_format_color_encoding(rb->Format) == GL_SRGB &&
+ ctx->DrawBuffer->Visual.sRGBCapable) {
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT,
+ GL_DECODE_EXT);
+ _mesa_set_framebuffer_srgb(ctx, GL_TRUE);
+ } else {
+ _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT,
+ GL_SKIP_DECODE_EXT);
+ /* set_framebuffer_srgb was set by _mesa_meta_begin(). */
+ }
+ }
+
+ if (!glsl_version) {
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ _mesa_set_enable(ctx, target, GL_TRUE);
+ }
+
+ /* Prepare vertex data (the VBO was previously created and bound) */
+ {
+ struct vertex verts[4];
+ GLfloat s0, t0, s1, t1;
+
+ if (target == GL_TEXTURE_2D) {
+ const struct gl_texture_image *texImage
+ = _mesa_select_tex_image(ctx, texObj, target, srcLevel);
+ s0 = srcX0 / (float) texImage->Width;
+ s1 = srcX1 / (float) texImage->Width;
+ t0 = srcY0 / (float) texImage->Height;
+ t1 = srcY1 / (float) texImage->Height;
+ }
+ else {
+ assert(target == GL_TEXTURE_RECTANGLE_ARB ||
+ target == GL_TEXTURE_2D_MULTISAMPLE);
+ s0 = (float) srcX0;
+ s1 = (float) srcX1;
+ t0 = (float) srcY0;
+ t1 = (float) srcY1;
+ }
+
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
+
+ /* setup vertex positions */
+ verts[0].x = -1.0F * flipX;
+ verts[0].y = -1.0F * flipY;
+ verts[1].x = 1.0F * flipX;
+ verts[1].y = -1.0F * flipY;
+ verts[2].x = 1.0F * flipX;
+ verts[2].y = 1.0F * flipY;
+ verts[3].x = -1.0F * flipX;
+ verts[3].y = 1.0F * flipY;
+
+ verts[0].tex[0] = s0;
+ verts[0].tex[1] = t0;
+ verts[1].tex[0] = s1;
+ verts[1].tex[1] = t0;
+ verts[2].tex[0] = s1;
+ verts[2].tex[1] = t1;
+ verts[3].tex[0] = s0;
+ verts[3].tex[1] = t1;
+
+ _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
+ }
+
+ /* setup viewport */
+ _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
+ _mesa_ColorMask(!do_depth, !do_depth, !do_depth, !do_depth);
+ _mesa_set_enable(ctx, GL_DEPTH_TEST, do_depth);
+ _mesa_DepthMask(do_depth);
+ _mesa_DepthFunc(GL_ALWAYS);
+
+ _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
+
+ /* Restore texture object state, the texture binding will
+ * be restored by _mesa_meta_end().
+ */
+ if (target != GL_TEXTURE_RECTANGLE_ARB) {
+ _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
+ _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
+ }
+
+ _mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave);
+ _mesa_DeleteSamplers(1, &sampler);
+ if (tempTex)
+ _mesa_DeleteTextures(1, &tempTex);
+
+ return true;
+}
+
+/**
+ * Meta implementation of ctx->Driver.BlitFramebuffer() in terms
+ * of texture mapping and polygon rendering.
+ */
+void
+_mesa_meta_BlitFramebuffer(struct gl_context *ctx,
+ GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+ GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+ GLbitfield mask, GLenum filter)
+{
+ struct blit_state *blit = &ctx->Meta->Blit;
+ struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx);
+ struct temp_texture *depthTex = _mesa_meta_get_temp_depth_texture(ctx);
+ const GLsizei maxTexSize = tex->MaxSize;
+ const GLint srcX = MIN2(srcX0, srcX1);
+ const GLint srcY = MIN2(srcY0, srcY1);
+ const GLint srcW = abs(srcX1 - srcX0);
+ const GLint srcH = abs(srcY1 - srcY0);
+ const GLint dstX = MIN2(dstX0, dstX1);
+ const GLint dstY = MIN2(dstY0, dstY1);
+ const GLint dstW = abs(dstX1 - dstX0);
+ const GLint dstH = abs(dstY1 - dstY0);
+ const GLint srcFlipX = (srcX1 - srcX0) / srcW;
+ const GLint srcFlipY = (srcY1 - srcY0) / srcH;
+ const GLint dstFlipX = (dstX1 - dstX0) / dstW;
+ const GLint dstFlipY = (dstY1 - dstY0) / dstH;
+ const GLint flipX = srcFlipX * dstFlipX;
+ const GLint flipY = srcFlipY * dstFlipY;
+
+ struct vertex verts[4];
+ GLboolean newTex;
+ const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader &&
+ ctx->Extensions.ARB_fragment_shader;
+
+ /* In addition to falling back if the blit size is larger than the maximum
+ * texture size, fallback if the source is multisampled. This fallback can
+ * be removed once Mesa gets support ARB_texture_multisample.
+ */
+ if (srcW > maxTexSize || srcH > maxTexSize) {
+ /* XXX avoid this fallback */
+ goto fallback;
+ }
+
+ /* Multisample texture blit support requires texture multisample. */
+ if (ctx->ReadBuffer->Visual.samples > 0 &&
+ !ctx->Extensions.ARB_texture_multisample) {
+ goto fallback;
+ }
+
+ /* only scissor effects blit so save/clear all other relevant state */
+ _mesa_meta_begin(ctx, ~MESA_META_SCISSOR);
+
+ /* Try faster, direct texture approach first */
+ if (mask & GL_COLOR_BUFFER_BIT) {
+ if (blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1,
+ filter, dstFlipX, dstFlipY,
+ use_glsl_version, false)) {
+ mask &= ~GL_COLOR_BUFFER_BIT;
+ if (mask == 0x0) {
+ _mesa_meta_end(ctx);
+ return;
+ }
+ }
+ }
+
+ if (mask & GL_DEPTH_BUFFER_BIT && use_glsl_version) {
+ if (blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1,
+ filter, dstFlipX, dstFlipY,
+ use_glsl_version, true)) {
+ mask &= ~GL_DEPTH_BUFFER_BIT;
+ if (mask == 0x0) {
+ _mesa_meta_end(ctx);
+ return;
+ }
+ }
+ }
+
+ /* Choose between glsl version and fixed function version of
+ * BlitFramebuffer function.
+ */
+ if (use_glsl_version) {
+ setup_glsl_blit_framebuffer(ctx, blit, NULL, tex->Target);
+ }
+ else {
+ _mesa_meta_setup_ff_tnl_for_blit(&blit->VAO, &blit->VBO, 2);
+ }
+
+ /* Silence valgrind warnings about reading uninitialized stack. */
+ memset(verts, 0, sizeof(verts));
+
+ /* Continue with "normal" approach which involves copying the src rect
+ * into a temporary texture and is "blitted" by drawing a textured quad.
+ */
+ {
+ /* setup vertex positions */
+ verts[0].x = -1.0F * flipX;
+ verts[0].y = -1.0F * flipY;
+ verts[1].x = 1.0F * flipX;
+ verts[1].y = -1.0F * flipY;
+ verts[2].x = 1.0F * flipX;
+ verts[2].y = 1.0F * flipY;
+ verts[3].x = -1.0F * flipX;
+ verts[3].y = 1.0F * flipY;
+
+ }
+
+ if (!use_glsl_version)
+ _mesa_set_enable(ctx, tex->Target, GL_TRUE);
+
+ if (mask & GL_COLOR_BUFFER_BIT) {
+ const struct gl_framebuffer *readFb = ctx->ReadBuffer;
+ const struct gl_renderbuffer *colorReadRb = readFb->_ColorReadBuffer;
+ const GLenum rb_base_format =
+ _mesa_base_tex_format(ctx, colorReadRb->InternalFormat);
+
+ /* Using the exact source rectangle to create the texture does incorrect
+ * linear filtering along the edges. So, allocate the texture extended along
+ * edges by one pixel in x, y directions.
+ */
+ _mesa_meta_setup_copypix_texture(ctx, tex,
+ srcX - 1, srcY - 1, srcW + 2, srcH + 2,
+ rb_base_format, filter);
+ /* texcoords (after texture allocation!) */
+ {
+ verts[0].tex[0] = 1.0F;
+ verts[0].tex[1] = 1.0F;
+ verts[1].tex[0] = tex->Sright - 1.0F;
+ verts[1].tex[1] = 1.0F;
+ verts[2].tex[0] = tex->Sright - 1.0F;
+ verts[2].tex[1] = tex->Ttop - 1.0F;
+ verts[3].tex[0] = 1.0F;
+ verts[3].tex[1] = tex->Ttop - 1.0F;
+
+ /* upload new vertex data */
+ _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
+ }
+
+ _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
+ _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE);
+ _mesa_DepthMask(GL_FALSE);
+ _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ mask &= ~GL_COLOR_BUFFER_BIT;
+ }
+
+ if ((mask & GL_DEPTH_BUFFER_BIT) &&
+ _mesa_is_desktop_gl(ctx) &&
+ ctx->Extensions.ARB_depth_texture &&
+ ctx->Extensions.ARB_fragment_program) {
+
+ GLuint *tmp = malloc(srcW * srcH * sizeof(GLuint));
+
+ if (tmp) {
+
+ newTex = _mesa_meta_alloc_texture(depthTex, srcW, srcH,
+ GL_DEPTH_COMPONENT);
+ _mesa_ReadPixels(srcX, srcY, srcW, srcH, GL_DEPTH_COMPONENT,
+ GL_UNSIGNED_INT, tmp);
+ _mesa_meta_setup_drawpix_texture(ctx, depthTex, newTex,
+ srcW, srcH, GL_DEPTH_COMPONENT,
+ GL_UNSIGNED_INT, tmp);
+
+ /* texcoords (after texture allocation!) */
+ {
+ verts[0].tex[0] = 0.0F;
+ verts[0].tex[1] = 0.0F;
+ verts[1].tex[0] = depthTex->Sright;
+ verts[1].tex[1] = 0.0F;
+ verts[2].tex[0] = depthTex->Sright;
+ verts[2].tex[1] = depthTex->Ttop;
+ verts[3].tex[0] = 0.0F;
+ verts[3].tex[1] = depthTex->Ttop;
+
+ /* upload new vertex data */
+ _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
+ }
+
+ if (!blit->DepthFP)
+ init_blit_depth_pixels(ctx);
+
+ _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP);
+ _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_TRUE);
+ _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_TRUE);
+ _mesa_DepthFunc(GL_ALWAYS);
+ _mesa_DepthMask(GL_TRUE);
+
+ _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH);
+ _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
+ _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ mask &= ~GL_DEPTH_BUFFER_BIT;
+
+ free(tmp);
+ }
+ }
+
+ if (mask & GL_STENCIL_BUFFER_BIT) {
+ /* XXX can't easily do stencil */
+ }
+
+ if (!use_glsl_version)
+ _mesa_set_enable(ctx, tex->Target, GL_FALSE);
+
+ _mesa_meta_end(ctx);
+
+fallback:
+ if (mask) {
+ _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1, mask, filter);
+ }
+}
+
+void
+_mesa_meta_glsl_blit_cleanup(struct blit_state *blit)
+{
+ if (blit->VAO) {
+ _mesa_DeleteVertexArrays(1, &blit->VAO);
+ blit->VAO = 0;
+ _mesa_DeleteBuffers(1, &blit->VBO);
+ blit->VBO = 0;
+ }
+ if (blit->DepthFP) {
+ _mesa_DeleteProgramsARB(1, &blit->DepthFP);
+ blit->DepthFP = 0;
+ }
+
+ _mesa_meta_blit_shader_table_cleanup(&blit->shaders);
+
+ _mesa_DeleteTextures(1, &blit->depthTex.TexObj);
+ blit->depthTex.TexObj = 0;
+}
diff --git a/mesalib/src/mesa/drivers/dri/common/dri_util.c b/mesalib/src/mesa/drivers/dri/common/dri_util.c
index 22c0848c8..78cfcf536 100644
--- a/mesalib/src/mesa/drivers/dri/common/dri_util.c
+++ b/mesalib/src/mesa/drivers/dri/common/dri_util.c
@@ -49,6 +49,7 @@
#include "../glsl/glsl_parser_extras.h"
#include "main/mtypes.h"
#include "main/version.h"
+#include "main/errors.h"
#include "main/macros.h"
PUBLIC const char __dri2ConfigOptions[] =
@@ -452,8 +453,11 @@ driContextSetFlags(struct gl_context *ctx, uint32_t flags)
if ((flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0)
ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT;
if ((flags & __DRI_CTX_FLAG_DEBUG) != 0) {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ debug->DebugOutput = GL_TRUE;
+ }
ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_DEBUG_BIT;
- ctx->Debug.DebugOutput = GL_TRUE;
}
}
@@ -768,12 +772,13 @@ const __DRIdri2Extension driDRI2Extension = {
};
const __DRIswrastExtension driSWRastExtension = {
- { __DRI_SWRAST, 4 },
- driSWRastCreateNewScreen,
- driCreateNewDrawable,
- driCreateNewContextForAPI,
- driCreateContextAttribs,
- driSWRastCreateNewScreen2,
+ .base = { __DRI_SWRAST, 4 },
+
+ .createNewScreen = driSWRastCreateNewScreen,
+ .createNewDrawable = driCreateNewDrawable,
+ .createNewContextForAPI = driCreateNewContextForAPI,
+ .createContextAttribs = driCreateContextAttribs,
+ .createNewScreen2 = driSWRastCreateNewScreen2,
};
const __DRI2configQueryExtension dri2ConfigQueryExtension = {
@@ -873,7 +878,7 @@ driImageFormatToGLFormat(uint32_t image_format)
/** Image driver interface */
const __DRIimageDriverExtension driImageDriverExtension = {
- /*.base = */{ __DRI_IMAGE_DRIVER, __DRI_IMAGE_DRIVER_VERSION },
+ /*.base =*/ { __DRI_IMAGE_DRIVER, 1 },
/*.createNewScreen2 =*/ driCreateNewScreen2,
/*.createNewDrawable =*/ driCreateNewDrawable,
@@ -892,6 +897,7 @@ static void driCopySubBuffer(__DRIdrawable *pdp, int x, int y,
/* for swrast only */
const __DRIcopySubBufferExtension driCopySubBufferExtension = {
- { __DRI_COPY_SUB_BUFFER, 1 },
- /*.copySubBuffer =*/ driCopySubBuffer,
+ /*.base =*/ { __DRI_COPY_SUB_BUFFER, 1 },
+
+ /*.copySubBuffer =*/ driCopySubBuffer,
};
diff --git a/mesalib/src/mesa/main/api_arrayelt.c b/mesalib/src/mesa/main/api_arrayelt.c
index 29a57c8e5..05cbc0f1f 100644
--- a/mesalib/src/mesa/main/api_arrayelt.c
+++ b/mesalib/src/mesa/main/api_arrayelt.c
@@ -1458,7 +1458,8 @@ _ae_destroy_context(struct gl_context *ctx)
static void
check_vbo(AEcontext *actx, struct gl_buffer_object *vbo)
{
- if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo)) {
+ if (_mesa_is_bufferobj(vbo) &&
+ !_mesa_bufferobj_mapped(vbo, MAP_INTERNAL)) {
GLuint i;
for (i = 0; i < actx->nr_vbos; i++)
if (actx->vbo[i] == vbo)
@@ -1633,7 +1634,8 @@ _ae_map_vbos(struct gl_context *ctx)
ctx->Driver.MapBufferRange(ctx, 0,
actx->vbo[i]->Size,
GL_MAP_READ_BIT,
- actx->vbo[i]);
+ actx->vbo[i],
+ MAP_INTERNAL);
if (actx->nr_vbos)
actx->mapped_vbos = GL_TRUE;
@@ -1655,7 +1657,7 @@ _ae_unmap_vbos(struct gl_context *ctx)
assert (!actx->NewState);
for (i = 0; i < actx->nr_vbos; i++)
- ctx->Driver.UnmapBuffer(ctx, actx->vbo[i]);
+ ctx->Driver.UnmapBuffer(ctx, actx->vbo[i], MAP_INTERNAL);
actx->mapped_vbos = GL_FALSE;
}
@@ -1701,7 +1703,8 @@ _ae_ArrayElement(GLint elt)
/* emit generic attribute elements */
for (at = actx->attribs; at->func; at++) {
const GLubyte *src
- = ADD_POINTERS(at->array->BufferObj->Pointer, at->array->Ptr)
+ = ADD_POINTERS(at->array->BufferObj->Mappings[MAP_INTERNAL].Pointer,
+ at->array->Ptr)
+ elt * at->array->StrideB;
at->func(at->index, src);
}
@@ -1709,7 +1712,8 @@ _ae_ArrayElement(GLint elt)
/* emit conventional arrays elements */
for (aa = actx->arrays; aa->offset != -1 ; aa++) {
const GLubyte *src
- = ADD_POINTERS(aa->array->BufferObj->Pointer, aa->array->Ptr)
+ = ADD_POINTERS(aa->array->BufferObj->Mappings[MAP_INTERNAL].Pointer,
+ aa->array->Ptr)
+ elt * aa->array->StrideB;
CALL_by_offset(disp, (array_func), aa->offset, ((const void *) src));
}
diff --git a/mesalib/src/mesa/main/api_loopback.c b/mesalib/src/mesa/main/api_loopback.c
index 8a04174c7..d10ae15ea 100644
--- a/mesalib/src/mesa/main/api_loopback.c
+++ b/mesalib/src/mesa/main/api_loopback.c
@@ -34,7 +34,6 @@
#include "api_loopback.h"
#include "mtypes.h"
#include "glapi/glapi.h"
-#include "glapi/glthread.h"
#include "main/dispatch.h"
#include "main/context.h"
diff --git a/mesalib/src/mesa/main/api_loopback.h b/mesalib/src/mesa/main/api_loopback.h
index 0b014ad5a..2195e01e3 100644
--- a/mesalib/src/mesa/main/api_loopback.h
+++ b/mesalib/src/mesa/main/api_loopback.h
@@ -32,7 +32,6 @@
#include "main/macros.h" // ?
#include "main/mtypes.h" // ?
#include "glapi/glapi.h" // ?
-#include "glapi/glthread.h" // ?
#include "main/dispatch.h" // ?
#include "main/context.h" // ?
diff --git a/mesalib/src/mesa/main/api_validate.c b/mesalib/src/mesa/main/api_validate.c
index af469e046..f3fd1a475 100644
--- a/mesalib/src/mesa/main/api_validate.c
+++ b/mesalib/src/mesa/main/api_validate.c
@@ -69,7 +69,8 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type,
if (_mesa_is_bufferobj(elementBuf)) {
/* elements are in a user-defined buffer object. need to map it */
map = ctx->Driver.MapBufferRange(ctx, 0, elementBuf->Size,
- GL_MAP_READ_BIT, elementBuf);
+ GL_MAP_READ_BIT, elementBuf,
+ MAP_INTERNAL);
/* Actual address is the sum of pointers */
indices = (const GLvoid *) ADD_POINTERS(map, (const GLubyte *) indices);
}
@@ -92,7 +93,7 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type,
}
if (map) {
- ctx->Driver.UnmapBuffer(ctx, elementBuf);
+ ctx->Driver.UnmapBuffer(ctx, elementBuf, MAP_INTERNAL);
}
return max;
@@ -865,7 +866,7 @@ valid_draw_indirect(struct gl_context *ctx,
return GL_FALSE;
}
- if (_mesa_bufferobj_mapped(ctx->DrawIndirectBuffer)) {
+ if (_mesa_check_disallowed_mapping(ctx->DrawIndirectBuffer)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"%s(DRAW_INDIRECT_BUFFER is mapped)", name);
return GL_FALSE;
diff --git a/mesalib/src/mesa/main/arrayobj.c b/mesalib/src/mesa/main/arrayobj.c
index b33ba8016..efb993012 100644
--- a/mesalib/src/mesa/main/arrayobj.c
+++ b/mesalib/src/mesa/main/arrayobj.c
@@ -119,7 +119,7 @@ _mesa_delete_vao(struct gl_context *ctx, struct gl_vertex_array_object *obj)
{
unbind_array_object_vbos(ctx, obj);
_mesa_reference_buffer_object(ctx, &obj->IndexBufferObj, NULL);
- _glthread_DESTROY_MUTEX(obj->Mutex);
+ mtx_destroy(&obj->Mutex);
free(obj->Label);
free(obj);
}
@@ -142,7 +142,7 @@ _mesa_reference_vao_(struct gl_context *ctx,
GLboolean deleteFlag = GL_FALSE;
struct gl_vertex_array_object *oldObj = *ptr;
- _glthread_LOCK_MUTEX(oldObj->Mutex);
+ mtx_lock(&oldObj->Mutex);
ASSERT(oldObj->RefCount > 0);
oldObj->RefCount--;
#if 0
@@ -150,7 +150,7 @@ _mesa_reference_vao_(struct gl_context *ctx,
(void *) oldObj, oldObj->Name, oldObj->RefCount);
#endif
deleteFlag = (oldObj->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldObj->Mutex);
+ mtx_unlock(&oldObj->Mutex);
if (deleteFlag) {
ASSERT(ctx->Driver.DeleteArrayObject);
@@ -163,7 +163,7 @@ _mesa_reference_vao_(struct gl_context *ctx,
if (vao) {
/* reference new array object */
- _glthread_LOCK_MUTEX(vao->Mutex);
+ mtx_lock(&vao->Mutex);
if (vao->RefCount == 0) {
/* this array's being deleted (look just above) */
/* Not sure this can every really happen. Warn if it does. */
@@ -178,7 +178,7 @@ _mesa_reference_vao_(struct gl_context *ctx,
#endif
*ptr = vao;
}
- _glthread_UNLOCK_MUTEX(vao->Mutex);
+ mtx_unlock(&vao->Mutex);
}
}
@@ -226,7 +226,7 @@ _mesa_initialize_vao(struct gl_context *ctx,
obj->Name = name;
- _glthread_INIT_MUTEX(obj->Mutex);
+ mtx_init(&obj->Mutex, mtx_plain);
obj->RefCount = 1;
/* Init the individual arrays */
diff --git a/mesalib/src/mesa/main/attrib.c b/mesalib/src/mesa/main/attrib.c
index 004528044..5a626f2f4 100644
--- a/mesalib/src/mesa/main/attrib.c
+++ b/mesalib/src/mesa/main/attrib.c
@@ -1457,6 +1457,7 @@ copy_array_object(struct gl_context *ctx,
/* _Enabled must be the same than on push */
dest->_Enabled = src->_Enabled;
+ dest->NewArrays = src->NewArrays;
dest->_MaxElement = src->_MaxElement;
}
diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c
index 966e61c4c..c4417c922 100644
--- a/mesalib/src/mesa/main/bufferobj.c
+++ b/mesalib/src/mesa/main/bufferobj.c
@@ -207,11 +207,12 @@ static bool
bufferobj_range_mapped(const struct gl_buffer_object *obj,
GLintptr offset, GLsizeiptr size)
{
- if (_mesa_bufferobj_mapped(obj)) {
+ if (_mesa_bufferobj_mapped(obj, MAP_USER)) {
const GLintptr end = offset + size;
- const GLintptr mapEnd = obj->Offset + obj->Length;
+ const GLintptr mapEnd = obj->Mappings[MAP_USER].Offset +
+ obj->Mappings[MAP_USER].Length;
- if (!(end <= obj->Offset || offset >= mapEnd)) {
+ if (!(end <= obj->Mappings[MAP_USER].Offset || offset >= mapEnd)) {
return true;
}
}
@@ -269,6 +270,9 @@ buffer_object_subdata_range_good(struct gl_context * ctx, GLenum target,
return NULL;
}
+ if (bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_PERSISTENT_BIT)
+ return bufObj;
+
if (mappedRange) {
if (bufferobj_range_mapped(bufObj, offset, size)) {
_mesa_error(ctx, GL_INVALID_OPERATION, "%s", caller);
@@ -276,7 +280,7 @@ buffer_object_subdata_range_good(struct gl_context * ctx, GLenum target,
}
}
else {
- if (_mesa_bufferobj_mapped(bufObj)) {
+ if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) {
_mesa_error(ctx, GL_INVALID_OPERATION, "%s", caller);
return NULL;
}
@@ -413,7 +417,7 @@ _mesa_delete_buffer_object(struct gl_context *ctx,
bufObj->RefCount = -1000;
bufObj->Name = ~0;
- _glthread_DESTROY_MUTEX(bufObj->Mutex);
+ mtx_destroy(&bufObj->Mutex);
free(bufObj->Label);
free(bufObj);
}
@@ -435,7 +439,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
GLboolean deleteFlag = GL_FALSE;
struct gl_buffer_object *oldObj = *ptr;
- _glthread_LOCK_MUTEX(oldObj->Mutex);
+ mtx_lock(&oldObj->Mutex);
ASSERT(oldObj->RefCount > 0);
oldObj->RefCount--;
#if 0
@@ -443,7 +447,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
(void *) oldObj, oldObj->Name, oldObj->RefCount);
#endif
deleteFlag = (oldObj->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldObj->Mutex);
+ mtx_unlock(&oldObj->Mutex);
if (deleteFlag) {
@@ -465,7 +469,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
if (bufObj) {
/* reference new buffer */
- _glthread_LOCK_MUTEX(bufObj->Mutex);
+ mtx_lock(&bufObj->Mutex);
if (bufObj->RefCount == 0) {
/* this buffer's being deleted (look just above) */
/* Not sure this can every really happen. Warn if it does. */
@@ -480,7 +484,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
#endif
*ptr = bufObj;
}
- _glthread_UNLOCK_MUTEX(bufObj->Mutex);
+ mtx_unlock(&bufObj->Mutex);
}
}
@@ -496,11 +500,10 @@ _mesa_initialize_buffer_object( struct gl_context *ctx,
(void) target;
memset(obj, 0, sizeof(struct gl_buffer_object));
- _glthread_INIT_MUTEX(obj->Mutex);
+ mtx_init(&obj->Mutex, mtx_plain);
obj->RefCount = 1;
obj->Name = name;
obj->Usage = GL_STATIC_DRAW_ARB;
- obj->AccessFlags = 0;
}
@@ -555,21 +558,21 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx)
*/
GLboolean
_mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size,
- const GLvoid * data, GLenum usage,
+ const GLvoid * data, GLenum usage, GLenum storageFlags,
struct gl_buffer_object * bufObj )
{
void * new_data;
(void) target;
- if (bufObj->Data)
- _mesa_align_free( bufObj->Data );
+ _mesa_align_free( bufObj->Data );
new_data = _mesa_align_malloc( size, ctx->Const.MinMapBufferAlignment );
if (new_data) {
bufObj->Data = (GLubyte *) new_data;
bufObj->Size = size;
bufObj->Usage = usage;
+ bufObj->StorageFlags = storageFlags;
if (data) {
memcpy( bufObj->Data, data, size );
@@ -672,33 +675,11 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx,
GLsizeiptr i;
GLubyte *dest;
- if (_mesa_bufferobj_mapped(bufObj)) {
- GLubyte *data = malloc(size);
- GLubyte *dataStart = data;
- if (data == NULL) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data");
- return;
- }
-
- if (clearValue == NULL) {
- /* Clear with zeros, per the spec */
- memset(data, 0, size);
- }
- else {
- for (i = 0; i < size/clearValueSize; ++i) {
- memcpy(data, clearValue, clearValueSize);
- data += clearValueSize;
- }
- }
- ctx->Driver.BufferSubData(ctx, offset, size, dataStart, bufObj);
- return;
- }
-
ASSERT(ctx->Driver.MapBufferRange);
dest = ctx->Driver.MapBufferRange(ctx, offset, size,
GL_MAP_WRITE_BIT |
GL_MAP_INVALIDATE_RANGE_BIT,
- bufObj);
+ bufObj, MAP_INTERNAL);
if (!dest) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data");
@@ -708,7 +689,7 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx,
if (clearValue == NULL) {
/* Clear with zeros, per the spec */
memset(dest, 0, size);
- ctx->Driver.UnmapBuffer(ctx, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL);
return;
}
@@ -717,7 +698,7 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx,
dest += clearValueSize;
}
- ctx->Driver.UnmapBuffer(ctx, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL);
}
@@ -728,16 +709,17 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx,
static void *
_mesa_buffer_map_range( struct gl_context *ctx, GLintptr offset,
GLsizeiptr length, GLbitfield access,
- struct gl_buffer_object *bufObj )
+ struct gl_buffer_object *bufObj,
+ gl_map_buffer_index index)
{
(void) ctx;
- assert(!_mesa_bufferobj_mapped(bufObj));
+ assert(!_mesa_bufferobj_mapped(bufObj, index));
/* Just return a direct pointer to the data */
- bufObj->Pointer = bufObj->Data + offset;
- bufObj->Length = length;
- bufObj->Offset = offset;
- bufObj->AccessFlags = access;
- return bufObj->Pointer;
+ bufObj->Mappings[index].Pointer = bufObj->Data + offset;
+ bufObj->Mappings[index].Length = length;
+ bufObj->Mappings[index].Offset = offset;
+ bufObj->Mappings[index].AccessFlags = access;
+ return bufObj->Mappings[index].Pointer;
}
@@ -748,7 +730,8 @@ _mesa_buffer_map_range( struct gl_context *ctx, GLintptr offset,
static void
_mesa_buffer_flush_mapped_range( struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
- struct gl_buffer_object *obj )
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index)
{
(void) ctx;
(void) offset;
@@ -766,14 +749,15 @@ _mesa_buffer_flush_mapped_range( struct gl_context *ctx,
* \sa glUnmapBufferARB, dd_function_table::UnmapBuffer
*/
GLboolean
-_mesa_buffer_unmap( struct gl_context *ctx, struct gl_buffer_object *bufObj )
+_mesa_buffer_unmap(struct gl_context *ctx, struct gl_buffer_object *bufObj,
+ gl_map_buffer_index index)
{
(void) ctx;
/* XXX we might assert here that bufObj->Pointer is non-null */
- bufObj->Pointer = NULL;
- bufObj->Length = 0;
- bufObj->Offset = 0;
- bufObj->AccessFlags = 0x0;
+ bufObj->Mappings[index].Pointer = NULL;
+ bufObj->Mappings[index].Length = 0;
+ bufObj->Mappings[index].Offset = 0;
+ bufObj->Mappings[index].AccessFlags = 0x0;
return GL_TRUE;
}
@@ -791,14 +775,11 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
{
GLubyte *srcPtr, *dstPtr;
- /* the buffers should not be mapped */
- assert(!_mesa_bufferobj_mapped(src));
- assert(!_mesa_bufferobj_mapped(dst));
-
if (src == dst) {
srcPtr = dstPtr = ctx->Driver.MapBufferRange(ctx, 0, src->Size,
GL_MAP_READ_BIT |
- GL_MAP_WRITE_BIT, src);
+ GL_MAP_WRITE_BIT, src,
+ MAP_INTERNAL);
if (!srcPtr)
return;
@@ -807,10 +788,12 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
dstPtr += writeOffset;
} else {
srcPtr = ctx->Driver.MapBufferRange(ctx, readOffset, size,
- GL_MAP_READ_BIT, src);
+ GL_MAP_READ_BIT, src,
+ MAP_INTERNAL);
dstPtr = ctx->Driver.MapBufferRange(ctx, writeOffset, size,
(GL_MAP_WRITE_BIT |
- GL_MAP_INVALIDATE_RANGE_BIT), dst);
+ GL_MAP_INVALIDATE_RANGE_BIT), dst,
+ MAP_INTERNAL);
}
/* Note: the src and dst regions will never overlap. Trying to do so
@@ -819,9 +802,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
if (srcPtr && dstPtr)
memcpy(dstPtr, srcPtr, size);
- ctx->Driver.UnmapBuffer(ctx, src);
+ ctx->Driver.UnmapBuffer(ctx, src, MAP_INTERNAL);
if (dst != src)
- ctx->Driver.UnmapBuffer(ctx, dst);
+ ctx->Driver.UnmapBuffer(ctx, dst, MAP_INTERNAL);
}
@@ -835,7 +818,7 @@ _mesa_init_buffer_objects( struct gl_context *ctx )
GLuint i;
memset(&DummyBufferObject, 0, sizeof(DummyBufferObject));
- _glthread_INIT_MUTEX(DummyBufferObject.Mutex);
+ mtx_init(&DummyBufferObject.Mutex, mtx_plain);
DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */
_mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj,
@@ -955,10 +938,6 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer)
/* bind new buffer */
_mesa_reference_buffer_object(ctx, bindTarget, newBufObj);
-
- /* Pass BindBuffer call to device driver */
- if (ctx->Driver.BindBuffer)
- ctx->Driver.BindBuffer( ctx, target, newBufObj );
}
@@ -1023,7 +1002,6 @@ _mesa_init_buffer_object_functions(struct dd_function_table *driver)
/* GL_ARB_vertex/pixel_buffer_object */
driver->NewBufferObject = _mesa_new_buffer_object;
driver->DeleteBuffer = _mesa_delete_buffer_object;
- driver->BindBuffer = NULL;
driver->BufferData = _mesa_buffer_data;
driver->BufferSubData = _mesa_buffer_subdata;
driver->GetBufferSubData = _mesa_buffer_get_subdata;
@@ -1041,6 +1019,21 @@ _mesa_init_buffer_object_functions(struct dd_function_table *driver)
}
+void
+_mesa_buffer_unmap_all_mappings(struct gl_context *ctx,
+ struct gl_buffer_object *bufObj)
+{
+ int i;
+
+ for (i = 0; i < MAP_COUNT; i++) {
+ if (_mesa_bufferobj_mapped(bufObj, i)) {
+ ctx->Driver.UnmapBuffer(ctx, bufObj, i);
+ ASSERT(bufObj->Mappings[i].Pointer == NULL);
+ bufObj->Mappings[i].AccessFlags = 0;
+ }
+ }
+}
+
/**********************************************************************/
/* API Functions */
@@ -1077,7 +1070,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids)
return;
}
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
for (i = 0; i < n; i++) {
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]);
@@ -1087,12 +1080,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids)
ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject);
- if (_mesa_bufferobj_mapped(bufObj)) {
- /* if mapped, unmap it now */
- ctx->Driver.UnmapBuffer(ctx, bufObj);
- bufObj->AccessFlags = 0;
- bufObj->Pointer = NULL;
- }
+ _mesa_buffer_unmap_all_mappings(ctx, bufObj);
/* unbind any vertex pointers bound to this buffer */
for (j = 0; j < Elements(vao->VertexBinding); j++) {
@@ -1169,7 +1157,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids)
}
}
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
@@ -1201,7 +1189,7 @@ _mesa_GenBuffers(GLsizei n, GLuint *buffer)
/*
* This must be atomic (generation and allocation of buffer object IDs)
*/
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n);
@@ -1212,7 +1200,7 @@ _mesa_GenBuffers(GLsizei n, GLuint *buffer)
buffer[i] = first + i;
}
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
@@ -1230,15 +1218,73 @@ _mesa_IsBuffer(GLuint id)
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
bufObj = _mesa_lookup_bufferobj(ctx, id);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
return bufObj && bufObj != &DummyBufferObject;
}
void GLAPIENTRY
+_mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data,
+ GLbitfield flags)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_buffer_object *bufObj;
+
+ if (size <= 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(size <= 0)");
+ return;
+ }
+
+ if (flags & ~(GL_MAP_READ_BIT |
+ GL_MAP_WRITE_BIT |
+ GL_MAP_PERSISTENT_BIT |
+ GL_MAP_COHERENT_BIT |
+ GL_DYNAMIC_STORAGE_BIT |
+ GL_CLIENT_STORAGE_BIT)) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags)");
+ return;
+ }
+
+ if (flags & GL_MAP_PERSISTENT_BIT &&
+ !(flags & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT))) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags!=READ/WRITE)");
+ return;
+ }
+
+ if (flags & GL_MAP_COHERENT_BIT && !(flags & GL_MAP_PERSISTENT_BIT)) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags!=PERSISTENT)");
+ return;
+ }
+
+ bufObj = get_buffer(ctx, "glBufferStorage", target, GL_INVALID_OPERATION);
+ if (!bufObj)
+ return;
+
+ if (bufObj->Immutable) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferStorage(immutable)");
+ return;
+ }
+
+ /* Unmap the existing buffer. We'll replace it now. Not an error. */
+ _mesa_buffer_unmap_all_mappings(ctx, bufObj);
+
+ FLUSH_VERTICES(ctx, _NEW_BUFFER_OBJECT);
+
+ bufObj->Written = GL_TRUE;
+ bufObj->Immutable = GL_TRUE;
+
+ ASSERT(ctx->Driver.BufferData);
+ if (!ctx->Driver.BufferData(ctx, target, size, data, GL_DYNAMIC_DRAW,
+ flags, bufObj)) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBufferStorage()");
+ }
+}
+
+
+void GLAPIENTRY
_mesa_BufferData(GLenum target, GLsizeiptrARB size,
const GLvoid * data, GLenum usage)
{
@@ -1290,12 +1336,13 @@ _mesa_BufferData(GLenum target, GLsizeiptrARB size,
if (!bufObj)
return;
- if (_mesa_bufferobj_mapped(bufObj)) {
- /* Unmap the existing buffer. We'll replace it now. Not an error. */
- ctx->Driver.UnmapBuffer(ctx, bufObj);
- bufObj->AccessFlags = 0;
- ASSERT(bufObj->Pointer == NULL);
- }
+ if (bufObj->Immutable) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferData(immutable)");
+ return;
+ }
+
+ /* Unmap the existing buffer. We'll replace it now. Not an error. */
+ _mesa_buffer_unmap_all_mappings(ctx, bufObj);
FLUSH_VERTICES(ctx, _NEW_BUFFER_OBJECT);
@@ -1311,7 +1358,11 @@ _mesa_BufferData(GLenum target, GLsizeiptrARB size,
#endif
ASSERT(ctx->Driver.BufferData);
- if (!ctx->Driver.BufferData( ctx, target, size, data, usage, bufObj )) {
+ if (!ctx->Driver.BufferData(ctx, target, size, data, usage,
+ GL_MAP_READ_BIT |
+ GL_MAP_WRITE_BIT |
+ GL_DYNAMIC_STORAGE_BIT,
+ bufObj)) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glBufferDataARB()");
}
}
@@ -1332,6 +1383,12 @@ _mesa_BufferSubData(GLenum target, GLintptrARB offset,
return;
}
+ if (bufObj->Immutable &&
+ !(bufObj->StorageFlags & GL_DYNAMIC_STORAGE_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferSubData");
+ return;
+ }
+
if (size == 0)
return;
@@ -1377,7 +1434,7 @@ _mesa_ClearBufferData(GLenum target, GLenum internalformat, GLenum format,
return;
}
- if (_mesa_bufferobj_mapped(bufObj)) {
+ if (_mesa_check_disallowed_mapping(bufObj)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glClearBufferData(buffer currently mapped)");
return;
@@ -1451,8 +1508,10 @@ _mesa_ClearBufferSubData(GLenum target, GLenum internalformat,
if (data == NULL) {
/* clear to zeros, per the spec */
- ctx->Driver.ClearBufferSubData(ctx, offset, size,
- NULL, 0, bufObj);
+ if (size > 0) {
+ ctx->Driver.ClearBufferSubData(ctx, offset, size,
+ NULL, 0, bufObj);
+ }
return;
}
@@ -1462,8 +1521,10 @@ _mesa_ClearBufferSubData(GLenum target, GLenum internalformat,
return;
}
- ctx->Driver.ClearBufferSubData(ctx, offset, size,
- clearValue, clearValueSize, bufObj);
+ if (size > 0) {
+ ctx->Driver.ClearBufferSubData(ctx, offset, size,
+ clearValue, clearValueSize, bufObj);
+ }
}
@@ -1505,7 +1566,21 @@ _mesa_MapBuffer(GLenum target, GLenum access)
if (!bufObj)
return NULL;
- if (_mesa_bufferobj_mapped(bufObj)) {
+ if (accessFlags & GL_MAP_READ_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_READ_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBuffer(invalid read flag)");
+ return NULL;
+ }
+
+ if (accessFlags & GL_MAP_WRITE_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_WRITE_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBuffer(invalid write flag)");
+ return NULL;
+ }
+
+ if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glMapBufferARB(already mapped)");
return NULL;
}
@@ -1517,7 +1592,8 @@ _mesa_MapBuffer(GLenum target, GLenum access)
}
ASSERT(ctx->Driver.MapBufferRange);
- map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj);
+ map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj,
+ MAP_USER);
if (!map) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)");
return NULL;
@@ -1527,10 +1603,10 @@ _mesa_MapBuffer(GLenum target, GLenum access)
* This is important because other modules (like VBO) might call
* the driver function directly.
*/
- ASSERT(bufObj->Pointer == map);
- ASSERT(bufObj->Length == bufObj->Size);
- ASSERT(bufObj->Offset == 0);
- bufObj->AccessFlags = accessFlags;
+ ASSERT(bufObj->Mappings[MAP_USER].Pointer == map);
+ ASSERT(bufObj->Mappings[MAP_USER].Length == bufObj->Size);
+ ASSERT(bufObj->Mappings[MAP_USER].Offset == 0);
+ bufObj->Mappings[MAP_USER].AccessFlags = accessFlags;
}
if (access == GL_WRITE_ONLY_ARB || access == GL_READ_WRITE_ARB)
@@ -1558,7 +1634,7 @@ _mesa_MapBuffer(GLenum target, GLenum access)
}
#endif
- return bufObj->Pointer;
+ return bufObj->Mappings[MAP_USER].Pointer;
}
@@ -1574,7 +1650,7 @@ _mesa_UnmapBuffer(GLenum target)
if (!bufObj)
return GL_FALSE;
- if (!_mesa_bufferobj_mapped(bufObj)) {
+ if (!_mesa_bufferobj_mapped(bufObj, MAP_USER)) {
_mesa_error(ctx, GL_INVALID_OPERATION, "glUnmapBufferARB");
return GL_FALSE;
}
@@ -1615,11 +1691,11 @@ _mesa_UnmapBuffer(GLenum target)
}
#endif
- status = ctx->Driver.UnmapBuffer( ctx, bufObj );
- bufObj->AccessFlags = 0;
- ASSERT(bufObj->Pointer == NULL);
- ASSERT(bufObj->Offset == 0);
- ASSERT(bufObj->Length == 0);
+ status = ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_USER);
+ bufObj->Mappings[MAP_USER].AccessFlags = 0;
+ ASSERT(bufObj->Mappings[MAP_USER].Pointer == NULL);
+ ASSERT(bufObj->Mappings[MAP_USER].Offset == 0);
+ ASSERT(bufObj->Mappings[MAP_USER].Length == 0);
return status;
}
@@ -1644,25 +1720,36 @@ _mesa_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
*params = bufObj->Usage;
return;
case GL_BUFFER_ACCESS_ARB:
- *params = simplified_access_mode(ctx, bufObj->AccessFlags);
+ *params = simplified_access_mode(ctx,
+ bufObj->Mappings[MAP_USER].AccessFlags);
return;
case GL_BUFFER_MAPPED_ARB:
- *params = _mesa_bufferobj_mapped(bufObj);
+ *params = _mesa_bufferobj_mapped(bufObj, MAP_USER);
return;
case GL_BUFFER_ACCESS_FLAGS:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = bufObj->AccessFlags;
+ *params = bufObj->Mappings[MAP_USER].AccessFlags;
return;
case GL_BUFFER_MAP_OFFSET:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = (GLint) bufObj->Offset;
+ *params = (GLint) bufObj->Mappings[MAP_USER].Offset;
return;
case GL_BUFFER_MAP_LENGTH:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = (GLint) bufObj->Length;
+ *params = (GLint) bufObj->Mappings[MAP_USER].Length;
+ return;
+ case GL_BUFFER_IMMUTABLE_STORAGE:
+ if (!ctx->Extensions.ARB_buffer_storage)
+ goto invalid_pname;
+ *params = bufObj->Immutable;
+ return;
+ case GL_BUFFER_STORAGE_FLAGS:
+ if (!ctx->Extensions.ARB_buffer_storage)
+ goto invalid_pname;
+ *params = bufObj->StorageFlags;
return;
default:
; /* fall-through */
@@ -1698,25 +1785,36 @@ _mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)
*params = bufObj->Usage;
return;
case GL_BUFFER_ACCESS_ARB:
- *params = simplified_access_mode(ctx, bufObj->AccessFlags);
+ *params = simplified_access_mode(ctx,
+ bufObj->Mappings[MAP_USER].AccessFlags);
return;
case GL_BUFFER_ACCESS_FLAGS:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = bufObj->AccessFlags;
+ *params = bufObj->Mappings[MAP_USER].AccessFlags;
return;
case GL_BUFFER_MAPPED_ARB:
- *params = _mesa_bufferobj_mapped(bufObj);
+ *params = _mesa_bufferobj_mapped(bufObj, MAP_USER);
return;
case GL_BUFFER_MAP_OFFSET:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = bufObj->Offset;
+ *params = bufObj->Mappings[MAP_USER].Offset;
return;
case GL_BUFFER_MAP_LENGTH:
if (!ctx->Extensions.ARB_map_buffer_range)
goto invalid_pname;
- *params = bufObj->Length;
+ *params = bufObj->Mappings[MAP_USER].Length;
+ return;
+ case GL_BUFFER_IMMUTABLE_STORAGE:
+ if (!ctx->Extensions.ARB_buffer_storage)
+ goto invalid_pname;
+ *params = bufObj->Immutable;
+ return;
+ case GL_BUFFER_STORAGE_FLAGS:
+ if (!ctx->Extensions.ARB_buffer_storage)
+ goto invalid_pname;
+ *params = bufObj->StorageFlags;
return;
default:
; /* fall-through */
@@ -1744,7 +1842,7 @@ _mesa_GetBufferPointerv(GLenum target, GLenum pname, GLvoid **params)
if (!bufObj)
return;
- *params = bufObj->Pointer;
+ *params = bufObj->Mappings[MAP_USER].Pointer;
}
@@ -1766,13 +1864,13 @@ _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
if (!dst)
return;
- if (_mesa_bufferobj_mapped(src)) {
+ if (_mesa_check_disallowed_mapping(src)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glCopyBufferSubData(readBuffer is mapped)");
return;
}
- if (_mesa_bufferobj_mapped(dst)) {
+ if (_mesa_check_disallowed_mapping(dst)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glCopyBufferSubData(writeBuffer is mapped)");
return;
@@ -1839,6 +1937,7 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
GET_CURRENT_CONTEXT(ctx);
struct gl_buffer_object *bufObj;
void *map;
+ GLbitfield allowed_access;
ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL);
@@ -1873,13 +1972,20 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
return NULL;
}
- if (access & ~(GL_MAP_READ_BIT |
- GL_MAP_WRITE_BIT |
- GL_MAP_INVALIDATE_RANGE_BIT |
- GL_MAP_INVALIDATE_BUFFER_BIT |
- GL_MAP_FLUSH_EXPLICIT_BIT |
- GL_MAP_UNSYNCHRONIZED_BIT)) {
- /* generate an error if any undefind bit is set */
+ allowed_access = GL_MAP_READ_BIT |
+ GL_MAP_WRITE_BIT |
+ GL_MAP_INVALIDATE_RANGE_BIT |
+ GL_MAP_INVALIDATE_BUFFER_BIT |
+ GL_MAP_FLUSH_EXPLICIT_BIT |
+ GL_MAP_UNSYNCHRONIZED_BIT;
+
+ if (ctx->Extensions.ARB_buffer_storage) {
+ allowed_access |= GL_MAP_PERSISTENT_BIT |
+ GL_MAP_COHERENT_BIT;
+ }
+
+ if (access & ~allowed_access) {
+ /* generate an error if any other than allowed bit is set */
_mesa_error(ctx, GL_INVALID_VALUE, "glMapBufferRange(access)");
return NULL;
}
@@ -1910,13 +2016,41 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
if (!bufObj)
return NULL;
+ if (access & GL_MAP_READ_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_READ_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBufferRange(invalid read flag)");
+ return NULL;
+ }
+
+ if (access & GL_MAP_WRITE_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_WRITE_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBufferRange(invalid write flag)");
+ return NULL;
+ }
+
+ if (access & GL_MAP_COHERENT_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_COHERENT_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBufferRange(invalid coherent flag)");
+ return NULL;
+ }
+
+ if (access & GL_MAP_PERSISTENT_BIT &&
+ !(bufObj->StorageFlags & GL_MAP_PERSISTENT_BIT)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glMapBufferRange(invalid persistent flag)");
+ return NULL;
+ }
+
if (offset + length > bufObj->Size) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glMapBufferRange(offset + length > size)");
return NULL;
}
- if (_mesa_bufferobj_mapped(bufObj)) {
+ if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glMapBufferRange(buffer already mapped)");
return NULL;
@@ -1931,15 +2065,16 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
/* Mapping zero bytes should return a non-null pointer. */
if (!length) {
static long dummy = 0;
- bufObj->Pointer = &dummy;
- bufObj->Length = length;
- bufObj->Offset = offset;
- bufObj->AccessFlags = access;
- return bufObj->Pointer;
+ bufObj->Mappings[MAP_USER].Pointer = &dummy;
+ bufObj->Mappings[MAP_USER].Length = length;
+ bufObj->Mappings[MAP_USER].Offset = offset;
+ bufObj->Mappings[MAP_USER].AccessFlags = access;
+ return bufObj->Mappings[MAP_USER].Pointer;
}
ASSERT(ctx->Driver.MapBufferRange);
- map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj);
+ map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj,
+ MAP_USER);
if (!map) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)");
}
@@ -1948,10 +2083,10 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
* This is important because other modules (like VBO) might call
* the driver function directly.
*/
- ASSERT(bufObj->Pointer == map);
- ASSERT(bufObj->Length == length);
- ASSERT(bufObj->Offset == offset);
- ASSERT(bufObj->AccessFlags == access);
+ ASSERT(bufObj->Mappings[MAP_USER].Pointer == map);
+ ASSERT(bufObj->Mappings[MAP_USER].Length == length);
+ ASSERT(bufObj->Mappings[MAP_USER].Offset == offset);
+ ASSERT(bufObj->Mappings[MAP_USER].AccessFlags == access);
}
return map;
@@ -1990,30 +2125,33 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
if (!bufObj)
return;
- if (!_mesa_bufferobj_mapped(bufObj)) {
+ if (!_mesa_bufferobj_mapped(bufObj, MAP_USER)) {
/* buffer is not mapped */
_mesa_error(ctx, GL_INVALID_OPERATION,
"glFlushMappedBufferRange(buffer is not mapped)");
return;
}
- if ((bufObj->AccessFlags & GL_MAP_FLUSH_EXPLICIT_BIT) == 0) {
+ if ((bufObj->Mappings[MAP_USER].AccessFlags &
+ GL_MAP_FLUSH_EXPLICIT_BIT) == 0) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glFlushMappedBufferRange(GL_MAP_FLUSH_EXPLICIT_BIT not set)");
return;
}
- if (offset + length > bufObj->Length) {
+ if (offset + length > bufObj->Mappings[MAP_USER].Length) {
_mesa_error(ctx, GL_INVALID_VALUE,
"glFlushMappedBufferRange(offset %ld + length %ld > mapped length %ld)",
- (long)offset, (long)length, (long)bufObj->Length);
+ (long)offset, (long)length,
+ (long)bufObj->Mappings[MAP_USER].Length);
return;
}
- ASSERT(bufObj->AccessFlags & GL_MAP_WRITE_BIT);
+ ASSERT(bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_WRITE_BIT);
if (ctx->Driver.FlushMappedBufferRange)
- ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj);
+ ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj,
+ MAP_USER);
}
@@ -2660,13 +2798,15 @@ _mesa_InvalidateBufferSubData(GLuint buffer, GLintptr offset,
return;
}
- /* The GL_ARB_invalidate_subdata spec says:
+ /* The OpenGL 4.4 (Core Profile) spec says:
*
- * "An INVALID_OPERATION error is generated if the buffer is currently
- * mapped by MapBuffer, or if the invalidate range intersects the range
- * currently mapped by MapBufferRange."
+ * "An INVALID_OPERATION error is generated if buffer is currently
+ * mapped by MapBuffer or if the invalidate range intersects the range
+ * currently mapped by MapBufferRange, unless it was mapped
+ * with MAP_PERSISTENT_BIT set in the MapBufferRange access flags."
*/
- if (bufferobj_range_mapped(bufObj, offset, length)) {
+ if (!(bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_PERSISTENT_BIT) &&
+ bufferobj_range_mapped(bufObj, offset, length)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glInvalidateBufferSubData(intersection with mapped "
"range)");
@@ -2693,13 +2833,14 @@ _mesa_InvalidateBufferData(GLuint buffer)
return;
}
- /* The GL_ARB_invalidate_subdata spec says:
+ /* The OpenGL 4.4 (Core Profile) spec says:
*
- * "An INVALID_OPERATION error is generated if the buffer is currently
- * mapped by MapBuffer, or if the invalidate range intersects the range
- * currently mapped by MapBufferRange."
+ * "An INVALID_OPERATION error is generated if buffer is currently
+ * mapped by MapBuffer or if the invalidate range intersects the range
+ * currently mapped by MapBufferRange, unless it was mapped
+ * with MAP_PERSISTENT_BIT set in the MapBufferRange access flags."
*/
- if (_mesa_bufferobj_mapped(bufObj)) {
+ if (_mesa_check_disallowed_mapping(bufObj)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glInvalidateBufferData(intersection with mapped "
"range)");
diff --git a/mesalib/src/mesa/main/bufferobj.h b/mesalib/src/mesa/main/bufferobj.h
index 71988b0d9..9814552eb 100644
--- a/mesalib/src/mesa/main/bufferobj.h
+++ b/mesalib/src/mesa/main/bufferobj.h
@@ -37,11 +37,21 @@
*/
-/** Is the given buffer object currently mapped? */
+/** Is the given buffer object currently mapped by the GL user? */
static inline GLboolean
-_mesa_bufferobj_mapped(const struct gl_buffer_object *obj)
+_mesa_bufferobj_mapped(const struct gl_buffer_object *obj,
+ gl_map_buffer_index index)
{
- return obj->Pointer != NULL;
+ return obj->Mappings[index].Pointer != NULL;
+}
+
+/** Can we not use this buffer while mapped? */
+static inline GLboolean
+_mesa_check_disallowed_mapping(const struct gl_buffer_object *obj)
+{
+ return _mesa_bufferobj_mapped(obj, MAP_USER) &&
+ !(obj->Mappings[MAP_USER].AccessFlags &
+ GL_MAP_PERSISTENT_BIT);
}
/**
@@ -101,6 +111,9 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx);
extern void
_mesa_init_buffer_object_functions(struct dd_function_table *driver);
+extern void
+_mesa_buffer_unmap_all_mappings(struct gl_context *ctx,
+ struct gl_buffer_object *bufObj);
/*
* API functions
@@ -118,6 +131,10 @@ GLboolean GLAPIENTRY
_mesa_IsBuffer(GLuint buffer);
void GLAPIENTRY
+_mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data,
+ GLbitfield flags);
+
+void GLAPIENTRY
_mesa_BufferData(GLenum target, GLsizeiptrARB size,
const GLvoid * data, GLenum usage);
diff --git a/mesalib/src/mesa/main/context.c b/mesalib/src/mesa/main/context.c
index 9372b3bea..a19180870 100644
--- a/mesalib/src/mesa/main/context.c
+++ b/mesalib/src/mesa/main/context.c
@@ -106,6 +106,7 @@
#include "matrix.h"
#include "multisample.h"
#include "performance_monitor.h"
+#include "pipelineobj.h"
#include "pixel.h"
#include "pixelstore.h"
#include "points.h"
@@ -363,7 +364,7 @@ dummy_enum_func(void)
*
* \sa Used by one_time_init().
*/
-_glthread_DECLARE_STATIC_MUTEX(OneTimeLock);
+mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
@@ -381,7 +382,7 @@ one_time_init( struct gl_context *ctx )
{
static GLbitfield api_init_mask = 0x0;
- _glthread_LOCK_MUTEX(OneTimeLock);
+ mtx_lock(&OneTimeLock);
/* truly one-time init */
if (!api_init_mask) {
@@ -422,7 +423,7 @@ one_time_init( struct gl_context *ctx )
api_init_mask |= 1 << ctx->API;
- _glthread_UNLOCK_MUTEX(OneTimeLock);
+ mtx_unlock(&OneTimeLock);
/* Hopefully atexit() is widely available. If not, we may need some
* #ifdef tests here.
@@ -603,9 +604,6 @@ _mesa_init_constants(struct gl_context *ctx)
ctx->Const.ViewportBounds.Min = 0;
ctx->Const.ViewportBounds.Max = 0;
- /* Driver must override if it supports ARB_viewport_array */
- ctx->Const.MaxViewports = 1;
-
/** GL_ARB_uniform_buffer_object */
ctx->Const.MaxCombinedUniformBlocks = 36;
ctx->Const.MaxUniformBufferBindings = 36;
@@ -814,6 +812,7 @@ init_attrib_groups(struct gl_context *ctx)
_mesa_init_matrix( ctx );
_mesa_init_multisample( ctx );
_mesa_init_performance_monitors( ctx );
+ _mesa_init_pipeline( ctx );
_mesa_init_pixel( ctx );
_mesa_init_pixelstore( ctx );
_mesa_init_point( ctx );
@@ -1219,6 +1218,7 @@ _mesa_free_context_data( struct gl_context *ctx )
_mesa_free_texture_data( ctx );
_mesa_free_matrix_data( ctx );
_mesa_free_viewport_data( ctx );
+ _mesa_free_pipeline_data(ctx);
_mesa_free_program_data(ctx);
_mesa_free_shader_state(ctx);
_mesa_free_queryobj_data(ctx);
@@ -1769,93 +1769,59 @@ _mesa_check_blend_func_error(struct gl_context *ctx)
return GL_TRUE;
}
-/**
- * Prior to drawing anything with glBegin, glDrawArrays, etc. this function
- * is called to see if it's valid to render. This involves checking that
- * the current shader is valid and the framebuffer is complete.
- * If an error is detected it'll be recorded here.
- * \return GL_TRUE if OK to render, GL_FALSE if not
- */
-GLboolean
-_mesa_valid_to_render(struct gl_context *ctx, const char *where)
+static bool
+shader_linked_or_absent(struct gl_context *ctx,
+ const struct gl_shader_program *shProg,
+ bool *shader_present, const char *where)
{
- bool vert_from_glsl_shader = false;
- bool geom_from_glsl_shader = false;
- bool frag_from_glsl_shader = false;
-
- /* This depends on having up to date derived state (shaders) */
- if (ctx->NewState)
- _mesa_update_state(ctx);
+ if (shProg) {
+ *shader_present = true;
- if (ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]) {
- vert_from_glsl_shader = true;
-
- if (!ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]->LinkStatus) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "%s(shader not linked)", where);
- return GL_FALSE;
+ if (!shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(shader not linked)", where);
+ return false;
}
#if 0 /* not normally enabled */
{
char errMsg[100];
- if (!_mesa_validate_shader_program(ctx,
- ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX],
- errMsg)) {
+ if (!_mesa_validate_shader_program(ctx, shProg, errMsg)) {
_mesa_warning(ctx, "Shader program %u is invalid: %s",
- ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]->Name, errMsg);
+ shProg->Name, errMsg);
}
}
#endif
}
- if (ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]) {
- geom_from_glsl_shader = true;
+ return true;
+}
- if (!ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]->LinkStatus) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "%s(shader not linked)", where);
- return GL_FALSE;
- }
-#if 0 /* not normally enabled */
- {
- char errMsg[100];
- if (!_mesa_validate_shader_program(ctx,
- ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY],
- errMsg)) {
- _mesa_warning(ctx, "Shader program %u is invalid: %s",
- ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]->Name,
- errMsg);
- }
- }
-#endif
- }
+/**
+ * Prior to drawing anything with glBegin, glDrawArrays, etc. this function
+ * is called to see if it's valid to render. This involves checking that
+ * the current shader is valid and the framebuffer is complete.
+ * If an error is detected it'll be recorded here.
+ * \return GL_TRUE if OK to render, GL_FALSE if not
+ */
+GLboolean
+_mesa_valid_to_render(struct gl_context *ctx, const char *where)
+{
+ bool from_glsl_shader[MESA_SHADER_COMPUTE] = { false };
+ unsigned i;
- if (ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]) {
- frag_from_glsl_shader = true;
+ /* This depends on having up to date derived state (shaders) */
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
- if (!ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]->LinkStatus) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "%s(shader not linked)", where);
+ for (i = 0; i < MESA_SHADER_COMPUTE; i++) {
+ if (!shader_linked_or_absent(ctx, ctx->Shader.CurrentProgram[i],
+ &from_glsl_shader[i], where))
return GL_FALSE;
- }
-#if 0 /* not normally enabled */
- {
- char errMsg[100];
- if (!_mesa_validate_shader_program(ctx,
- ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT],
- errMsg)) {
- _mesa_warning(ctx, "Shader program %u is invalid: %s",
- ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]->Name,
- errMsg);
- }
- }
-#endif
}
/* Any shader stages that are not supplied by the GLSL shader and have
* assembly shaders enabled must now be validated.
*/
- if (!vert_from_glsl_shader
+ if (!from_glsl_shader[MESA_SHADER_VERTEX]
&& ctx->VertexProgram.Enabled && !ctx->VertexProgram._Enabled) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"%s(vertex program not valid)", where);
@@ -1865,9 +1831,9 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where)
/* FINISHME: If GL_NV_geometry_program4 is ever supported, the current
* FINISHME: geometry program should validated here.
*/
- (void) geom_from_glsl_shader;
+ (void) from_glsl_shader[MESA_SHADER_GEOMETRY];
- if (!frag_from_glsl_shader) {
+ if (!from_glsl_shader[MESA_SHADER_FRAGMENT]) {
if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"%s(fragment program not valid)", where);
diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h
index ac317e399..971524135 100644
--- a/mesalib/src/mesa/main/dd.h
+++ b/mesalib/src/mesa/main/dd.h
@@ -399,6 +399,13 @@ struct dd_function_table {
void (*UnmapRenderbuffer)(struct gl_context *ctx,
struct gl_renderbuffer *rb);
+ /**
+ * Optional driver entrypoint that binds a non-texture renderbuffer's
+ * contents to a texture image.
+ */
+ GLboolean (*BindRenderbufferTexImage)(struct gl_context *ctx,
+ struct gl_renderbuffer *rb,
+ struct gl_texture_image *texImage);
/*@}*/
@@ -564,9 +571,6 @@ struct dd_function_table {
* \name Vertex/pixel buffer object functions
*/
/*@{*/
- void (*BindBuffer)( struct gl_context *ctx, GLenum target,
- struct gl_buffer_object *obj );
-
struct gl_buffer_object * (*NewBufferObject)(struct gl_context *ctx,
GLuint buffer, GLenum target);
@@ -574,7 +578,7 @@ struct dd_function_table {
GLboolean (*BufferData)(struct gl_context *ctx, GLenum target,
GLsizeiptrARB size, const GLvoid *data, GLenum usage,
- struct gl_buffer_object *obj);
+ GLenum storageFlags, struct gl_buffer_object *obj);
void (*BufferSubData)( struct gl_context *ctx, GLintptrARB offset,
GLsizeiptrARB size, const GLvoid *data,
@@ -601,14 +605,17 @@ struct dd_function_table {
*/
void * (*MapBufferRange)( struct gl_context *ctx, GLintptr offset,
GLsizeiptr length, GLbitfield access,
- struct gl_buffer_object *obj);
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index);
void (*FlushMappedBufferRange)(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
- struct gl_buffer_object *obj);
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index);
GLboolean (*UnmapBuffer)( struct gl_context *ctx,
- struct gl_buffer_object *obj );
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index);
/*@}*/
/**
diff --git a/mesalib/src/mesa/main/dlist.c b/mesalib/src/mesa/main/dlist.c
index 08943c9f9..d431fd221 100644
--- a/mesalib/src/mesa/main/dlist.c
+++ b/mesalib/src/mesa/main/dlist.c
@@ -914,7 +914,8 @@ unpack_image(struct gl_context *ctx, GLuint dimensions,
map = (GLubyte *)
ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size,
- GL_MAP_READ_BIT, unpack->BufferObj);
+ GL_MAP_READ_BIT, unpack->BufferObj,
+ MAP_INTERNAL);
if (!map) {
/* unable to map src buffer! */
_mesa_error(ctx, GL_INVALID_OPERATION, "unable to map PBO");
@@ -928,7 +929,7 @@ unpack_image(struct gl_context *ctx, GLuint dimensions,
image = _mesa_unpack_image(dimensions, width, height, depth,
format, type, src, unpack);
- ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL);
if (!image) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "display list construction");
@@ -8176,7 +8177,7 @@ _mesa_GenLists(GLsizei range)
/*
* Make this an atomic operation
*/
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
base = _mesa_HashFindFreeKeyBlock(ctx->Shared->DisplayList, range);
if (base) {
@@ -8188,7 +8189,7 @@ _mesa_GenLists(GLsizei range)
}
}
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
return base;
}
diff --git a/mesalib/src/mesa/main/drawpix.c b/mesalib/src/mesa/main/drawpix.c
index 096615c05..63e5870e6 100644
--- a/mesalib/src/mesa/main/drawpix.c
+++ b/mesalib/src/mesa/main/drawpix.c
@@ -151,7 +151,7 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
"glDrawPixels(invalid PBO access)");
goto end;
}
- if (_mesa_bufferobj_mapped(ctx->Unpack.BufferObj)) {
+ if (_mesa_check_disallowed_mapping(ctx->Unpack.BufferObj)) {
/* buffer is mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION,
"glDrawPixels(PBO is mapped)");
@@ -335,7 +335,7 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
"glBitmap(invalid PBO access)");
return;
}
- if (_mesa_bufferobj_mapped(ctx->Unpack.BufferObj)) {
+ if (_mesa_check_disallowed_mapping(ctx->Unpack.BufferObj)) {
/* buffer is mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBitmap(PBO is mapped)");
diff --git a/mesalib/src/mesa/main/enable.c b/mesalib/src/mesa/main/enable.c
index 40508a456..edd4751e1 100644
--- a/mesalib/src/mesa/main/enable.c
+++ b/mesalib/src/mesa/main/enable.c
@@ -32,6 +32,7 @@
#include "clip.h"
#include "context.h"
#include "enable.h"
+#include "errors.h"
#include "light.h"
#include "simple_list.h"
#include "mtypes.h"
@@ -367,14 +368,26 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
ctx->Depth.Test = state;
break;
case GL_DEBUG_OUTPUT:
- if (!_mesa_is_desktop_gl(ctx))
+ if (!_mesa_is_desktop_gl(ctx)) {
goto invalid_enum_error;
- ctx->Debug.DebugOutput = state;
+ }
+ else {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ debug->DebugOutput = state;
+ }
+ }
break;
case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB:
- if (!_mesa_is_desktop_gl(ctx))
+ if (!_mesa_is_desktop_gl(ctx)) {
goto invalid_enum_error;
- ctx->Debug.SyncOutput = state;
+ }
+ else {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ debug->SyncOutput = state;
+ }
+ }
break;
case GL_DITHER:
if (ctx->Color.DitherFlag == state)
@@ -1228,11 +1241,19 @@ _mesa_IsEnabled( GLenum cap )
case GL_DEBUG_OUTPUT:
if (!_mesa_is_desktop_gl(ctx))
goto invalid_enum_error;
- return ctx->Debug.DebugOutput;
+ if (ctx->Debug) {
+ return ctx->Debug->DebugOutput;
+ } else {
+ return GL_FALSE;
+ }
case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB:
if (!_mesa_is_desktop_gl(ctx))
goto invalid_enum_error;
- return ctx->Debug.SyncOutput;
+ if (ctx->Debug) {
+ return ctx->Debug->SyncOutput;
+ } else {
+ return GL_FALSE;
+ }
case GL_DEPTH_TEST:
return ctx->Depth.Test;
case GL_DITHER:
diff --git a/mesalib/src/mesa/main/errors.c b/mesalib/src/mesa/main/errors.c
index 28357e0e8..ca73a6686 100644
--- a/mesalib/src/mesa/main/errors.c
+++ b/mesalib/src/mesa/main/errors.c
@@ -37,12 +37,11 @@
#include "mtypes.h"
#include "version.h"
#include "hash_table.h"
-#include "glapi/glthread.h"
#define MESSAGE_LOG 1
#define MESSAGE_LOG_ARB 2
-_glthread_DECLARE_STATIC_MUTEX(DynamicIDMutex);
+static mtx_t DynamicIDMutex = _MTX_INITIALIZER_NP;
static GLuint NextDynamicID = 1;
struct gl_debug_severity
@@ -81,6 +80,7 @@ static const GLenum debug_severity_enums[] = {
GL_DEBUG_SEVERITY_NOTIFICATION,
};
+
static enum mesa_debug_source
gl_enum_to_debug_source(GLenum e)
{
@@ -117,6 +117,7 @@ gl_enum_to_debug_severity(GLenum e)
return i;
}
+
/**
* Handles generating a GL_ARB_debug_output message ID generated by the GL or
* GLSL compiler.
@@ -134,13 +135,14 @@ static void
debug_get_id(GLuint *id)
{
if (!(*id)) {
- _glthread_LOCK_MUTEX(DynamicIDMutex);
+ mtx_lock(&DynamicIDMutex);
if (!(*id))
*id = NextDynamicID++;
- _glthread_UNLOCK_MUTEX(DynamicIDMutex);
+ mtx_unlock(&DynamicIDMutex);
}
}
+
/*
* We store a bitfield in the hash table, with five possible values total.
*
@@ -182,6 +184,50 @@ enum {
ENABLED = ENABLED_BIT | FOUND_BIT
};
+
+/**
+ * Return debug state for the context. The debug state will be allocated
+ * and initialized upon the first call.
+ */
+struct gl_debug_state *
+_mesa_get_debug_state(struct gl_context *ctx)
+{
+ if (!ctx->Debug) {
+ ctx->Debug = CALLOC_STRUCT(gl_debug_state);
+ if (!ctx->Debug) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "allocating debug state");
+ }
+ else {
+ struct gl_debug_state *debug = ctx->Debug;
+ int s, t, sev;
+
+ /* Enable all the messages with severity HIGH or MEDIUM by default. */
+ memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_HIGH], GL_TRUE,
+ sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_HIGH]);
+ memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM], GL_TRUE,
+ sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM]);
+ memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_LOW], GL_FALSE,
+ sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_LOW]);
+
+ /* Initialize state for filtering known debug messages. */
+ for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) {
+ for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
+ debug->Namespaces[0][s][t].IDs = _mesa_NewHashTable();
+ assert(debug->Namespaces[0][s][t].IDs);
+
+ for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) {
+ make_empty_list(&debug->Namespaces[0][s][t].Severity[sev]);
+ }
+ }
+ }
+ }
+ }
+
+ return ctx->Debug;
+}
+
+
+
/**
* Returns the state of the given message source/type/ID tuple.
*/
@@ -192,52 +238,64 @@ should_log(struct gl_context *ctx,
GLuint id,
enum mesa_debug_severity severity)
{
- GLint gstack = ctx->Debug.GroupStackDepth;
- struct gl_debug_namespace *nspace =
- &ctx->Debug.Namespaces[gstack][source][type];
- uintptr_t state;
+ struct gl_debug_state *debug;
+ uintptr_t state = 0;
- if (!ctx->Debug.DebugOutput)
+ if (!ctx->Debug) {
+ /* no debug state set so far */
return GL_FALSE;
+ }
- /* In addition to not being able to store zero as a value, HashTable also
- can't use zero as a key. */
- if (id)
- state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
- else
- state = nspace->ZeroID;
-
- /* Only do this once for each ID. This makes sure the ID exists in,
- at most, one list, and does not pointlessly appear multiple times. */
- if (!(state & KNOWN_SEVERITY)) {
- struct gl_debug_severity *entry;
-
- if (state == NOT_FOUND) {
- if (ctx->Debug.Defaults[gstack][severity][source][type])
- state = ENABLED;
- else
- state = DISABLED;
- }
-
- entry = malloc(sizeof *entry);
- if (!entry)
- goto out;
+ debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ const GLint gstack = debug->GroupStackDepth;
+ struct gl_debug_namespace *nspace =
+ &debug->Namespaces[gstack][source][type];
- state |= KNOWN_SEVERITY;
+ if (!debug->DebugOutput)
+ return GL_FALSE;
+ /* In addition to not being able to store zero as a value, HashTable also
+ * can't use zero as a key.
+ */
if (id)
- _mesa_HashInsert(nspace->IDs, id, (void*)state);
+ state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
else
- nspace->ZeroID = state;
+ state = nspace->ZeroID;
- entry->ID = id;
- insert_at_tail(&nspace->Severity[severity], &entry->link);
- }
+ /* Only do this once for each ID. This makes sure the ID exists in,
+ * at most, one list, and does not pointlessly appear multiple times.
+ */
+ if (!(state & KNOWN_SEVERITY)) {
+ struct gl_debug_severity *entry;
+
+ if (state == NOT_FOUND) {
+ if (debug->Defaults[gstack][severity][source][type])
+ state = ENABLED;
+ else
+ state = DISABLED;
+ }
+
+ entry = malloc(sizeof *entry);
+ if (!entry)
+ goto out;
+
+ state |= KNOWN_SEVERITY;
+ if (id)
+ _mesa_HashInsert(nspace->IDs, id, (void*)state);
+ else
+ nspace->ZeroID = state;
+
+ entry->ID = id;
+ insert_at_tail(&nspace->Severity[severity], &entry->link);
+ }
+ }
out:
return !!(state & ENABLED_BIT);
}
+
/**
* Sets the state of the given message source/type/ID tuple.
*/
@@ -247,33 +305,39 @@ set_message_state(struct gl_context *ctx,
enum mesa_debug_type type,
GLuint id, GLboolean enabled)
{
- GLint gstack = ctx->Debug.GroupStackDepth;
- struct gl_debug_namespace *nspace =
- &ctx->Debug.Namespaces[gstack][source][type];
- uintptr_t state;
-
- /* In addition to not being able to store zero as a value, HashTable also
- can't use zero as a key. */
- if (id)
- state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
- else
- state = nspace->ZeroID;
-
- if (state == NOT_FOUND)
- state = enabled ? ENABLED : DISABLED;
- else {
- if (enabled)
- state |= ENABLED_BIT;
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+
+ if (debug) {
+ GLint gstack = debug->GroupStackDepth;
+ struct gl_debug_namespace *nspace =
+ &debug->Namespaces[gstack][source][type];
+ uintptr_t state;
+
+ /* In addition to not being able to store zero as a value, HashTable also
+ * can't use zero as a key.
+ */
+ if (id)
+ state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id);
else
- state &= ~ENABLED_BIT;
- }
+ state = nspace->ZeroID;
- if (id)
- _mesa_HashInsert(nspace->IDs, id, (void*)state);
- else
- nspace->ZeroID = state;
+ if (state == NOT_FOUND)
+ state = enabled ? ENABLED : DISABLED;
+ else {
+ if (enabled)
+ state |= ENABLED_BIT;
+ else
+ state &= ~ENABLED_BIT;
+ }
+
+ if (id)
+ _mesa_HashInsert(nspace->IDs, id, (void*)state);
+ else
+ nspace->ZeroID = state;
+ }
}
+
static void
store_message_details(struct gl_debug_msg *emptySlot,
enum mesa_debug_source source,
@@ -307,7 +371,8 @@ store_message_details(struct gl_debug_msg *emptySlot,
}
}
- /**
+
+/**
* Remap any type exclusive to KHR_debug to something suitable
* for ARB_debug_output
*/
@@ -326,6 +391,7 @@ remap_type(GLenum type) {
return type;
}
+
/**
* Remap severity exclusive to KHR_debug to something suitable
* for ARB_debug_output
@@ -339,6 +405,7 @@ remap_severity(GLenum severity) {
return severity;
}
+
/**
* 'buf' is not necessarily a null-terminated string. When logging, copy
* 'len' characters from it, store them in a new, null-terminated string,
@@ -346,49 +413,51 @@ remap_severity(GLenum severity) {
* the null terminator this time.
*/
static void
-_mesa_log_msg(struct gl_context *ctx, enum mesa_debug_source source,
- enum mesa_debug_type type, GLuint id,
- enum mesa_debug_severity severity, GLint len, const char *buf)
+log_msg(struct gl_context *ctx, enum mesa_debug_source source,
+ enum mesa_debug_type type, GLuint id,
+ enum mesa_debug_severity severity, GLint len, const char *buf)
{
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
GLint nextEmpty;
struct gl_debug_msg *emptySlot;
+ if (!debug)
+ return;
+
assert(len >= 0 && len < MAX_DEBUG_MESSAGE_LENGTH);
if (!should_log(ctx, source, type, id, severity))
return;
- if (ctx->Debug.Callback) {
+ if (debug->Callback) {
GLenum gl_type = debug_type_enums[type];
GLenum gl_severity = debug_severity_enums[severity];
- if (ctx->Debug.ARBCallback) {
+ if (debug->ARBCallback) {
gl_severity = remap_severity(gl_severity);
gl_type = remap_type(gl_type);
}
- ctx->Debug.Callback(debug_source_enums[source],
- gl_type,
- id,
- gl_severity,
- len, buf, ctx->Debug.CallbackData);
+ debug->Callback(debug_source_enums[source], gl_type, id, gl_severity,
+ len, buf, debug->CallbackData);
return;
}
- if (ctx->Debug.NumMessages == MAX_DEBUG_LOGGED_MESSAGES)
+ if (debug->NumMessages == MAX_DEBUG_LOGGED_MESSAGES)
return;
- nextEmpty = (ctx->Debug.NextMsg + ctx->Debug.NumMessages)
+ nextEmpty = (debug->NextMsg + debug->NumMessages)
% MAX_DEBUG_LOGGED_MESSAGES;
- emptySlot = &ctx->Debug.Log[nextEmpty];
+ emptySlot = &debug->Log[nextEmpty];
store_message_details(emptySlot, source, type, id, severity, len, buf);
- if (ctx->Debug.NumMessages == 0)
- ctx->Debug.NextMsgLength = ctx->Debug.Log[ctx->Debug.NextMsg].length;
+ if (debug->NumMessages == 0)
+ debug->NextMsgLength = debug->Log[debug->NextMsg].length;
- ctx->Debug.NumMessages++;
+ debug->NumMessages++;
}
+
/**
* Pop the oldest debug message out of the log.
* Writes the message string, including the null terminator, into 'buf',
@@ -400,20 +469,21 @@ _mesa_log_msg(struct gl_context *ctx, enum mesa_debug_source source,
* indicates failure.
*/
static GLsizei
-_mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
- GLuint *id, GLenum *severity, GLsizei bufSize, char *buf,
- unsigned caller)
+get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
+ GLuint *id, GLenum *severity, GLsizei bufSize, char *buf,
+ unsigned caller)
{
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
struct gl_debug_msg *msg;
GLsizei length;
- if (ctx->Debug.NumMessages == 0)
+ if (!debug || debug->NumMessages == 0)
return 0;
- msg = &ctx->Debug.Log[ctx->Debug.NextMsg];
+ msg = &debug->Log[debug->NextMsg];
length = msg->length;
- assert(length > 0 && length == ctx->Debug.NextMsgLength);
+ assert(length > 0 && length == debug->NextMsgLength);
if (bufSize < length && buf != NULL)
return 0;
@@ -423,15 +493,20 @@ _mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
if (caller == MESSAGE_LOG_ARB)
*severity = remap_severity(*severity);
}
- if (source)
+
+ if (source) {
*source = debug_source_enums[msg->source];
+ }
+
if (type) {
*type = debug_type_enums[msg->type];
if (caller == MESSAGE_LOG_ARB)
*type = remap_type(*type);
}
- if (id)
+
+ if (id) {
*id = msg->id;
+ }
if (buf) {
assert(msg->message[length-1] == '\0');
@@ -443,14 +518,15 @@ _mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type,
msg->message = NULL;
msg->length = 0;
- ctx->Debug.NumMessages--;
- ctx->Debug.NextMsg++;
- ctx->Debug.NextMsg %= MAX_DEBUG_LOGGED_MESSAGES;
- ctx->Debug.NextMsgLength = ctx->Debug.Log[ctx->Debug.NextMsg].length;
+ debug->NumMessages--;
+ debug->NextMsg++;
+ debug->NextMsg %= MAX_DEBUG_LOGGED_MESSAGES;
+ debug->NextMsgLength = debug->Log[debug->NextMsg].length;
return length;
}
+
/**
* Verify that source, type, and severity are valid enums.
* glDebugMessageInsertARB only accepts two values for 'source',
@@ -523,14 +599,14 @@ validate_params(struct gl_context *ctx, unsigned caller,
return GL_TRUE;
error:
- {
- _mesa_error(ctx, GL_INVALID_ENUM, "bad values passed to %s"
- "(source=0x%x, type=0x%x, severity=0x%x)", callerstr,
- source, type, severity);
- }
+ _mesa_error(ctx, GL_INVALID_ENUM, "bad values passed to %s"
+ "(source=0x%x, type=0x%x, severity=0x%x)", callerstr,
+ source, type, severity);
+
return GL_FALSE;
}
+
/**
* Set the state of all message IDs found in the given intersection of
* 'source', 'type', and 'severity'. The _COUNT enum can be used for
@@ -549,8 +625,12 @@ control_messages(struct gl_context *ctx,
enum mesa_debug_severity severity,
GLboolean enabled)
{
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
int s, t, sev, smax, tmax, sevmax;
- GLint gstack = ctx->Debug.GroupStackDepth;
+ const GLint gstack = debug ? debug->GroupStackDepth : 0;
+
+ if (!debug)
+ return;
if (source == MESA_DEBUG_SOURCE_COUNT) {
source = 0;
@@ -573,23 +653,26 @@ control_messages(struct gl_context *ctx,
sevmax = severity+1;
}
- for (sev = severity; sev < sevmax; sev++)
- for (s = source; s < smax; s++)
+ for (sev = severity; sev < sevmax; sev++) {
+ for (s = source; s < smax; s++) {
for (t = type; t < tmax; t++) {
struct simple_node *node;
struct gl_debug_severity *entry;
/* change the default for IDs we've never seen before. */
- ctx->Debug.Defaults[gstack][sev][s][t] = enabled;
+ debug->Defaults[gstack][sev][s][t] = enabled;
/* Now change the state of IDs we *have* seen... */
- foreach(node, &ctx->Debug.Namespaces[gstack][s][t].Severity[sev]) {
+ foreach(node, &debug->Namespaces[gstack][s][t].Severity[sev]) {
entry = (struct gl_debug_severity *)node;
set_message_state(ctx, s, t, entry->ID, enabled);
}
}
+ }
+ }
}
+
/**
* Debugging-message namespaces with the source APPLICATION or THIRD_PARTY
* require special handling, since the IDs in them are controlled by clients,
@@ -621,6 +704,7 @@ control_app_messages(struct gl_context *ctx, GLenum esource, GLenum etype,
control_messages(ctx, source, type, severity, enabled);
}
+
/**
* This is a generic message control function for use by both
* glDebugMessageControlARB and glDebugMessageControl.
@@ -658,6 +742,7 @@ message_control(GLenum gl_source, GLenum gl_type,
count, ids, enabled);
}
+
/**
* This is a generic message insert function.
* Validation of source, type and severity parameters should be done
@@ -665,7 +750,7 @@ message_control(GLenum gl_source, GLenum gl_type,
*/
static void
message_insert(GLenum source, GLenum type, GLuint id,
- GLenum severity, GLint length, const GLchar* buf,
+ GLenum severity, GLint length, const GLchar *buf,
const char *callerstr)
{
GET_CURRENT_CONTEXT(ctx);
@@ -681,20 +766,21 @@ message_insert(GLenum source, GLenum type, GLuint id,
return;
}
- _mesa_log_msg(ctx,
- gl_enum_to_debug_source(source),
- gl_enum_to_debug_type(type), id,
- gl_enum_to_debug_severity(severity), length, buf);
+ log_msg(ctx,
+ gl_enum_to_debug_source(source),
+ gl_enum_to_debug_type(type), id,
+ gl_enum_to_debug_severity(severity), length, buf);
}
+
/**
* This is a generic message insert function for use by both
* glGetDebugMessageLogARB and glGetDebugMessageLog.
*/
static GLuint
-get_message_log(GLuint count, GLsizei logSize, GLenum* sources,
- GLenum* types, GLenum* ids, GLenum* severities,
- GLsizei* lengths, GLchar* messageLog,
+get_message_log(GLuint count, GLsizei logSize, GLenum *sources,
+ GLenum *types, GLenum *ids, GLenum *severities,
+ GLsizei *lengths, GLchar *messageLog,
unsigned caller, const char *callerstr)
{
GET_CURRENT_CONTEXT(ctx);
@@ -711,8 +797,8 @@ get_message_log(GLuint count, GLsizei logSize, GLenum* sources,
}
for (ret = 0; ret < count; ret++) {
- GLsizei written = _mesa_get_msg(ctx, sources, types, ids, severities,
- logSize, messageLog, caller);
+ GLsizei written = get_msg(ctx, sources, types, ids, severities,
+ logSize, messageLog, caller);
if (!written)
break;
@@ -738,41 +824,52 @@ get_message_log(GLuint count, GLsizei logSize, GLenum* sources,
return ret;
}
+
static void
do_nothing(GLuint key, void *data, void *userData)
{
}
+
+/**
+ * Free context state pertaining to error/debug state for the given stack
+ * depth.
+ */
static void
free_errors_data(struct gl_context *ctx, GLint gstack)
{
+ struct gl_debug_state *debug = ctx->Debug;
enum mesa_debug_type t;
enum mesa_debug_source s;
enum mesa_debug_severity sev;
+ assert(debug);
+
/* Tear down state for filtering debug messages. */
- for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++)
+ for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) {
for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
- _mesa_HashDeleteAll(ctx->Debug.Namespaces[gstack][s][t].IDs,
+ _mesa_HashDeleteAll(debug->Namespaces[gstack][s][t].IDs,
do_nothing, NULL);
- _mesa_DeleteHashTable(ctx->Debug.Namespaces[gstack][s][t].IDs);
+ _mesa_DeleteHashTable(debug->Namespaces[gstack][s][t].IDs);
for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) {
struct simple_node *node, *tmp;
struct gl_debug_severity *entry;
foreach_s(node, tmp,
- &ctx->Debug.Namespaces[gstack][s][t].Severity[sev]) {
+ &debug->Namespaces[gstack][s][t].Severity[sev]) {
entry = (struct gl_debug_severity *)node;
free(entry);
}
}
}
+ }
}
+
void GLAPIENTRY
_mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id,
GLenum severity, GLint length,
- const GLchar* buf)
+ const GLchar *buf)
{
const char *callerstr = "glDebugMessageInsert";
@@ -781,14 +878,14 @@ _mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id,
if (!validate_params(ctx, INSERT, callerstr, source, type, severity))
return; /* GL_INVALID_ENUM */
- message_insert(source, type, id, severity, length, buf,
- callerstr);
+ message_insert(source, type, id, severity, length, buf, callerstr);
}
+
GLuint GLAPIENTRY
-_mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum* sources,
- GLenum* types, GLenum* ids, GLenum* severities,
- GLsizei* lengths, GLchar* messageLog)
+_mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum *sources,
+ GLenum *types, GLenum *ids, GLenum *severities,
+ GLsizei *lengths, GLchar *messageLog)
{
const char *callerstr = "glGetDebugMessageLog";
@@ -796,6 +893,7 @@ _mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum* sources,
lengths, messageLog, MESSAGE_LOG, callerstr);
}
+
void GLAPIENTRY
_mesa_DebugMessageControl(GLenum source, GLenum type, GLenum severity,
GLsizei count, const GLuint *ids,
@@ -807,28 +905,36 @@ _mesa_DebugMessageControl(GLenum source, GLenum type, GLenum severity,
enabled, CONTROL, callerstr);
}
+
void GLAPIENTRY
_mesa_DebugMessageCallback(GLDEBUGPROC callback, const void *userParam)
{
GET_CURRENT_CONTEXT(ctx);
- ctx->Debug.Callback = callback;
- ctx->Debug.CallbackData = userParam;
- ctx->Debug.ARBCallback = GL_FALSE;
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ debug->Callback = callback;
+ debug->CallbackData = userParam;
+ debug->ARBCallback = GL_FALSE;
+ }
}
+
void GLAPIENTRY
_mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length,
const GLchar *message)
{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
const char *callerstr = "glPushDebugGroup";
int s, t, sev;
GLint prevStackDepth;
GLint currStackDepth;
struct gl_debug_msg *emptySlot;
- GET_CURRENT_CONTEXT(ctx);
+ if (!debug)
+ return;
- if (ctx->Debug.GroupStackDepth >= MAX_DEBUG_GROUP_STACK_DEPTH-1) {
+ if (debug->GroupStackDepth >= MAX_DEBUG_GROUP_STACK_DEPTH-1) {
_mesa_error(ctx, GL_STACK_OVERFLOW, "%s", callerstr);
return;
}
@@ -847,14 +953,14 @@ _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length,
GL_DEBUG_SEVERITY_NOTIFICATION, length,
message, callerstr);
- prevStackDepth = ctx->Debug.GroupStackDepth;
- ctx->Debug.GroupStackDepth++;
- currStackDepth = ctx->Debug.GroupStackDepth;
+ prevStackDepth = debug->GroupStackDepth;
+ debug->GroupStackDepth++;
+ currStackDepth = debug->GroupStackDepth;
/* pop reuses the message details from push so we store this */
if (length < 0)
length = strlen(message);
- emptySlot = &ctx->Debug.DebugGroupMsgs[ctx->Debug.GroupStackDepth];
+ emptySlot = &debug->DebugGroupMsgs[debug->GroupStackDepth];
store_message_details(emptySlot, gl_enum_to_debug_source(source),
gl_enum_to_debug_type(GL_DEBUG_TYPE_PUSH_GROUP),
id,
@@ -864,60 +970,66 @@ _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length,
/* inherit the control volume of the debug group previously residing on
* the top of the debug group stack
*/
- for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++)
+ for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) {
for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
/* copy id settings */
- ctx->Debug.Namespaces[currStackDepth][s][t].IDs =
- _mesa_HashClone(ctx->Debug.Namespaces[prevStackDepth][s][t].IDs);
+ debug->Namespaces[currStackDepth][s][t].IDs =
+ _mesa_HashClone(debug->Namespaces[prevStackDepth][s][t].IDs);
for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) {
struct gl_debug_severity *entry, *prevEntry;
struct simple_node *node;
/* copy default settings for unknown ids */
- ctx->Debug.Defaults[currStackDepth][sev][s][t] = ctx->Debug.Defaults[prevStackDepth][sev][s][t];
+ debug->Defaults[currStackDepth][sev][s][t] =
+ debug->Defaults[prevStackDepth][sev][s][t];
/* copy known id severity settings */
- make_empty_list(&ctx->Debug.Namespaces[currStackDepth][s][t].Severity[sev]);
- foreach(node, &ctx->Debug.Namespaces[prevStackDepth][s][t].Severity[sev]) {
+ make_empty_list(&debug->Namespaces[currStackDepth][s][t].Severity[sev]);
+ foreach(node, &debug->Namespaces[prevStackDepth][s][t].Severity[sev]) {
prevEntry = (struct gl_debug_severity *)node;
entry = malloc(sizeof *entry);
if (!entry)
return;
entry->ID = prevEntry->ID;
- insert_at_tail(&ctx->Debug.Namespaces[currStackDepth][s][t].Severity[sev], &entry->link);
+ insert_at_tail(&debug->Namespaces[currStackDepth][s][t].Severity[sev], &entry->link);
}
}
}
+ }
}
+
void GLAPIENTRY
-_mesa_PopDebugGroup()
+_mesa_PopDebugGroup(void)
{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
const char *callerstr = "glPopDebugGroup";
struct gl_debug_msg *gdmessage;
GLint prevStackDepth;
- GET_CURRENT_CONTEXT(ctx);
+ if (!debug)
+ return;
- if (ctx->Debug.GroupStackDepth <= 0) {
+ if (debug->GroupStackDepth <= 0) {
_mesa_error(ctx, GL_STACK_UNDERFLOW, "%s", callerstr);
return;
}
- prevStackDepth = ctx->Debug.GroupStackDepth;
- ctx->Debug.GroupStackDepth--;
+ prevStackDepth = debug->GroupStackDepth;
+ debug->GroupStackDepth--;
- gdmessage = &ctx->Debug.DebugGroupMsgs[prevStackDepth];
- /* using _mesa_log_msg() directly here as verification of parameters
+ gdmessage = &debug->DebugGroupMsgs[prevStackDepth];
+ /* using log_msg() directly here as verification of parameters
* already done in push
*/
- _mesa_log_msg(ctx, gdmessage->source,
- gl_enum_to_debug_type(GL_DEBUG_TYPE_POP_GROUP),
- gdmessage->id,
- gl_enum_to_debug_severity(GL_DEBUG_SEVERITY_NOTIFICATION),
- gdmessage->length, gdmessage->message);
+ log_msg(ctx, gdmessage->source,
+ gl_enum_to_debug_type(GL_DEBUG_TYPE_POP_GROUP),
+ gdmessage->id,
+ gl_enum_to_debug_severity(GL_DEBUG_SEVERITY_NOTIFICATION),
+ gdmessage->length, gdmessage->message);
if (gdmessage->message != (char*)out_of_memory)
free(gdmessage->message);
@@ -928,10 +1040,11 @@ _mesa_PopDebugGroup()
free_errors_data(ctx, prevStackDepth);
}
+
void GLAPIENTRY
_mesa_DebugMessageInsertARB(GLenum source, GLenum type, GLuint id,
GLenum severity, GLint length,
- const GLcharARB* buf)
+ const GLcharARB *buf)
{
const char *callerstr = "glDebugMessageInsertARB";
@@ -940,14 +1053,14 @@ _mesa_DebugMessageInsertARB(GLenum source, GLenum type, GLuint id,
if (!validate_params(ctx, INSERT_ARB, callerstr, source, type, severity))
return; /* GL_INVALID_ENUM */
- message_insert(source, type, id, severity, length, buf,
- callerstr);
+ message_insert(source, type, id, severity, length, buf, callerstr);
}
+
GLuint GLAPIENTRY
-_mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum* sources,
- GLenum* types, GLenum* ids, GLenum* severities,
- GLsizei* lengths, GLcharARB* messageLog)
+_mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum *sources,
+ GLenum *types, GLenum *ids, GLenum *severities,
+ GLsizei *lengths, GLcharARB *messageLog)
{
const char *callerstr = "glGetDebugMessageLogARB";
@@ -955,6 +1068,7 @@ _mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum* sources,
lengths, messageLog, MESSAGE_LOG_ARB, callerstr);
}
+
void GLAPIENTRY
_mesa_DebugMessageControlARB(GLenum gl_source, GLenum gl_type,
GLenum gl_severity,
@@ -967,47 +1081,27 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum gl_type,
enabled, CONTROL_ARB, callerstr);
}
+
void GLAPIENTRY
_mesa_DebugMessageCallbackARB(GLDEBUGPROCARB callback, const void *userParam)
{
GET_CURRENT_CONTEXT(ctx);
- ctx->Debug.Callback = callback;
- ctx->Debug.CallbackData = userParam;
- ctx->Debug.ARBCallback = GL_TRUE;
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ if (debug) {
+ debug->Callback = callback;
+ debug->CallbackData = userParam;
+ debug->ARBCallback = GL_TRUE;
+ }
}
+
void
_mesa_init_errors(struct gl_context *ctx)
{
- int s, t, sev;
-
- ctx->Debug.Callback = NULL;
- ctx->Debug.SyncOutput = GL_FALSE;
- ctx->Debug.Log[0].length = 0;
- ctx->Debug.NumMessages = 0;
- ctx->Debug.NextMsg = 0;
- ctx->Debug.NextMsgLength = 0;
- ctx->Debug.GroupStackDepth = 0;
-
- /* Enable all the messages with severity HIGH or MEDIUM by default. */
- memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_HIGH], GL_TRUE,
- sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_HIGH]);
- memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM], GL_TRUE,
- sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM]);
- memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_LOW], GL_FALSE,
- sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_LOW]);
-
- /* Initialize state for filtering known debug messages. */
- for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++)
- for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) {
- ctx->Debug.Namespaces[0][s][t].IDs = _mesa_NewHashTable();
- assert(ctx->Debug.Namespaces[0][s][t].IDs);
-
- for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++)
- make_empty_list(&ctx->Debug.Namespaces[0][s][t].Severity[sev]);
- }
+ /* no-op */
}
+
/**
* Loop through debug group stack tearing down states for
* filtering debug messages.
@@ -1015,13 +1109,16 @@ _mesa_init_errors(struct gl_context *ctx)
void
_mesa_free_errors_data(struct gl_context *ctx)
{
- GLint i;
+ if (ctx->Debug) {
+ GLint i;
- for (i = 0; i <= ctx->Debug.GroupStackDepth; i++) {
- free_errors_data(ctx, i);
+ for (i = 0; i <= ctx->Debug->GroupStackDepth; i++) {
+ free_errors_data(ctx, i);
+ }
}
}
+
/**********************************************************************/
/** \name Diagnostics */
/*@{*/
@@ -1077,6 +1174,7 @@ output_if_debug(const char *prefixString, const char *outputString,
}
}
+
/**
* When a new type of error is recorded, print a message describing
* previous errors which were accumulated.
@@ -1149,6 +1247,7 @@ _mesa_problem( const struct gl_context *ctx, const char *fmtString, ... )
}
}
+
static GLboolean
should_output(struct gl_context *ctx, GLenum error, const char *fmtString)
{
@@ -1185,6 +1284,7 @@ should_output(struct gl_context *ctx, GLenum error, const char *fmtString)
return GL_FALSE;
}
+
void
_mesa_gl_debug(struct gl_context *ctx,
GLuint *id,
@@ -1202,8 +1302,7 @@ _mesa_gl_debug(struct gl_context *ctx,
len = _mesa_vsnprintf(s, MAX_DEBUG_MESSAGE_LENGTH, fmtString, args);
va_end(args);
- _mesa_log_msg(ctx, MESA_DEBUG_SOURCE_API, type,
- *id, severity, len, s);
+ log_msg(ctx, MESA_DEBUG_SOURCE_API, type, *id, severity, len, s);
}
@@ -1248,7 +1347,8 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... )
if (len >= MAX_DEBUG_MESSAGE_LENGTH) {
/* Too long error message. Whoever calls _mesa_error should use
- * shorter strings. */
+ * shorter strings.
+ */
ASSERT(0);
return;
}
@@ -1268,11 +1368,8 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... )
/* Log the error via ARB_debug_output if needed.*/
if (do_log) {
- _mesa_log_msg(ctx,
- MESA_DEBUG_SOURCE_API,
- MESA_DEBUG_TYPE_ERROR,
- error_msg_id,
- MESA_DEBUG_SEVERITY_HIGH, len, s2);
+ log_msg(ctx, MESA_DEBUG_SOURCE_API, MESA_DEBUG_TYPE_ERROR,
+ error_msg_id, MESA_DEBUG_SEVERITY_HIGH, len, s2);
}
}
@@ -1329,7 +1426,7 @@ _mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint *id,
if (len >= MAX_DEBUG_MESSAGE_LENGTH)
len = MAX_DEBUG_MESSAGE_LENGTH - 1;
- _mesa_log_msg(ctx, source, type, *id, severity, len, msg);
+ log_msg(ctx, source, type, *id, severity, len, msg);
}
/*@}*/
diff --git a/mesalib/src/mesa/main/errors.h b/mesalib/src/mesa/main/errors.h
index a837dc8e1..cd414e6b6 100644
--- a/mesalib/src/mesa/main/errors.h
+++ b/mesalib/src/mesa/main/errors.h
@@ -83,6 +83,9 @@ _mesa_gl_debug(struct gl_context *ctx,
} \
} while (0)
+struct gl_debug_state *
+_mesa_get_debug_state(struct gl_context *ctx);
+
extern void
_mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id,
const char *msg, int len);
diff --git a/mesalib/src/mesa/main/execmem.c b/mesalib/src/mesa/main/execmem.c
index d63bb4a4e..7267cf85f 100644
--- a/mesalib/src/mesa/main/execmem.c
+++ b/mesalib/src/mesa/main/execmem.c
@@ -32,7 +32,6 @@
#include "imports.h"
-#include "glapi/glthread.h"
@@ -59,7 +58,7 @@
#define EXEC_HEAP_SIZE (10*1024*1024)
-_glthread_DECLARE_STATIC_MUTEX(exec_mutex);
+static mtx_t exec_mutex = _MTX_INITIALIZER_NP;
static struct mem_block *exec_heap = NULL;
static unsigned char *exec_mem = NULL;
@@ -93,7 +92,7 @@ _mesa_exec_malloc(GLuint size)
struct mem_block *block = NULL;
void *addr = NULL;
- _glthread_LOCK_MUTEX(exec_mutex);
+ mtx_lock(&exec_mutex);
if (!init_heap())
goto bail;
@@ -109,7 +108,7 @@ _mesa_exec_malloc(GLuint size)
printf("_mesa_exec_malloc failed\n");
bail:
- _glthread_UNLOCK_MUTEX(exec_mutex);
+ mtx_unlock(&exec_mutex);
return addr;
}
@@ -118,7 +117,7 @@ bail:
void
_mesa_exec_free(void *addr)
{
- _glthread_LOCK_MUTEX(exec_mutex);
+ mtx_lock(&exec_mutex);
if (exec_heap) {
struct mem_block *block = mmFindBlock(exec_heap, (unsigned char *)addr - exec_mem);
@@ -127,7 +126,7 @@ _mesa_exec_free(void *addr)
mmFreeMem(block);
}
- _glthread_UNLOCK_MUTEX(exec_mutex);
+ mtx_unlock(&exec_mutex);
}
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index 5f741fbd2..c46d70b20 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -83,6 +83,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_arrays_of_arrays", o(ARB_arrays_of_arrays), GL, 2012 },
{ "GL_ARB_base_instance", o(ARB_base_instance), GL, 2011 },
{ "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 },
+ { "GL_ARB_buffer_storage", o(ARB_buffer_storage), GL, 2013 },
{ "GL_ARB_clear_buffer_object", o(dummy_true), GL, 2012 },
{ "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 },
{ "GL_ARB_compute_shader", o(ARB_compute_shader), GL, 2012 },
@@ -106,7 +107,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
{ "GL_ARB_get_program_binary", o(dummy_true), GL, 2010 },
{ "GL_ARB_gpu_shader5", o(ARB_gpu_shader5), GL, 2010 },
- { "GL_ARB_half_float_pixel", o(ARB_half_float_pixel), GL, 2003 },
+ { "GL_ARB_half_float_pixel", o(dummy_true), GL, 2003 },
{ "GL_ARB_half_float_vertex", o(ARB_half_float_vertex), GL, 2008 },
{ "GL_ARB_instanced_arrays", o(ARB_instanced_arrays), GL, 2008 },
{ "GL_ARB_internalformat_query", o(ARB_internalformat_query), GL, 2011 },
@@ -126,6 +127,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_sample_shading", o(ARB_sample_shading), GL, 2009 },
{ "GL_ARB_sampler_objects", o(dummy_true), GL, 2009 },
{ "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 },
+ { "GL_ARB_separate_shader_objects", o(ARB_separate_shader_objects), GL, 2010 },
{ "GL_ARB_shader_atomic_counters", o(ARB_shader_atomic_counters), GL, 2011 },
{ "GL_ARB_shader_bit_encoding", o(ARB_shader_bit_encoding), GL, 2010 },
{ "GL_ARB_shader_image_load_store", o(ARB_shader_image_load_store), GL, 2011 },
@@ -401,7 +403,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
ctx->Extensions.ARB_fragment_program_shadow = GL_TRUE;
ctx->Extensions.ARB_fragment_shader = GL_TRUE;
ctx->Extensions.ARB_framebuffer_object = GL_TRUE;
- ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
ctx->Extensions.ARB_occlusion_query = GL_TRUE;
diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c
index e459e0c63..a9dcc5144 100644
--- a/mesalib/src/mesa/main/fbobject.c
+++ b/mesalib/src/mesa/main/fbobject.c
@@ -89,9 +89,9 @@ delete_dummy_framebuffer(struct gl_framebuffer *fb)
void
_mesa_init_fbobjects(struct gl_context *ctx)
{
- _glthread_INIT_MUTEX(DummyFramebuffer.Mutex);
- _glthread_INIT_MUTEX(DummyRenderbuffer.Mutex);
- _glthread_INIT_MUTEX(IncompleteFramebuffer.Mutex);
+ mtx_init(&DummyFramebuffer.Mutex, mtx_plain);
+ mtx_init(&DummyRenderbuffer.Mutex, mtx_plain);
+ mtx_init(&IncompleteFramebuffer.Mutex, mtx_plain);
DummyFramebuffer.Delete = delete_dummy_framebuffer;
DummyRenderbuffer.Delete = delete_dummy_renderbuffer;
IncompleteFramebuffer.Delete = delete_dummy_framebuffer;
@@ -484,7 +484,7 @@ _mesa_framebuffer_renderbuffer(struct gl_context *ctx,
{
struct gl_renderbuffer_attachment *att;
- _glthread_LOCK_MUTEX(fb->Mutex);
+ mtx_lock(&fb->Mutex);
att = get_attachment(ctx, fb, attachment);
ASSERT(att);
@@ -504,7 +504,7 @@ _mesa_framebuffer_renderbuffer(struct gl_context *ctx,
invalidate_framebuffer(fb);
- _glthread_UNLOCK_MUTEX(fb->Mutex);
+ mtx_unlock(&fb->Mutex);
}
@@ -1352,9 +1352,9 @@ _mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers)
GLuint name = first + i;
renderbuffers[i] = name;
/* insert dummy placeholder into hash table */
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
_mesa_HashInsert(ctx->Shared->RenderBuffers, name, &DummyRenderbuffer);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
}
@@ -2218,9 +2218,9 @@ _mesa_GenFramebuffers(GLsizei n, GLuint *framebuffers)
GLuint name = first + i;
framebuffers[i] = name;
/* insert dummy placeholder into hash table */
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
_mesa_HashInsert(ctx->Shared->FrameBuffers, name, &DummyFramebuffer);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
}
@@ -2433,7 +2433,7 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target,
FLUSH_VERTICES(ctx, _NEW_BUFFERS);
- _glthread_LOCK_MUTEX(fb->Mutex);
+ mtx_lock(&fb->Mutex);
if (texObj) {
if (attachment == GL_DEPTH_ATTACHMENT &&
texObj == fb->Attachment[BUFFER_STENCIL].Texture &&
@@ -2491,7 +2491,7 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target,
invalidate_framebuffer(fb);
- _glthread_UNLOCK_MUTEX(fb->Mutex);
+ mtx_unlock(&fb->Mutex);
}
diff --git a/mesalib/src/mesa/main/format_pack.c b/mesalib/src/mesa/main/format_pack.c
index dee253c40..2772ff2d3 100644
--- a/mesalib/src/mesa/main/format_pack.c
+++ b/mesalib/src/mesa/main/format_pack.c
@@ -1936,9 +1936,9 @@ _mesa_get_pack_ubyte_rgba_function(mesa_format format)
/* should never convert RGBA to these formats */
table[MESA_FORMAT_S8_UINT_Z24_UNORM] = NULL;
- table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL;
- table[MESA_FORMAT_Z_UNORM16] = NULL;
table[MESA_FORMAT_Z24_UNORM_S8_UINT] = NULL;
+ table[MESA_FORMAT_Z_UNORM16] = NULL;
+ table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL;
table[MESA_FORMAT_X8Z24_UNORM] = NULL;
table[MESA_FORMAT_Z_UNORM32] = NULL;
table[MESA_FORMAT_S_UINT8] = NULL;
@@ -2099,9 +2099,9 @@ _mesa_get_pack_float_rgba_function(mesa_format format)
/* should never convert RGBA to these formats */
table[MESA_FORMAT_S8_UINT_Z24_UNORM] = NULL;
- table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL;
- table[MESA_FORMAT_Z_UNORM16] = NULL;
table[MESA_FORMAT_Z24_UNORM_S8_UINT] = NULL;
+ table[MESA_FORMAT_Z_UNORM16] = NULL;
+ table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL;
table[MESA_FORMAT_X8Z24_UNORM] = NULL;
table[MESA_FORMAT_Z_UNORM32] = NULL;
table[MESA_FORMAT_S_UINT8] = NULL;
@@ -2433,8 +2433,8 @@ _mesa_get_pack_float_z_func(mesa_format format)
case MESA_FORMAT_S8_UINT_Z24_UNORM:
case MESA_FORMAT_X8Z24_UNORM:
return pack_float_z_Z24_S8;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
return pack_float_z_S8_Z24;
case MESA_FORMAT_Z_UNORM16:
return pack_float_z_Z16;
@@ -2518,8 +2518,8 @@ _mesa_get_pack_uint_z_func(mesa_format format)
case MESA_FORMAT_S8_UINT_Z24_UNORM:
case MESA_FORMAT_X8Z24_UNORM:
return pack_uint_z_Z24_S8;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
return pack_uint_z_S8_Z24;
case MESA_FORMAT_Z_UNORM16:
return pack_uint_z_Z16;
@@ -2581,7 +2581,7 @@ _mesa_get_pack_ubyte_stencil_func(mesa_format format)
switch (format) {
case MESA_FORMAT_S8_UINT_Z24_UNORM:
return pack_ubyte_stencil_Z24_S8;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
return pack_ubyte_stencil_S8_Z24;
case MESA_FORMAT_S_UINT8:
return pack_ubyte_stencil_S8;
@@ -2616,8 +2616,8 @@ _mesa_pack_float_z_row(mesa_format format, GLuint n,
}
}
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
{
/* don't disturb the stencil values */
GLuint *d = ((GLuint *) dst);
@@ -2690,8 +2690,8 @@ _mesa_pack_uint_z_row(mesa_format format, GLuint n,
}
}
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
{
/* don't disturb the stencil values */
GLuint *d = ((GLuint *) dst);
@@ -2762,7 +2762,7 @@ _mesa_pack_ubyte_stencil_row(mesa_format format, GLuint n,
}
}
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
{
/* don't disturb the Z values */
GLuint *d = ((GLuint *) dst);
@@ -2803,7 +2803,7 @@ _mesa_pack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n,
case MESA_FORMAT_S8_UINT_Z24_UNORM:
memcpy(dst, src, n * sizeof(GLuint));
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
{
GLuint *d = ((GLuint *) dst);
GLuint i;
diff --git a/mesalib/src/mesa/main/format_unpack.c b/mesalib/src/mesa/main/format_unpack.c
index 02ad00a9d..276ba556a 100644
--- a/mesalib/src/mesa/main/format_unpack.c
+++ b/mesalib/src/mesa/main/format_unpack.c
@@ -2366,9 +2366,9 @@ get_unpack_rgba_function(mesa_format format)
table[MESA_FORMAT_B10G10R10A2_UINT] = unpack_ARGB2101010_UINT;
table[MESA_FORMAT_R10G10B10A2_UINT] = unpack_ABGR2101010_UINT;
table[MESA_FORMAT_S8_UINT_Z24_UNORM] = unpack_Z24_S8;
- table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_S8_Z24;
+ table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_S8_Z24;
table[MESA_FORMAT_Z_UNORM16] = unpack_Z16;
- table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_X8_Z24;
+ table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_X8_Z24;
table[MESA_FORMAT_X8Z24_UNORM] = unpack_Z24_X8;
table[MESA_FORMAT_Z_UNORM32] = unpack_Z32;
table[MESA_FORMAT_S_UINT8] = unpack_S8;
@@ -3986,8 +3986,8 @@ _mesa_unpack_float_z_row(mesa_format format, GLuint n,
case MESA_FORMAT_X8Z24_UNORM:
unpack = unpack_float_z_Z24_X8;
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
unpack = unpack_float_z_X8_Z24;
break;
case MESA_FORMAT_Z_UNORM16:
@@ -4091,8 +4091,8 @@ _mesa_unpack_uint_z_row(mesa_format format, GLuint n,
case MESA_FORMAT_X8Z24_UNORM:
unpack = unpack_uint_z_Z24_X8;
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
unpack = unpack_uint_z_X8_Z24;
break;
case MESA_FORMAT_Z_UNORM16:
@@ -4164,7 +4164,7 @@ _mesa_unpack_ubyte_stencil_row(mesa_format format, GLuint n,
case MESA_FORMAT_S8_UINT_Z24_UNORM:
unpack_ubyte_s_Z24_S8(src, dst, n);
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
unpack_ubyte_s_S8_Z24(src, dst, n);
break;
case MESA_FORMAT_Z32_FLOAT_S8X24_UINT:
@@ -4189,11 +4189,30 @@ unpack_uint_24_8_depth_stencil_S8_Z24(const GLuint *src, GLuint *dst, GLuint n)
}
static void
+unpack_uint_24_8_depth_stencil_Z32_S8X24(const GLuint *src,
+ GLuint *dst, GLuint n)
+{
+ GLuint i;
+
+ for (i = 0; i < n; i++) {
+ /* 8 bytes per pixel (float + uint32) */
+ GLfloat zf = ((GLfloat *) src)[i * 2 + 0];
+ GLuint z24 = (GLuint) (zf * (GLfloat) 0xffffff);
+ GLuint s = src[i * 2 + 1] & 0xff;
+ dst[i] = (z24 << 8) | s;
+ }
+}
+
+static void
unpack_uint_24_8_depth_stencil_Z24_S8(const GLuint *src, GLuint *dst, GLuint n)
{
memcpy(dst, src, n * 4);
}
+/**
+ * Unpack depth/stencil returning as GL_UNSIGNED_INT_24_8.
+ * \param format the source data format
+ */
void
_mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n,
const void *src, GLuint *dst)
@@ -4202,9 +4221,12 @@ _mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n,
case MESA_FORMAT_S8_UINT_Z24_UNORM:
unpack_uint_24_8_depth_stencil_Z24_S8(src, dst, n);
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
unpack_uint_24_8_depth_stencil_S8_Z24(src, dst, n);
break;
+ case MESA_FORMAT_Z32_FLOAT_S8X24_UINT:
+ unpack_uint_24_8_depth_stencil_Z32_S8X24(src, dst, n);
+ break;
default:
_mesa_problem(NULL,
"bad format %s in _mesa_unpack_uint_24_8_depth_stencil_row",
diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c
index 10731d5a4..f6c399ede 100644
--- a/mesalib/src/mesa/main/formats.c
+++ b/mesalib/src/mesa/main/formats.c
@@ -439,8 +439,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 4 /* BlockWidth/Height,Bytes */
},
{
- MESA_FORMAT_Z24_UNORM_X8_UINT, /* Name */
- "MESA_FORMAT_Z24_UNORM_X8_UINT", /* StrName */
+ MESA_FORMAT_Z24_UNORM_S8_UINT, /* Name */
+ "MESA_FORMAT_Z24_UNORM_S8_UINT", /* StrName */
GL_DEPTH_STENCIL, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */
@@ -457,8 +457,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 2 /* BlockWidth/Height,Bytes */
},
{
- MESA_FORMAT_Z24_UNORM_S8_UINT, /* Name */
- "MESA_FORMAT_Z24_UNORM_S8_UINT", /* StrName */
+ MESA_FORMAT_Z24_UNORM_X8_UINT, /* Name */
+ "MESA_FORMAT_Z24_UNORM_X8_UINT", /* StrName */
GL_DEPTH_COMPONENT, /* BaseFormat */
GL_UNSIGNED_NORMALIZED, /* DataType */
0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */
@@ -2472,7 +2472,7 @@ _mesa_format_to_type_and_comps(mesa_format format,
*comps = 2;
return;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
*datatype = GL_UNSIGNED_INT_8_24_REV_MESA;
*comps = 2;
return;
@@ -2482,7 +2482,7 @@ _mesa_format_to_type_and_comps(mesa_format format,
*comps = 1;
return;
- case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
*datatype = GL_UNSIGNED_INT;
*comps = 1;
return;
@@ -3123,14 +3123,14 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format,
return format == GL_DEPTH_STENCIL && type == GL_UNSIGNED_INT_24_8 &&
!swapBytes;
case MESA_FORMAT_X8Z24_UNORM:
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
return GL_FALSE;
case MESA_FORMAT_Z_UNORM16:
return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_SHORT &&
!swapBytes;
- case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
return GL_FALSE;
case MESA_FORMAT_Z_UNORM32:
diff --git a/mesalib/src/mesa/main/formats.h b/mesalib/src/mesa/main/formats.h
index 63d9565e3..3102584b6 100644
--- a/mesalib/src/mesa/main/formats.h
+++ b/mesalib/src/mesa/main/formats.h
@@ -339,33 +339,33 @@ typedef enum
/* Type P formats */ /* msb <------ TEXEL BITS -----------> lsb */
/* ---- ---- ---- ---- ---- ---- ---- ---- */
- MESA_FORMAT_A8B8G8R8_UNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
- MESA_FORMAT_R8G8B8A8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
- MESA_FORMAT_B8G8R8A8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */
- MESA_FORMAT_A8R8G8B8_UNORM, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */
- MESA_FORMAT_X8B8G8R8_UNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */
- MESA_FORMAT_R8G8B8X8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
- MESA_FORMAT_B8G8R8X8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */
- MESA_FORMAT_X8R8G8B8_UNORM, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */
+ MESA_FORMAT_A8B8G8R8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+ MESA_FORMAT_R8G8B8A8_UNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_B8G8R8A8_UNORM, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */
+ MESA_FORMAT_A8R8G8B8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */
+ MESA_FORMAT_X8B8G8R8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
+ MESA_FORMAT_R8G8B8X8_UNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_B8G8R8X8_UNORM, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */
+ MESA_FORMAT_X8R8G8B8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */
/* Type A formats */
MESA_FORMAT_BGR_UNORM8, /* uchar[i * 3] = B, [i * 3 + 1] = G, [i *3 + 2] = R */
MESA_FORMAT_RGB_UNORM8, /* uchar[i * 3] = R, [i * 3 + 1] = G, [i *3 + 2] = B */
/* Type P formats */
- MESA_FORMAT_B5G6R5_UNORM, /* BBBB BGGG GGGR RRRR */
- MESA_FORMAT_R5G6B5_UNORM, /* RRRR RGGG GGGB BBBB */
- MESA_FORMAT_B4G4R4A4_UNORM, /* BBBB GGGG RRRR AAAA */
- MESA_FORMAT_A4R4G4B4_UNORM, /* AAAA RRRR GGGG BBBB */
- MESA_FORMAT_A1B5G5R5_UNORM, /* ABBB BBGG GGGR RRRR */
- MESA_FORMAT_B5G5R5A1_UNORM, /* BBBB BGGG GGRR RRRA */
- MESA_FORMAT_A1R5G5B5_UNORM, /* ARRR RRGG GGGB BBBB */
- MESA_FORMAT_L4A4_UNORM, /* LLLL AAAA */
- MESA_FORMAT_L8A8_UNORM, /* LLLL LLLL AAAA AAAA */
- MESA_FORMAT_A8L8_UNORM, /* AAAA AAAA LLLL LLLL */
- MESA_FORMAT_L16A16_UNORM, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */
- MESA_FORMAT_A16L16_UNORM, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */
- MESA_FORMAT_B2G3R3_UNORM, /* BBGG GRRR */
+ MESA_FORMAT_B5G6R5_UNORM, /* RRRR RGGG GGGB BBBB */
+ MESA_FORMAT_R5G6B5_UNORM, /* BBBB BGGG GGGR RRRR */
+ MESA_FORMAT_B4G4R4A4_UNORM, /* AAAA RRRR GGGG BBBB */
+ MESA_FORMAT_A4R4G4B4_UNORM, /* BBBB GGGG RRRR AAAA */
+ MESA_FORMAT_A1B5G5R5_UNORM, /* RRRR RGGG GGBB BBBA */
+ MESA_FORMAT_B5G5R5A1_UNORM, /* ARRR RRGG GGGB BBBB */
+ MESA_FORMAT_A1R5G5B5_UNORM, /* BBBB BGGG GGRR RRRA */
+ MESA_FORMAT_L4A4_UNORM, /* AAAA LLLL */
+ MESA_FORMAT_L8A8_UNORM, /* AAAA AAAA LLLL LLLL */
+ MESA_FORMAT_A8L8_UNORM, /* LLLL LLLL AAAA AAAA */
+ MESA_FORMAT_L16A16_UNORM, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */
+ MESA_FORMAT_A16L16_UNORM, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */
+ MESA_FORMAT_B2G3R3_UNORM, /* RRRG GGBB */
/* Type A formats */
MESA_FORMAT_A_UNORM8, /* uchar[i] = A */
@@ -383,25 +383,25 @@ typedef enum
MESA_FORMAT_R_UNORM8, /* uchar[i] = R */
/* Type P formats */
- MESA_FORMAT_R8G8_UNORM, /* RRRR RRRR GGGG GGGG */
- MESA_FORMAT_G8R8_UNORM, /* GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_R8G8_UNORM, /* GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_G8R8_UNORM, /* RRRR RRRR GGGG GGGG */
/* Type A format(s) */
MESA_FORMAT_R_UNORM16, /* ushort[i] = R */
/* Type P formats */
- MESA_FORMAT_R16G16_UNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */
- MESA_FORMAT_G16R16_UNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */
- MESA_FORMAT_B10G10R10A2_UNORM,/* BBBB BBBB BBGG GGGG GGGG RRRR RRRR RRAA */
- MESA_FORMAT_S8_UINT_Z24_UNORM,/* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
- MESA_FORMAT_Z24_UNORM_X8_UINT,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */
+ MESA_FORMAT_R16G16_UNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */
+ MESA_FORMAT_G16R16_UNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */
+ MESA_FORMAT_B10G10R10A2_UNORM,/* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */
+ MESA_FORMAT_S8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */
+ MESA_FORMAT_Z24_UNORM_S8_UINT,/* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
/* Type A format(s) */
MESA_FORMAT_Z_UNORM16, /* ushort[i] = Z */
/* Type P formats */
- MESA_FORMAT_Z24_UNORM_S8_UINT,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */
- MESA_FORMAT_X8Z24_UNORM, /* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
+ MESA_FORMAT_Z24_UNORM_X8_UINT,/* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */
+ MESA_FORMAT_X8Z24_UNORM, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */
/* Type A formats */
MESA_FORMAT_Z_UNORM32, /* uint[i] = Z */
@@ -416,14 +416,14 @@ typedef enum
MESA_FORMAT_BGR_SRGB8, /* uchar[i * 3] = B, [i * 3 + 1] = G, [i *3 + 2] = R */
/* Type P formats */
- MESA_FORMAT_A8B8G8R8_SRGB, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR*/
- MESA_FORMAT_B8G8R8A8_SRGB, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */
+ MESA_FORMAT_A8B8G8R8_SRGB, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+ MESA_FORMAT_B8G8R8A8_SRGB, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */
/* Type A format(s) */
MESA_FORMAT_L_SRGB8, /* uchar[i] = L */
/* Type P formats */
- MESA_FORMAT_L8A8_SRGB, /* LLLL LLLL AAAA AAAA */
+ MESA_FORMAT_L8A8_SRGB, /* AAAA AAAA LLLL LLLL */
/* Type C formats */
MESA_FORMAT_SRGB_DXT1,
@@ -548,16 +548,16 @@ typedef enum
MESA_FORMAT_R_SNORM8, /* char[i] = R */
/* Type P formats */
- MESA_FORMAT_R8G8_SNORM, /* RRRR RRRR GGGG GGGG */
- MESA_FORMAT_X8B8G8R8_SNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */
- MESA_FORMAT_A8B8G8R8_SNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
- MESA_FORMAT_R8G8B8A8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+ MESA_FORMAT_R8G8_SNORM, /* GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_X8B8G8R8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
+ MESA_FORMAT_A8B8G8R8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+ MESA_FORMAT_R8G8B8A8_SNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
/* Type A format(s) */
MESA_FORMAT_R_SNORM16, /* short[i] = R */
/* Type P format(s) */
- MESA_FORMAT_R16G16_SNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */
+ MESA_FORMAT_R16G16_SNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */
/* Type A format(s) */
MESA_FORMAT_RGB_SNORM16, /* short[i * 3] = R, [i * 3 + 1] = G, [i *3 + 2] = B */
@@ -597,7 +597,7 @@ typedef enum
MESA_FORMAT_L_SNORM8, /* char[i] = L */
/* Type P format(s) */
- MESA_FORMAT_L8A8_SNORM, /* LLLL LLLL AAAA AAAA */
+ MESA_FORMAT_L8A8_SNORM, /* AAAA AAAA LLLL LLLL */
/* Type A format(s) */
MESA_FORMAT_I_SNORM8, /* char[i] = I */
@@ -608,21 +608,21 @@ typedef enum
/* Type P format(s) */
MESA_FORMAT_R9G9B9E5_FLOAT,
- MESA_FORMAT_R11G11B10_FLOAT,
+ MESA_FORMAT_R11G11B10_FLOAT, /* BBBB BBBB BBGG GGGG GGGG GRRR RRRR RRRR */
/* Type A format(s) */
MESA_FORMAT_Z_FLOAT32,
/* Type P formats */
- MESA_FORMAT_Z32_FLOAT_S8X24_UINT,
+ MESA_FORMAT_Z32_FLOAT_S8X24_UINT, /* (float, x24s8) */
- MESA_FORMAT_B10G10R10A2_UINT,
- MESA_FORMAT_R10G10B10A2_UINT,
+ MESA_FORMAT_B10G10R10A2_UINT, /* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */
+ MESA_FORMAT_R10G10B10A2_UINT, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */
- MESA_FORMAT_B4G4R4X4_UNORM, /* BBBB GGGG RRRR xxxx */
- MESA_FORMAT_B5G5R5X1_UNORM, /* BBBB BGGG GGRR RRRx */
- MESA_FORMAT_R8G8B8X8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
- MESA_FORMAT_R8G8B8X8_SRGB, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
+ MESA_FORMAT_B4G4R4X4_UNORM, /* xxxx RRRR GGGG BBBB */
+ MESA_FORMAT_B5G5R5X1_UNORM, /* xRRR RRGG GGGB BBBB */
+ MESA_FORMAT_R8G8B8X8_SNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_R8G8B8X8_SRGB, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */
/* Type A formats */
MESA_FORMAT_RGBX_UINT8, /* uchar[i * 4] = R, [i * 4 + 1] = G, [i * 4 + 2] = B, [i * 4 + 3] = x */
@@ -643,9 +643,9 @@ typedef enum
MESA_FORMAT_RGBX_SINT32, /* ... */
/* Type P formats */
- MESA_FORMAT_R10G10B10A2_UNORM,
- MESA_FORMAT_G8R8_SNORM,
- MESA_FORMAT_G16R16_SNORM,
+ MESA_FORMAT_R10G10B10A2_UNORM, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */
+ MESA_FORMAT_G8R8_SNORM, /* RRRR RRRR GGGG GGGG */
+ MESA_FORMAT_G16R16_SNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */
MESA_FORMAT_COUNT
} mesa_format;
diff --git a/mesalib/src/mesa/main/framebuffer.c b/mesalib/src/mesa/main/framebuffer.c
index 54eeda2b2..7416bb118 100644
--- a/mesalib/src/mesa/main/framebuffer.c
+++ b/mesalib/src/mesa/main/framebuffer.c
@@ -130,7 +130,7 @@ _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb,
memset(fb, 0, sizeof(struct gl_framebuffer));
- _glthread_INIT_MUTEX(fb->Mutex);
+ mtx_init(&fb->Mutex, mtx_plain);
fb->RefCount = 1;
@@ -182,7 +182,7 @@ _mesa_initialize_user_framebuffer(struct gl_framebuffer *fb, GLuint name)
fb->ColorReadBuffer = GL_COLOR_ATTACHMENT0_EXT;
fb->_ColorReadBufferIndex = BUFFER_COLOR0;
fb->Delete = _mesa_destroy_framebuffer;
- _glthread_INIT_MUTEX(fb->Mutex);
+ mtx_init(&fb->Mutex, mtx_plain);
}
@@ -213,7 +213,7 @@ _mesa_free_framebuffer_data(struct gl_framebuffer *fb)
assert(fb);
assert(fb->RefCount == 0);
- _glthread_DESTROY_MUTEX(fb->Mutex);
+ mtx_destroy(&fb->Mutex);
for (i = 0; i < BUFFER_COUNT; i++) {
struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
@@ -244,11 +244,11 @@ _mesa_reference_framebuffer_(struct gl_framebuffer **ptr,
GLboolean deleteFlag = GL_FALSE;
struct gl_framebuffer *oldFb = *ptr;
- _glthread_LOCK_MUTEX(oldFb->Mutex);
+ mtx_lock(&oldFb->Mutex);
ASSERT(oldFb->RefCount > 0);
oldFb->RefCount--;
deleteFlag = (oldFb->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldFb->Mutex);
+ mtx_unlock(&oldFb->Mutex);
if (deleteFlag)
oldFb->Delete(oldFb);
@@ -258,9 +258,9 @@ _mesa_reference_framebuffer_(struct gl_framebuffer **ptr,
assert(!*ptr);
if (fb) {
- _glthread_LOCK_MUTEX(fb->Mutex);
+ mtx_lock(&fb->Mutex);
fb->RefCount++;
- _glthread_UNLOCK_MUTEX(fb->Mutex);
+ mtx_unlock(&fb->Mutex);
*ptr = fb;
}
}
diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c
index 54f7d7745..b1908515c 100644
--- a/mesalib/src/mesa/main/get.c
+++ b/mesalib/src/mesa/main/get.c
@@ -28,6 +28,7 @@
#include "blend.h"
#include "enable.h"
#include "enums.h"
+#include "errors.h"
#include "extensions.h"
#include "get.h"
#include "macros.h"
@@ -973,6 +974,26 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
_mesa_problem(ctx, "driver doesn't implement GetTimestamp");
}
break;
+ /* GL_KHR_DEBUG */
+ case GL_DEBUG_LOGGED_MESSAGES:
+ {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ v->value_int = debug ? debug->NumMessages : 0;
+ }
+ break;
+ case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH:
+ {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ v->value_int = debug ? debug->NextMsgLength : 0;
+ }
+ break;
+ case GL_DEBUG_GROUP_STACK_DEPTH:
+ {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ v->value_int = debug ? debug->GroupStackDepth : 0;
+ }
+ break;
+
/* GL_ARB_shader_atomic_counters */
case GL_ATOMIC_COUNTER_BUFFER_BINDING:
v->value_int = ctx->AtomicBuffer->Name;
diff --git a/mesalib/src/mesa/main/get_hash_params.py b/mesalib/src/mesa/main/get_hash_params.py
index f47cbd881..674d0032a 100644
--- a/mesalib/src/mesa/main/get_hash_params.py
+++ b/mesalib/src/mesa/main/get_hash_params.py
@@ -698,13 +698,13 @@ descriptor=[
[ "RESET_NOTIFICATION_STRATEGY_ARB", "CONTEXT_ENUM(Const.ResetStrategy), NO_EXTRA" ],
# GL_KHR_debug (GL 4.3)/ GL_ARB_debug_output
- [ "DEBUG_LOGGED_MESSAGES", "CONTEXT_INT(Debug.NumMessages), NO_EXTRA" ],
- [ "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "CONTEXT_INT(Debug.NextMsgLength), NO_EXTRA" ],
+ [ "DEBUG_LOGGED_MESSAGES", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
+ [ "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
[ "MAX_DEBUG_LOGGED_MESSAGES", "CONST(MAX_DEBUG_LOGGED_MESSAGES), NO_EXTRA" ],
[ "MAX_DEBUG_MESSAGE_LENGTH", "CONST(MAX_DEBUG_MESSAGE_LENGTH), NO_EXTRA" ],
[ "MAX_LABEL_LENGTH", "CONST(MAX_LABEL_LENGTH), NO_EXTRA" ],
[ "MAX_DEBUG_GROUP_STACK_DEPTH", "CONST(MAX_DEBUG_GROUP_STACK_DEPTH), NO_EXTRA" ],
- [ "DEBUG_GROUP_STACK_DEPTH", "CONTEXT_INT(Debug.GroupStackDepth), NO_EXTRA" ],
+ [ "DEBUG_GROUP_STACK_DEPTH", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ],
[ "MAX_DUAL_SOURCE_DRAW_BUFFERS", "CONTEXT_INT(Const.MaxDualSourceDrawBuffers), extra_ARB_blend_func_extended" ],
diff --git a/mesalib/src/mesa/main/getstring.c b/mesalib/src/mesa/main/getstring.c
index 674126702..3ac62d402 100644
--- a/mesalib/src/mesa/main/getstring.c
+++ b/mesalib/src/mesa/main/getstring.c
@@ -253,14 +253,22 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
*params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Ptr;
break;
case GL_DEBUG_CALLBACK_FUNCTION_ARB:
- if (!_mesa_is_desktop_gl(ctx))
+ if (!_mesa_is_desktop_gl(ctx)) {
goto invalid_pname;
- *params = (GLvoid *) ctx->Debug.Callback;
+ }
+ else {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ *params = debug ? (void *) debug->Callback : NULL;
+ }
break;
case GL_DEBUG_CALLBACK_USER_PARAM_ARB:
- if (!_mesa_is_desktop_gl(ctx))
+ if (!_mesa_is_desktop_gl(ctx)) {
goto invalid_pname;
- *params = (GLvoid *) ctx->Debug.CallbackData;
+ }
+ else {
+ struct gl_debug_state *debug = _mesa_get_debug_state(ctx);
+ *params = debug ? (void *) debug->CallbackData : NULL;
+ }
break;
default:
goto invalid_pname;
@@ -326,7 +334,7 @@ _mesa_GetGraphicsResetStatusARB( void )
*/
status = ctx->Driver.GetGraphicsResetStatus(ctx);
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
/* If this context has not been affected by a GPU reset, check to see if
* some other context in the share group has been affected by a reset.
@@ -340,7 +348,7 @@ _mesa_GetGraphicsResetStatusARB( void )
}
ctx->ShareGroupReset = ctx->Shared->ShareGroupReset;
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
if (!ctx->Driver.GetGraphicsResetStatus && (MESA_VERBOSE & VERBOSE_API))
diff --git a/mesalib/src/mesa/main/glformats.c b/mesalib/src/mesa/main/glformats.c
index 7d4a31057..77cf26337 100644
--- a/mesalib/src/mesa/main/glformats.c
+++ b/mesalib/src/mesa/main/glformats.c
@@ -1323,10 +1323,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_INT:
case GL_UNSIGNED_INT:
case GL_FLOAT:
- return GL_NO_ERROR;
case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
+ return GL_NO_ERROR;
default:
return GL_INVALID_ENUM;
}
@@ -1349,10 +1347,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_INT:
case GL_UNSIGNED_INT:
case GL_FLOAT:
- return GL_NO_ERROR;
case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
+ return GL_NO_ERROR;
default:
return GL_INVALID_ENUM;
}
@@ -1368,10 +1364,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_INT:
case GL_UNSIGNED_INT:
case GL_FLOAT:
- return GL_NO_ERROR;
case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
+ return GL_NO_ERROR;
default:
return GL_INVALID_ENUM;
}
@@ -1389,14 +1383,12 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_UNSIGNED_BYTE_2_3_3_REV:
case GL_UNSIGNED_SHORT_5_6_5:
case GL_UNSIGNED_SHORT_5_6_5_REV:
+ case GL_HALF_FLOAT:
return GL_NO_ERROR;
case GL_UNSIGNED_INT_2_10_10_10_REV:
/* OK by GL_EXT_texture_type_2_10_10_10_REV */
return (ctx->API == API_OPENGLES2)
? GL_NO_ERROR : GL_INVALID_ENUM;
- case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
case GL_UNSIGNED_INT_5_9_9_9_REV:
return ctx->Extensions.EXT_texture_shared_exponent
? GL_NO_ERROR : GL_INVALID_ENUM;
@@ -1419,10 +1411,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_INT:
case GL_UNSIGNED_INT:
case GL_FLOAT:
- return GL_NO_ERROR;
case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
+ return GL_NO_ERROR;
default:
return GL_INVALID_ENUM;
}
@@ -1446,10 +1436,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
case GL_UNSIGNED_INT_8_8_8_8_REV:
case GL_UNSIGNED_INT_10_10_10_2:
case GL_UNSIGNED_INT_2_10_10_10_REV:
- return GL_NO_ERROR;
case GL_HALF_FLOAT:
- return ctx->Extensions.ARB_half_float_pixel
- ? GL_NO_ERROR : GL_INVALID_ENUM;
+ return GL_NO_ERROR;
default:
return GL_INVALID_ENUM;
}
diff --git a/mesalib/src/mesa/main/hash.c b/mesalib/src/mesa/main/hash.c
index b31fd4839..4c92005e0 100644
--- a/mesalib/src/mesa/main/hash.c
+++ b/mesalib/src/mesa/main/hash.c
@@ -36,7 +36,6 @@
#include "glheader.h"
#include "imports.h"
-#include "glapi/glthread.h"
#include "hash.h"
#include "hash_table.h"
@@ -59,8 +58,8 @@
struct _mesa_HashTable {
struct hash_table *ht;
GLuint MaxKey; /**< highest key inserted so far */
- _glthread_Mutex Mutex; /**< mutual exclusion lock */
- _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */
+ mtx_t Mutex; /**< mutual exclusion lock */
+ mtx_t WalkMutex; /**< for _mesa_HashWalk() */
GLboolean InDeleteAll; /**< Debug check */
/** Value that would be in the table for DELETED_KEY_VALUE. */
void *deleted_key_data;
@@ -117,8 +116,8 @@ _mesa_NewHashTable(void)
if (table) {
table->ht = _mesa_hash_table_create(NULL, uint_key_compare);
_mesa_hash_table_set_deleted_key(table->ht, uint_key(DELETED_KEY_VALUE));
- _glthread_INIT_MUTEX(table->Mutex);
- _glthread_INIT_MUTEX(table->WalkMutex);
+ mtx_init(&table->Mutex, mtx_plain);
+ mtx_init(&table->WalkMutex, mtx_plain);
}
return table;
}
@@ -144,8 +143,8 @@ _mesa_DeleteHashTable(struct _mesa_HashTable *table)
_mesa_hash_table_destroy(table->ht, NULL);
- _glthread_DESTROY_MUTEX(table->Mutex);
- _glthread_DESTROY_MUTEX(table->WalkMutex);
+ mtx_destroy(&table->Mutex);
+ mtx_destroy(&table->WalkMutex);
free(table);
}
@@ -187,9 +186,9 @@ _mesa_HashLookup(struct _mesa_HashTable *table, GLuint key)
{
void *res;
assert(table);
- _glthread_LOCK_MUTEX(table->Mutex);
+ mtx_lock(&table->Mutex);
res = _mesa_HashLookup_unlocked(table, key);
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
return res;
}
@@ -211,7 +210,7 @@ _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data)
assert(table);
assert(key);
- _glthread_LOCK_MUTEX(table->Mutex);
+ mtx_lock(&table->Mutex);
if (key > table->MaxKey)
table->MaxKey = key;
@@ -227,7 +226,7 @@ _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data)
}
}
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
}
@@ -256,14 +255,14 @@ _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key)
return;
}
- _glthread_LOCK_MUTEX(table->Mutex);
+ mtx_lock(&table->Mutex);
if (key == DELETED_KEY_VALUE) {
table->deleted_key_data = NULL;
} else {
entry = _mesa_hash_table_search(table->ht, uint_hash(key), uint_key(key));
_mesa_hash_table_remove(table->ht, entry);
}
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
}
@@ -286,7 +285,7 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table,
ASSERT(table);
ASSERT(callback);
- _glthread_LOCK_MUTEX(table->Mutex);
+ mtx_lock(&table->Mutex);
table->InDeleteAll = GL_TRUE;
hash_table_foreach(table->ht, entry) {
callback((uintptr_t)entry->key, entry->data, userData);
@@ -297,7 +296,7 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table,
table->deleted_key_data = NULL;
}
table->InDeleteAll = GL_FALSE;
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
}
@@ -315,7 +314,7 @@ _mesa_HashClone(const struct _mesa_HashTable *table)
struct _mesa_HashTable *clonetable;
ASSERT(table);
- _glthread_LOCK_MUTEX(table2->Mutex);
+ mtx_lock(&table2->Mutex);
clonetable = _mesa_NewHashTable();
assert(clonetable);
@@ -323,7 +322,7 @@ _mesa_HashClone(const struct _mesa_HashTable *table)
_mesa_HashInsert(clonetable, (GLint)(uintptr_t)entry->key, entry->data);
}
- _glthread_UNLOCK_MUTEX(table2->Mutex);
+ mtx_unlock(&table2->Mutex);
return clonetable;
}
@@ -352,13 +351,13 @@ _mesa_HashWalk(const struct _mesa_HashTable *table,
ASSERT(table);
ASSERT(callback);
- _glthread_LOCK_MUTEX(table2->WalkMutex);
+ mtx_lock(&table2->WalkMutex);
hash_table_foreach(table->ht, entry) {
callback((uintptr_t)entry->key, entry->data, userData);
}
if (table->deleted_key_data)
callback(DELETED_KEY_VALUE, table->deleted_key_data, userData);
- _glthread_UNLOCK_MUTEX(table2->WalkMutex);
+ mtx_unlock(&table2->WalkMutex);
}
static void
@@ -398,10 +397,10 @@ GLuint
_mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys)
{
const GLuint maxKey = ~((GLuint) 0) - 1;
- _glthread_LOCK_MUTEX(table->Mutex);
+ mtx_lock(&table->Mutex);
if (maxKey - numKeys > table->MaxKey) {
/* the quick solution */
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
return table->MaxKey + 1;
}
else {
@@ -419,13 +418,13 @@ _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys)
/* this key not in use, check if we've found enough */
freeCount++;
if (freeCount == numKeys) {
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
return freeStart;
}
}
}
/* cannot allocate a block of numKeys consecutive keys */
- _glthread_UNLOCK_MUTEX(table->Mutex);
+ mtx_unlock(&table->Mutex);
return 0;
}
}
diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h
index 53e40b445..29772be6e 100644
--- a/mesalib/src/mesa/main/imports.h
+++ b/mesalib/src/mesa/main/imports.h
@@ -132,7 +132,7 @@ typedef union { GLfloat f; GLint i; GLuint u; } fi_type;
#define atanhf(f) ((float) atanh(f))
#endif
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) && (_MSC_VER < 1800) /* Not req'd on VS2013 and above */
static inline float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); }
static inline float exp2f(float x) { return powf(2.0f, x); }
static inline float log2f(float x) { return logf(x) * 1.442695041f; }
diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h
index ceabd9df7..bbc377280 100644
--- a/mesalib/src/mesa/main/mtypes.h
+++ b/mesalib/src/mesa/main/mtypes.h
@@ -1190,7 +1190,7 @@ struct gl_sampler_object
*/
struct gl_texture_object
{
- _glthread_Mutex Mutex; /**< for thread safety */
+ mtx_t Mutex; /**< for thread safety */
GLint RefCount; /**< reference count */
GLuint Name; /**< the user-visible texture object ID */
GLchar *Label; /**< GL_KHR_debug */
@@ -1439,28 +1439,44 @@ struct gl_viewport_attrib
};
+typedef enum {
+ MAP_USER,
+ MAP_INTERNAL,
+
+ MAP_COUNT
+} gl_map_buffer_index;
+
+
+/**
+ * Fields describing a mapped buffer range.
+ */
+struct gl_buffer_mapping {
+ GLbitfield AccessFlags; /**< Mask of GL_MAP_x_BIT flags */
+ GLvoid *Pointer; /**< User-space address of mapping */
+ GLintptr Offset; /**< Mapped offset */
+ GLsizeiptr Length; /**< Mapped length */
+};
+
+
/**
* GL_ARB_vertex/pixel_buffer_object buffer object
*/
struct gl_buffer_object
{
- _glthread_Mutex Mutex;
+ mtx_t Mutex;
GLint RefCount;
GLuint Name;
GLchar *Label; /**< GL_KHR_debug */
GLenum Usage; /**< GL_STREAM_DRAW_ARB, GL_STREAM_READ_ARB, etc. */
+ GLbitfield StorageFlags; /**< GL_MAP_PERSISTENT_BIT, etc. */
GLsizeiptrARB Size; /**< Size of buffer storage in bytes */
GLubyte *Data; /**< Location of storage either in RAM or VRAM. */
- /** Fields describing a mapped buffer */
- /*@{*/
- GLbitfield AccessFlags; /**< Mask of GL_MAP_x_BIT flags */
- GLvoid *Pointer; /**< User-space address of mapping */
- GLintptr Offset; /**< Mapped offset */
- GLsizeiptr Length; /**< Mapped length */
- /*@}*/
GLboolean DeletePending; /**< true if buffer object is removed from the hash */
GLboolean Written; /**< Ever written to? (for debugging) */
GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */
+ GLboolean Immutable; /**< GL_ARB_buffer_storage */
+
+ struct gl_buffer_mapping Mappings[MAP_COUNT];
};
@@ -1560,7 +1576,7 @@ struct gl_vertex_array_object
GLchar *Label; /**< GL_KHR_debug */
GLint RefCount;
- _glthread_Mutex Mutex;
+ mtx_t Mutex;
/**
* Does the VAO use ARB semantics or Apple semantics?
@@ -2013,6 +2029,7 @@ typedef enum
SYSTEM_VALUE_SAMPLE_ID, /**< Fragment shader only */
SYSTEM_VALUE_SAMPLE_POS, /**< Fragment shader only */
SYSTEM_VALUE_SAMPLE_MASK_IN, /**< Fragment shader only */
+ SYSTEM_VALUE_INVOCATION_ID, /**< Geometry shader only */
SYSTEM_VALUE_MAX /**< Number of values */
} gl_system_value;
@@ -2143,6 +2160,7 @@ struct gl_geometry_program
GLint VerticesIn;
GLint VerticesOut;
+ GLint Invocations;
GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB,
GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */
GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */
@@ -2419,6 +2437,11 @@ struct gl_shader
struct {
GLint VerticesOut;
/**
+ * 0 - Invocations count not declared in shader, or
+ * 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS
+ */
+ GLint Invocations;
+ /**
* GL_POINTS, GL_LINES, GL_LINES_ADJACENCY, GL_TRIANGLES, or
* GL_TRIANGLES_ADJACENCY, or PRIM_UNKNOWN if it's not set in this
* shader.
@@ -2579,6 +2602,12 @@ struct gl_shader_program
*/
GLboolean InternalSeparateShader;
+ /**
+ * Indicates whether program can be bound for individual pipeline stages
+ * using UseProgramStages after it is next linked.
+ */
+ GLboolean SeparateShader;
+
GLuint NumShaders; /**< number of attached shaders */
struct gl_shader **Shaders; /**< List of attached the shaders */
@@ -2627,6 +2656,10 @@ struct gl_shader_program
struct {
GLint VerticesIn;
GLint VerticesOut;
+ /**
+ * 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS
+ */
+ GLint Invocations;
GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB,
GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */
GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */
@@ -2746,9 +2779,19 @@ struct gl_shader_program
/**
* Context state for GLSL vertex/fragment shaders.
+ * Extended to support pipeline object
*/
-struct gl_shader_state
+struct gl_pipeline_object
{
+ /** Name of the pipeline object as received from glGenProgramPipelines.
+ * It would be 0 for shaders without separate shader objects.
+ */
+ GLuint Name;
+
+ GLint RefCount;
+
+ mtx_t Mutex;
+
/**
* Programs used for rendering
*
@@ -2768,8 +2811,21 @@ struct gl_shader_state
struct gl_shader_program *ActiveProgram;
GLbitfield Flags; /**< Mask of GLSL_x flags */
+
+ GLboolean EverBound; /**< Has the pipeline object been created */
};
+/**
+ * Context state for GLSL pipeline shaders.
+ */
+struct gl_pipeline_shader_state
+{
+ /** Currently bound pipeline object. See _mesa_BindProgramPipeline() */
+ struct gl_pipeline_object *Current;
+
+ /** Pipeline objects */
+ struct _mesa_HashTable *Objects;
+};
/**
* Compiler options for a single GLSL shaders type
@@ -2871,7 +2927,7 @@ struct gl_sync_object
*/
struct gl_shared_state
{
- _glthread_Mutex Mutex; /**< for thread safety */
+ mtx_t Mutex; /**< for thread safety */
GLint RefCount; /**< Reference count */
struct _mesa_HashTable *DisplayList; /**< Display lists hash table */
struct _mesa_HashTable *TexObjects; /**< Texture objects hash table */
@@ -2889,7 +2945,7 @@ struct gl_shared_state
* \todo Improve the granularity of locking.
*/
/*@{*/
- _glthread_Mutex TexMutex; /**< texobj thread safety */
+ mtx_t TexMutex; /**< texobj thread safety */
GLuint TextureStateStamp; /**< state notification for shared tex */
/*@}*/
@@ -2946,7 +3002,7 @@ struct gl_shared_state
*/
struct gl_renderbuffer
{
- _glthread_Mutex Mutex; /**< for thread safety */
+ mtx_t Mutex; /**< for thread safety */
GLuint ClassID; /**< Useful for drivers */
GLuint Name;
GLchar *Label; /**< GL_KHR_debug */
@@ -3024,7 +3080,7 @@ struct gl_renderbuffer_attachment
*/
struct gl_framebuffer
{
- _glthread_Mutex Mutex; /**< for thread safety */
+ mtx_t Mutex; /**< for thread safety */
/**
* If zero, this is a window system framebuffer. If non-zero, this
* is a FBO framebuffer; note that for some devices (i.e. those with
@@ -3433,6 +3489,7 @@ struct gl_extensions
GLboolean ARB_arrays_of_arrays;
GLboolean ARB_base_instance;
GLboolean ARB_blend_func_extended;
+ GLboolean ARB_buffer_storage;
GLboolean ARB_color_buffer_float;
GLboolean ARB_compute_shader;
GLboolean ARB_conservative_depth;
@@ -3451,7 +3508,6 @@ struct gl_extensions
GLboolean ARB_explicit_attrib_location;
GLboolean ARB_geometry_shader4;
GLboolean ARB_gpu_shader5;
- GLboolean ARB_half_float_pixel;
GLboolean ARB_half_float_vertex;
GLboolean ARB_instanced_arrays;
GLboolean ARB_internalformat_query;
@@ -3461,6 +3517,7 @@ struct gl_extensions
GLboolean ARB_point_sprite;
GLboolean ARB_sample_shading;
GLboolean ARB_seamless_cube_map;
+ GLboolean ARB_separate_shader_objects;
GLboolean ARB_shader_atomic_counters;
GLboolean ARB_shader_bit_encoding;
GLboolean ARB_shader_image_load_store;
@@ -4070,7 +4127,8 @@ struct gl_context
struct gl_geometry_program_state GeometryProgram;
struct gl_ati_fragment_shader_state ATIFragmentShader;
- struct gl_shader_state Shader; /**< GLSL shader object state */
+ struct gl_pipeline_shader_state Pipeline; /**< GLSL pipeline shader object state */
+ struct gl_pipeline_object Shader; /**< GLSL shader object state */
struct gl_shader_compiler_options ShaderCompilerOptions[MESA_SHADER_STAGES];
struct gl_query_state Query; /**< occlusion, timer queries */
@@ -4132,7 +4190,7 @@ struct gl_context
GLuint ErrorDebugCount;
/* GL_ARB_debug_output/GL_KHR_debug */
- struct gl_debug_state Debug;
+ struct gl_debug_state *Debug;
GLenum RenderMode; /**< either GL_RENDER, GL_SELECT, GL_FEEDBACK */
GLbitfield NewState; /**< bitwise-or of _NEW_* flags */
diff --git a/mesalib/src/mesa/main/pbo.c b/mesalib/src/mesa/main/pbo.c
index 400cec3f0..a0d61a643 100644
--- a/mesalib/src/mesa/main/pbo.c
+++ b/mesalib/src/mesa/main/pbo.c
@@ -149,7 +149,8 @@ _mesa_map_pbo_source(struct gl_context *ctx,
buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0,
unpack->BufferObj->Size,
GL_MAP_READ_BIT,
- unpack->BufferObj);
+ unpack->BufferObj,
+ MAP_INTERNAL);
if (!buf)
return NULL;
@@ -201,7 +202,7 @@ _mesa_map_validate_pbo_source(struct gl_context *ctx,
return ptr;
}
- if (_mesa_bufferobj_mapped(unpack->BufferObj)) {
+ if (_mesa_check_disallowed_mapping(unpack->BufferObj)) {
/* buffer is already mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(PBO is mapped)", where);
return NULL;
@@ -221,7 +222,7 @@ _mesa_unmap_pbo_source(struct gl_context *ctx,
{
ASSERT(unpack != &ctx->Pack); /* catch pack/unpack mismatch */
if (_mesa_is_bufferobj(unpack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL);
}
}
@@ -246,7 +247,8 @@ _mesa_map_pbo_dest(struct gl_context *ctx,
buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0,
pack->BufferObj->Size,
GL_MAP_WRITE_BIT,
- pack->BufferObj);
+ pack->BufferObj,
+ MAP_INTERNAL);
if (!buf)
return NULL;
@@ -297,7 +299,7 @@ _mesa_map_validate_pbo_dest(struct gl_context *ctx,
return ptr;
}
- if (_mesa_bufferobj_mapped(unpack->BufferObj)) {
+ if (_mesa_check_disallowed_mapping(unpack->BufferObj)) {
/* buffer is already mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION, "%s(PBO is mapped)", where);
return NULL;
@@ -317,7 +319,7 @@ _mesa_unmap_pbo_dest(struct gl_context *ctx,
{
ASSERT(pack != &ctx->Unpack); /* catch pack/unpack mismatch */
if (_mesa_is_bufferobj(pack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, pack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, pack->BufferObj, MAP_INTERNAL);
}
}
@@ -351,7 +353,8 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions,
buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0,
unpack->BufferObj->Size,
GL_MAP_READ_BIT,
- unpack->BufferObj);
+ unpack->BufferObj,
+ MAP_INTERNAL);
if (!buf) {
_mesa_error(ctx, GL_INVALID_OPERATION, "%s%uD(PBO is mapped)", funcName,
dimensions);
@@ -393,7 +396,8 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx,
buf = (GLubyte*) ctx->Driver.MapBufferRange(ctx, 0,
packing->BufferObj->Size,
GL_MAP_READ_BIT,
- packing->BufferObj);
+ packing->BufferObj,
+ MAP_INTERNAL);
if (!buf) {
_mesa_error(ctx, GL_INVALID_OPERATION, "%s%uD(PBO is mapped)", funcName,
dimensions);
@@ -413,6 +417,6 @@ _mesa_unmap_teximage_pbo(struct gl_context *ctx,
const struct gl_pixelstore_attrib *unpack)
{
if (_mesa_is_bufferobj(unpack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL);
}
}
diff --git a/mesalib/src/mesa/main/pipelineobj.c b/mesalib/src/mesa/main/pipelineobj.c
new file mode 100644
index 000000000..27012df72
--- /dev/null
+++ b/mesalib/src/mesa/main/pipelineobj.c
@@ -0,0 +1,445 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright © 2013 Gregory Hainaut <gregory.hainaut@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+/**
+ * \file pipelineobj.c
+ * \author Hainaut Gregory <gregory.hainaut@gmail.com>
+ *
+ * Implementation of pipeline object related API functions. Based on
+ * GL_ARB_separate_shader_objects extension.
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/dispatch.h"
+#include "main/enums.h"
+#include "main/hash.h"
+#include "main/mtypes.h"
+#include "main/pipelineobj.h"
+#include "main/shaderapi.h"
+#include "main/shaderobj.h"
+#include "main/transformfeedback.h"
+#include "main/uniforms.h"
+#include "program/program.h"
+#include "program/prog_parameter.h"
+#include "ralloc.h"
+#include <stdbool.h>
+#include "../glsl/glsl_parser_extras.h"
+#include "../glsl/ir_uniform.h"
+
+/**
+ * Delete a pipeline object.
+ */
+void
+_mesa_delete_pipeline_object(struct gl_context *ctx,
+ struct gl_pipeline_object *obj)
+{
+ unsigned i;
+
+ _mesa_reference_shader_program(ctx, &obj->_CurrentFragmentProgram, NULL);
+
+ for (i = 0; i < MESA_SHADER_STAGES; i++)
+ _mesa_reference_shader_program(ctx, &obj->CurrentProgram[i], NULL);
+
+ _mesa_reference_shader_program(ctx, &obj->ActiveProgram, NULL);
+ mtx_destroy(&obj->Mutex);
+ ralloc_free(obj);
+}
+
+/**
+ * Allocate and initialize a new pipeline object.
+ */
+static struct gl_pipeline_object *
+_mesa_new_pipeline_object(struct gl_context *ctx, GLuint name)
+{
+ struct gl_pipeline_object *obj = rzalloc(NULL, struct gl_pipeline_object);
+ if (obj) {
+ obj->Name = name;
+ mtx_init(&obj->Mutex, mtx_plain);
+ obj->RefCount = 1;
+ obj->Flags = _mesa_get_shader_flags();
+ }
+
+ return obj;
+}
+
+/**
+ * Initialize pipeline object state for given context.
+ */
+void
+_mesa_init_pipeline(struct gl_context *ctx)
+{
+ ctx->Pipeline.Objects = _mesa_NewHashTable();
+
+ ctx->Pipeline.Current = NULL;
+}
+
+
+/**
+ * Callback for deleting a pipeline object. Called by _mesa_HashDeleteAll().
+ */
+static void
+delete_pipelineobj_cb(GLuint id, void *data, void *userData)
+{
+ struct gl_pipeline_object *obj = (struct gl_pipeline_object *) data;
+ struct gl_context *ctx = (struct gl_context *) userData;
+ _mesa_delete_pipeline_object(ctx, obj);
+}
+
+
+/**
+ * Free pipeline state for given context.
+ */
+void
+_mesa_free_pipeline_data(struct gl_context *ctx)
+{
+ _mesa_HashDeleteAll(ctx->Pipeline.Objects, delete_pipelineobj_cb, ctx);
+ _mesa_DeleteHashTable(ctx->Pipeline.Objects);
+}
+
+/**
+ * Look up the pipeline object for the given ID.
+ *
+ * \returns
+ * Either a pointer to the pipeline object with the specified ID or \c NULL for
+ * a non-existent ID. The spec defines ID 0 as being technically
+ * non-existent.
+ */
+static inline struct gl_pipeline_object *
+lookup_pipeline_object(struct gl_context *ctx, GLuint id)
+{
+ if (id == 0)
+ return NULL;
+ else
+ return (struct gl_pipeline_object *)
+ _mesa_HashLookup(ctx->Pipeline.Objects, id);
+}
+
+/**
+ * Add the given pipeline object to the pipeline object pool.
+ */
+static void
+save_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj)
+{
+ if (obj->Name > 0) {
+ _mesa_HashInsert(ctx->Pipeline.Objects, obj->Name, obj);
+ }
+}
+
+/**
+ * Remove the given pipeline object from the pipeline object pool.
+ * Do not deallocate the pipeline object though.
+ */
+static void
+remove_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj)
+{
+ if (obj->Name > 0) {
+ _mesa_HashRemove(ctx->Pipeline.Objects, obj->Name);
+ }
+}
+
+/**
+ * Set ptr to obj w/ reference counting.
+ * Note: this should only be called from the _mesa_reference_pipeline_object()
+ * inline function.
+ */
+void
+_mesa_reference_pipeline_object_(struct gl_context *ctx,
+ struct gl_pipeline_object **ptr,
+ struct gl_pipeline_object *obj)
+{
+ assert(*ptr != obj);
+
+ if (*ptr) {
+ /* Unreference the old pipeline object */
+ GLboolean deleteFlag = GL_FALSE;
+ struct gl_pipeline_object *oldObj = *ptr;
+
+ mtx_lock(&oldObj->Mutex);
+ ASSERT(oldObj->RefCount > 0);
+ oldObj->RefCount--;
+ deleteFlag = (oldObj->RefCount == 0);
+ mtx_unlock(&oldObj->Mutex);
+
+ if (deleteFlag) {
+ _mesa_delete_pipeline_object(ctx, oldObj);
+ }
+
+ *ptr = NULL;
+ }
+ ASSERT(!*ptr);
+
+ if (obj) {
+ /* reference new pipeline object */
+ mtx_lock(&obj->Mutex);
+ if (obj->RefCount == 0) {
+ /* this pipeline's being deleted (look just above) */
+ /* Not sure this can ever really happen. Warn if it does. */
+ _mesa_problem(NULL, "referencing deleted pipeline object");
+ *ptr = NULL;
+ }
+ else {
+ obj->RefCount++;
+ *ptr = obj;
+ }
+ mtx_unlock(&obj->Mutex);
+ }
+}
+
+/**
+ * Bound program to severals stages of the pipeline
+ */
+void GLAPIENTRY
+_mesa_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program)
+{
+}
+
+/**
+ * Use the named shader program for subsequent glUniform calls (if pipeline
+ * bound)
+ */
+void GLAPIENTRY
+_mesa_ActiveShaderProgram(GLuint pipeline, GLuint program)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg = NULL;
+ struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline);
+
+ if (program != 0) {
+ shProg = _mesa_lookup_shader_program_err(ctx, program,
+ "glActiveShaderProgram(program)");
+ if (shProg == NULL)
+ return;
+ }
+
+ if (!pipe) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glActiveShaderProgram(pipeline)");
+ return;
+ }
+
+ /* Object is created by any Pipeline call but glGenProgramPipelines,
+ * glIsProgramPipeline and GetProgramPipelineInfoLog
+ */
+ pipe->EverBound = GL_TRUE;
+
+ if ((shProg != NULL) && !shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glActiveShaderProgram(program %u not linked)", shProg->Name);
+ return;
+ }
+
+ _mesa_reference_shader_program(ctx, &pipe->ActiveProgram, shProg);
+}
+
+/**
+ * Make program of the pipeline current
+ */
+void GLAPIENTRY
+_mesa_BindProgramPipeline(GLuint pipeline)
+{
+}
+
+/**
+ * Delete a set of pipeline objects.
+ *
+ * \param n Number of pipeline objects to delete.
+ * \param ids pipeline of \c n pipeline object IDs.
+ */
+void GLAPIENTRY
+_mesa_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLsizei i;
+
+ if (n < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteProgramPipelines(n<0)");
+ return;
+ }
+
+ for (i = 0; i < n; i++) {
+ struct gl_pipeline_object *obj =
+ lookup_pipeline_object(ctx, pipelines[i]);
+
+ if (obj) {
+ ASSERT(obj->Name == pipelines[i]);
+
+ /* If the pipeline object is currently bound, the spec says "If an
+ * object that is currently bound is deleted, the binding for that
+ * object reverts to zero and no program pipeline object becomes
+ * current."
+ */
+ if (obj == ctx->Pipeline.Current) {
+ _mesa_BindProgramPipeline(0);
+ }
+
+ /* The ID is immediately freed for re-use */
+ remove_pipeline_object(ctx, obj);
+
+ /* Unreference the pipeline object.
+ * If refcount hits zero, the object will be deleted.
+ */
+ _mesa_reference_pipeline_object(ctx, &obj, NULL);
+ }
+ }
+}
+
+/**
+ * Generate a set of unique pipeline object IDs and store them in \c pipelines.
+ * \param n Number of IDs to generate.
+ * \param pipelines pipeline of \c n locations to store the IDs.
+ */
+void GLAPIENTRY
+_mesa_GenProgramPipelines(GLsizei n, GLuint *pipelines)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ GLuint first;
+ GLint i;
+
+ if (n < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGenProgramPipelines(n<0)");
+ return;
+ }
+
+ if (!pipelines) {
+ return;
+ }
+
+ first = _mesa_HashFindFreeKeyBlock(ctx->Pipeline.Objects, n);
+
+ for (i = 0; i < n; i++) {
+ struct gl_pipeline_object *obj;
+ GLuint name = first + i;
+
+ obj = _mesa_new_pipeline_object(ctx, name);
+ if (!obj) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenProgramPipelines");
+ return;
+ }
+
+ save_pipeline_object(ctx, obj);
+ pipelines[i] = first + i;
+ }
+
+}
+
+/**
+ * Determine if ID is the name of an pipeline object.
+ *
+ * \param id ID of the potential pipeline object.
+ * \return \c GL_TRUE if \c id is the name of a pipeline object,
+ * \c GL_FALSE otherwise.
+ */
+GLboolean GLAPIENTRY
+_mesa_IsProgramPipeline(GLuint pipeline)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ struct gl_pipeline_object *obj = lookup_pipeline_object(ctx, pipeline);
+ if (obj == NULL)
+ return GL_FALSE;
+
+ return obj->EverBound;
+}
+
+/**
+ * glGetProgramPipelineiv() - get pipeline shader state.
+ */
+void GLAPIENTRY
+_mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline);
+
+ /* Are geometry shaders available in this context?
+ */
+ const bool has_gs = _mesa_has_geometry_shaders(ctx);
+
+ if (!pipe) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetProgramPipelineiv(pipeline)");
+ return;
+ }
+
+ /* Object is created by any Pipeline call but glGenProgramPipelines,
+ * glIsProgramPipeline and GetProgramPipelineInfoLog
+ */
+ pipe->EverBound = GL_TRUE;
+
+ switch (pname) {
+ case GL_ACTIVE_PROGRAM:
+ *params = pipe->ActiveProgram ? pipe->ActiveProgram->Name : 0;
+ return;
+ case GL_INFO_LOG_LENGTH:
+ /* FINISHME: Implement the info log.
+ */
+ *params = 0;
+ return;
+ case GL_VALIDATE_STATUS:
+ /* FINISHME: Implement validation status.
+ */
+ *params = 0;
+ return;
+ case GL_VERTEX_SHADER:
+ *params = pipe->CurrentProgram[MESA_SHADER_VERTEX]
+ ? pipe->CurrentProgram[MESA_SHADER_VERTEX]->Name : 0;
+ return;
+ case GL_TESS_EVALUATION_SHADER:
+ /* NOT YET SUPPORTED */
+ break;
+ case GL_TESS_CONTROL_SHADER:
+ /* NOT YET SUPPORTED */
+ break;
+ case GL_GEOMETRY_SHADER:
+ if (!has_gs)
+ break;
+ *params = pipe->CurrentProgram[MESA_SHADER_GEOMETRY]
+ ? pipe->CurrentProgram[MESA_SHADER_GEOMETRY]->Name : 0;
+ return;
+ case GL_FRAGMENT_SHADER:
+ *params = pipe->CurrentProgram[MESA_SHADER_FRAGMENT]
+ ? pipe->CurrentProgram[MESA_SHADER_FRAGMENT]->Name : 0;
+ return;
+ default:
+ break;
+ }
+
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetProgramPipelineiv(pname=%s)",
+ _mesa_lookup_enum_by_nr(pname));
+}
+
+/**
+ * Check compatibility of pipeline's program
+ */
+void GLAPIENTRY
+_mesa_ValidateProgramPipeline(GLuint pipeline)
+{
+}
+
+void GLAPIENTRY
+_mesa_GetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize,
+ GLsizei *length, GLchar *infoLog)
+{
+}
diff --git a/mesalib/src/mesa/main/pipelineobj.h b/mesalib/src/mesa/main/pipelineobj.h
new file mode 100644
index 000000000..46d5fab42
--- /dev/null
+++ b/mesalib/src/mesa/main/pipelineobj.h
@@ -0,0 +1,95 @@
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright © 2013 Gregory Hainaut <gregory.hainaut@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef PIPELINEOBJ_H
+#define PIPELINEOBJ_H
+
+#include "glheader.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct _glapi_table;
+struct gl_context;
+struct gl_pipeline_object;
+
+extern void
+_mesa_delete_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj);
+
+extern void
+_mesa_init_pipeline(struct gl_context *ctx);
+
+extern void
+_mesa_free_pipeline_data(struct gl_context *ctx);
+
+extern void
+_mesa_reference_pipeline_object_(struct gl_context *ctx,
+ struct gl_pipeline_object **ptr,
+ struct gl_pipeline_object *obj);
+
+static inline void
+_mesa_reference_pipeline_object(struct gl_context *ctx,
+ struct gl_pipeline_object **ptr,
+ struct gl_pipeline_object *obj)
+{
+ if (*ptr != obj)
+ _mesa_reference_pipeline_object_(ctx, ptr, obj);
+}
+
+
+extern void GLAPIENTRY
+_mesa_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program);
+
+extern void GLAPIENTRY
+_mesa_ActiveShaderProgram(GLuint pipeline, GLuint program);
+
+extern void GLAPIENTRY
+_mesa_BindProgramPipeline(GLuint pipeline);
+
+extern void GLAPIENTRY
+_mesa_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines);
+
+extern void GLAPIENTRY
+_mesa_GenProgramPipelines(GLsizei n, GLuint *pipelines);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsProgramPipeline(GLuint pipeline);
+
+extern void GLAPIENTRY
+_mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_ValidateProgramPipeline(GLuint pipeline);
+
+extern void GLAPIENTRY
+_mesa_GetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize,
+ GLsizei *length, GLchar *infoLog);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PIPELINEOBJ_H */
diff --git a/mesalib/src/mesa/main/readpix.c b/mesalib/src/mesa/main/readpix.c
index e16346896..b09cf5499 100644
--- a/mesalib/src/mesa/main/readpix.c
+++ b/mesalib/src/mesa/main/readpix.c
@@ -595,7 +595,7 @@ fast_read_depth_stencil_pixels(struct gl_context *ctx,
return GL_FALSE;
if (rb->Format != MESA_FORMAT_S8_UINT_Z24_UNORM &&
- rb->Format != MESA_FORMAT_Z24_UNORM_X8_UINT)
+ rb->Format != MESA_FORMAT_Z24_UNORM_S8_UINT)
return GL_FALSE;
ctx->Driver.MapRenderbuffer(ctx, rb, x, y, width, height, GL_MAP_READ_BIT,
@@ -1033,7 +1033,7 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height,
}
if (_mesa_is_bufferobj(ctx->Pack.BufferObj) &&
- _mesa_bufferobj_mapped(ctx->Pack.BufferObj)) {
+ _mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) {
/* buffer is mapped - that's an error */
_mesa_error(ctx, GL_INVALID_OPERATION, "glReadPixels(PBO is mapped)");
return;
diff --git a/mesalib/src/mesa/main/renderbuffer.c b/mesalib/src/mesa/main/renderbuffer.c
index 2ff96e548..0bc7f2b96 100644
--- a/mesalib/src/mesa/main/renderbuffer.c
+++ b/mesalib/src/mesa/main/renderbuffer.c
@@ -38,7 +38,7 @@
void
_mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name)
{
- _glthread_INIT_MUTEX(rb->Mutex);
+ mtx_init(&rb->Mutex, mtx_plain);
rb->ClassID = 0;
rb->Name = name;
@@ -83,7 +83,7 @@ _mesa_new_renderbuffer(struct gl_context *ctx, GLuint name)
void
_mesa_delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb)
{
- _glthread_DESTROY_MUTEX(rb->Mutex);
+ mtx_destroy(&rb->Mutex);
free(rb->Label);
free(rb);
}
@@ -153,12 +153,12 @@ _mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr,
GLboolean deleteFlag = GL_FALSE;
struct gl_renderbuffer *oldRb = *ptr;
- _glthread_LOCK_MUTEX(oldRb->Mutex);
+ mtx_lock(&oldRb->Mutex);
ASSERT(oldRb->RefCount > 0);
oldRb->RefCount--;
/*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/
deleteFlag = (oldRb->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldRb->Mutex);
+ mtx_unlock(&oldRb->Mutex);
if (deleteFlag) {
GET_CURRENT_CONTEXT(ctx);
@@ -171,10 +171,10 @@ _mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr,
if (rb) {
/* reference new renderbuffer */
- _glthread_LOCK_MUTEX(rb->Mutex);
+ mtx_lock(&rb->Mutex);
rb->RefCount++;
/*printf("RB INCR %p (%d) to %d\n", (void*) rb, rb->Name, rb->RefCount);*/
- _glthread_UNLOCK_MUTEX(rb->Mutex);
+ mtx_unlock(&rb->Mutex);
*ptr = rb;
}
}
diff --git a/mesalib/src/mesa/main/samplerobj.c b/mesalib/src/mesa/main/samplerobj.c
index 7285ef5ed..4900d5256 100644
--- a/mesalib/src/mesa/main/samplerobj.c
+++ b/mesalib/src/mesa/main/samplerobj.c
@@ -66,7 +66,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
GLboolean deleteFlag = GL_FALSE;
struct gl_sampler_object *oldSamp = *ptr;
- /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/
+ /*mtx_lock(&oldSamp->Mutex);*/
ASSERT(oldSamp->RefCount > 0);
oldSamp->RefCount--;
#if 0
@@ -74,7 +74,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
(void *) oldSamp, oldSamp->Name, oldSamp->RefCount);
#endif
deleteFlag = (oldSamp->RefCount == 0);
- /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/
+ /*mtx_unlock(&oldSamp->Mutex);*/
if (deleteFlag) {
ASSERT(ctx->Driver.DeleteSamplerObject);
@@ -87,7 +87,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
if (samp) {
/* reference new sampler */
- /*_glthread_LOCK_MUTEX(samp->Mutex);*/
+ /*mtx_lock(&samp->Mutex);*/
if (samp->RefCount == 0) {
/* this sampler's being deleted (look just above) */
/* Not sure this can every really happen. Warn if it does. */
@@ -102,7 +102,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx,
#endif
*ptr = samp;
}
- /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/
+ /*mtx_unlock(&samp->Mutex);*/
}
}
@@ -203,7 +203,7 @@ _mesa_DeleteSamplers(GLsizei count, const GLuint *samplers)
return;
}
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
for (i = 0; i < count; i++) {
if (samplers[i]) {
@@ -228,7 +228,7 @@ _mesa_DeleteSamplers(GLsizei count, const GLuint *samplers)
}
}
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c
index 65b6b16bb..5060cbb0b 100644
--- a/mesalib/src/mesa/main/shaderapi.c
+++ b/mesalib/src/mesa/main/shaderapi.c
@@ -65,8 +65,8 @@
/**
* Return mask of GLSL_x flags by examining the MESA_GLSL env var.
*/
-static GLbitfield
-get_shader_flags(void)
+GLbitfield
+_mesa_get_shader_flags(void)
{
GLbitfield flags = 0x0;
const char *env = _mesa_getenv("MESA_GLSL");
@@ -120,7 +120,11 @@ _mesa_init_shader_state(struct gl_context *ctx)
for (sh = 0; sh < MESA_SHADER_STAGES; ++sh)
memcpy(&ctx->ShaderCompilerOptions[sh], &options, sizeof(options));
- ctx->Shader.Flags = get_shader_flags();
+ ctx->Shader.Flags = _mesa_get_shader_flags();
+
+ /* Extended for ARB_separate_shader_objects */
+ ctx->Shader.RefCount = 1;
+ mtx_init(&ctx->Shader.Mutex, mtx_plain);
}
@@ -138,6 +142,10 @@ _mesa_free_shader_state(struct gl_context *ctx)
_mesa_reference_shader_program(ctx, &ctx->Shader._CurrentFragmentProgram,
NULL);
_mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL);
+
+ /* Extended for ARB_separate_shader_objects */
+ assert(ctx->Shader.RefCount == 1);
+ mtx_destroy(&ctx->Shader.Mutex);
}
@@ -383,30 +391,31 @@ detach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
_mesa_reference_shader(ctx, &shProg->Shaders[i], NULL);
/* alloc new, smaller array */
- newList =
- malloc((n - 1) * sizeof(struct gl_shader *));
+ newList = malloc((n - 1) * sizeof(struct gl_shader *));
if (!newList) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glDetachShader");
return;
}
+ /* Copy old list entries to new list, skipping removed entry at [i] */
for (j = 0; j < i; j++) {
newList[j] = shProg->Shaders[j];
}
- while (++i < n)
+ while (++i < n) {
newList[j++] = shProg->Shaders[i];
- free(shProg->Shaders);
+ }
+ /* Free old list and install new one */
+ free(shProg->Shaders);
shProg->Shaders = newList;
shProg->NumShaders = n - 1;
#ifdef DEBUG
- /* sanity check */
- {
- for (j = 0; j < shProg->NumShaders; j++) {
- assert(shProg->Shaders[j]->Type == GL_VERTEX_SHADER ||
- shProg->Shaders[j]->Type == GL_FRAGMENT_SHADER);
- assert(shProg->Shaders[j]->RefCount > 0);
- }
+ /* sanity check - make sure the new list's entries are sensible */
+ for (j = 0; j < shProg->NumShaders; j++) {
+ assert(shProg->Shaders[j]->Type == GL_VERTEX_SHADER ||
+ shProg->Shaders[j]->Type == GL_GEOMETRY_SHADER ||
+ shProg->Shaders[j]->Type == GL_FRAGMENT_SHADER);
+ assert(shProg->Shaders[j]->RefCount > 0);
}
#endif
@@ -605,6 +614,12 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
if (check_gs_query(ctx, shProg))
*params = shProg->Geom.VerticesOut;
return;
+ case GL_GEOMETRY_SHADER_INVOCATIONS:
+ if (!has_core_gs || !ctx->Extensions.ARB_gpu_shader5)
+ break;
+ if (check_gs_query(ctx, shProg))
+ *params = shProg->Geom.Invocations;
+ return;
case GL_GEOMETRY_INPUT_TYPE:
if (!has_core_gs)
break;
@@ -681,6 +696,12 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
params[i] = shProg->Comp.LocalSize[i];
return;
}
+ case GL_PROGRAM_SEPARABLE:
+ if (!ctx->Extensions.ARB_separate_shader_objects)
+ break;
+
+ *params = shProg->SeparateShader;
+ return;
default:
break;
}
@@ -817,9 +838,10 @@ compile_shader(struct gl_context *ctx, GLuint shaderObj)
sh->CompileStatus = GL_FALSE;
} else {
if (ctx->Shader.Flags & GLSL_DUMP) {
- printf("GLSL source for %s shader %d:\n",
- _mesa_shader_stage_to_string(sh->Stage), sh->Name);
- printf("%s\n", sh->Source);
+ fprintf(stderr, "GLSL source for %s shader %d:\n",
+ _mesa_shader_stage_to_string(sh->Stage), sh->Name);
+ fprintf(stderr, "%s\n", sh->Source);
+ fflush(stderr);
}
/* this call will set the shader->CompileStatus field to indicate if
@@ -833,16 +855,17 @@ compile_shader(struct gl_context *ctx, GLuint shaderObj)
if (ctx->Shader.Flags & GLSL_DUMP) {
if (sh->CompileStatus) {
- printf("GLSL IR for shader %d:\n", sh->Name);
- _mesa_print_ir(sh->ir, NULL);
- printf("\n\n");
+ fprintf(stderr, "GLSL IR for shader %d:\n", sh->Name);
+ _mesa_print_ir(stderr, sh->ir, NULL);
+ fprintf(stderr, "\n\n");
} else {
- printf("GLSL shader %d failed to compile.\n", sh->Name);
+ fprintf(stderr, "GLSL shader %d failed to compile.\n", sh->Name);
}
if (sh->InfoLog && sh->InfoLog[0] != 0) {
- printf("GLSL shader %d info log:\n", sh->Name);
- printf("%s\n", sh->InfoLog);
+ fprintf(stderr, "GLSL shader %d info log:\n", sh->Name);
+ fprintf(stderr, "%s\n", sh->InfoLog);
}
+ fflush(stderr);
}
}
@@ -1721,6 +1744,25 @@ _mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value)
*/
shProg->BinaryRetreivableHint = value;
return;
+
+ case GL_PROGRAM_SEPARABLE:
+ if (!ctx->Extensions.ARB_separate_shader_objects)
+ break;
+
+ /* Spec imply that the behavior is the same as ARB_get_program_binary
+ * Chapter 7.3 Program Objects
+ */
+ if (value != GL_TRUE && value != GL_FALSE) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glProgramParameteri(pname=%s, value=%d): "
+ "value must be 0 or 1.",
+ _mesa_lookup_enum_by_nr(pname),
+ value);
+ return;
+ }
+ shProg->SeparateShader = value;
+ return;
+
default:
break;
}
@@ -1792,19 +1834,16 @@ _mesa_ActiveProgramEXT(GLuint program)
return;
}
-
-/**
- * For GL_EXT_separate_shader_objects
- */
-GLuint GLAPIENTRY
-_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string)
+static GLuint
+_mesa_create_shader_program(struct gl_context* ctx, GLboolean separate,
+ GLenum type, GLsizei count, const GLchar* const *strings)
{
- GET_CURRENT_CONTEXT(ctx);
const GLuint shader = create_shader(ctx, type);
GLuint program = 0;
if (shader) {
- shader_source(ctx, shader, _mesa_strdup(string));
+ _mesa_ShaderSource(shader, count, strings, NULL);
+
compile_shader(ctx, shader);
program = create_shader_program(ctx);
@@ -1816,6 +1855,8 @@ _mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string)
shProg = _mesa_lookup_shader_program(ctx, program);
sh = _mesa_lookup_shader(ctx, shader);
+ shProg->SeparateShader = separate;
+
get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled);
if (compiled) {
attach_shader(ctx, program, shader);
@@ -1858,6 +1899,7 @@ _mesa_copy_linked_program_data(gl_shader_stage type,
struct gl_geometry_program *dst_gp = (struct gl_geometry_program *) dst;
dst_gp->VerticesIn = src->Geom.VerticesIn;
dst_gp->VerticesOut = src->Geom.VerticesOut;
+ dst_gp->Invocations = src->Geom.Invocations;
dst_gp->InputType = src->Geom.InputType;
dst_gp->OutputType = src->Geom.OutputType;
dst->UsesClipDistanceOut = src->Geom.UsesClipDistance;
@@ -1875,3 +1917,30 @@ _mesa_copy_linked_program_data(gl_shader_stage type,
break;
}
}
+
+
+/**
+ * For GL_EXT_separate_shader_objects
+ */
+GLuint GLAPIENTRY
+_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ return _mesa_create_shader_program(ctx, GL_FALSE, type, 1, &string);
+}
+
+/**
+ * ARB_separate_shader_objects: Compile & Link Program
+ *
+ * Basically the same as _mesa_CreateShaderProgramEXT but with support of
+ * multiple strings and sets the SeparateShader flag to true.
+ */
+GLuint GLAPIENTRY
+_mesa_CreateShaderProgramv(GLenum type, GLsizei count,
+ const GLchar* const *strings)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ return _mesa_create_shader_program(ctx, GL_TRUE, type, count, strings);
+}
diff --git a/mesalib/src/mesa/main/shaderapi.h b/mesalib/src/mesa/main/shaderapi.h
index 10f810caf..44426cc65 100644
--- a/mesalib/src/mesa/main/shaderapi.h
+++ b/mesalib/src/mesa/main/shaderapi.h
@@ -40,6 +40,9 @@ struct _glapi_table;
struct gl_context;
struct gl_shader_program;
+extern GLbitfield
+_mesa_get_shader_flags(void);
+
extern void
_mesa_copy_string(GLchar *dst, GLsizei maxLength,
GLsizei *length, const GLchar *src);
@@ -219,6 +222,11 @@ extern bool
_mesa_validate_shader_target(const struct gl_context *ctx, GLenum type);
+/* GL_ARB_separate_shader_objects */
+extern GLuint GLAPIENTRY
+_mesa_CreateShaderProgramv(GLenum type, GLsizei count,
+ const GLchar* const *strings);
+
#ifdef __cplusplus
}
#endif
diff --git a/mesalib/src/mesa/main/shaderobj.c b/mesalib/src/mesa/main/shaderobj.c
index 4f4bb69a8..d5c3d8099 100644
--- a/mesalib/src/mesa/main/shaderobj.c
+++ b/mesalib/src/mesa/main/shaderobj.c
@@ -355,6 +355,7 @@ _mesa_free_shader_program_data(struct gl_context *ctx,
}
free(shProg->Label);
+ shProg->Label = NULL;
}
diff --git a/mesalib/src/mesa/main/shared.c b/mesalib/src/mesa/main/shared.c
index c11c7f9e9..dc22025c2 100644
--- a/mesalib/src/mesa/main/shared.c
+++ b/mesalib/src/mesa/main/shared.c
@@ -62,7 +62,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
if (!shared)
return NULL;
- _glthread_INIT_MUTEX(shared->Mutex);
+ mtx_init(&shared->Mutex, mtx_plain);
shared->DisplayList = _mesa_NewHashTable();
shared->TexObjects = _mesa_NewHashTable();
@@ -113,7 +113,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx)
assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1);
/* Mutex and timestamp for texobj state validation */
- _glthread_INIT_MUTEX(shared->TexMutex);
+ mtx_init(&shared->TexMutex, mtx_plain);
shared->TextureStateStamp = 0;
shared->FrameBuffers = _mesa_NewHashTable();
@@ -186,10 +186,8 @@ delete_bufferobj_cb(GLuint id, void *data, void *userData)
{
struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data;
struct gl_context *ctx = (struct gl_context *) userData;
- if (_mesa_bufferobj_mapped(bufObj)) {
- ctx->Driver.UnmapBuffer(ctx, bufObj);
- bufObj->Pointer = NULL;
- }
+
+ _mesa_buffer_unmap_all_mappings(ctx, bufObj);
_mesa_reference_buffer_object(ctx, &bufObj, NULL);
}
@@ -356,8 +354,8 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared)
_mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx);
_mesa_DeleteHashTable(shared->TexObjects);
- _glthread_DESTROY_MUTEX(shared->Mutex);
- _glthread_DESTROY_MUTEX(shared->TexMutex);
+ mtx_destroy(&shared->Mutex);
+ mtx_destroy(&shared->TexMutex);
free(shared);
}
@@ -380,11 +378,11 @@ _mesa_reference_shared_state(struct gl_context *ctx,
struct gl_shared_state *old = *ptr;
GLboolean delete;
- _glthread_LOCK_MUTEX(old->Mutex);
+ mtx_lock(&old->Mutex);
assert(old->RefCount >= 1);
old->RefCount--;
delete = (old->RefCount == 0);
- _glthread_UNLOCK_MUTEX(old->Mutex);
+ mtx_unlock(&old->Mutex);
if (delete) {
free_shared_state(ctx, old);
@@ -395,9 +393,9 @@ _mesa_reference_shared_state(struct gl_context *ctx,
if (state) {
/* reference new state */
- _glthread_LOCK_MUTEX(state->Mutex);
+ mtx_lock(&state->Mutex);
state->RefCount++;
*ptr = state;
- _glthread_UNLOCK_MUTEX(state->Mutex);
+ mtx_unlock(&state->Mutex);
}
}
diff --git a/mesalib/src/mesa/main/syncobj.c b/mesalib/src/mesa/main/syncobj.c
index ae49db2e4..9721b14b4 100644
--- a/mesalib/src/mesa/main/syncobj.c
+++ b/mesalib/src/mesa/main/syncobj.c
@@ -184,9 +184,9 @@ _mesa_validate_sync(struct gl_context *ctx,
void GLAPIENTRY
_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
{
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
syncObj->RefCount++;
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
@@ -195,7 +195,7 @@ _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
{
struct set_entry *entry;
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
syncObj->RefCount--;
if (syncObj->RefCount == 0) {
entry = _mesa_set_search(ctx->Shared->SyncObjects,
@@ -203,11 +203,11 @@ _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
syncObj);
assert (entry != NULL);
_mesa_set_remove(ctx->Shared->SyncObjects, entry);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
ctx->Driver.DeleteSyncObject(ctx, syncObj);
} else {
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
}
@@ -288,11 +288,11 @@ _mesa_FenceSync(GLenum condition, GLbitfield flags)
ctx->Driver.FenceSync(ctx, syncObj, condition, flags);
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
_mesa_set_add(ctx->Shared->SyncObjects,
_mesa_hash_pointer(syncObj),
syncObj);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
return (GLsync) syncObj;
}
diff --git a/mesalib/src/mesa/main/texcompress_etc.c b/mesalib/src/mesa/main/texcompress_etc.c
index e3862be45..cbda68940 100644
--- a/mesalib/src/mesa/main/texcompress_etc.c
+++ b/mesalib/src/mesa/main/texcompress_etc.c
@@ -429,8 +429,7 @@ etc2_rgb8_parse_block(struct etc2_block *block,
block->is_planar_mode = true;
/* opaque bit must be set in planar mode */
- if (!block->opaque)
- block->opaque = true;
+ block->opaque = true;
for (i = 0; i < 3; i++) {
block->base_colors[0][i] = etc2_base_color_o_planar(src, i);
diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c
index bda2d8e17..004e7ebac 100644
--- a/mesalib/src/mesa/main/texformat.c
+++ b/mesalib/src/mesa/main/texformat.c
@@ -209,13 +209,13 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32:
RETURN_IF_SUPPORTED(MESA_FORMAT_Z_UNORM32);
- RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT);
RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT);
break;
case GL_DEPTH_COMPONENT16:
RETURN_IF_SUPPORTED(MESA_FORMAT_Z_UNORM16);
- RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT);
RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT);
break;
case GL_COMPRESSED_ALPHA_ARB:
@@ -426,7 +426,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,
case GL_DEPTH_STENCIL_EXT:
case GL_DEPTH24_STENCIL8_EXT:
RETURN_IF_SUPPORTED(MESA_FORMAT_S8_UINT_Z24_UNORM);
- RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT);
break;
case GL_DEPTH_COMPONENT32F:
diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c
index 133fa5376..daabf2e81 100644
--- a/mesalib/src/mesa/main/texgetimage.c
+++ b/mesalib/src/mesa/main/texgetimage.c
@@ -130,6 +130,10 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions,
const GLint depth = texImage->Depth;
GLint img, row;
+ assert(format == GL_DEPTH_STENCIL);
+ assert(type == GL_UNSIGNED_INT_24_8);
+ /* XXX type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV is not handled yet */
+
for (img = 0; img < depth; img++) {
GLubyte *srcMap;
GLint rowstride;
@@ -145,8 +149,11 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions,
void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels,
width, height, format, type,
img, row, 0);
- /* XXX Z24_S8 vs. S8_Z24??? */
- memcpy(dest, src, width * sizeof(GLuint));
+ /* Unpack from texture's format to GL's z24_s8 layout */
+ _mesa_unpack_uint_24_8_depth_stencil_row(texImage->TexFormat,
+ width,
+ (const GLuint *) src,
+ dest);
if (ctx->Pack.SwapBytes) {
_mesa_swap4((GLuint *) dest, width);
}
@@ -635,7 +642,8 @@ _mesa_get_teximage(struct gl_context *ctx,
*/
GLubyte *buf = (GLubyte *)
ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size,
- GL_MAP_WRITE_BIT, ctx->Pack.BufferObj);
+ GL_MAP_WRITE_BIT, ctx->Pack.BufferObj,
+ MAP_INTERNAL);
if (!buf) {
/* out of memory or other unexpected error */
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage(map PBO failed)");
@@ -664,7 +672,7 @@ _mesa_get_teximage(struct gl_context *ctx,
}
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj, MAP_INTERNAL);
}
}
@@ -689,7 +697,8 @@ _mesa_get_compressed_teximage(struct gl_context *ctx,
/* pack texture image into a PBO */
GLubyte *buf = (GLubyte *)
ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size,
- GL_MAP_WRITE_BIT, ctx->Pack.BufferObj);
+ GL_MAP_WRITE_BIT, ctx->Pack.BufferObj,
+ MAP_INTERNAL);
if (!buf) {
/* out of memory or other unexpected error */
_mesa_error(ctx, GL_OUT_OF_MEMORY,
@@ -731,7 +740,7 @@ _mesa_get_compressed_teximage(struct gl_context *ctx,
}
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj, MAP_INTERNAL);
}
}
@@ -861,7 +870,7 @@ getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level,
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
/* PBO should not be mapped */
- if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) {
+ if (_mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetTexImage(PBO is mapped)");
return GL_TRUE;
@@ -1004,7 +1013,7 @@ getcompressedteximage_error_check(struct gl_context *ctx, GLenum target,
}
/* make sure PBO is not mapped */
- if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) {
+ if (_mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetCompressedTexImage(PBO is mapped)");
return GL_TRUE;
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index 4d635fe7f..0519d221f 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -397,11 +397,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
if (ctx->Extensions.ARB_texture_rg) {
switch (internalFormat) {
case GL_R16F:
- /* R16F depends on both ARB_half_float_pixel and ARB_texture_float.
- */
- if (!ctx->Extensions.ARB_half_float_pixel)
- break;
- /* FALLTHROUGH */
case GL_R32F:
if (!ctx->Extensions.ARB_texture_float)
break;
@@ -422,11 +417,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
return GL_RED;
case GL_RG16F:
- /* RG16F depends on both ARB_half_float_pixel and ARB_texture_float.
- */
- if (!ctx->Extensions.ARB_half_float_pixel)
- break;
- /* FALLTHROUGH */
case GL_RG32F:
if (!ctx->Extensions.ARB_texture_float)
break;
@@ -2254,9 +2244,10 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
/* This will detect any invalid internalFormat value */
if (!_mesa_is_compressed_format(ctx, internalFormat)) {
- reason = "internalFormat";
- error = GL_INVALID_ENUM;
- goto error;
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glCompressedTexImage%dD(internalFormat=%s)",
+ dimensions, _mesa_lookup_enum_by_nr(internalFormat));
+ return GL_TRUE;
}
switch (internalFormat) {
@@ -2348,6 +2339,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions,
return GL_FALSE;
error:
+ /* Note: not all error paths exit through here. */
_mesa_error(ctx, error, "glCompressedTexImage%dD(%s)", dimensions, reason);
return GL_TRUE;
}
@@ -2563,7 +2555,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
break;
default:
_mesa_error(ctx, GL_INVALID_VALUE,
- "glCopyTexImage%dD(internalFormat)", dimensions);
+ "glCopyTexImage%dD(internalFormat=%s)", dimensions,
+ _mesa_lookup_enum_by_nr(internalFormat));
return GL_TRUE;
}
}
@@ -2571,7 +2564,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
baseFormat = _mesa_base_tex_format(ctx, internalFormat);
if (baseFormat < 0) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexImage%dD(internalFormat)", dimensions);
+ "glCopyTexImage%dD(internalFormat=%s)", dimensions,
+ _mesa_lookup_enum_by_nr(internalFormat));
return GL_TRUE;
}
@@ -2580,7 +2574,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
if (_mesa_is_color_format(internalFormat)) {
if (rb_base_format < 0) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glCopyTexImage%dD(internalFormat)", dimensions);
+ "glCopyTexImage%dD(internalFormat=%s)", dimensions,
+ _mesa_lookup_enum_by_nr(internalFormat));
return GL_TRUE;
}
}
@@ -2606,7 +2601,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
}
if (!valid) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexImage%dD(internalFormat)", dimensions);
+ "glCopyTexImage%dD(internalFormat=%s)", dimensions,
+ _mesa_lookup_enum_by_nr(internalFormat));
return GL_TRUE;
}
}
@@ -4183,10 +4179,18 @@ _mesa_validate_texbuffer_format(const struct gl_context *ctx,
return MESA_FORMAT_NONE;
datatype = _mesa_get_format_datatype(format);
- if (datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float)
- return MESA_FORMAT_NONE;
- if (datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel)
+ /* The GL_ARB_texture_buffer_object spec says:
+ *
+ * "If ARB_texture_float is not supported, references to the
+ * floating-point internal formats provided by that extension should be
+ * removed, and such formats may not be passed to TexBufferARB."
+ *
+ * As a result, GL_HALF_FLOAT internal format depends on both
+ * GL_ARB_texture_float and GL_ARB_half_float_pixel.
+ */
+ if ((datatype == GL_FLOAT || datatype == GL_HALF_FLOAT) &&
+ !ctx->Extensions.ARB_texture_float)
return MESA_FORMAT_NONE;
if (!ctx->Extensions.ARB_texture_rg) {
diff --git a/mesalib/src/mesa/main/teximage.h b/mesalib/src/mesa/main/teximage.h
index 5f8a47776..51d94d17e 100644
--- a/mesalib/src/mesa/main/teximage.h
+++ b/mesalib/src/mesa/main/teximage.h
@@ -163,7 +163,7 @@ _mesa_legal_texture_base_format_for_target(struct gl_context *ctx,
static inline void
_mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
- _glthread_LOCK_MUTEX(ctx->Shared->TexMutex);
+ mtx_lock(&ctx->Shared->TexMutex);
ctx->Shared->TextureStateStamp++;
(void) texObj;
}
@@ -172,7 +172,7 @@ static inline void
_mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
(void) texObj;
- _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex);
+ mtx_unlock(&ctx->Shared->TexMutex);
}
/*@}*/
diff --git a/mesalib/src/mesa/main/texobj.c b/mesalib/src/mesa/main/texobj.c
index 6adc0ae84..3375fe36b 100644
--- a/mesalib/src/mesa/main/texobj.c
+++ b/mesalib/src/mesa/main/texobj.c
@@ -115,7 +115,7 @@ _mesa_initialize_texture_object( struct gl_context *ctx,
memset(obj, 0, sizeof(*obj));
/* init the non-zero fields */
- _glthread_INIT_MUTEX(obj->Mutex);
+ mtx_init(&obj->Mutex, mtx_plain);
obj->RefCount = 1;
obj->Name = name;
obj->Target = target;
@@ -237,7 +237,7 @@ _mesa_delete_texture_object(struct gl_context *ctx,
_mesa_reference_buffer_object(ctx, &texObj->BufferObject, NULL);
/* destroy the mutex -- it may have allocated memory (eg on bsd) */
- _glthread_DESTROY_MUTEX(texObj->Mutex);
+ mtx_destroy(&texObj->Mutex);
free(texObj->Label);
@@ -374,12 +374,12 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr,
ASSERT(valid_texture_object(oldTex));
(void) valid_texture_object; /* silence warning in release builds */
- _glthread_LOCK_MUTEX(oldTex->Mutex);
+ mtx_lock(&oldTex->Mutex);
ASSERT(oldTex->RefCount > 0);
oldTex->RefCount--;
deleteFlag = (oldTex->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldTex->Mutex);
+ mtx_unlock(&oldTex->Mutex);
if (deleteFlag) {
GET_CURRENT_CONTEXT(ctx);
@@ -396,7 +396,7 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr,
if (tex) {
/* reference new texture */
ASSERT(valid_texture_object(tex));
- _glthread_LOCK_MUTEX(tex->Mutex);
+ mtx_lock(&tex->Mutex);
if (tex->RefCount == 0) {
/* this texture's being deleted (look just above) */
/* Not sure this can every really happen. Warn if it does. */
@@ -407,7 +407,7 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr,
tex->RefCount++;
*ptr = tex;
}
- _glthread_UNLOCK_MUTEX(tex->Mutex);
+ mtx_unlock(&tex->Mutex);
}
}
@@ -1009,7 +1009,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures )
/*
* This must be atomic (generation and allocation of texture IDs)
*/
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
first = _mesa_HashFindFreeKeyBlock(ctx->Shared->TexObjects, n);
@@ -1020,7 +1020,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures )
GLenum target = 0;
texObj = ctx->Driver.NewTextureObject(ctx, name, target);
if (!texObj) {
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenTextures");
return;
}
@@ -1031,7 +1031,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures )
textures[i] = name;
}
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
@@ -1178,9 +1178,9 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures)
/* The texture _name_ is now free for re-use.
* Remove it from the hash table now.
*/
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
_mesa_HashRemove(ctx->Shared->TexObjects, delObj->Name);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
/* Unreference the texobj. If refcount hits zero, the texture
* will be deleted.
@@ -1313,9 +1313,9 @@ _mesa_BindTexture( GLenum target, GLuint texName )
}
/* and insert it into hash table */
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
_mesa_HashInsert(ctx->Shared->TexObjects, texName, newTexObj);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
}
newTexObj->Target = target;
}
@@ -1327,10 +1327,10 @@ _mesa_BindTexture( GLenum target, GLuint texName )
*/
{
GLboolean early_out;
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_lock(&ctx->Shared->Mutex);
early_out = ((ctx->Shared->RefCount == 1)
&& (newTexObj == texUnit->CurrentTex[targetIndex]));
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ mtx_unlock(&ctx->Shared->Mutex);
if (early_out) {
return;
}
@@ -1493,7 +1493,7 @@ _mesa_IsTexture( GLuint texture )
void
_mesa_lock_context_textures( struct gl_context *ctx )
{
- _glthread_LOCK_MUTEX(ctx->Shared->TexMutex);
+ mtx_lock(&ctx->Shared->TexMutex);
if (ctx->Shared->TextureStateStamp != ctx->TextureStateTimestamp) {
ctx->NewState |= _NEW_TEXTURE;
@@ -1506,7 +1506,7 @@ void
_mesa_unlock_context_textures( struct gl_context *ctx )
{
assert(ctx->Shared->TextureStateStamp == ctx->TextureStateTimestamp);
- _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex);
+ mtx_unlock(&ctx->Shared->TexMutex);
}
void GLAPIENTRY
diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c
index b7ed50dd5..bbdbc2763 100644
--- a/mesalib/src/mesa/main/texparam.c
+++ b/mesalib/src/mesa/main/texparam.c
@@ -986,6 +986,9 @@ legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target)
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
case GL_PROXY_TEXTURE_CUBE_MAP_ARB:
return ctx->Extensions.ARB_texture_cube_map;
+ case GL_TEXTURE_CUBE_MAP_ARRAY_ARB:
+ case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB:
+ return ctx->Extensions.ARB_texture_cube_map_array;
case GL_TEXTURE_RECTANGLE_NV:
case GL_PROXY_TEXTURE_RECTANGLE_NV:
return ctx->Extensions.NV_texture_rectangle;
diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c
index 1e4308a04..3e22a0b46 100644
--- a/mesalib/src/mesa/main/texstore.c
+++ b/mesalib/src/mesa/main/texstore.c
@@ -1049,7 +1049,7 @@ _mesa_texstore_x8_z24(TEXSTORE_PARAMS)
const GLuint depthScale = 0xffffff;
(void) dims;
- ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_S8_UINT);
+ ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_X8_UINT);
{
/* general path */
@@ -2558,7 +2558,7 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS)
GLuint *depth;
GLubyte *stencil;
- ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_X8_UINT);
+ ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_S8_UINT);
ASSERT(srcFormat == GL_DEPTH_STENCIL_EXT ||
srcFormat == GL_DEPTH_COMPONENT ||
srcFormat == GL_STENCIL_INDEX);
@@ -3699,9 +3699,9 @@ _mesa_get_texstore_func(mesa_format format)
table[MESA_FORMAT_G16R16_UNORM] = _mesa_texstore_unorm1616;
table[MESA_FORMAT_B10G10R10A2_UNORM] = _mesa_texstore_argb2101010;
table[MESA_FORMAT_S8_UINT_Z24_UNORM] = _mesa_texstore_z24_s8;
- table[MESA_FORMAT_Z24_UNORM_X8_UINT] = _mesa_texstore_s8_z24;
+ table[MESA_FORMAT_Z24_UNORM_S8_UINT] = _mesa_texstore_s8_z24;
table[MESA_FORMAT_Z_UNORM16] = _mesa_texstore_z16;
- table[MESA_FORMAT_Z24_UNORM_S8_UINT] = _mesa_texstore_x8_z24;
+ table[MESA_FORMAT_Z24_UNORM_X8_UINT] = _mesa_texstore_x8_z24;
table[MESA_FORMAT_X8Z24_UNORM] = _mesa_texstore_z24_x8;
table[MESA_FORMAT_Z_UNORM32] = _mesa_texstore_z32;
table[MESA_FORMAT_S_UINT8] = _mesa_texstore_s8;
diff --git a/mesalib/src/mesa/main/uniform_query.cpp b/mesalib/src/mesa/main/uniform_query.cpp
index 82d7628e8..8cc5da752 100644
--- a/mesalib/src/mesa/main/uniform_query.cpp
+++ b/mesalib/src/mesa/main/uniform_query.cpp
@@ -684,6 +684,7 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
match = true;
break;
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
match = (basicType == GLSL_TYPE_INT);
break;
default:
@@ -735,6 +736,22 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
}
}
+ if (uni->type->is_image()) {
+ int i;
+
+ for (i = 0; i < count; i++) {
+ const int unit = ((GLint *) values)[i];
+
+ /* check that the image unit is legal */
+ if (unit < 0 || unit >= (int)ctx->Const.MaxImageUnits) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glUniform1i(invalid image unit index for uniform %d)",
+ location);
+ return;
+ }
+ }
+ }
+
/* Page 82 (page 96 of the PDF) of the OpenGL 2.1 spec says:
*
* "When loading N elements starting at an arbitrary position k in a
@@ -830,6 +847,25 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg,
}
}
}
+
+ /* If the uniform is an image, update the mapping from image
+ * uniforms to image units present in the shader data structure.
+ */
+ if (uni->type->is_image()) {
+ int i, j;
+
+ for (i = 0; i < MESA_SHADER_STAGES; i++) {
+ if (uni->image[i].active) {
+ struct gl_shader *sh = shProg->_LinkedShaders[i];
+
+ for (j = 0; j < count; j++)
+ sh->ImageUnits[uni->image[i].index + offset + j] =
+ ((GLint *) values)[j];
+ }
+ }
+
+ ctx->NewDriverState |= ctx->DriverFlags.NewImageUnits;
+ }
}
/**
diff --git a/mesalib/src/mesa/main/uniforms.c b/mesalib/src/mesa/main/uniforms.c
index 071d668f3..c25c2df7e 100644
--- a/mesalib/src/mesa/main/uniforms.c
+++ b/mesalib/src/mesa/main/uniforms.c
@@ -270,6 +270,197 @@ _mesa_Uniform4iv(GLint location, GLsizei count, const GLint * value)
_mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC4);
}
+/** Same as above with direct state access **/
+void GLAPIENTRY
+_mesa_ProgramUniform1f(GLuint program, GLint location, GLfloat v0)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1f");
+ _mesa_uniform(ctx, shProg, location, 1, &v0, GL_FLOAT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat v[2];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2f");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1,
+ GLfloat v2)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat v[3];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3f");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1,
+ GLfloat v2, GLfloat v3)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat v[4];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ v[3] = v3;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4f");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC4);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1i(GLuint program, GLint location, GLint v0)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1i");
+ _mesa_uniform(ctx, shProg, location, 1, &v0, GL_INT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint v[2];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2i");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1,
+ GLint v2)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint v[3];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3i");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1,
+ GLint v2, GLint v3)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint v[4];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ v[3] = v3;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4i");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC4);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1fv(GLuint program, GLint location, GLsizei count,
+ const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1fv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2fv(GLuint program, GLint location, GLsizei count,
+ const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform2fv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3fv(GLuint program, GLint location, GLsizei count,
+ const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform3fv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4fv(GLuint program, GLint location, GLsizei count,
+ const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform4fv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC4);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1iv(GLuint program, GLint location, GLsizei count,
+ const GLint * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1iv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_INT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2iv(GLuint program, GLint location, GLsizei count,
+ const GLint * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform2iv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3iv(GLuint program, GLint location, GLsizei count,
+ const GLint * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform3iv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4iv(GLuint program, GLint location, GLsizei count,
+ const GLint * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform4iv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC4);
+}
+
/** OpenGL 3.0 GLuint-valued functions **/
void GLAPIENTRY
@@ -369,6 +560,140 @@ _mesa_UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose,
4, 4, location, count, transpose, value);
}
+/** Same as above with direct state access **/
+
+void GLAPIENTRY
+_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1ui");
+ _mesa_uniform(ctx, shProg, location, 1, &v0, GL_UNSIGNED_INT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint v[2];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ shProg = _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform2ui");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1,
+ GLuint v2)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint v[3];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ shProg = _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform3ui");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1,
+ GLuint v2, GLuint v3)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLuint v[4];
+ struct gl_shader_program *shProg;
+ v[0] = v0;
+ v[1] = v1;
+ v[2] = v2;
+ v[3] = v3;
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4ui");
+ _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC4);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform1uiv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform2uiv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC2);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform3uiv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC3);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniform4uiv");
+ _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC4);
+}
+
+
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix2fv");
+ _mesa_uniform_matrix(ctx, shProg, 2, 2, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix3fv");
+ _mesa_uniform_matrix(ctx, shProg, 3, 3, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix4fv");
+ _mesa_uniform_matrix(ctx, shProg, 4, 4, location, count, transpose, value);
+}
+
/**
* Non-square UniformMatrix are OpenGL 2.1
@@ -427,6 +752,74 @@ _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
4, 3, location, count, transpose, value);
}
+/** Same as above with direct state access **/
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix2x3fv");
+ _mesa_uniform_matrix(ctx, shProg, 2, 3, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix3x2fv");
+ _mesa_uniform_matrix(ctx, shProg, 3, 2, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix2x4fv");
+ _mesa_uniform_matrix(ctx, shProg, 2, 4, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix4x2fv");
+ _mesa_uniform_matrix(ctx, shProg, 4, 2, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix3x4fv");
+ _mesa_uniform_matrix(ctx, shProg, 3, 4, location, count, transpose, value);
+}
+
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat * value)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg =
+ _mesa_lookup_shader_program_err(ctx, program,
+ "glProgramUniformMatrix4x3fv");
+ _mesa_uniform_matrix(ctx, shProg, 4, 3, location, count, transpose, value);
+}
+
void GLAPIENTRY
_mesa_GetnUniformfvARB(GLhandleARB program, GLint location,
diff --git a/mesalib/src/mesa/main/uniforms.h b/mesalib/src/mesa/main/uniforms.h
index f7cac6328..bd50fd9b8 100644
--- a/mesalib/src/mesa/main/uniforms.h
+++ b/mesalib/src/mesa/main/uniforms.h
@@ -111,6 +111,89 @@ _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
void GLAPIENTRY
_mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value);
+
+void GLAPIENTRY
+_mesa_ProgramUniform1f(GLuint program, GLint, GLfloat);
+void GLAPIENTRY
+_mesa_ProgramUniform2f(GLuint program, GLint, GLfloat, GLfloat);
+void GLAPIENTRY
+_mesa_ProgramUniform3f(GLuint program, GLint, GLfloat, GLfloat, GLfloat);
+void GLAPIENTRY
+_mesa_ProgramUniform4f(GLuint program, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+void GLAPIENTRY
+_mesa_ProgramUniform1i(GLuint program, GLint, GLint);
+void GLAPIENTRY
+_mesa_ProgramUniform2i(GLuint program, GLint, GLint, GLint);
+void GLAPIENTRY
+_mesa_ProgramUniform3i(GLuint program, GLint, GLint, GLint, GLint);
+void GLAPIENTRY
+_mesa_ProgramUniform4i(GLuint program, GLint, GLint, GLint, GLint, GLint);
+void GLAPIENTRY
+_mesa_ProgramUniform1fv(GLuint program, GLint, GLsizei, const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniform2fv(GLuint program, GLint, GLsizei, const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniform3fv(GLuint program, GLint, GLsizei, const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniform4fv(GLuint program, GLint, GLsizei, const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniform1iv(GLuint program, GLint, GLsizei, const GLint *);
+void GLAPIENTRY
+_mesa_ProgramUniform2iv(GLuint program, GLint, GLsizei, const GLint *);
+void GLAPIENTRY
+_mesa_ProgramUniform3iv(GLuint program, GLint, GLsizei, const GLint *);
+void GLAPIENTRY
+_mesa_ProgramUniform4iv(GLuint program, GLint, GLsizei, const GLint *);
+void GLAPIENTRY
+_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0);
+void GLAPIENTRY
+_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1);
+void GLAPIENTRY
+_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1,
+ GLuint v2);
+void GLAPIENTRY
+_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1,
+ GLuint v2, GLuint v3);
+void GLAPIENTRY
+_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value);
+void GLAPIENTRY
+_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value);
+void GLAPIENTRY
+_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value);
+void GLAPIENTRY
+_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count,
+ const GLuint *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2fv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3fv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4fv(GLuint program, GLint, GLsizei, GLboolean,
+ const GLfloat *);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+void GLAPIENTRY
+_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count,
+ GLboolean transpose, const GLfloat *value);
+
void GLAPIENTRY
_mesa_GetnUniformfvARB(GLhandleARB, GLint, GLsizei, GLfloat *);
void GLAPIENTRY
diff --git a/mesalib/src/mesa/main/vdpau.c b/mesalib/src/mesa/main/vdpau.c
index 359757607..c2cf20664 100644
--- a/mesalib/src/mesa/main/vdpau.c
+++ b/mesalib/src/mesa/main/vdpau.c
@@ -205,7 +205,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target,
numTextureNames, textureNames);
}
-void GLAPIENTRY
+GLboolean GLAPIENTRY
_mesa_VDPAUIsSurfaceNV(GLintptr surface)
{
struct vdp_surface *surf = (struct vdp_surface *)surface;
@@ -213,13 +213,14 @@ _mesa_VDPAUIsSurfaceNV(GLintptr surface)
if (!ctx->vdpDevice || !ctx->vdpGetProcAddress || !ctx->vdpSurfaces) {
_mesa_error(ctx, GL_INVALID_OPERATION, "VDPAUIsSurfaceNV");
- return;
+ return false;
}
if (!_mesa_set_search(ctx->vdpSurfaces, _mesa_hash_pointer(surf), surf)) {
- _mesa_error(ctx, GL_INVALID_VALUE, "VDPAUIsSurfaceNV");
- return;
+ return false;
}
+
+ return true;
}
void GLAPIENTRY
diff --git a/mesalib/src/mesa/main/vdpau.h b/mesalib/src/mesa/main/vdpau.h
index f32d6dacb..627609c50 100644
--- a/mesalib/src/mesa/main/vdpau.h
+++ b/mesalib/src/mesa/main/vdpau.h
@@ -50,7 +50,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target,
GLsizei numTextureNames,
const GLuint *textureNames);
-extern void GLAPIENTRY
+extern GLboolean GLAPIENTRY
_mesa_VDPAUIsSurfaceNV(GLintptr surface);
extern void GLAPIENTRY
diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c
index 587cb9ad5..63cba26da 100644
--- a/mesalib/src/mesa/main/version.c
+++ b/mesalib/src/mesa/main/version.c
@@ -232,7 +232,6 @@ compute_version(struct gl_context *ctx)
(ctx->API == API_OPENGL_CORE ||
ctx->Extensions.ARB_color_buffer_float) &&
ctx->Extensions.ARB_depth_buffer_float &&
- ctx->Extensions.ARB_half_float_pixel &&
ctx->Extensions.ARB_half_float_vertex &&
ctx->Extensions.ARB_map_buffer_range &&
ctx->Extensions.ARB_shader_texture_lod &&
diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp
index 74c512b33..9919874a6 100644
--- a/mesalib/src/mesa/program/ir_to_mesa.cpp
+++ b/mesalib/src/mesa/program/ir_to_mesa.cpp
@@ -618,6 +618,7 @@ type_size(const struct glsl_type *type)
}
return size;
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
/* Samplers take up one slot in UNIFORMS[], but they're baked in
* at link time.
*/
@@ -2559,6 +2560,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx,
columns = 1;
break;
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
format = uniform_native;
columns = 1;
break;
@@ -2916,16 +2918,17 @@ get_mesa_program(struct gl_context *ctx,
set_branchtargets(&v, mesa_instructions, num_instructions);
if (ctx->Shader.Flags & GLSL_DUMP) {
- printf("\n");
- printf("GLSL IR for linked %s program %d:\n", target_string,
- shader_program->Name);
- _mesa_print_ir(shader->ir, NULL);
- printf("\n");
- printf("\n");
- printf("Mesa IR for linked %s program %d:\n", target_string,
- shader_program->Name);
+ fprintf(stderr, "\n");
+ fprintf(stderr, "GLSL IR for linked %s program %d:\n", target_string,
+ shader_program->Name);
+ _mesa_print_ir(stderr, shader->ir, NULL);
+ fprintf(stderr, "\n");
+ fprintf(stderr, "\n");
+ fprintf(stderr, "Mesa IR for linked %s program %d:\n", target_string,
+ shader_program->Name);
print_program(mesa_instructions, mesa_instruction_annotation,
num_instructions);
+ fflush(stderr);
}
prog->Instructions = mesa_instructions;
@@ -3095,12 +3098,12 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
if (ctx->Shader.Flags & GLSL_DUMP) {
if (!prog->LinkStatus) {
- printf("GLSL shader program %d failed to link\n", prog->Name);
+ fprintf(stderr, "GLSL shader program %d failed to link\n", prog->Name);
}
if (prog->InfoLog && prog->InfoLog[0] != 0) {
- printf("GLSL shader program %d info log:\n", prog->Name);
- printf("%s\n", prog->InfoLog);
+ fprintf(stderr, "GLSL shader program %d info log:\n", prog->Name);
+ fprintf(stderr, "%s\n", prog->InfoLog);
}
}
}
diff --git a/mesalib/src/mesa/program/program.c b/mesalib/src/mesa/program/program.c
index fa80bc58c..b7332fccf 100644
--- a/mesalib/src/mesa/program/program.c
+++ b/mesalib/src/mesa/program/program.c
@@ -424,7 +424,7 @@ _mesa_reference_program_(struct gl_context *ctx,
if (*ptr) {
GLboolean deleteFlag;
- /*_glthread_LOCK_MUTEX((*ptr)->Mutex);*/
+ /*mtx_lock(&(*ptr)->Mutex);*/
#if 0
printf("Program %p ID=%u Target=%s Refcount-- to %d\n",
*ptr, (*ptr)->Id,
@@ -436,7 +436,7 @@ _mesa_reference_program_(struct gl_context *ctx,
(*ptr)->RefCount--;
deleteFlag = ((*ptr)->RefCount == 0);
- /*_glthread_UNLOCK_MUTEX((*ptr)->Mutex);*/
+ /*mtx_lock(&(*ptr)->Mutex);*/
if (deleteFlag) {
ASSERT(ctx);
@@ -448,7 +448,7 @@ _mesa_reference_program_(struct gl_context *ctx,
assert(!*ptr);
if (prog) {
- /*_glthread_LOCK_MUTEX(prog->Mutex);*/
+ /*mtx_lock(&prog->Mutex);*/
prog->RefCount++;
#if 0
printf("Program %p ID=%u Target=%s Refcount++ to %d\n",
@@ -457,7 +457,7 @@ _mesa_reference_program_(struct gl_context *ctx,
(prog->Target == MESA_GEOMETRY_PROGRAM ? "GP" : "FP")),
prog->RefCount);
#endif
- /*_glthread_UNLOCK_MUTEX(prog->Mutex);*/
+ /*mtx_unlock(&prog->Mutex);*/
}
*ptr = prog;
@@ -550,6 +550,7 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
struct gl_geometry_program *gpc = gl_geometry_program(clone);
gpc->VerticesOut = gp->VerticesOut;
gpc->InputType = gp->InputType;
+ gpc->Invocations = gp->Invocations;
gpc->OutputType = gp->OutputType;
}
break;
diff --git a/mesalib/src/mesa/state_tracker/st_atom_scissor.c b/mesalib/src/mesa/state_tracker/st_atom_scissor.c
index a1f72da47..a19ade1fa 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_scissor.c
+++ b/mesalib/src/mesa/state_tracker/st_atom_scissor.c
@@ -43,51 +43,56 @@
static void
update_scissor( struct st_context *st )
{
- struct pipe_scissor_state scissor;
+ struct pipe_scissor_state scissor[PIPE_MAX_VIEWPORTS];
const struct gl_context *ctx = st->ctx;
const struct gl_framebuffer *fb = ctx->DrawBuffer;
GLint miny, maxy;
+ int i;
+ bool changed = false;
+ for (i = 0 ; i < ctx->Const.MaxViewports; i++) {
+ scissor[i].minx = 0;
+ scissor[i].miny = 0;
+ scissor[i].maxx = fb->Width;
+ scissor[i].maxy = fb->Height;
- scissor.minx = 0;
- scissor.miny = 0;
- scissor.maxx = fb->Width;
- scissor.maxy = fb->Height;
+ if (ctx->Scissor.EnableFlags & (1 << i)) {
+ /* need to be careful here with xmax or ymax < 0 */
+ GLint xmax = MAX2(0, ctx->Scissor.ScissorArray[i].X + ctx->Scissor.ScissorArray[i].Width);
+ GLint ymax = MAX2(0, ctx->Scissor.ScissorArray[i].Y + ctx->Scissor.ScissorArray[i].Height);
- if (ctx->Scissor.EnableFlags & 1) {
- /* need to be careful here with xmax or ymax < 0 */
- GLint xmax = MAX2(0, ctx->Scissor.ScissorArray[0].X + ctx->Scissor.ScissorArray[0].Width);
- GLint ymax = MAX2(0, ctx->Scissor.ScissorArray[0].Y + ctx->Scissor.ScissorArray[0].Height);
+ if (ctx->Scissor.ScissorArray[i].X > (GLint)scissor[i].minx)
+ scissor[i].minx = ctx->Scissor.ScissorArray[i].X;
+ if (ctx->Scissor.ScissorArray[i].Y > (GLint)scissor[i].miny)
+ scissor[i].miny = ctx->Scissor.ScissorArray[i].Y;
- if (ctx->Scissor.ScissorArray[0].X > (GLint)scissor.minx)
- scissor.minx = ctx->Scissor.ScissorArray[0].X;
- if (ctx->Scissor.ScissorArray[0].Y > (GLint)scissor.miny)
- scissor.miny = ctx->Scissor.ScissorArray[0].Y;
+ if (xmax < (GLint) scissor[i].maxx)
+ scissor[i].maxx = xmax;
+ if (ymax < (GLint) scissor[i].maxy)
+ scissor[i].maxy = ymax;
+
+ /* check for null space */
+ if (scissor[i].minx >= scissor[i].maxx || scissor[i].miny >= scissor[i].maxy)
+ scissor[i].minx = scissor[i].miny = scissor[i].maxx = scissor[i].maxy = 0;
+ }
- if (xmax < (GLint) scissor.maxx)
- scissor.maxx = xmax;
- if (ymax < (GLint) scissor.maxy)
- scissor.maxy = ymax;
+ /* Now invert Y if needed.
+ * Gallium drivers use the convention Y=0=top for surfaces.
+ */
+ if (st_fb_orientation(fb) == Y_0_TOP) {
+ miny = fb->Height - scissor[i].maxy;
+ maxy = fb->Height - scissor[i].miny;
+ scissor[i].miny = miny;
+ scissor[i].maxy = maxy;
+ }
- /* check for null space */
- if (scissor.minx >= scissor.maxx || scissor.miny >= scissor.maxy)
- scissor.minx = scissor.miny = scissor.maxx = scissor.maxy = 0;
- }
-
- /* Now invert Y if needed.
- * Gallium drivers use the convention Y=0=top for surfaces.
- */
- if (st_fb_orientation(fb) == Y_0_TOP) {
- miny = fb->Height - scissor.maxy;
- maxy = fb->Height - scissor.miny;
- scissor.miny = miny;
- scissor.maxy = maxy;
- }
-
- if (memcmp(&scissor, &st->state.scissor, sizeof(scissor)) != 0) {
- /* state has changed */
- st->state.scissor = scissor; /* struct copy */
- st->pipe->set_scissor_states(st->pipe, 0, 1, &scissor); /* activate */
+ if (memcmp(&scissor[i], &st->state.scissor[i], sizeof(scissor)) != 0) {
+ /* state has changed */
+ st->state.scissor[i] = scissor[i]; /* struct copy */
+ changed = true;
+ }
}
+ if (changed)
+ st->pipe->set_scissor_states(st->pipe, 0, ctx->Const.MaxViewports, scissor); /* activate */
}
diff --git a/mesalib/src/mesa/state_tracker/st_atom_viewport.c b/mesalib/src/mesa/state_tracker/st_atom_viewport.c
index 8c6d679a0..7584f9b3d 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_viewport.c
+++ b/mesalib/src/mesa/state_tracker/st_atom_viewport.c
@@ -43,7 +43,7 @@ update_viewport( struct st_context *st )
{
struct gl_context *ctx = st->ctx;
GLfloat yScale, yBias;
-
+ int i;
/* _NEW_BUFFERS
*/
if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) {
@@ -61,26 +61,29 @@ update_viewport( struct st_context *st )
/* _NEW_VIEWPORT
*/
+ for (i = 0; i < ctx->Const.MaxViewports; i++)
{
- GLfloat x = ctx->ViewportArray[0].X;
- GLfloat y = ctx->ViewportArray[0].Y;
- GLfloat z = ctx->ViewportArray[0].Near;
- GLfloat half_width = ctx->ViewportArray[0].Width * 0.5f;
- GLfloat half_height = ctx->ViewportArray[0].Height * 0.5f;
- GLfloat half_depth = (GLfloat)(ctx->ViewportArray[0].Far - ctx->ViewportArray[0].Near) * 0.5f;
+ GLfloat x = ctx->ViewportArray[i].X;
+ GLfloat y = ctx->ViewportArray[i].Y;
+ GLfloat z = ctx->ViewportArray[i].Near;
+ GLfloat half_width = ctx->ViewportArray[i].Width * 0.5f;
+ GLfloat half_height = ctx->ViewportArray[i].Height * 0.5f;
+ GLfloat half_depth = (GLfloat)(ctx->ViewportArray[i].Far - ctx->ViewportArray[i].Near) * 0.5f;
- st->state.viewport.scale[0] = half_width;
- st->state.viewport.scale[1] = half_height * yScale;
- st->state.viewport.scale[2] = half_depth;
- st->state.viewport.scale[3] = 1.0;
-
- st->state.viewport.translate[0] = half_width + x;
- st->state.viewport.translate[1] = (half_height + y) * yScale + yBias;
- st->state.viewport.translate[2] = half_depth + z;
- st->state.viewport.translate[3] = 0.0;
+ st->state.viewport[i].scale[0] = half_width;
+ st->state.viewport[i].scale[1] = half_height * yScale;
+ st->state.viewport[i].scale[2] = half_depth;
+ st->state.viewport[i].scale[3] = 1.0;
- cso_set_viewport(st->cso_context, &st->state.viewport);
+ st->state.viewport[i].translate[0] = half_width + x;
+ st->state.viewport[i].translate[1] = (half_height + y) * yScale + yBias;
+ st->state.viewport[i].translate[2] = half_depth + z;
+ st->state.viewport[i].translate[3] = 0.0;
}
+
+ cso_set_viewport(st->cso_context, &st->state.viewport[0]);
+ if (ctx->Const.MaxViewports > 1)
+ st->pipe->set_viewport_states(st->pipe, 1, ctx->Const.MaxViewports - 1, &st->state.viewport[1]);
}
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
index c8f088dc8..49c4b903e 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -76,7 +76,7 @@ st_bufferobj_free(struct gl_context *ctx, struct gl_buffer_object *obj)
struct st_buffer_object *st_obj = st_buffer_object(obj);
assert(obj->RefCount == 0);
- assert(st_obj->transfer == NULL);
+ _mesa_buffer_unmap_all_mappings(ctx, obj);
if (st_obj->buffer)
pipe_resource_reference(&st_obj->buffer, NULL);
@@ -176,15 +176,18 @@ st_bufferobj_data(struct gl_context *ctx,
GLsizeiptrARB size,
const GLvoid * data,
GLenum usage,
+ GLbitfield storageFlags,
struct gl_buffer_object *obj)
{
struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
- unsigned bind, pipe_usage;
+ unsigned bind, pipe_usage, pipe_flags = 0;
if (size && data && st_obj->buffer &&
- st_obj->Base.Size == size && st_obj->Base.Usage == usage) {
+ st_obj->Base.Size == size &&
+ st_obj->Base.Usage == usage &&
+ st_obj->Base.StorageFlags == storageFlags) {
/* Just discard the old contents and write new data.
* This should be the same as creating a new buffer, but we avoid
* a lot of validation in Mesa.
@@ -200,6 +203,7 @@ st_bufferobj_data(struct gl_context *ctx,
st_obj->Base.Size = size;
st_obj->Base.Usage = usage;
+ st_obj->Base.StorageFlags = storageFlags;
switch (target) {
case GL_PIXEL_PACK_BUFFER_ARB:
@@ -225,24 +229,41 @@ st_bufferobj_data(struct gl_context *ctx,
bind = 0;
}
- switch (usage) {
- case GL_STATIC_DRAW:
- case GL_STATIC_READ:
- case GL_STATIC_COPY:
- default:
- pipe_usage = PIPE_USAGE_DEFAULT;
- break;
- case GL_DYNAMIC_DRAW:
- case GL_DYNAMIC_READ:
- case GL_DYNAMIC_COPY:
- pipe_usage = PIPE_USAGE_DYNAMIC;
- break;
- case GL_STREAM_DRAW:
- case GL_STREAM_READ:
- case GL_STREAM_COPY:
- pipe_usage = PIPE_USAGE_STREAM;
- break;
+ /* Set usage. */
+ if (st_obj->Base.Immutable) {
+ /* BufferStorage */
+ if (storageFlags & GL_CLIENT_STORAGE_BIT)
+ pipe_usage = PIPE_USAGE_STAGING;
+ else
+ pipe_usage = PIPE_USAGE_DEFAULT;
}
+ else {
+ /* BufferData */
+ switch (usage) {
+ case GL_STATIC_DRAW:
+ case GL_STATIC_READ:
+ case GL_STATIC_COPY:
+ default:
+ pipe_usage = PIPE_USAGE_DEFAULT;
+ break;
+ case GL_DYNAMIC_DRAW:
+ case GL_DYNAMIC_READ:
+ case GL_DYNAMIC_COPY:
+ pipe_usage = PIPE_USAGE_DYNAMIC;
+ break;
+ case GL_STREAM_DRAW:
+ case GL_STREAM_READ:
+ case GL_STREAM_COPY:
+ pipe_usage = PIPE_USAGE_STREAM;
+ break;
+ }
+ }
+
+ /* Set flags. */
+ if (storageFlags & GL_MAP_PERSISTENT_BIT)
+ pipe_flags |= PIPE_RESOURCE_FLAG_MAP_PERSISTENT;
+ if (storageFlags & GL_MAP_COHERENT_BIT)
+ pipe_flags |= PIPE_RESOURCE_FLAG_MAP_COHERENT;
pipe_resource_reference( &st_obj->buffer, NULL );
@@ -251,8 +272,20 @@ st_bufferobj_data(struct gl_context *ctx,
}
if (size != 0) {
- st_obj->buffer = pipe_buffer_create(pipe->screen, bind,
- pipe_usage, size);
+ struct pipe_resource buffer;
+
+ memset(&buffer, 0, sizeof buffer);
+ buffer.target = PIPE_BUFFER;
+ buffer.format = PIPE_FORMAT_R8_UNORM; /* want TYPELESS or similar */
+ buffer.bind = bind;
+ buffer.usage = pipe_usage;
+ buffer.flags = pipe_flags;
+ buffer.width0 = size;
+ buffer.height0 = 1;
+ buffer.depth0 = 1;
+ buffer.array_size = 1;
+
+ st_obj->buffer = pipe->screen->resource_create(pipe->screen, &buffer);
if (!st_obj->buffer) {
/* out of memory */
@@ -277,7 +310,8 @@ st_bufferobj_data(struct gl_context *ctx,
static void *
st_bufferobj_map_range(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length, GLbitfield access,
- struct gl_buffer_object *obj)
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index)
{
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
@@ -305,6 +339,12 @@ st_bufferobj_map_range(struct gl_context *ctx,
if (access & GL_MAP_UNSYNCHRONIZED_BIT)
flags |= PIPE_TRANSFER_UNSYNCHRONIZED;
+ if (access & GL_MAP_PERSISTENT_BIT)
+ flags |= PIPE_TRANSFER_PERSISTENT;
+
+ if (access & GL_MAP_COHERENT_BIT)
+ flags |= PIPE_TRANSFER_COHERENT;
+
/* ... other flags ...
*/
@@ -316,28 +356,29 @@ st_bufferobj_map_range(struct gl_context *ctx,
assert(offset < obj->Size);
assert(offset + length <= obj->Size);
- obj->Pointer = pipe_buffer_map_range(pipe,
+ obj->Mappings[index].Pointer = pipe_buffer_map_range(pipe,
st_obj->buffer,
offset, length,
flags,
- &st_obj->transfer);
- if (obj->Pointer) {
- obj->Offset = offset;
- obj->Length = length;
- obj->AccessFlags = access;
+ &st_obj->transfer[index]);
+ if (obj->Mappings[index].Pointer) {
+ obj->Mappings[index].Offset = offset;
+ obj->Mappings[index].Length = length;
+ obj->Mappings[index].AccessFlags = access;
}
else {
- st_obj->transfer = NULL;
+ st_obj->transfer[index] = NULL;
}
- return obj->Pointer;
+ return obj->Mappings[index].Pointer;
}
static void
st_bufferobj_flush_mapped_range(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
- struct gl_buffer_object *obj)
+ struct gl_buffer_object *obj,
+ gl_map_buffer_index index)
{
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
@@ -345,14 +386,15 @@ st_bufferobj_flush_mapped_range(struct gl_context *ctx,
/* Subrange is relative to mapped range */
assert(offset >= 0);
assert(length >= 0);
- assert(offset + length <= obj->Length);
- assert(obj->Pointer);
+ assert(offset + length <= obj->Mappings[index].Length);
+ assert(obj->Mappings[index].Pointer);
if (!length)
return;
- pipe_buffer_flush_mapped_range(pipe, st_obj->transfer,
- obj->Offset + offset, length);
+ pipe_buffer_flush_mapped_range(pipe, st_obj->transfer[index],
+ obj->Mappings[index].Offset + offset,
+ length);
}
@@ -360,18 +402,19 @@ st_bufferobj_flush_mapped_range(struct gl_context *ctx,
* Called via glUnmapBufferARB().
*/
static GLboolean
-st_bufferobj_unmap(struct gl_context *ctx, struct gl_buffer_object *obj)
+st_bufferobj_unmap(struct gl_context *ctx, struct gl_buffer_object *obj,
+ gl_map_buffer_index index)
{
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
- if (obj->Length)
- pipe_buffer_unmap(pipe, st_obj->transfer);
+ if (obj->Mappings[index].Length)
+ pipe_buffer_unmap(pipe, st_obj->transfer[index]);
- st_obj->transfer = NULL;
- obj->Pointer = NULL;
- obj->Offset = 0;
- obj->Length = 0;
+ st_obj->transfer[index] = NULL;
+ obj->Mappings[index].Pointer = NULL;
+ obj->Mappings[index].Offset = 0;
+ obj->Mappings[index].Length = 0;
return GL_TRUE;
}
@@ -395,8 +438,8 @@ st_copy_buffer_subdata(struct gl_context *ctx,
return;
/* buffer should not already be mapped */
- assert(!src->Pointer);
- assert(!dst->Pointer);
+ assert(!_mesa_check_disallowed_mapping(src));
+ assert(!_mesa_check_disallowed_mapping(dst));
u_box_1d(readOffset, size, &box);
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
index a039c0a50..a5ab12219 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
@@ -43,7 +43,7 @@ struct st_buffer_object
{
struct gl_buffer_object Base;
struct pipe_resource *buffer; /* GPU storage */
- struct pipe_transfer *transfer; /* In-progress map information */
+ struct pipe_transfer *transfer[MAP_COUNT];
};
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
index 2f1a22b58..dd4dde74c 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
@@ -54,7 +54,24 @@ st_TextureBarrier(struct gl_context *ctx)
}
+/**
+ * Called via ctx->Driver.MemoryBarrier()
+ */
+static void
+st_MemoryBarrier(struct gl_context *ctx, GLbitfield barriers)
+{
+ struct pipe_context *pipe = st_context(ctx)->pipe;
+ unsigned flags = 0;
+
+ if (barriers & GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT)
+ flags |= PIPE_BARRIER_MAPPED_BUFFER;
+
+ if (flags && pipe->memory_barrier)
+ pipe->memory_barrier(pipe, flags);
+}
+
void st_init_texture_barrier_functions(struct dd_function_table *functions)
{
functions->TextureBarrier = st_TextureBarrier;
+ functions->MemoryBarrier = st_MemoryBarrier;
}
diff --git a/mesalib/src/mesa/state_tracker/st_context.h b/mesalib/src/mesa/state_tracker/st_context.h
index 996e0c6bc..9c699a015 100644
--- a/mesalib/src/mesa/state_tracker/st_context.h
+++ b/mesalib/src/mesa/state_tracker/st_context.h
@@ -115,8 +115,8 @@ struct st_context
unsigned size;
} constants[PIPE_SHADER_TYPES];
struct pipe_framebuffer_state framebuffer;
- struct pipe_scissor_state scissor;
- struct pipe_viewport_state viewport;
+ struct pipe_scissor_state scissor[PIPE_MAX_VIEWPORTS];
+ struct pipe_viewport_state viewport[PIPE_MAX_VIEWPORTS];
unsigned sample_mask;
GLuint poly_stipple[32]; /**< In OpenGL's bottom-to-top order */
diff --git a/mesalib/src/mesa/state_tracker/st_draw_feedback.c b/mesalib/src/mesa/state_tracker/st_draw_feedback.c
index 09cd9511d..177f6b5ae 100644
--- a/mesalib/src/mesa/state_tracker/st_draw_feedback.c
+++ b/mesalib/src/mesa/state_tracker/st_draw_feedback.c
@@ -156,7 +156,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
* code sends state updates to the pipe, not to our private draw module.
*/
assert(draw);
- draw_set_viewport_states(draw, 0, 1, &st->state.viewport);
+ draw_set_viewport_states(draw, 0, 1, &st->state.viewport[0]);
draw_set_clip_state(draw, &st->state.clip);
draw_set_rasterizer_state(draw, &st->state.rasterizer, NULL);
draw_bind_vertex_shader(draw, st->vp_variant->draw_shader);
diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c
index 9829eb596..18ddd4e47 100644
--- a/mesalib/src/mesa/state_tracker/st_extensions.c
+++ b/mesalib/src/mesa/state_tracker/st_extensions.c
@@ -39,6 +39,12 @@
#include "st_extensions.h"
#include "st_format.h"
+
+/*
+ * Note: we use these function rather than the MIN2, MAX2, CLAMP macros to
+ * avoid evaluating arguments (which are often function calls) more than once.
+ */
+
static unsigned _min(unsigned a, unsigned b)
{
return (a < b) ? a : b;
@@ -262,10 +268,13 @@ void st_init_limits(struct st_context *st)
c->Program[MESA_SHADER_VERTEX].MaxOutputComponents = c->MaxVarying * 4;
c->Program[MESA_SHADER_GEOMETRY].MaxInputComponents = c->MaxVarying * 4;
c->Program[MESA_SHADER_GEOMETRY].MaxOutputComponents = c->MaxVarying * 4;
+ c->MaxGeometryOutputVertices = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES);
+ c->MaxGeometryTotalOutputComponents = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS);
c->MinProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MIN_TEXEL_OFFSET);
c->MaxProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MAX_TEXEL_OFFSET);
+ c->MaxProgramTextureGatherComponents = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS);
c->UniformBooleanTrue = ~0;
c->MaxTransformFeedbackBuffers =
@@ -373,6 +382,7 @@ void st_init_extensions(struct st_context *st)
static const struct st_extension_cap_mapping cap_mapping[] = {
{ o(ARB_base_instance), PIPE_CAP_START_INSTANCE },
+ { o(ARB_buffer_storage), PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT },
{ o(ARB_depth_clamp), PIPE_CAP_DEPTH_CLIP_DISABLE },
{ o(ARB_depth_texture), PIPE_CAP_TEXTURE_SHADOW_MAP },
{ o(ARB_draw_buffers_blend), PIPE_CAP_INDEP_BLEND_FUNC },
@@ -526,7 +536,6 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_fragment_coord_conventions = GL_TRUE;
ctx->Extensions.ARB_fragment_program = GL_TRUE;
ctx->Extensions.ARB_fragment_shader = GL_TRUE;
- ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
ctx->Extensions.ARB_internalformat_query = GL_TRUE;
ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
@@ -777,4 +786,15 @@ void st_init_extensions(struct st_context *st)
if (!ctx->Extensions.EXT_transform_feedback)
ctx->Const.DisableVaryingPacking = GL_TRUE;
}
+
+ if (ctx->API == API_OPENGL_CORE) {
+ ctx->Const.MaxViewports = screen->get_param(screen, PIPE_CAP_MAX_VIEWPORTS);
+ if (ctx->Const.MaxViewports >= 16) {
+ ctx->Const.ViewportBounds.Min = -16384.0;
+ ctx->Const.ViewportBounds.Max = 16384.0;
+ ctx->Extensions.ARB_viewport_array = GL_TRUE;
+ }
+ }
+ if (ctx->Const.MaxProgramTextureGatherComponents > 0)
+ ctx->Extensions.ARB_texture_gather = GL_TRUE;
}
diff --git a/mesalib/src/mesa/state_tracker/st_format.c b/mesalib/src/mesa/state_tracker/st_format.c
index 90e9f2f78..5f951eb02 100644
--- a/mesalib/src/mesa/state_tracker/st_format.c
+++ b/mesalib/src/mesa/state_tracker/st_format.c
@@ -107,11 +107,11 @@ st_mesa_format_to_pipe_format(mesa_format mesaFormat)
return PIPE_FORMAT_Z32_UNORM;
case MESA_FORMAT_S8_UINT_Z24_UNORM:
return PIPE_FORMAT_S8_UINT_Z24_UNORM;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
return PIPE_FORMAT_Z24_UNORM_S8_UINT;
case MESA_FORMAT_X8Z24_UNORM:
return PIPE_FORMAT_X8Z24_UNORM;
- case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
return PIPE_FORMAT_Z24X8_UNORM;
case MESA_FORMAT_S_UINT8:
return PIPE_FORMAT_S8_UINT;
@@ -465,9 +465,9 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
case PIPE_FORMAT_X8Z24_UNORM:
return MESA_FORMAT_X8Z24_UNORM;
case PIPE_FORMAT_Z24X8_UNORM:
- return MESA_FORMAT_Z24_UNORM_S8_UINT;
- case PIPE_FORMAT_Z24_UNORM_S8_UINT:
return MESA_FORMAT_Z24_UNORM_X8_UINT;
+ case PIPE_FORMAT_Z24_UNORM_S8_UINT:
+ return MESA_FORMAT_Z24_UNORM_S8_UINT;
case PIPE_FORMAT_Z32_FLOAT:
return MESA_FORMAT_Z_FLOAT32;
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 610fc68a8..a9e75d8a6 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -87,7 +87,7 @@ extern "C" {
*/
#define MAX_ARRAYS 256
-/* will be 4 for GLSL 4.00 */
+/* if we support a native gallium TG4 with the ability to take 4 texoffsets then bump this */
#define MAX_GLSL_TEXTURE_OFFSET 1
class st_src_reg;
@@ -249,7 +249,8 @@ public:
int sampler; /**< sampler index */
int tex_target; /**< One of TEXTURE_*_INDEX */
GLboolean tex_shadow;
- struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
+
+ st_src_reg tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
unsigned tex_offset_num_offset;
int dead_mask; /**< Used in dead code elimination */
@@ -983,6 +984,7 @@ type_size(const struct glsl_type *type)
}
return size;
case GLSL_TYPE_SAMPLER:
+ case GLSL_TYPE_IMAGE:
/* Samplers take up one slot in UNIFORMS[], but they're baked in
* at link time.
*/
@@ -2685,7 +2687,7 @@ glsl_to_tgsi_visitor::visit(ir_call *ir)
void
glsl_to_tgsi_visitor::visit(ir_texture *ir)
{
- st_src_reg result_src, coord, cube_sc, lod_info, projector, dx, dy, offset, sample_index;
+ st_src_reg result_src, coord, cube_sc, lod_info, projector, dx, dy, offset, sample_index, component;
st_dst_reg result_dst, coord_dst, cube_sc_dst;
glsl_to_tgsi_instruction *inst = NULL;
unsigned opcode = TGSI_OPCODE_NOP;
@@ -2779,12 +2781,20 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
ir->lod_info.sample_index->accept(this);
sample_index = this->result;
break;
+ case ir_tg4:
+ opcode = TGSI_OPCODE_TG4;
+ ir->lod_info.component->accept(this);
+ component = this->result;
+ if (ir->offset) {
+ ir->offset->accept(this);
+ /* this should have been lowered */
+ assert(ir->offset->type->base_type != GLSL_TYPE_ARRAY);
+ offset = this->result;
+ }
+ break;
case ir_lod:
assert(!"Unexpected ir_lod opcode");
break;
- case ir_tg4:
- assert(!"Unexpected ir_tg4 opcode");
- break;
case ir_query_levels:
assert(!"Unexpected ir_query_levels opcode");
break;
@@ -2892,7 +2902,13 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
inst = emit(ir, opcode, result_dst, coord, lod_info);
} else if (opcode == TGSI_OPCODE_TEX2) {
inst = emit(ir, opcode, result_dst, coord, cube_sc);
- } else
+ } else if (opcode == TGSI_OPCODE_TG4) {
+ if (is_cube_array && ir->shadow_comparitor) {
+ inst = emit(ir, opcode, result_dst, coord, cube_sc);
+ } else {
+ inst = emit(ir, opcode, result_dst, coord, component);
+ }
+ } else
inst = emit(ir, opcode, result_dst, coord);
if (ir->shadow_comparitor)
@@ -2903,12 +2919,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
this->prog);
if (ir->offset) {
- inst->tex_offset_num_offset = 1;
- inst->tex_offsets[0].Index = offset.index;
- inst->tex_offsets[0].File = offset.file;
- inst->tex_offsets[0].SwizzleX = GET_SWZ(offset.swizzle, 0);
- inst->tex_offsets[0].SwizzleY = GET_SWZ(offset.swizzle, 1);
- inst->tex_offsets[0].SwizzleZ = GET_SWZ(offset.swizzle, 2);
+ inst->tex_offset_num_offset = 1;
+ inst->tex_offsets[0] = offset;
}
switch (sampler_type->sampler_dimensionality) {
@@ -3266,6 +3278,13 @@ glsl_to_tgsi_visitor::rename_temp_register(int index, int new_index)
inst->src[j].index = new_index;
}
}
+
+ for (j=0; j < inst->tex_offset_num_offset; j++) {
+ if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY &&
+ inst->tex_offsets[j].index == index) {
+ inst->tex_offsets[j].index = new_index;
+ }
+ }
if (inst->dst.file == PROGRAM_TEMPORARY && inst->dst.index == index) {
inst->dst.index = new_index;
@@ -3289,6 +3308,12 @@ glsl_to_tgsi_visitor::get_first_temp_read(int index)
return (depth == 0) ? i : loop_start;
}
}
+ for (j=0; j < inst->tex_offset_num_offset; j++) {
+ if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY &&
+ inst->tex_offsets[j].index == index) {
+ return (depth == 0) ? i : loop_start;
+ }
+ }
if (inst->op == TGSI_OPCODE_BGNLOOP) {
if(depth++ == 0)
@@ -3350,6 +3375,11 @@ glsl_to_tgsi_visitor::get_last_temp_read(int index)
last = (depth == 0) ? i : -2;
}
}
+ for (j=0; j < inst->tex_offset_num_offset; j++) {
+ if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY &&
+ inst->tex_offsets[j].index == index)
+ last = (depth == 0) ? i : -2;
+ }
if (inst->op == TGSI_OPCODE_BGNLOOP)
depth++;
@@ -3726,6 +3756,26 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void)
}
}
}
+ for (unsigned i = 0; i < inst->tex_offset_num_offset; i++) {
+ if (inst->tex_offsets[i].file == PROGRAM_TEMPORARY && inst->tex_offsets[i].reladdr){
+ /* Any temporary might be read, so no dead code elimination
+ * across this instruction.
+ */
+ memset(writes, 0, sizeof(*writes) * this->next_temp * 4);
+ } else if (inst->tex_offsets[i].file == PROGRAM_TEMPORARY) {
+ /* Clear where it's used as src. */
+ int src_chans = 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 0);
+ src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 1);
+ src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 2);
+ src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 3);
+
+ for (int c = 0; c < 4; c++) {
+ if (src_chans & (1 << c)) {
+ writes[4 * inst->tex_offsets[i].index + c] = NULL;
+ }
+ }
+ }
+ }
break;
}
@@ -4079,7 +4129,7 @@ struct st_translate {
struct ureg_dst address[2];
struct ureg_src samplers[PIPE_MAX_SAMPLERS];
struct ureg_src systemValues[SYSTEM_VALUE_MAX];
-
+ struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
unsigned array_sizes[MAX_ARRAYS];
const GLuint *inputMapping;
@@ -4379,22 +4429,34 @@ translate_src(struct st_translate *t, const st_src_reg *src_reg)
static struct tgsi_texture_offset
translate_tex_offset(struct st_translate *t,
- const struct tgsi_texture_offset *in_offset)
+ const st_src_reg *in_offset, int idx)
{
struct tgsi_texture_offset offset;
struct ureg_src imm_src;
- assert(in_offset->File == PROGRAM_IMMEDIATE);
- imm_src = t->immediates[in_offset->Index];
-
- offset.File = imm_src.File;
- offset.Index = imm_src.Index;
- offset.SwizzleX = imm_src.SwizzleX;
- offset.SwizzleY = imm_src.SwizzleY;
- offset.SwizzleZ = imm_src.SwizzleZ;
- offset.File = TGSI_FILE_IMMEDIATE;
- offset.Padding = 0;
-
+ switch (in_offset->file) {
+ case PROGRAM_IMMEDIATE:
+ imm_src = t->immediates[in_offset->index];
+
+ offset.File = imm_src.File;
+ offset.Index = imm_src.Index;
+ offset.SwizzleX = imm_src.SwizzleX;
+ offset.SwizzleY = imm_src.SwizzleY;
+ offset.SwizzleZ = imm_src.SwizzleZ;
+ offset.Padding = 0;
+ break;
+ case PROGRAM_TEMPORARY:
+ imm_src = ureg_src(t->temps[in_offset->index]);
+ offset.File = imm_src.File;
+ offset.Index = imm_src.Index;
+ offset.SwizzleX = GET_SWZ(in_offset->swizzle, 0);
+ offset.SwizzleY = GET_SWZ(in_offset->swizzle, 1);
+ offset.SwizzleZ = GET_SWZ(in_offset->swizzle, 2);
+ offset.Padding = 0;
+ break;
+ default:
+ break;
+ }
return offset;
}
@@ -4450,9 +4512,10 @@ compile_tgsi_instruction(struct st_translate *t,
case TGSI_OPCODE_TEX2:
case TGSI_OPCODE_TXB2:
case TGSI_OPCODE_TXL2:
+ case TGSI_OPCODE_TG4:
src[num_src++] = t->samplers[inst->sampler];
for (i = 0; i < inst->tex_offset_num_offset; i++) {
- texoffsets[i] = translate_tex_offset(t, &inst->tex_offsets[i]);
+ texoffsets[i] = translate_tex_offset(t, &inst->tex_offsets[i], i);
}
tex_target = st_translate_texture_target(inst->tex_target, inst->tex_shadow);
@@ -5140,7 +5203,7 @@ get_mesa_program(struct gl_context *ctx,
printf("GLSL IR for linked %s program %d:\n",
_mesa_shader_stage_to_string(shader->Stage),
shader_program->Name);
- _mesa_print_ir(shader->ir, NULL);
+ _mesa_print_ir(stdout, shader->ir, NULL);
printf("\n");
printf("\n");
fflush(stdout);
@@ -5182,6 +5245,7 @@ get_mesa_program(struct gl_context *ctx,
stgp->Base.InputType = shader_program->Geom.InputType;
stgp->Base.OutputType = shader_program->Geom.OutputType;
stgp->Base.VerticesOut = shader_program->Geom.VerticesOut;
+ stgp->Base.Invocations = shader_program->Geom.Invocations;
break;
default:
assert(!"should not be reached");
@@ -5268,6 +5332,7 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
lower_packing_builtins(ir, lower_inst);
}
+ lower_offset_arrays(ir);
do_mat_op_to_vec(ir);
lower_instructions(ir,
MOD_TO_FRACT |
diff --git a/mesalib/src/mesa/state_tracker/st_manager.c b/mesalib/src/mesa/state_tracker/st_manager.c
index 215b27634..6a776a8a2 100644
--- a/mesalib/src/mesa/state_tracker/st_manager.c
+++ b/mesalib/src/mesa/state_tracker/st_manager.c
@@ -30,6 +30,7 @@
#include "main/texobj.h"
#include "main/teximage.h"
#include "main/texstate.h"
+#include "main/errors.h"
#include "main/framebuffer.h"
#include "main/fbobject.h"
#include "main/renderbuffer.h"
@@ -626,10 +627,14 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
return NULL;
}
- st->ctx->Debug.DebugOutput = GL_FALSE;
if (attribs->flags & ST_CONTEXT_FLAG_DEBUG){
+ struct gl_debug_state *debug = _mesa_get_debug_state(st->ctx);
+ if (!debug) {
+ *error = ST_CONTEXT_ERROR_NO_MEMORY;
+ return NULL;
+ }
st->ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_DEBUG_BIT;
- st->ctx->Debug.DebugOutput = GL_TRUE;
+ debug->DebugOutput = GL_TRUE;
}
if (attribs->flags & ST_CONTEXT_FLAG_FORWARD_COMPATIBLE)
diff --git a/mesalib/src/mesa/state_tracker/st_program.c b/mesalib/src/mesa/state_tracker/st_program.c
index cadbe1705..e9074ac97 100644
--- a/mesalib/src/mesa/state_tracker/st_program.c
+++ b/mesalib/src/mesa/state_tracker/st_program.c
@@ -572,6 +572,11 @@ st_translate_fragment_program(struct st_context *st,
input_semantic_index[slot] = 0;
interpMode[slot] = TGSI_INTERPOLATE_CONSTANT;
break;
+ case VARYING_SLOT_VIEWPORT:
+ input_semantic_name[slot] = TGSI_SEMANTIC_VIEWPORT_INDEX;
+ input_semantic_index[slot] = 0;
+ interpMode[slot] = TGSI_INTERPOLATE_CONSTANT;
+ break;
case VARYING_SLOT_CLIP_DIST0:
input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST;
input_semantic_index[slot] = 0;
@@ -1027,6 +1032,10 @@ st_translate_geometry_program(struct st_context *st,
gs_output_semantic_name[slot] = TGSI_SEMANTIC_PRIMID;
gs_output_semantic_index[slot] = 0;
break;
+ case VARYING_SLOT_VIEWPORT:
+ gs_output_semantic_name[slot] = TGSI_SEMANTIC_VIEWPORT_INDEX;
+ gs_output_semantic_index[slot] = 0;
+ break;
case VARYING_SLOT_TEX0:
case VARYING_SLOT_TEX1:
case VARYING_SLOT_TEX2:
@@ -1087,6 +1096,7 @@ st_translate_geometry_program(struct st_context *st,
ureg_property_gs_input_prim(ureg, stgp->Base.InputType);
ureg_property_gs_output_prim(ureg, stgp->Base.OutputType);
ureg_property_gs_max_vertices(ureg, stgp->Base.VerticesOut);
+ ureg_property_gs_invocations(ureg, stgp->Base.Invocations);
if (stgp->glsl_to_tgsi)
st_translate_program(st->ctx,
diff --git a/mesalib/src/mesa/swrast/s_depth.c b/mesalib/src/mesa/swrast/s_depth.c
index 93aaffc57..8c225e111 100644
--- a/mesalib/src/mesa/swrast/s_depth.c
+++ b/mesalib/src/mesa/swrast/s_depth.c
@@ -552,8 +552,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx)
height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
mapMode = GL_MAP_WRITE_BIT;
- if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT ||
- rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT ||
+ if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT ||
+ rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT ||
rb->Format == MESA_FORMAT_S8_UINT_Z24_UNORM ||
rb->Format == MESA_FORMAT_X8Z24_UNORM) {
mapMode |= GL_MAP_READ_BIT;
@@ -602,8 +602,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx)
}
}
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_Z24_UNORM_S8_UINT:
+ case MESA_FORMAT_Z24_UNORM_X8_UINT:
case MESA_FORMAT_S8_UINT_Z24_UNORM:
case MESA_FORMAT_X8Z24_UNORM:
{
@@ -611,8 +611,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx)
GLuint clearVal = 0;
GLuint mask;
- if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT ||
- rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT)
+ if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT ||
+ rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT)
mask = 0xff000000;
else
mask = 0xff;
@@ -692,7 +692,7 @@ _swrast_clear_depth_stencil_buffer(struct gl_context *ctx)
}
switch (rb->Format) {
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
case MESA_FORMAT_S8_UINT_Z24_UNORM:
{
GLfloat zClear = (GLfloat) ctx->Depth.Clear;
@@ -700,7 +700,7 @@ _swrast_clear_depth_stencil_buffer(struct gl_context *ctx)
_mesa_pack_float_z_row(rb->Format, 1, &zClear, &clear);
- if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) {
+ if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT) {
mask = ((~writeMask) & 0xff) << 24;
clear |= (ctx->Stencil.Clear & writeMask & 0xff) << 24;
}
diff --git a/mesalib/src/mesa/swrast/s_drawpix.c b/mesalib/src/mesa/swrast/s_drawpix.c
index ed4487f3e..f7926e426 100644
--- a/mesalib/src/mesa/swrast/s_drawpix.c
+++ b/mesalib/src/mesa/swrast/s_drawpix.c
@@ -500,7 +500,7 @@ draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y,
/**
- * Draw depth+stencil values into a MESA_FORAMT_Z24_S8 or MESA_FORMAT_Z24_UNORM_X8_UINT
+ * Draw depth+stencil values into a MESA_FORAMT_Z24_S8 or MESA_FORMAT_Z24_UNORM_S8_UINT
* renderbuffer. No masking, zooming, scaling, etc.
*/
static void
@@ -573,7 +573,7 @@ draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y,
if (depthRb == stencilRb &&
(depthRb->Format == MESA_FORMAT_S8_UINT_Z24_UNORM ||
- depthRb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) &&
+ depthRb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT) &&
type == GL_UNSIGNED_INT_24_8 &&
!scaleOrBias &&
!zoom &&
diff --git a/mesalib/src/mesa/swrast/s_renderbuffer.c b/mesalib/src/mesa/swrast/s_renderbuffer.c
index cf5e2230d..dfd3a6057 100644
--- a/mesalib/src/mesa/swrast/s_renderbuffer.c
+++ b/mesalib/src/mesa/swrast/s_renderbuffer.c
@@ -102,7 +102,7 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb,
rb->Format = MESA_FORMAT_Z_UNORM16;
break;
case GL_DEPTH_COMPONENT24:
- rb->Format = MESA_FORMAT_Z24_UNORM_S8_UINT;
+ rb->Format = MESA_FORMAT_Z24_UNORM_X8_UINT;
break;
case GL_DEPTH_COMPONENT32:
rb->Format = MESA_FORMAT_Z_UNORM32;
diff --git a/mesalib/src/mesa/swrast/s_stencil.c b/mesalib/src/mesa/swrast/s_stencil.c
index e7c35ff69..eba9da863 100644
--- a/mesalib/src/mesa/swrast/s_stencil.c
+++ b/mesalib/src/mesa/swrast/s_stencil.c
@@ -614,7 +614,7 @@ _swrast_clear_stencil_buffer(struct gl_context *ctx)
}
}
break;
- case MESA_FORMAT_Z24_UNORM_X8_UINT:
+ case MESA_FORMAT_Z24_UNORM_S8_UINT:
{
GLuint clear = (ctx->Stencil.Clear & writeMask & 0xff) << 24;
GLuint mask = (((~writeMask) & 0xff) << 24) | 0xffffff;
diff --git a/mesalib/src/mesa/swrast/s_texfetch.c b/mesalib/src/mesa/swrast/s_texfetch.c
index 7a3e76f85..b620748c9 100644
--- a/mesalib/src/mesa/swrast/s_texfetch.c
+++ b/mesalib/src/mesa/swrast/s_texfetch.c
@@ -383,7 +383,7 @@ texfetch_funcs[] =
fetch_texel_3d_f_z24_s8
},
{
- MESA_FORMAT_Z24_UNORM_X8_UINT,
+ MESA_FORMAT_Z24_UNORM_S8_UINT,
fetch_texel_1d_f_s8_z24,
fetch_texel_2d_f_s8_z24,
fetch_texel_3d_f_s8_z24
@@ -395,7 +395,7 @@ texfetch_funcs[] =
fetch_texel_3d_f_z16
},
{
- MESA_FORMAT_Z24_UNORM_S8_UINT,
+ MESA_FORMAT_Z24_UNORM_X8_UINT,
fetch_texel_1d_f_s8_z24,
fetch_texel_2d_f_s8_z24,
fetch_texel_3d_f_s8_z24
diff --git a/mesalib/src/mesa/swrast/s_texfetch_tmp.h b/mesalib/src/mesa/swrast/s_texfetch_tmp.h
index f3048894e..806f0fd1a 100644
--- a/mesalib/src/mesa/swrast/s_texfetch_tmp.h
+++ b/mesalib/src/mesa/swrast/s_texfetch_tmp.h
@@ -1556,8 +1556,8 @@ static void FETCH(f_s8_z24)( const struct swrast_texture_image *texImage,
const GLuint *src = TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
const GLdouble scale = 1.0 / (GLdouble) 0xffffff;
texel[0] = (GLfloat) (((*src) & 0x00ffffff) * scale);
- ASSERT(texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_X8_UINT ||
- texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_S8_UINT);
+ ASSERT(texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_S8_UINT ||
+ texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_X8_UINT);
ASSERT(texel[0] >= 0.0F);
ASSERT(texel[0] <= 1.0F);
}
diff --git a/mesalib/src/mesa/tnl/t_draw.c b/mesalib/src/mesa/tnl/t_draw.c
index 8e5af9627..2755ae62d 100644
--- a/mesalib/src/mesa/tnl/t_draw.c
+++ b/mesalib/src/mesa/tnl/t_draw.c
@@ -279,17 +279,18 @@ static void bind_inputs( struct gl_context *ctx,
const void *ptr;
if (inputs[i]->BufferObj->Name) {
- if (!inputs[i]->BufferObj->Pointer) {
+ if (!inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer) {
bo[*nr_bo] = inputs[i]->BufferObj;
(*nr_bo)++;
ctx->Driver.MapBufferRange(ctx, 0, inputs[i]->BufferObj->Size,
GL_MAP_READ_BIT,
- inputs[i]->BufferObj);
+ inputs[i]->BufferObj,
+ MAP_INTERNAL);
- assert(inputs[i]->BufferObj->Pointer);
+ assert(inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer);
}
- ptr = ADD_POINTERS(inputs[i]->BufferObj->Pointer,
+ ptr = ADD_POINTERS(inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer,
inputs[i]->Ptr);
}
else
@@ -348,17 +349,19 @@ static void bind_indices( struct gl_context *ctx,
return;
}
- if (_mesa_is_bufferobj(ib->obj) && !_mesa_bufferobj_mapped(ib->obj)) {
+ if (_mesa_is_bufferobj(ib->obj) &&
+ !_mesa_bufferobj_mapped(ib->obj, MAP_INTERNAL)) {
/* if the buffer object isn't mapped yet, map it now */
bo[*nr_bo] = ib->obj;
(*nr_bo)++;
ptr = ctx->Driver.MapBufferRange(ctx, (GLsizeiptr) ib->ptr,
ib->count * vbo_sizeof_ib_type(ib->type),
- GL_MAP_READ_BIT, ib->obj);
- assert(ib->obj->Pointer);
+ GL_MAP_READ_BIT, ib->obj,
+ MAP_INTERNAL);
+ assert(ib->obj->Mappings[MAP_INTERNAL].Pointer);
} else {
/* user-space elements, or buffer already mapped */
- ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
+ ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr);
}
if (ib->type == GL_UNSIGNED_INT && VB->Primitive[0].basevertex == 0) {
@@ -403,7 +406,7 @@ static void unmap_vbos( struct gl_context *ctx,
{
GLuint i;
for (i = 0; i < nr_bo; i++) {
- ctx->Driver.UnmapBuffer(ctx, bo[i]);
+ ctx->Driver.UnmapBuffer(ctx, bo[i], MAP_INTERNAL);
}
}
diff --git a/mesalib/src/mesa/vbo/vbo_exec_api.c b/mesalib/src/mesa/vbo/vbo_exec_api.c
index 810913645..74aec127c 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_api.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_api.c
@@ -998,7 +998,11 @@ void vbo_use_buffer_objects(struct gl_context *ctx)
/* Allocate a real buffer object now */
_mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL);
exec->vtx.bufferobj = ctx->Driver.NewBufferObject(ctx, bufName, target);
- if (!ctx->Driver.BufferData(ctx, target, size, NULL, usage, exec->vtx.bufferobj)) {
+ if (!ctx->Driver.BufferData(ctx, target, size, NULL, usage,
+ GL_MAP_WRITE_BIT |
+ GL_DYNAMIC_STORAGE_BIT |
+ GL_CLIENT_STORAGE_BIT,
+ exec->vtx.bufferobj)) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "VBO allocation");
}
}
@@ -1114,8 +1118,8 @@ void vbo_exec_vtx_destroy( struct vbo_exec_context *exec )
/* Free the vertex buffer. Unmap first if needed.
*/
- if (_mesa_bufferobj_mapped(exec->vtx.bufferobj)) {
- ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj);
+ if (_mesa_bufferobj_mapped(exec->vtx.bufferobj, MAP_INTERNAL)) {
+ ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj, MAP_INTERNAL);
}
_mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL);
}
diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c
index b316f097d..07ce08fef 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_array.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_array.c
@@ -53,7 +53,7 @@ check_buffers_are_unmapped(const struct gl_client_array **inputs)
for (i = 0; i < VERT_ATTRIB_MAX; i++) {
if (inputs[i]) {
struct gl_buffer_object *obj = inputs[i]->BufferObj;
- assert(!_mesa_bufferobj_mapped(obj));
+ assert(!_mesa_check_disallowed_mapping(obj));
(void) obj;
}
}
@@ -73,7 +73,7 @@ vbo_check_buffers_are_unmapped(struct gl_context *ctx)
/* check the current vertex arrays */
check_buffers_are_unmapped(exec->array.inputs);
/* check the current glBegin/glVertex/glEnd-style VBO */
- assert(!_mesa_bufferobj_mapped(exec->vtx.bufferobj));
+ assert(!_mesa_check_disallowed_mapping(exec->vtx.bufferobj));
}
@@ -101,7 +101,8 @@ vbo_get_minmax_index(struct gl_context *ctx,
if (_mesa_is_bufferobj(ib->obj)) {
GLsizeiptr size = MIN2(count * index_size, ib->obj->Size);
indices = ctx->Driver.MapBufferRange(ctx, (GLintptr) indices, size,
- GL_MAP_READ_BIT, ib->obj);
+ GL_MAP_READ_BIT, ib->obj,
+ MAP_INTERNAL);
}
switch (ib->type) {
@@ -177,7 +178,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
}
if (_mesa_is_bufferobj(ib->obj)) {
- ctx->Driver.UnmapBuffer(ctx, ib->obj);
+ ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
}
}
@@ -229,13 +230,15 @@ check_array_data(struct gl_context *ctx, struct gl_client_array *array,
if (array->Enabled) {
const void *data = array->Ptr;
if (_mesa_is_bufferobj(array->BufferObj)) {
- if (!array->BufferObj->Pointer) {
+ if (!array->BufferObj->Mappings[MAP_INTERNAL].Pointer) {
/* need to map now */
- array->BufferObj->Pointer =
+ array->BufferObj->Mappings[MAP_INTERNAL].Pointer =
ctx->Driver.MapBufferRange(ctx, 0, array->BufferObj->Size,
- GL_MAP_READ_BIT, array->BufferObj);
+ GL_MAP_READ_BIT, array->BufferObj,
+ MAP_INTERNAL);
}
- data = ADD_POINTERS(data, array->BufferObj->Pointer);
+ data = ADD_POINTERS(data,
+ array->BufferObj->Mappings[MAP_INTERNAL].Pointer);
}
switch (array->Type) {
case GL_FLOAT:
@@ -273,8 +276,8 @@ unmap_array_buffer(struct gl_context *ctx, struct gl_client_array *array)
{
if (array->Enabled &&
_mesa_is_bufferobj(array->BufferObj) &&
- _mesa_bufferobj_mapped(array->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, array->BufferObj);
+ _mesa_bufferobj_mapped(array->BufferObj, MAP_INTERNAL)) {
+ ctx->Driver.UnmapBuffer(ctx, array->BufferObj, MAP_INTERNAL);
}
}
@@ -295,7 +298,8 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
elemMap = ctx->Driver.MapBufferRange(ctx, 0,
ctx->Array.VAO->IndexBufferObj->Size,
GL_MAP_READ_BIT,
- ctx->Array.VAO->IndexBufferObj);
+ ctx->Array.VAO->IndexBufferObj,
+ MAP_INTERNAL);
elements = ADD_POINTERS(elements, elemMap);
}
@@ -324,7 +328,8 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
}
if (_mesa_is_bufferobj(vao->IndexBufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj,
+ MAP_INTERNAL);
}
for (k = 0; k < Elements(vao->_VertexAttrib); k++) {
@@ -374,7 +379,8 @@ print_draw_arrays(struct gl_context *ctx,
if (bufName) {
GLubyte *p = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size,
- GL_MAP_READ_BIT, bufObj);
+ GL_MAP_READ_BIT, bufObj,
+ MAP_INTERNAL);
int offset = (int) (GLintptr) exec->array.inputs[i]->Ptr;
float *f = (float *) (p + offset);
int *k = (int *) f;
@@ -386,7 +392,7 @@ print_draw_arrays(struct gl_context *ctx,
for (i = 0; i < n; i++) {
printf(" float[%d] = 0x%08x %f\n", i, k[i], f[i]);
}
- ctx->Driver.UnmapBuffer(ctx, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL);
}
}
}
@@ -885,7 +891,8 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
ctx->Driver.MapBufferRange(ctx, 0,
ctx->Array.VAO->IndexBufferObj->Size,
GL_MAP_READ_BIT,
- ctx->Array.VAO->IndexBufferObj);
+ ctx->Array.VAO->IndexBufferObj,
+ MAP_INTERNAL);
switch (type) {
case GL_UNSIGNED_BYTE:
{
@@ -927,7 +934,8 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
;
}
- ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj,
+ MAP_INTERNAL);
}
#endif
diff --git a/mesalib/src/mesa/vbo/vbo_exec_draw.c b/mesalib/src/mesa/vbo/vbo_exec_draw.c
index 75115ce66..c454c6943 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_draw.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_draw.c
@@ -220,9 +220,10 @@ vbo_exec_bind_arrays( struct gl_context *ctx )
if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
/* a real buffer obj: Ptr is an offset, not a pointer*/
- assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */
+ assert(exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Pointer);
assert(offset >= 0);
- arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset;
+ arrays[attr].Ptr = (GLubyte *)
+ exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset + offset;
}
else {
/* Ptr into ordinary app memory */
@@ -261,12 +262,15 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec )
struct gl_context *ctx = exec->ctx;
if (ctx->Driver.FlushMappedBufferRange) {
- GLintptr offset = exec->vtx.buffer_used - exec->vtx.bufferobj->Offset;
- GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * sizeof(float);
+ GLintptr offset = exec->vtx.buffer_used -
+ exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset;
+ GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) *
+ sizeof(float);
if (length)
ctx->Driver.FlushMappedBufferRange(ctx, offset, length,
- exec->vtx.bufferobj);
+ exec->vtx.bufferobj,
+ MAP_INTERNAL);
}
exec->vtx.buffer_used += (exec->vtx.buffer_ptr -
@@ -275,7 +279,7 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec )
assert(exec->vtx.buffer_used <= VBO_VERT_BUFFER_SIZE);
assert(exec->vtx.buffer_ptr != NULL);
- ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj, MAP_INTERNAL);
exec->vtx.buffer_map = NULL;
exec->vtx.buffer_ptr = NULL;
exec->vtx.max_vert = 0;
@@ -312,7 +316,8 @@ vbo_exec_vtx_map( struct vbo_exec_context *exec )
(VBO_VERT_BUFFER_SIZE -
exec->vtx.buffer_used),
accessRange,
- exec->vtx.bufferobj);
+ exec->vtx.bufferobj,
+ MAP_INTERNAL);
exec->vtx.buffer_ptr = exec->vtx.buffer_map;
}
else {
@@ -325,14 +330,19 @@ vbo_exec_vtx_map( struct vbo_exec_context *exec )
exec->vtx.buffer_used = 0;
if (ctx->Driver.BufferData(ctx, GL_ARRAY_BUFFER_ARB,
- VBO_VERT_BUFFER_SIZE,
- NULL, usage, exec->vtx.bufferobj)) {
+ VBO_VERT_BUFFER_SIZE,
+ NULL, usage,
+ GL_MAP_WRITE_BIT |
+ GL_DYNAMIC_STORAGE_BIT |
+ GL_CLIENT_STORAGE_BIT,
+ exec->vtx.bufferobj)) {
/* buffer allocation worked, now map the buffer */
exec->vtx.buffer_map =
(GLfloat *)ctx->Driver.MapBufferRange(ctx,
0, VBO_VERT_BUFFER_SIZE,
accessRange,
- exec->vtx.bufferobj);
+ exec->vtx.bufferobj,
+ MAP_INTERNAL);
}
else {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "VBO allocation");
diff --git a/mesalib/src/mesa/vbo/vbo_primitive_restart.c b/mesalib/src/mesa/vbo/vbo_primitive_restart.c
index 9c3055431..25c89669c 100644
--- a/mesalib/src/mesa/vbo/vbo_primitive_restart.c
+++ b/mesalib/src/mesa/vbo/vbo_primitive_restart.c
@@ -177,7 +177,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
struct _mesa_prim temp_prim;
struct vbo_context *vbo = vbo_context(ctx);
vbo_draw_func draw_prims_func = vbo->draw_prims;
- GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer;
+ GLboolean map_ib = ib->obj->Name && !ib->obj->Mappings[MAP_INTERNAL].Pointer;
void *ptr;
/* If there is an indirect buffer, map it and extract the draw params */
@@ -186,7 +186,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
struct _mesa_index_buffer new_ib = *ib;
const uint32_t *indirect_params;
if (!ctx->Driver.MapBufferRange(ctx, 0, indirect->Size, GL_MAP_READ_BIT,
- indirect)) {
+ indirect, MAP_INTERNAL)) {
/* something went wrong with mapping, give up */
_mesa_error(ctx, GL_OUT_OF_MEMORY,
@@ -195,8 +195,9 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
}
assert(nr_prims == 1);
- indirect_params = (const uint32_t *) ADD_POINTERS(indirect->Pointer,
- new_prim.indirect_offset);
+ indirect_params = (const uint32_t *)
+ ADD_POINTERS(indirect->Mappings[MAP_INTERNAL].Pointer,
+ new_prim.indirect_offset);
new_prim.is_indirect = 0;
new_prim.count = indirect_params[0];
@@ -210,7 +211,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
prims = &new_prim;
ib = &new_ib;
- ctx->Driver.UnmapBuffer(ctx, indirect);
+ ctx->Driver.UnmapBuffer(ctx, indirect, MAP_INTERNAL);
}
/* Find the sub-primitives. These are regions in the index buffer which
@@ -218,17 +219,17 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
*/
if (map_ib) {
ctx->Driver.MapBufferRange(ctx, 0, ib->obj->Size, GL_MAP_READ_BIT,
- ib->obj);
+ ib->obj, MAP_INTERNAL);
}
- ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
+ ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr);
sub_prims = find_sub_primitives(ptr, vbo_sizeof_ib_type(ib->type),
0, ib->count, restart_index,
&num_sub_prims);
if (map_ib) {
- ctx->Driver.UnmapBuffer(ctx, ib->obj);
+ ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
}
/* Loop over the primitives, and use the located sub-primitives to draw
diff --git a/mesalib/src/mesa/vbo/vbo_rebase.c b/mesalib/src/mesa/vbo/vbo_rebase.c
index c700621ce..f3fe5f757 100644
--- a/mesalib/src/mesa/vbo/vbo_rebase.c
+++ b/mesalib/src/mesa/vbo/vbo_rebase.c
@@ -157,15 +157,16 @@ void vbo_rebase_prims( struct gl_context *ctx,
} else if (ib) {
/* Unfortunately need to adjust each index individually.
*/
- GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer;
+ GLboolean map_ib = ib->obj->Name &&
+ !ib->obj->Mappings[MAP_INTERNAL].Pointer;
void *ptr;
if (map_ib)
ctx->Driver.MapBufferRange(ctx, 0, ib->obj->Size, GL_MAP_READ_BIT,
- ib->obj);
+ ib->obj, MAP_INTERNAL);
- ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
+ ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr);
/* Some users might prefer it if we translated elements to
* GLuints here. Others wouldn't...
@@ -183,7 +184,7 @@ void vbo_rebase_prims( struct gl_context *ctx,
}
if (map_ib)
- ctx->Driver.UnmapBuffer(ctx, ib->obj);
+ ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
tmp_ib.obj = ctx->Shared->NullBufferObj;
tmp_ib.ptr = tmp_indices;
diff --git a/mesalib/src/mesa/vbo/vbo_save_api.c b/mesalib/src/mesa/vbo/vbo_save_api.c
index 98ab68623..1c6b91942 100644
--- a/mesalib/src/mesa/vbo/vbo_save_api.c
+++ b/mesalib/src/mesa/vbo/vbo_save_api.c
@@ -200,6 +200,8 @@ alloc_vertex_store(struct gl_context *ctx)
GL_ARRAY_BUFFER_ARB,
VBO_SAVE_BUFFER_SIZE * sizeof(GLfloat),
NULL, GL_STATIC_DRAW_ARB,
+ GL_MAP_WRITE_BIT |
+ GL_DYNAMIC_STORAGE_BIT,
vertex_store->bufferobj);
}
else {
@@ -251,7 +253,8 @@ vbo_save_map_vertex_store(struct gl_context *ctx,
GLsizeiptr size = vertex_store->bufferobj->Size - offset;
GLfloat *range = (GLfloat *)
ctx->Driver.MapBufferRange(ctx, offset, size, access,
- vertex_store->bufferobj);
+ vertex_store->bufferobj,
+ MAP_INTERNAL);
if (range) {
/* compute address of start of whole buffer (needed elsewhere) */
vertex_store->buffer = range - vertex_store->used;
@@ -277,13 +280,14 @@ vbo_save_unmap_vertex_store(struct gl_context *ctx,
if (vertex_store->bufferobj->Size > 0) {
GLintptr offset = 0;
GLsizeiptr length = vertex_store->used * sizeof(GLfloat)
- - vertex_store->bufferobj->Offset;
+ - vertex_store->bufferobj->Mappings[MAP_INTERNAL].Offset;
/* Explicitly flush the region we wrote to */
ctx->Driver.FlushMappedBufferRange(ctx, offset, length,
- vertex_store->bufferobj);
+ vertex_store->bufferobj,
+ MAP_INTERNAL);
- ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj, MAP_INTERNAL);
}
vertex_store->buffer = NULL;
}
@@ -1116,6 +1120,7 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type,
{
GET_CURRENT_CONTEXT(ctx);
struct vbo_save_context *save = &vbo_context(ctx)->save;
+ struct gl_buffer_object *indexbuf = ctx->Array.VAO->IndexBufferObj;
GLint i;
if (!_mesa_is_valid_prim_mode(ctx, mode)) {
@@ -1138,9 +1143,9 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type,
_ae_map_vbos(ctx);
- if (_mesa_is_bufferobj(ctx->Array.VAO->IndexBufferObj))
+ if (_mesa_is_bufferobj(indexbuf))
indices =
- ADD_POINTERS(ctx->Array.VAO->IndexBufferObj->Pointer, indices);
+ ADD_POINTERS(indexbuf->Mappings[MAP_INTERNAL].Pointer, indices);
vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_WEAK |
VBO_SAVE_PRIM_NO_CURRENT_UPDATE));
diff --git a/mesalib/src/mesa/vbo/vbo_save_draw.c b/mesalib/src/mesa/vbo/vbo_save_draw.c
index 4b13cc4e5..89fd30e0f 100644
--- a/mesalib/src/mesa/vbo/vbo_save_draw.c
+++ b/mesalib/src/mesa/vbo/vbo_save_draw.c
@@ -225,7 +225,8 @@ vbo_save_loopback_vertex_list(struct gl_context *ctx,
ctx->Driver.MapBufferRange(ctx, 0,
list->vertex_store->bufferobj->Size,
GL_MAP_READ_BIT, /* ? */
- list->vertex_store->bufferobj);
+ list->vertex_store->bufferobj,
+ MAP_INTERNAL);
vbo_loopback_vertex_list(ctx,
(const GLfloat *)(buffer + list->buffer_offset),
@@ -235,7 +236,8 @@ vbo_save_loopback_vertex_list(struct gl_context *ctx,
list->wrap_count,
list->vertex_size);
- ctx->Driver.UnmapBuffer(ctx, list->vertex_store->bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, list->vertex_store->bufferobj,
+ MAP_INTERNAL);
}
diff --git a/mesalib/src/mesa/vbo/vbo_split_copy.c b/mesalib/src/mesa/vbo/vbo_split_copy.c
index 4332ef2e6..719ad651a 100644
--- a/mesalib/src/mesa/vbo/vbo_split_copy.c
+++ b/mesalib/src/mesa/vbo/vbo_split_copy.c
@@ -451,11 +451,14 @@ replay_init( struct copy_context *copy )
copy->varying[j].size = attr_size(copy->array[i]);
copy->vertex_size += attr_size(copy->array[i]);
- if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo))
- ctx->Driver.MapBufferRange(ctx, 0, vbo->Size, GL_MAP_READ_BIT, vbo);
+ if (_mesa_is_bufferobj(vbo) &&
+ !_mesa_bufferobj_mapped(vbo, MAP_INTERNAL))
+ ctx->Driver.MapBufferRange(ctx, 0, vbo->Size, GL_MAP_READ_BIT, vbo,
+ MAP_INTERNAL);
- copy->varying[j].src_ptr = ADD_POINTERS(vbo->Pointer,
- copy->array[i]->Ptr);
+ copy->varying[j].src_ptr =
+ ADD_POINTERS(vbo->Mappings[MAP_INTERNAL].Pointer,
+ copy->array[i]->Ptr);
copy->dstarray_ptr[i] = &copy->varying[j].dstarray;
}
@@ -466,12 +469,13 @@ replay_init( struct copy_context *copy )
* do it internally.
*/
if (_mesa_is_bufferobj(copy->ib->obj) &&
- !_mesa_bufferobj_mapped(copy->ib->obj))
+ !_mesa_bufferobj_mapped(copy->ib->obj, MAP_INTERNAL))
ctx->Driver.MapBufferRange(ctx, 0, copy->ib->obj->Size, GL_MAP_READ_BIT,
- copy->ib->obj);
+ copy->ib->obj, MAP_INTERNAL);
- srcptr = (const GLubyte *) ADD_POINTERS(copy->ib->obj->Pointer,
- copy->ib->ptr);
+ srcptr = (const GLubyte *)
+ ADD_POINTERS(copy->ib->obj->Mappings[MAP_INTERNAL].Pointer,
+ copy->ib->ptr);
switch (copy->ib->type) {
case GL_UNSIGNED_BYTE:
@@ -572,15 +576,15 @@ replay_finish( struct copy_context *copy )
*/
for (i = 0; i < copy->nr_varying; i++) {
struct gl_buffer_object *vbo = copy->varying[i].array->BufferObj;
- if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo))
- ctx->Driver.UnmapBuffer(ctx, vbo);
+ if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo, MAP_INTERNAL))
+ ctx->Driver.UnmapBuffer(ctx, vbo, MAP_INTERNAL);
}
/* Unmap index buffer:
*/
if (_mesa_is_bufferobj(copy->ib->obj) &&
- _mesa_bufferobj_mapped(copy->ib->obj)) {
- ctx->Driver.UnmapBuffer(ctx, copy->ib->obj);
+ _mesa_bufferobj_mapped(copy->ib->obj, MAP_INTERNAL)) {
+ ctx->Driver.UnmapBuffer(ctx, copy->ib->obj, MAP_INTERNAL);
}
}
diff --git a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj
index d620d17ea..e63e2c552 100644
--- a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj
+++ b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj
@@ -295,6 +295,7 @@
<ClCompile Include="..\..\..\..\src\glsl\ralloc.c" />
<ClCompile Include="..\..\..\..\src\glsl\strtod.c" />
<ClCompile Include="..\..\..\..\src\glsl\s_expression.cpp" />
+ <ClCompile Include="..\..\..\..\src\mesa\drivers\common\meta_blit.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\accum.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\api_arrayelt.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\api_exec.c" />
@@ -315,6 +316,7 @@
<ClCompile Include="..\..\..\..\src\mesa\main\objectlabel.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\pack.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\performance_monitor.c" />
+ <ClCompile Include="..\..\..\..\src\mesa\main\pipelineobj.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\pixeltransfer.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\querymatrix.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\remap.c" />
diff --git a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters
index ac2a46d62..a7db91a3f 100644
--- a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters
+++ b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters
@@ -788,6 +788,12 @@
<ClCompile Include="..\..\..\..\src\mesa\main\genmipmap.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\..\src\mesa\drivers\common\meta_blit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\..\src\mesa\main\pipelineobj.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\src\glsl\strtod.h">
diff --git a/xorg-server/Makefile.am b/xorg-server/Makefile.am
index 7c93d8d20..f0fa2d839 100644
--- a/xorg-server/Makefile.am
+++ b/xorg-server/Makefile.am
@@ -111,7 +111,7 @@ DIST_SUBDIRS = \
composite \
glx \
exa \
- $(GLAMOR_DIR) \
+ glamor \
config \
dri3 \
present \
diff --git a/xorg-server/Xext/sync.c b/xorg-server/Xext/sync.c
index 7129e9833..49c262c57 100644
--- a/xorg-server/Xext/sync.c
+++ b/xorg-server/Xext/sync.c
@@ -2730,27 +2730,24 @@ IdleTimeBlockHandler(void *pCounter, struct timeval **wt, void *LastSelectMask)
* If we've been idle more than it, and someone wants to know about
* that level-triggered, schedule an immediate wakeup.
*/
- unsigned long timeout = -1;
if (XSyncValueLessThan(idle, *greater)) {
XSyncValue value;
Bool overflow;
XSyncValueSubtract(&value, *greater, idle, &overflow);
- timeout = min(timeout, XSyncValueLow32(value));
+ AdjustWaitForDelay(wt, XSyncValueLow32(value));
}
else {
for (list = counter->sync.pTriglist; list;
list = list->next) {
trig = list->pTrigger;
if (trig->CheckTrigger(trig, old_idle)) {
- timeout = min(timeout, 0);
+ AdjustWaitForDelay(wt, 0);
break;
}
}
}
-
- AdjustWaitForDelay(wt, timeout);
}
counter->value = old_idle; /* pop */
diff --git a/xorg-server/Xext/xres.c b/xorg-server/Xext/xres.c
index 32e8c8135..32e8c8135 100755..100644
--- a/xorg-server/Xext/xres.c
+++ b/xorg-server/Xext/xres.c
diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c
index 90f49e43b..700788213 100644
--- a/xorg-server/Xi/exevents.c
+++ b/xorg-server/Xi/exevents.c
@@ -2187,7 +2187,8 @@ CheckGrabValues(ClientPtr client, GrabParameters *param)
return BadValue;
}
- if (param->grabtype != XI2 && (param->modifiers != AnyModifier) &&
+ if (param->modifiers != AnyModifier &&
+ param->modifiers != XIAnyModifier &&
(param->modifiers & ~AllModifiersMask)) {
client->errorValue = param->modifiers;
return BadValue;
diff --git a/xorg-server/Xi/extinit.c b/xorg-server/Xi/extinit.c
index 9ebd733ab..26c628cbd 100644
--- a/xorg-server/Xi/extinit.c
+++ b/xorg-server/Xi/extinit.c
@@ -1169,8 +1169,8 @@ IResetProc(ExtensionEntry * unused)
EventSwapVector[DevicePropertyNotify] = NotImplemented;
RestoreExtensionEvents();
- free((void *) xi_all_devices.name);
- free((void *) xi_all_master_devices.name);
+ free(xi_all_devices.name);
+ free(xi_all_master_devices.name);
XIBarrierReset();
}
diff --git a/xorg-server/Xi/listdev.c b/xorg-server/Xi/listdev.c
index e403a0cb5..336053cf1 100644
--- a/xorg-server/Xi/listdev.c
+++ b/xorg-server/Xi/listdev.c
@@ -121,7 +121,7 @@ SizeDeviceInfo(DeviceIntPtr d, int *namesize, int *size)
static void
CopyDeviceName(char **namebuf, const char *name)
{
- char *nameptr = (char *) *namebuf;
+ char *nameptr = *namebuf;
if (name) {
*nameptr++ = strlen(name);
diff --git a/xorg-server/Xi/xipassivegrab.c b/xorg-server/Xi/xipassivegrab.c
index 0e37e0e1b..ca69050b2 100644
--- a/xorg-server/Xi/xipassivegrab.c
+++ b/xorg-server/Xi/xipassivegrab.c
@@ -189,6 +189,10 @@ ProcXIPassiveGrabDevice(ClientPtr client)
uint8_t status = Success;
param.modifiers = *modifiers;
+ ret = CheckGrabValues(client, &param);
+ if (ret != Success)
+ goto out;
+
switch (stuff->grab_type) {
case XIGrabtypeButton:
status = GrabButton(client, dev, mod_dev, stuff->detail,
diff --git a/xorg-server/config/Makefile.am b/xorg-server/config/Makefile.am
index e0f0a8ddf..0e20e8b3d 100644
--- a/xorg-server/config/Makefile.am
+++ b/xorg-server/config/Makefile.am
@@ -38,4 +38,4 @@ endif # !CONFIG_HAL
endif # !CONFIG_UDEV
-EXTRA_DIST = xorg-server.conf x11-input.fdi 10-evdev.conf non-seat0.conf.multi-seat fdi2iclass.py 10-quirks.conf
+EXTRA_DIST = x11-input.fdi 10-evdev.conf fdi2iclass.py 10-quirks.conf
diff --git a/xorg-server/config/non-seat0.conf.multi-seat b/xorg-server/config/non-seat0.conf.multi-seat
deleted file mode 100644
index 34008ce50..000000000
--- a/xorg-server/config/non-seat0.conf.multi-seat
+++ /dev/null
@@ -1,18 +0,0 @@
-# This is the default configuration for servers on seat-1 and above.
-#
-# Start the server with -config non-seat0.conf.multi-seat, or alternatively
-# rename the file to end in .conf and put it in the standard config
-# directory (though it will apply to _all_ seats!).
-#
-# * Disable VT switching with Ctrl-Alt-F1
-# * Force a grab on all input devices to detach them from the VT subsystem
-# to avoid event leakage.
-
-Section "ServerFlags"
- Option "DontVTSwitch" "on"
-EndSection
-
-Section "InputClass"
- Identifier "Force input devices to seat"
- Option "GrabDevice" "on"
-EndSection
diff --git a/xorg-server/config/udev.c b/xorg-server/config/udev.c
index 436b8f038..68ed34843 100644
--- a/xorg-server/config/udev.c
+++ b/xorg-server/config/udev.c
@@ -242,16 +242,16 @@ device_added(struct udev_device *udev_device)
free(config_info);
input_option_free_list(&input_options);
- free((void *) attrs.usb_id);
- free((void *) attrs.pnp_id);
- free((void *) attrs.product);
- free((void *) attrs.device);
- free((void *) attrs.vendor);
+ free(attrs.usb_id);
+ free(attrs.pnp_id);
+ free(attrs.product);
+ free(attrs.device);
+ free(attrs.vendor);
if (attrs.tags) {
- const char **tag = attrs.tags;
+ char **tag = attrs.tags;
while (*tag) {
- free((void *) *tag);
+ free(*tag);
tag++;
}
free(attrs.tags);
diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac
index c6764f5a8..0fb2fc375 100644
--- a/xorg-server/configure.ac
+++ b/xorg-server/configure.ac
@@ -26,9 +26,9 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.15.99.900, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2014-01-09"
-RELEASE_NAME="Golden Gaytime"
+AC_INIT([xorg-server], 1.15.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2014-02-24"
+RELEASE_NAME="Szechuan Hot Pot"
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -841,7 +841,7 @@ if test "x$WITH_SYSTEMD_DAEMON" = xauto; then
WITH_SYSTEMD_DAEMON="$HAVE_SYSTEMD_DAEMON"
fi
if test "x$WITH_SYSTEMD_DAEMON" = xyes; then
- if "x$HAVE_SYSTEMD_DAEMON" = xno; then
+ if test "x$HAVE_SYSTEMD_DAEMON" = xno; then
AC_MSG_ERROR([systemd support requested but no library has been found])
fi
AC_DEFINE(HAVE_SYSTEMD_DAEMON, 1, [Define to 1 if libsystemd-daemon is available])
@@ -1853,7 +1853,7 @@ if test "x$XORG" = xyes; then
if test "x$PCI" = xyes; then
PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS)
SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS"
- XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS $LIBDRM_LIBS"
+ XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $LIBDRM_LIBS"
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS"
AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation])
@@ -2069,7 +2069,7 @@ dnl glamor
AM_CONDITIONAL([GLAMOR], [test "x$GLAMOR" = xyes])
if test "x$GLAMOR" = xyes; then
AC_DEFINE(GLAMOR, 1, [Build glamor])
- PKG_CHECK_MODULES([GLAMOR], [egl gl])
+ PKG_CHECK_MODULES([GLAMOR], [epoxy])
fi
dnl XWin DDX
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c
index 1d6c06d41..4e20b50d4 100644
--- a/xorg-server/dix/devices.c
+++ b/xorg-server/dix/devices.c
@@ -956,7 +956,7 @@ CloseDevice(DeviceIntPtr dev)
while (dev->xkb_interest)
XkbRemoveResourceClient((DevicePtr) dev, dev->xkb_interest->resource);
- free((void *) dev->name);
+ free(dev->name);
classes = (ClassesPtr) &dev->key;
FreeAllDeviceClasses(classes);
@@ -1284,6 +1284,7 @@ InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom *labels,
BUG_RETURN_VAL(dev == NULL, FALSE);
BUG_RETURN_VAL(dev->button != NULL, FALSE);
+ BUG_RETURN_VAL(numButtons >= MAX_BUTTONS, FALSE);
butc = calloc(1, sizeof(ButtonClassRec));
if (!butc)
diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c
index a6dce911a..28a54de76 100755..100644
--- a/xorg-server/dix/dispatch.c
+++ b/xorg-server/dix/dispatch.c
@@ -512,9 +512,9 @@ SetVendorRelease(int release)
}
void
-SetVendorString(const char *string)
+SetVendorString(const char *vendor)
{
- VendorString = string;
+ VendorString = vendor;
}
Bool
diff --git a/xorg-server/dix/dixfonts.c b/xorg-server/dix/dixfonts.c
index 49758d5b5..49758d5b5 100755..100644
--- a/xorg-server/dix/dixfonts.c
+++ b/xorg-server/dix/dixfonts.c
diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c
index 5a0296ba5..366bc9558 100644
--- a/xorg-server/dix/getevents.c
+++ b/xorg-server/dix/getevents.c
@@ -1671,6 +1671,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
}
#endif
+ BUG_RETURN_VAL(buttons >= MAX_BUTTONS, 0);
+
/* refuse events from disabled devices */
if (!pDev->enabled)
return 0;
diff --git a/xorg-server/dix/inpututils.c b/xorg-server/dix/inpututils.c
index 1ab16d14b..3a2f229e4 100644
--- a/xorg-server/dix/inpututils.c
+++ b/xorg-server/dix/inpututils.c
@@ -60,7 +60,8 @@ check_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, CARD32 *errval_out,
}
for (i = 0; i < len; i++) {
- if (dev->button->map[i + 1] != map[i] && dev->button->down[i + 1])
+ if (dev->button->map[i + 1] != map[i] &&
+ button_is_down(dev, i + 1, BUTTON_PROCESSED))
return MappingBusy;
}
@@ -351,7 +352,7 @@ DuplicateInputAttributes(InputAttributes * attrs)
{
InputAttributes *new_attr;
int ntags = 0;
- const char **tags, **new_tags;
+ char **tags, **new_tags;
if (!attrs)
return NULL;
@@ -403,20 +404,20 @@ DuplicateInputAttributes(InputAttributes * attrs)
void
FreeInputAttributes(InputAttributes * attrs)
{
- const char **tags;
+ char **tags;
if (!attrs)
return;
- free((void *) attrs->product);
- free((void *) attrs->vendor);
- free((void *) attrs->device);
- free((void *) attrs->pnp_id);
- free((void *) attrs->usb_id);
+ free(attrs->product);
+ free(attrs->vendor);
+ free(attrs->device);
+ free(attrs->pnp_id);
+ free(attrs->usb_id);
if ((tags = attrs->tags))
while (*tags)
- free((void *) *tags++);
+ free(*tags++);
free(attrs->tags);
free(attrs);
diff --git a/xorg-server/glamor/Makefile.am b/xorg-server/glamor/Makefile.am
index 3fe25304d..12a57c441 100644
--- a/xorg-server/glamor/Makefile.am
+++ b/xorg-server/glamor/Makefile.am
@@ -6,15 +6,15 @@ AM_CFLAGS = $(CWARNFLAGS) $(DIX_CFLAGS) $(GLAMOR_CFLAGS)
libglamor_la_SOURCES = \
glamor.c \
+ glamor_context.h \
glamor_copyarea.c \
glamor_copywindow.c \
glamor_core.c \
glamor_debug.h \
- glamor_gl_dispatch.h \
glamor_fill.c \
glamor_fillspans.c \
glamor_getspans.c \
- glamor_glext.h \
+ glamor_glx.c \
glamor_glyphs.c \
glamor_polyfillrect.c \
glamor_polylines.c \
@@ -35,7 +35,6 @@ libglamor_la_SOURCES = \
glamor_largepixmap.c\
glamor_picture.c\
glamor_window.c\
- glamor_gl_dispatch.c\
glamor_fbo.c\
glamor_compositerects.c\
glamor_xv.c\
diff --git a/xorg-server/glamor/glamor.c b/xorg-server/glamor/glamor.c
index feb110a66..7d8228cdd 100644
--- a/xorg-server/glamor/glamor.c
+++ b/xorg-server/glamor/glamor.c
@@ -95,7 +95,7 @@ glamor_set_pixmap_texture(PixmapPtr pixmap, unsigned int tex)
glamor_destroy_fbo(fbo);
}
- gl_iformat_for_depth(pixmap->drawable.depth, &format);
+ format = gl_iformat_for_pixmap(pixmap);
fbo = glamor_create_fbo_from_tex(glamor_priv, pixmap->drawable.width,
pixmap->drawable.height, format, tex, 0);
@@ -162,7 +162,7 @@ glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth,
pixmap_priv->base.pixmap = pixmap;
pixmap_priv->base.glamor_priv = glamor_priv;
- gl_iformat_for_depth(depth, &format);
+ format = gl_iformat_for_pixmap(pixmap);
pitch = (((w * pixmap->drawable.bitsPerPixel + 7) / 8) + 3) & ~3;
screen->ModifyPixmapHeader(pixmap, w, h, 0, 0, pitch, NULL);
@@ -218,13 +218,12 @@ void
glamor_block_handler(ScreenPtr screen)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
glamor_priv->tick++;
- dispatch->glFlush();
+ glFlush();
glamor_fbo_expire(glamor_priv);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
if (glamor_priv->state == RENDER_STATE
&& glamor_priv->render_idle_cnt++ > RENDER_IDEL_MAX) {
glamor_priv->state = IDLE_STATE;
@@ -236,10 +235,10 @@ static void
_glamor_block_handler(void *data, OSTimePtr timeout, void *last_select_mask)
{
glamor_screen_private *glamor_priv = data;
- glamor_gl_dispatch *dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glFlush();
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glFlush();
+ glamor_put_context(glamor_priv);
}
static void
@@ -281,10 +280,10 @@ glamor_init(ScreenPtr screen, unsigned int flags)
return FALSE;
if (flags & GLAMOR_INVERTED_Y_AXIS) {
- glamor_priv->yInverted = 1;
+ glamor_priv->yInverted = TRUE;
}
else
- glamor_priv->yInverted = 0;
+ glamor_priv->yInverted = FALSE;
if (!dixRegisterPrivateKey(glamor_screen_private_key, PRIVATE_SCREEN, 0)) {
LogMessage(X_WARNING,
@@ -302,50 +301,49 @@ glamor_init(ScreenPtr screen, unsigned int flags)
goto fail;;
}
- gl_version = glamor_gl_get_version();
+ if (epoxy_is_desktop_gl())
+ glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP;
+ else
+ glamor_priv->gl_flavor = GLAMOR_GL_ES2;
-#ifndef GLAMOR_GLES2
- if (gl_version < GLAMOR_GL_VERSION_ENCODE(1, 3)) {
- ErrorF("Require OpenGL version 1.3 or latter.\n");
- goto fail;
- }
-#else
- if (gl_version < GLAMOR_GL_VERSION_ENCODE(2, 0)) {
- ErrorF("Require Open GLES2.0 or latter.\n");
- goto fail;
- }
-#endif
+ gl_version = glamor_gl_get_version();
- glamor_gl_dispatch_init(screen, &glamor_priv->_dispatch, gl_version);
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ if (gl_version < GLAMOR_GL_VERSION_ENCODE(1, 3)) {
+ ErrorF("Require OpenGL version 1.3 or later.\n");
+ goto fail;
+ }
+ } else {
+ if (gl_version < GLAMOR_GL_VERSION_ENCODE(2, 0)) {
+ ErrorF("Require Open GLES2.0 or later.\n");
+ goto fail;
+ }
-#ifdef GLAMOR_GLES2
- if (!glamor_gl_has_extension("GL_EXT_texture_format_BGRA8888")) {
- ErrorF("GL_EXT_texture_format_BGRA8888 required\n");
- goto fail;
+ if (!glamor_gl_has_extension("GL_EXT_texture_format_BGRA8888")) {
+ ErrorF("GL_EXT_texture_format_BGRA8888 required\n");
+ goto fail;
+ }
}
-#endif
glamor_priv->has_pack_invert =
glamor_gl_has_extension("GL_MESA_pack_invert");
glamor_priv->has_fbo_blit =
glamor_gl_has_extension("GL_EXT_framebuffer_blit");
- glamor_priv->_dispatch.glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE,
- &glamor_priv->max_fbo_size);
+ glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &glamor_priv->max_fbo_size);
#ifdef MAX_FBO_SIZE
glamor_priv->max_fbo_size = MAX_FBO_SIZE;
#endif
glamor_set_debug_level(&glamor_debug_level);
-#ifdef GLAMOR_GLES2
- glamor_priv->gl_flavor = GLAMOR_GL_ES2;
-#else
- glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP;
-#endif
/* If we are using egl screen, call egl screen init to
* register correct close screen function. */
- if (flags & GLAMOR_USE_EGL_SCREEN)
- glamor_egl_screen_init(screen);
+ if (flags & GLAMOR_USE_EGL_SCREEN) {
+ glamor_egl_screen_init(screen, &glamor_priv->ctx);
+ } else {
+ if (!glamor_glx_screen_init(&glamor_priv->ctx))
+ goto fail;
+ }
glamor_priv->saved_procs.close_screen = screen->CloseScreen;
screen->CloseScreen = glamor_close_screen;
diff --git a/xorg-server/glamor/glamor.h b/xorg-server/glamor/glamor.h
index 05f565b12..eec687256 100644
--- a/xorg-server/glamor/glamor.h
+++ b/xorg-server/glamor/glamor.h
@@ -36,6 +36,8 @@
#include <fb.h>
#include <fbpict.h>
+struct glamor_context;
+
/*
* glamor_pixmap_type : glamor pixmap's type.
* @MEMORY: pixmap is in memory.
@@ -142,11 +144,6 @@ extern _X_EXPORT void glamor_block_handler(ScreenPtr screen);
extern _X_EXPORT PixmapPtr glamor_create_pixmap(ScreenPtr screen, int w, int h,
int depth, unsigned int usage);
-extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen);
-
-extern _X_EXPORT void glamor_egl_make_current(ScreenPtr screen);
-extern _X_EXPORT void glamor_egl_restore_context(ScreenPtr screen);
-
/* @glamor_egl_exchange_buffers: Exchange the underlying buffers(KHR image,fbo).
*
* @front: front pixmap.
diff --git a/xorg-server/glamor/glamor_context.h b/xorg-server/glamor/glamor_context.h
new file mode 100644
index 000000000..8781afc48
--- /dev/null
+++ b/xorg-server/glamor/glamor_context.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+/**
+ * @file glamor_context.h
+ *
+ * This is the struct of state required for context switching in
+ * glamor. It has to use types that don't require including either
+ * server headers or Xlib headers, since it will be included by both
+ * the server and the GLX (xlib) code.
+ */
+
+struct glamor_context {
+ /** Either an EGLDisplay or an Xlib Display */
+ void *display;
+
+ /** Either a GLXContext or an EGLContext. */
+ void *ctx;
+
+ /** The EGLSurface we should MakeCurrent to */
+ void *drawable;
+
+ /** The GLXDrawable we should MakeCurrent to */
+ uint32_t drawable_xid;
+
+ /**
+ * Count of how deep in glamor_get_context() we are, to reduce
+ * MakeCurrent calls.
+ */
+ int get_count;
+
+ void (*get_context)(struct glamor_context *glamor_ctx);
+ void (*put_context)(struct glamor_context *glamor_ctx);
+};
+
+Bool glamor_glx_screen_init(struct glamor_context *glamor_ctx);
diff --git a/xorg-server/glamor/glamor_copyarea.c b/xorg-server/glamor/glamor_copyarea.c
index 2735ba0bc..d6bcacd36 100644
--- a/xorg-server/glamor/glamor_copyarea.c
+++ b/xorg-server/glamor/glamor_copyarea.c
@@ -31,7 +31,6 @@
*
* GC CopyArea implementation
*/
-#ifndef GLAMOR_GLES2
static Bool
glamor_copy_n_to_n_fbo_blit(DrawablePtr src,
DrawablePtr dst,
@@ -42,7 +41,6 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src,
PixmapPtr src_pixmap = glamor_get_drawable_pixmap(src);
glamor_pixmap_private *src_pixmap_priv, *dst_pixmap_priv;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
int dst_x_off, dst_y_off, src_x_off, src_y_off, i;
int fbo_x_off, fbo_y_off;
int src_fbo_x_off, src_fbo_y_off;
@@ -72,9 +70,8 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src,
pixmap_priv_get_fbo_off(dst_pixmap_priv, &fbo_x_off, &fbo_y_off);
pixmap_priv_get_fbo_off(src_pixmap_priv, &src_fbo_x_off, &src_fbo_y_off);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT,
- src_pixmap_priv->base.fbo->fb);
+ glamor_get_context(glamor_priv);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb);
glamor_get_drawable_deltas(dst, dst_pixmap, &dst_x_off, &dst_y_off);
glamor_get_drawable_deltas(src, src_pixmap, &src_x_off, &src_y_off);
dst_x_off += fbo_x_off;
@@ -84,23 +81,15 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src,
for (i = 0; i < nbox; i++) {
if (glamor_priv->yInverted) {
- dispatch->glBlitFramebuffer((box[i].x1 + dx +
- src_x_off),
- (box[i].y1 +
- src_y_off),
- (box[i].x2 + dx +
- src_x_off),
- (box[i].y2 +
- src_y_off),
- (box[i].x1 +
- dst_x_off),
- (box[i].y1 +
- dst_y_off),
- (box[i].x2 +
- dst_x_off),
- (box[i].y2 +
- dst_y_off),
- GL_COLOR_BUFFER_BIT, GL_NEAREST);
+ glBlitFramebuffer(box[i].x1 + dx + src_x_off,
+ box[i].y1 + src_y_off,
+ box[i].x2 + dx + src_x_off,
+ box[i].y2 + src_y_off,
+ box[i].x1 + dst_x_off,
+ box[i].y1 + dst_y_off,
+ box[i].x2 + dst_x_off,
+ box[i].y2 + dst_y_off,
+ GL_COLOR_BUFFER_BIT, GL_NEAREST);
}
else {
int flip_dst_y1 =
@@ -112,26 +101,21 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src,
int flip_src_y2 =
src_pixmap->drawable.height - (box[i].y1 + src_y_off);
- dispatch->glBlitFramebuffer(box[i].x1 + dx +
- src_x_off,
- flip_src_y1,
- box[i].x2 + dx +
- src_x_off,
- flip_src_y2,
- box[i].x1 +
- dst_x_off,
- flip_dst_y1,
- box[i].x2 +
- dst_x_off,
- flip_dst_y2,
- GL_COLOR_BUFFER_BIT, GL_NEAREST);
+ glBlitFramebuffer(box[i].x1 + dx + src_x_off,
+ flip_src_y1,
+ box[i].x2 + dx + src_x_off,
+ flip_src_y2,
+ box[i].x1 + dst_x_off,
+ flip_dst_y1,
+ box[i].x2 + dst_x_off,
+ flip_dst_y2,
+ GL_COLOR_BUFFER_BIT, GL_NEAREST);
}
}
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
glamor_priv->state = BLIT_STATE;
return TRUE;
}
-#endif
static Bool
glamor_copy_n_to_n_textured(DrawablePtr src,
@@ -140,7 +124,6 @@ glamor_copy_n_to_n_textured(DrawablePtr src,
{
glamor_screen_private *glamor_priv =
glamor_get_screen_private(dst->pScreen);
- glamor_gl_dispatch *dispatch;
PixmapPtr src_pixmap = glamor_get_drawable_pixmap(src);
PixmapPtr dst_pixmap = glamor_get_drawable_pixmap(dst);
int i;
@@ -172,37 +155,32 @@ glamor_copy_n_to_n_textured(DrawablePtr src,
glamor_get_drawable_deltas(dst, dst_pixmap, &dst_x_off, &dst_y_off);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
glamor_set_destination_pixmap_priv_nc(dst_pixmap_priv);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), vertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, 2 * sizeof(float), vertices);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
glamor_get_drawable_deltas(src, src_pixmap, &src_x_off, &src_y_off);
dx += src_x_off;
dy += src_y_off;
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
-#ifndef GLAMOR_GLES2
- dispatch->glEnable(GL_TEXTURE_2D);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
-#endif
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
- GL_FLOAT, GL_FALSE,
- 2 * sizeof(float), texcoords);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(glamor_priv->finish_access_prog[0]);
- dispatch->glUniform1i(glamor_priv->finish_access_revert[0], REVERT_NONE);
- dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[0],
- SWAP_NONE_UPLOADING);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
+ }
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), texcoords);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(glamor_priv->finish_access_prog[0]);
+ glUniform1i(glamor_priv->finish_access_revert[0], REVERT_NONE);
+ glUniform1i(glamor_priv->finish_access_swap_rb[0], SWAP_NONE_UPLOADING);
for (i = 0; i < nbox; i++) {
@@ -222,17 +200,14 @@ glamor_copy_n_to_n_textured(DrawablePtr src,
box[i].x2 + dx,
box[i].y2 + dy,
glamor_priv->yInverted, texcoords);
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
-#ifndef GLAMOR_GLES2
- dispatch->glDisable(GL_TEXTURE_2D);
-#endif
- dispatch->glUseProgram(0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
/* The source texture is bound to a fbo, we have to flush it here. */
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
return TRUE;
@@ -289,15 +264,14 @@ __glamor_copy_n_to_n(DrawablePtr src,
box[0].x1, box[0].y1,
box[0].x2 - box[0].x1, box[0].y2 - box[0].y1,
dx, dy, src_pixmap, dst_pixmap);
-#ifndef GLAMOR_GLES2
- if (!overlaped &&
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP &&
+ !overlaped &&
(glamor_priv->state != RENDER_STATE
|| !src_pixmap_priv->base.gl_tex || !dst_pixmap_priv->base.gl_tex)
&& glamor_copy_n_to_n_fbo_blit(src, dst, gc, box, nbox, dx, dy)) {
ret = TRUE;
goto done;
}
-#endif
glamor_calculate_boxes_bound(&bound, box, nbox);
/* Overlaped indicate the src and dst are the same pixmap. */
@@ -364,10 +338,10 @@ _glamor_copy_n_to_n(DrawablePtr src,
Bool upsidedown, Pixel bitplane,
void *closure, Bool fallback)
{
+ ScreenPtr screen = dst->pScreen;
PixmapPtr dst_pixmap, src_pixmap;
glamor_pixmap_private *dst_pixmap_priv, *src_pixmap_priv;
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
BoxPtr extent;
RegionRec region;
int src_x_off, src_y_off, dst_x_off, dst_y_off;
@@ -381,7 +355,7 @@ _glamor_copy_n_to_n(DrawablePtr src,
src_pixmap = glamor_get_drawable_pixmap(src);
src_pixmap_priv = glamor_get_pixmap_private(src_pixmap);
- glamor_priv = glamor_get_screen_private(dst->pScreen);
+ glamor_priv = glamor_get_screen_private(screen);
DEBUGF("Copy %d %d %dx%d dx %d dy %d from %p to %p \n",
box[0].x1, box[0].y1,
@@ -394,12 +368,12 @@ _glamor_copy_n_to_n(DrawablePtr src,
if (gc) {
if (!glamor_set_planemask(dst_pixmap, gc->planemask))
goto fall_back;
- dispatch = glamor_get_dispatch(glamor_priv);
- if (!glamor_set_alu(dispatch, gc->alu)) {
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ if (!glamor_set_alu(screen, gc->alu)) {
+ glamor_put_context(glamor_priv);
goto fail;
}
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
if (!src_pixmap_priv) {
@@ -572,9 +546,9 @@ _glamor_copy_n_to_n(DrawablePtr src,
}
fail:
- dispatch = glamor_get_dispatch(glamor_priv);
- glamor_set_alu(dispatch, GXcopy);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glamor_set_alu(screen, GXcopy);
+ glamor_put_context(glamor_priv);
if (ok)
return TRUE;
diff --git a/xorg-server/glamor/glamor_core.c b/xorg-server/glamor/glamor_core.c
index 4eac85603..58838095b 100644
--- a/xorg-server/glamor/glamor_core.c
+++ b/xorg-server/glamor/glamor_core.c
@@ -51,24 +51,23 @@ glamor_get_drawable_location(const DrawablePtr drawable)
}
GLint
-glamor_compile_glsl_prog(glamor_gl_dispatch * dispatch, GLenum type,
- const char *source)
+glamor_compile_glsl_prog(GLenum type, const char *source)
{
GLint ok;
GLint prog;
- prog = dispatch->glCreateShader(type);
- dispatch->glShaderSource(prog, 1, (const GLchar **) &source, NULL);
- dispatch->glCompileShader(prog);
- dispatch->glGetShaderiv(prog, GL_COMPILE_STATUS, &ok);
+ prog = glCreateShader(type);
+ glShaderSource(prog, 1, (const GLchar **) &source, NULL);
+ glCompileShader(prog);
+ glGetShaderiv(prog, GL_COMPILE_STATUS, &ok);
if (!ok) {
GLchar *info;
GLint size;
- dispatch->glGetShaderiv(prog, GL_INFO_LOG_LENGTH, &size);
+ glGetShaderiv(prog, GL_INFO_LOG_LENGTH, &size);
info = malloc(size);
if (info) {
- dispatch->glGetShaderInfoLog(prog, size, NULL, info);
+ glGetShaderInfoLog(prog, size, NULL, info);
ErrorF("Failed to compile %s: %s\n",
type == GL_FRAGMENT_SHADER ? "FS" : "VS", info);
ErrorF("Program source:\n%s", source);
@@ -83,20 +82,20 @@ glamor_compile_glsl_prog(glamor_gl_dispatch * dispatch, GLenum type,
}
void
-glamor_link_glsl_prog(glamor_gl_dispatch * dispatch, GLint prog)
+glamor_link_glsl_prog(GLint prog)
{
GLint ok;
- dispatch->glLinkProgram(prog);
- dispatch->glGetProgramiv(prog, GL_LINK_STATUS, &ok);
+ glLinkProgram(prog);
+ glGetProgramiv(prog, GL_LINK_STATUS, &ok);
if (!ok) {
GLchar *info;
GLint size;
- dispatch->glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size);
+ glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size);
info = malloc(size);
- dispatch->glGetProgramInfoLog(prog, size, NULL, info);
+ glGetProgramInfoLog(prog, size, NULL, info);
ErrorF("Failed to link: %s\n", info);
FatalError("GLSL link failure\n");
}
@@ -143,7 +142,6 @@ void
glamor_init_finish_access_shaders(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
const char *vs_source =
"attribute vec4 v_position;\n"
"attribute vec4 v_texcoord0;\n"
@@ -217,86 +215,78 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
char *source;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- glamor_priv->finish_access_prog[0] = dispatch->glCreateProgram();
- glamor_priv->finish_access_prog[1] = dispatch->glCreateProgram();
+ glamor_get_context(glamor_priv);
+ glamor_priv->finish_access_prog[0] = glCreateProgram();
+ glamor_priv->finish_access_prog[1] = glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, vs_source);
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, vs_source);
XNFasprintf(&source, "%s%s", common_source, fs_source);
- fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, source);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, source);
free(source);
- dispatch->glAttachShader(glamor_priv->finish_access_prog[0], vs_prog);
- dispatch->glAttachShader(glamor_priv->finish_access_prog[0], fs_prog);
+ glAttachShader(glamor_priv->finish_access_prog[0], vs_prog);
+ glAttachShader(glamor_priv->finish_access_prog[0], fs_prog);
- avs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, vs_source);
+ avs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, vs_source);
XNFasprintf(&source, "%s%s", common_source, set_alpha_source);
- set_alpha_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER,
+ set_alpha_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER,
source);
free(source);
- dispatch->glAttachShader(glamor_priv->finish_access_prog[1], avs_prog);
- dispatch->glAttachShader(glamor_priv->finish_access_prog[1],
- set_alpha_prog);
+ glAttachShader(glamor_priv->finish_access_prog[1], avs_prog);
+ glAttachShader(glamor_priv->finish_access_prog[1], set_alpha_prog);
- dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[0],
- GLAMOR_VERTEX_POS, "v_position");
- dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[0],
- GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(dispatch, glamor_priv->finish_access_prog[0]);
+ glBindAttribLocation(glamor_priv->finish_access_prog[0],
+ GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(glamor_priv->finish_access_prog[0],
+ GLAMOR_VERTEX_SOURCE, "v_texcoord0");
+ glamor_link_glsl_prog(glamor_priv->finish_access_prog[0]);
- dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[1],
- GLAMOR_VERTEX_POS, "v_position");
- dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[1],
- GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(dispatch, glamor_priv->finish_access_prog[1]);
+ glBindAttribLocation(glamor_priv->finish_access_prog[1],
+ GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(glamor_priv->finish_access_prog[1],
+ GLAMOR_VERTEX_SOURCE, "v_texcoord0");
+ glamor_link_glsl_prog(glamor_priv->finish_access_prog[1]);
glamor_priv->finish_access_revert[0] =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0],
- "revert");
+ glGetUniformLocation(glamor_priv->finish_access_prog[0], "revert");
glamor_priv->finish_access_swap_rb[0] =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0],
- "swap_rb");
+ glGetUniformLocation(glamor_priv->finish_access_prog[0], "swap_rb");
sampler_uniform_location =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0],
- "sampler");
- dispatch->glUseProgram(glamor_priv->finish_access_prog[0]);
- dispatch->glUniform1i(sampler_uniform_location, 0);
- dispatch->glUniform1i(glamor_priv->finish_access_revert[0], 0);
- dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[0], 0);
- dispatch->glUseProgram(0);
+ glGetUniformLocation(glamor_priv->finish_access_prog[0], "sampler");
+ glUseProgram(glamor_priv->finish_access_prog[0]);
+ glUniform1i(sampler_uniform_location, 0);
+ glUniform1i(glamor_priv->finish_access_revert[0], 0);
+ glUniform1i(glamor_priv->finish_access_swap_rb[0], 0);
+ glUseProgram(0);
glamor_priv->finish_access_revert[1] =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1],
- "revert");
+ glGetUniformLocation(glamor_priv->finish_access_prog[1], "revert");
glamor_priv->finish_access_swap_rb[1] =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1],
- "swap_rb");
+ glGetUniformLocation(glamor_priv->finish_access_prog[1], "swap_rb");
sampler_uniform_location =
- dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1],
- "sampler");
- dispatch->glUseProgram(glamor_priv->finish_access_prog[1]);
- dispatch->glUniform1i(glamor_priv->finish_access_revert[1], 0);
- dispatch->glUniform1i(sampler_uniform_location, 0);
- dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[1], 0);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glGetUniformLocation(glamor_priv->finish_access_prog[1], "sampler");
+ glUseProgram(glamor_priv->finish_access_prog[1]);
+ glUniform1i(glamor_priv->finish_access_revert[1], 0);
+ glUniform1i(sampler_uniform_location, 0);
+ glUniform1i(glamor_priv->finish_access_swap_rb[1], 0);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_finish_access_shaders(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glDeleteProgram(glamor_priv->finish_access_prog[0]);
- dispatch->glDeleteProgram(glamor_priv->finish_access_prog[1]);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glDeleteProgram(glamor_priv->finish_access_prog[0]);
+ glDeleteProgram(glamor_priv->finish_access_prog[1]);
+ glamor_put_context(glamor_priv);
}
void
@@ -315,15 +305,13 @@ glamor_finish_access(DrawablePtr drawable, glamor_access_t access_mode)
}
if (pixmap_priv->base.fbo->pbo != 0 && pixmap_priv->base.fbo->pbo_valid) {
- glamor_gl_dispatch *dispatch;
-
assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
- dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
- dispatch->glDeleteBuffers(1, &pixmap_priv->base.fbo->pbo);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
+ glDeleteBuffers(1, &pixmap_priv->base.fbo->pbo);
+ glamor_put_context(glamor_priv);
pixmap_priv->base.fbo->pbo_valid = FALSE;
pixmap_priv->base.fbo->pbo = 0;
diff --git a/xorg-server/glamor/glamor_egl.c b/xorg-server/glamor/glamor_egl.c
index 2f97a839b..9dcba71ce 100644
--- a/xorg-server/glamor/glamor_egl.c
+++ b/xorg-server/glamor/glamor_egl.c
@@ -37,8 +37,6 @@
#include <errno.h>
#include <xf86.h>
#include <xf86drm.h>
-#define GL_GLEXT_PROTOTYPES
-#define EGL_EGLEXT_PROTOTYPES
#define EGL_DISPLAY_NO_X_MESA
#ifdef GLAMOR_HAS_GBM
@@ -46,19 +44,12 @@
#include <drm_fourcc.h>
#endif
-#if GLAMOR_GLES2
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#else
-#include <GL/gl.h>
-#endif
-
#define MESA_EGL_NO_X11_HEADERS
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
+#include <epoxy/gl.h>
+#include <epoxy/egl.h>
#include "glamor.h"
-#include "glamor_gl_dispatch.h"
+#include "glamor_priv.h"
static const char glamor_name[] = "glamor";
@@ -91,16 +82,13 @@ struct glamor_egl_screen_private {
int gl_context_depth;
int dri3_capable;
- PFNEGLCREATEIMAGEKHRPROC egl_create_image_khr;
- PFNEGLDESTROYIMAGEKHRPROC egl_destroy_image_khr;
- PFNGLEGLIMAGETARGETTEXTURE2DOESPROC egl_image_target_texture2d_oes;
- struct glamor_gl_dispatch *dispatch;
CloseScreenProcPtr saved_close_screen;
xf86FreeScreenProc *saved_free_screen;
};
int xf86GlamorEGLPrivateIndex = -1;
+
static struct glamor_egl_screen_private *
glamor_egl_get_screen_private(ScrnInfoPtr scrn)
{
@@ -108,38 +96,30 @@ glamor_egl_get_screen_private(ScrnInfoPtr scrn)
scrn->privates[xf86GlamorEGLPrivateIndex].ptr;
}
-_X_EXPORT void
-glamor_egl_make_current(ScreenPtr screen)
+static void
+glamor_egl_get_context(struct glamor_context *glamor_ctx)
{
- ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
- struct glamor_egl_screen_private *glamor_egl =
- glamor_egl_get_screen_private(scrn);
-
- if (glamor_egl->gl_context_depth++)
+ if (glamor_ctx->get_count++)
return;
- if (glamor_egl->context != eglGetCurrentContext()) {
- eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE,
+ if (glamor_ctx->ctx != eglGetCurrentContext()) {
+ eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE,
EGL_NO_SURFACE, EGL_NO_CONTEXT);
- if (!eglMakeCurrent(glamor_egl->display,
+ if (!eglMakeCurrent(glamor_ctx->display,
EGL_NO_SURFACE, EGL_NO_SURFACE,
- glamor_egl->context)) {
+ glamor_ctx->ctx)) {
FatalError("Failed to make EGL context current\n");
}
}
}
-_X_EXPORT void
-glamor_egl_restore_context(ScreenPtr screen)
+static void
+glamor_egl_put_context(struct glamor_context *glamor_ctx)
{
- ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
- struct glamor_egl_screen_private *glamor_egl =
- glamor_egl_get_screen_private(scrn);
-
- if (--glamor_egl->gl_context_depth)
+ if (--glamor_ctx->get_count)
return;
- eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE,
+ eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE,
EGL_NO_SURFACE, EGL_NO_CONTEXT);
}
@@ -164,11 +144,11 @@ _glamor_egl_create_image(struct glamor_egl_screen_private *glamor_egl,
attribs[5] = stride;
if (depth != 32 && depth != 24)
return EGL_NO_IMAGE_KHR;
- image = glamor_egl->egl_create_image_khr(glamor_egl->display,
- glamor_egl->context,
- EGL_DRM_BUFFER_MESA,
- (void *) (uintptr_t) name,
- attribs);
+ image = eglCreateImageKHR(glamor_egl->display,
+ glamor_egl->context,
+ EGL_DRM_BUFFER_MESA,
+ (void *) (uintptr_t) name,
+ attribs);
if (image == EGL_NO_IMAGE_KHR)
return EGL_NO_IMAGE_KHR;
@@ -192,15 +172,13 @@ glamor_create_texture_from_image(struct glamor_egl_screen_private
*glamor_egl,
EGLImageKHR image, GLuint * texture)
{
- glamor_egl->dispatch->glGenTextures(1, texture);
- glamor_egl->dispatch->glBindTexture(GL_TEXTURE_2D, *texture);
- glamor_egl->dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glamor_egl->dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- (glamor_egl->egl_image_target_texture2d_oes) (GL_TEXTURE_2D, image);
- glamor_egl->dispatch->glBindTexture(GL_TEXTURE_2D, 0);
+ glGenTextures(1, texture);
+ glBindTexture(GL_TEXTURE_2D, *texture);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
+ glBindTexture(GL_TEXTURE_2D, 0);
return TRUE;
}
@@ -212,7 +190,7 @@ glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h)
EGLImageKHR image;
GLuint texture;
-#ifdef GLAMOR_HAS_DRI3_SUPPORT
+#ifdef GLAMOR_HAS_GBM
struct gbm_bo *bo;
EGLNativePixmapType native_pixmap;
@@ -228,15 +206,15 @@ glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h)
* compile with dri3 support enabled */
native_pixmap = bo;
- image = glamor_egl->egl_create_image_khr(glamor_egl->display,
- EGL_NO_CONTEXT,
- EGL_NATIVE_PIXMAP_KHR,
- native_pixmap, NULL);
+ image = eglCreateImageKHR(glamor_egl->display,
+ EGL_NO_CONTEXT,
+ EGL_NATIVE_PIXMAP_KHR,
+ native_pixmap, NULL);
gbm_bo_destroy(bo);
if (image == EGL_NO_IMAGE_KHR)
return 0;
glamor_create_texture_from_image(glamor_egl, image, &texture);
- glamor_egl->egl_destroy_image_khr(glamor_egl->display, image);
+ eglDestroyImageKHR(glamor_egl->display, image);
return texture;
#else
@@ -300,6 +278,8 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride)
{
ScreenPtr screen = pixmap->drawable.pScreen;
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ struct glamor_screen_private *glamor_priv =
+ glamor_get_screen_private(screen);
struct glamor_egl_screen_private *glamor_egl;
EGLImageKHR image;
GLuint texture;
@@ -308,7 +288,7 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride)
glamor_egl = glamor_egl_get_screen_private(scrn);
- glamor_egl_make_current(screen);
+ glamor_get_context(glamor_priv);
if (glamor_egl->has_gem) {
if (!glamor_get_flink_name(glamor_egl->fd, handle, &name)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
@@ -338,7 +318,7 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride)
ret = TRUE;
done:
- glamor_egl_restore_context(screen);
+ glamor_put_context(glamor_priv);
return ret;
}
@@ -347,6 +327,8 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo)
{
ScreenPtr screen = pixmap->drawable.pScreen;
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ struct glamor_screen_private *glamor_priv =
+ glamor_get_screen_private(screen);
struct glamor_egl_screen_private *glamor_egl;
EGLImageKHR image;
GLuint texture;
@@ -354,11 +336,11 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo)
glamor_egl = glamor_egl_get_screen_private(scrn);
- glamor_egl_make_current(screen);
+ glamor_get_context(glamor_priv);
- image = glamor_egl->egl_create_image_khr(glamor_egl->display,
- glamor_egl->context,
- EGL_NATIVE_PIXMAP_KHR, bo, NULL);
+ image = eglCreateImageKHR(glamor_egl->display,
+ glamor_egl->context,
+ EGL_NATIVE_PIXMAP_KHR, bo, NULL);
if (image == EGL_NO_IMAGE_KHR) {
glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY);
goto done;
@@ -370,11 +352,11 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo)
ret = TRUE;
done:
- glamor_egl_restore_context(screen);
+ glamor_put_context(glamor_priv);
return ret;
}
-#ifdef GLAMOR_HAS_DRI3_SUPPORT
+#ifdef GLAMOR_HAS_GBM
int glamor_get_fd_from_bo(int gbm_fd, struct gbm_bo *bo, int *fd);
void glamor_get_name_from_bo(int gbm_fd, struct gbm_bo *bo, int *name);
int
@@ -409,8 +391,10 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
unsigned int tex,
Bool want_name, CARD16 *stride, CARD32 *size)
{
-#ifdef GLAMOR_HAS_DRI3_SUPPORT
+#ifdef GLAMOR_HAS_GBM
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
+ struct glamor_screen_private *glamor_priv =
+ glamor_get_screen_private(screen);
struct glamor_egl_screen_private *glamor_egl;
EGLImageKHR image;
struct gbm_bo *bo;
@@ -424,17 +408,17 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
glamor_egl = glamor_egl_get_screen_private(scrn);
- glamor_egl_make_current(screen);
+ glamor_get_context(glamor_priv);
image = dixLookupPrivate(&pixmap->devPrivates,
glamor_egl_pixmap_private_key);
if (image == EGL_NO_IMAGE_KHR || image == NULL) {
- image = glamor_egl->egl_create_image_khr(glamor_egl->display,
- glamor_egl->context,
- EGL_GL_TEXTURE_2D_KHR,
- (EGLClientBuffer) (uintptr_t)
- tex, attribs);
+ image = eglCreateImageKHR(glamor_egl->display,
+ glamor_egl->context,
+ EGL_GL_TEXTURE_2D_KHR,
+ (EGLClientBuffer) (uintptr_t)
+ tex, attribs);
if (image == EGL_NO_IMAGE_KHR)
goto failure;
@@ -462,7 +446,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
gbm_bo_destroy(bo);
failure:
- glamor_egl_restore_context(screen);
+ glamor_put_context(glamor_priv);
return fd;
#else
return -1;
@@ -476,7 +460,7 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen,
CARD16 height,
CARD16 stride, CARD8 depth, CARD8 bpp)
{
-#ifdef GLAMOR_HAS_DRI3_SUPPORT
+#ifdef GLAMOR_HAS_GBM
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
struct glamor_egl_screen_private *glamor_egl;
struct gbm_bo *bo;
@@ -506,10 +490,10 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen,
attribs[3] = height;
attribs[7] = fd;
attribs[11] = stride;
- image = glamor_egl->egl_create_image_khr(glamor_egl->display,
- EGL_NO_CONTEXT,
- EGL_LINUX_DMA_BUF_EXT,
- NULL, attribs);
+ image = eglCreateImageKHR(glamor_egl->display,
+ EGL_NO_CONTEXT,
+ EGL_LINUX_DMA_BUF_EXT,
+ NULL, attribs);
if (image == EGL_NO_IMAGE_KHR)
return NULL;
@@ -518,7 +502,7 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen,
* usage of the image. Use gbm_bo to bypass the limitations. */
bo = gbm_bo_import(glamor_egl->gbm, GBM_BO_IMPORT_EGL_IMAGE, image, 0);
- glamor_egl->egl_destroy_image_khr(glamor_egl->display, image);
+ eglDestroyImageKHR(glamor_egl->display, image);
if (!bo)
return NULL;
@@ -555,7 +539,7 @@ _glamor_egl_destroy_pixmap_image(PixmapPtr pixmap)
* a texture. we must call glFlush to make sure the
* operation on that texture has been done.*/
glamor_block_handler(pixmap->drawable.pScreen);
- glamor_egl->egl_destroy_image_khr(glamor_egl->display, image);
+ eglDestroyImageKHR(glamor_egl->display, image);
dixSetPrivate(&pixmap->devPrivates, glamor_egl_pixmap_private_key,
NULL);
}
@@ -605,8 +589,7 @@ glamor_egl_close_screen(ScreenPtr screen)
glamor_egl = glamor_egl_get_screen_private(scrn);
screen_pixmap = screen->GetScreenPixmap(screen);
- glamor_egl->egl_destroy_image_khr(glamor_egl->display,
- glamor_egl->front_image);
+ eglDestroyImageKHR(glamor_egl->display,glamor_egl->front_image);
dixSetPrivate(&screen_pixmap->devPrivates, glamor_egl_pixmap_private_key,
NULL);
glamor_egl->front_image = NULL;
@@ -614,7 +597,7 @@ glamor_egl_close_screen(ScreenPtr screen)
back_image = dixLookupPrivate(&(*glamor_egl->back_pixmap)->devPrivates,
glamor_egl_pixmap_private_key);
if (back_image != NULL && back_image != EGL_NO_IMAGE_KHR) {
- glamor_egl->egl_destroy_image_khr(glamor_egl->display, back_image);
+ eglDestroyImageKHR(glamor_egl->display, back_image);
dixSetPrivate(&(*glamor_egl->back_pixmap)->devPrivates,
glamor_egl_pixmap_private_key, NULL);
}
@@ -645,7 +628,7 @@ glamor_egl_has_extension(struct glamor_egl_screen_private *glamor_egl,
}
void
-glamor_egl_screen_init(ScreenPtr screen)
+glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
{
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
struct glamor_egl_screen_private *glamor_egl =
@@ -653,6 +636,12 @@ glamor_egl_screen_init(ScreenPtr screen)
glamor_egl->saved_close_screen = screen->CloseScreen;
screen->CloseScreen = glamor_egl_close_screen;
+
+ glamor_ctx->ctx = glamor_egl->context;
+ glamor_ctx->display = glamor_egl->display;
+
+ glamor_ctx->get_context = glamor_egl_get_context;
+ glamor_ctx->put_context = glamor_egl_put_context;
}
static void
@@ -746,26 +735,11 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
KHR_surfaceless_opengl);
#endif
-#ifdef GLAMOR_HAS_DRI3_SUPPORT
+#ifdef GLAMOR_HAS_GBM
if (glamor_egl_has_extension(glamor_egl, "EGL_KHR_gl_texture_2D_image") &&
glamor_egl_has_extension(glamor_egl, "EGL_EXT_image_dma_buf_import"))
glamor_egl->dri3_capable = TRUE;
#endif
- glamor_egl->egl_create_image_khr = (PFNEGLCREATEIMAGEKHRPROC)
- eglGetProcAddress("eglCreateImageKHR");
-
- glamor_egl->egl_destroy_image_khr = (PFNEGLDESTROYIMAGEKHRPROC)
- eglGetProcAddress("eglDestroyImageKHR");
-
- glamor_egl->egl_image_target_texture2d_oes =
- (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)
- eglGetProcAddress("glEGLImageTargetTexture2DOES");
-
- if (!glamor_egl->egl_create_image_khr
- || !glamor_egl->egl_image_target_texture2d_oes) {
- xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglGetProcAddress() failed\n");
- return FALSE;
- }
glamor_egl->context = eglCreateContext(glamor_egl->display,
NULL, EGL_NO_CONTEXT,
@@ -809,17 +783,3 @@ glamor_egl_init_textured_pixmap(ScreenPtr screen)
glamor_enable_dri3(screen);
return TRUE;
}
-
-Bool
-glamor_gl_dispatch_init(ScreenPtr screen,
- struct glamor_gl_dispatch *dispatch, int gl_version)
-{
- ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
- struct glamor_egl_screen_private *glamor_egl =
- glamor_egl_get_screen_private(scrn);
- if (!glamor_gl_dispatch_init_impl
- (dispatch, gl_version, (get_proc_address_t) eglGetProcAddress))
- return FALSE;
- glamor_egl->dispatch = dispatch;
- return TRUE;
-}
diff --git a/xorg-server/glamor/glamor_egl_stubs.c b/xorg-server/glamor/glamor_egl_stubs.c
index 1449d0874..4fd9e8016 100644
--- a/xorg-server/glamor/glamor_egl_stubs.c
+++ b/xorg-server/glamor/glamor_egl_stubs.c
@@ -29,7 +29,7 @@
#include "glamor_priv.h"
void
-glamor_egl_screen_init(ScreenPtr screen)
+glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx)
{
}
@@ -38,16 +38,6 @@ glamor_egl_destroy_textured_pixmap(PixmapPtr pixmap)
{
}
-void
-glamor_egl_make_current(ScreenPtr screen)
-{
-}
-
-void
-glamor_egl_restore_context(ScreenPtr screen)
-{
-}
-
int
glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen,
PixmapPtr pixmap,
diff --git a/xorg-server/glamor/glamor_fbo.c b/xorg-server/glamor/glamor_fbo.c
index d94e53071..281cf830e 100644
--- a/xorg-server/glamor/glamor_fbo.c
+++ b/xorg-server/glamor/glamor_fbo.c
@@ -129,15 +129,15 @@ glamor_pixmap_fbo_cache_get(glamor_screen_private *glamor_priv,
void
glamor_purge_fbo(glamor_pixmap_fbo *fbo)
{
- glamor_gl_dispatch *dispatch = glamor_get_dispatch(fbo->glamor_priv);
+ glamor_get_context(fbo->glamor_priv);
if (fbo->fb)
- dispatch->glDeleteFramebuffers(1, &fbo->fb);
+ glDeleteFramebuffers(1, &fbo->fb);
if (fbo->tex)
- dispatch->glDeleteTextures(1, &fbo->tex);
+ glDeleteTextures(1, &fbo->tex);
if (fbo->pbo)
- dispatch->glDeleteBuffers(1, &fbo->pbo);
- glamor_put_dispatch(fbo->glamor_priv);
+ glDeleteBuffers(1, &fbo->pbo);
+ glamor_put_context(fbo->glamor_priv);
free(fbo);
}
@@ -178,19 +178,17 @@ glamor_pixmap_fbo_cache_put(glamor_pixmap_fbo *fbo)
static void
glamor_pixmap_ensure_fb(glamor_pixmap_fbo *fbo)
{
- glamor_gl_dispatch *dispatch;
int status;
- dispatch = glamor_get_dispatch(fbo->glamor_priv);
+ glamor_get_context(fbo->glamor_priv);
if (fbo->fb == 0)
- dispatch->glGenFramebuffers(1, &fbo->fb);
+ glGenFramebuffers(1, &fbo->fb);
assert(fbo->tex != 0);
- dispatch->glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
- dispatch->glFramebufferTexture2D(GL_FRAMEBUFFER,
- GL_COLOR_ATTACHMENT0,
- GL_TEXTURE_2D, fbo->tex, 0);
- status = dispatch->glCheckFramebufferStatus(GL_FRAMEBUFFER);
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_TEXTURE_2D, fbo->tex, 0);
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE) {
const char *str;
@@ -221,7 +219,7 @@ glamor_pixmap_ensure_fb(glamor_pixmap_fbo *fbo)
FatalError("destination is framebuffer incomplete: %s [%x]\n",
str, status);
}
- glamor_put_dispatch(fbo->glamor_priv);
+ glamor_put_context(fbo->glamor_priv);
}
glamor_pixmap_fbo *
@@ -243,11 +241,9 @@ glamor_create_fbo_from_tex(glamor_screen_private *glamor_priv,
fbo->glamor_priv = glamor_priv;
if (flag == GLAMOR_CREATE_PIXMAP_MAP) {
- glamor_gl_dispatch *dispatch;
-
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glGenBuffers(1, &fbo->pbo);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glGenBuffers(1, &fbo->pbo);
+ glamor_put_context(glamor_priv);
goto done;
}
@@ -334,7 +330,6 @@ static int
_glamor_create_tex(glamor_screen_private *glamor_priv,
int w, int h, GLenum format)
{
- glamor_gl_dispatch *dispatch;
unsigned int tex = 0;
/* With dri3, we want to allocate ARGB8888 pixmaps only.
@@ -346,16 +341,14 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
w, h);
}
if (!tex) {
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glGenTextures(1, &tex);
- dispatch->glBindTexture(GL_TEXTURE_2D, tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
- GL_NEAREST);
- dispatch->glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
- format, GL_UNSIGNED_BYTE, NULL);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glGenTextures(1, &tex);
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
+ format, GL_UNSIGNED_BYTE, NULL);
+ glamor_put_context(glamor_priv);
}
return tex;
}
diff --git a/xorg-server/glamor/glamor_fill.c b/xorg-server/glamor/glamor_fill.c
index d59e6204f..dda55eace 100644
--- a/xorg-server/glamor/glamor_fill.c
+++ b/xorg-server/glamor/glamor_fill.c
@@ -137,7 +137,6 @@ void
glamor_init_solid_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
const char *solid_vs =
"attribute vec4 v_position;"
"void main()\n"
@@ -154,32 +153,31 @@ glamor_init_solid_shader(ScreenPtr screen)
GLint fs_prog, vs_prog;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- glamor_priv->solid_prog = dispatch->glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, solid_vs);
- fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, solid_fs);
- dispatch->glAttachShader(glamor_priv->solid_prog, vs_prog);
- dispatch->glAttachShader(glamor_priv->solid_prog, fs_prog);
+ glamor_get_context(glamor_priv);
+ glamor_priv->solid_prog = glCreateProgram();
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, solid_vs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, solid_fs);
+ glAttachShader(glamor_priv->solid_prog, vs_prog);
+ glAttachShader(glamor_priv->solid_prog, fs_prog);
- dispatch->glBindAttribLocation(glamor_priv->solid_prog,
- GLAMOR_VERTEX_POS, "v_position");
- glamor_link_glsl_prog(dispatch, glamor_priv->solid_prog);
+ glBindAttribLocation(glamor_priv->solid_prog,
+ GLAMOR_VERTEX_POS, "v_position");
+ glamor_link_glsl_prog(glamor_priv->solid_prog);
glamor_priv->solid_color_uniform_location =
- dispatch->glGetUniformLocation(glamor_priv->solid_prog, "color");
- glamor_put_dispatch(glamor_priv);
+ glGetUniformLocation(glamor_priv->solid_prog, "color");
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_solid_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glDeleteProgram(glamor_priv->solid_prog);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glDeleteProgram(glamor_priv->solid_prog);
+ glamor_put_context(glamor_priv);
}
static void
@@ -188,7 +186,6 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
ScreenPtr screen = pixmap->drawable.pScreen;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap);
- glamor_gl_dispatch *dispatch;
GLfloat xscale, yscale;
float vertices[32];
float *pvertices = vertices;
@@ -196,10 +193,10 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
glamor_set_destination_pixmap_priv_nc(pixmap_priv);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glUseProgram(glamor_priv->solid_prog);
+ glamor_get_context(glamor_priv);
+ glUseProgram(glamor_priv->solid_prog);
- dispatch->glUniform4fv(glamor_priv->solid_color_uniform_location, 1, color);
+ glUniform4fv(glamor_priv->solid_color_uniform_location, 1, color);
pixmap_priv_get_dest_scale(pixmap_priv, &xscale, &yscale);
@@ -221,11 +218,11 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
}
if (_X_UNLIKELY(nbox > 1))
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), pvertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, 2 * sizeof(float), pvertices);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
while (nbox) {
int box_cnt, i;
@@ -242,17 +239,16 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
valid_vertices += 4 * 2;
}
if (box_cnt == 1)
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, box_cnt * 4);
- else
-#ifndef GLAMOR_GLES2
- dispatch->glDrawRangeElements(GL_TRIANGLES,
- 0,
- box_cnt * 4,
- box_cnt * 6, GL_UNSIGNED_SHORT, NULL);
-#else
- dispatch->glDrawElements(GL_TRIANGLES,
- box_cnt * 6, GL_UNSIGNED_SHORT, NULL);
-#endif
+ glDrawArrays(GL_TRIANGLE_FAN, 0, box_cnt * 4);
+ else {
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ glDrawRangeElements(GL_TRIANGLES, 0, box_cnt * 4, box_cnt * 6,
+ GL_UNSIGNED_SHORT, NULL);
+ } else {
+ glDrawElements(GL_TRIANGLES, box_cnt * 6, GL_UNSIGNED_SHORT,
+ NULL);
+ }
+ }
nbox -= box_cnt;
box += box_cnt;
}
@@ -260,9 +256,9 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color)
if (pvertices != vertices)
free(pvertices);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
}
@@ -321,7 +317,6 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height,
ScreenPtr screen = pixmap->drawable.pScreen;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
glamor_pixmap_private *pixmap_priv;
- glamor_gl_dispatch *dispatch;
BoxRec box;
pixmap_priv = glamor_get_pixmap_private(pixmap);
@@ -334,13 +329,13 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height,
return FALSE;
}
- dispatch = glamor_get_dispatch(glamor_priv);
- if (!glamor_set_alu(dispatch, alu)) {
+ glamor_get_context(glamor_priv);
+ if (!glamor_set_alu(screen, alu)) {
if (alu == GXclear)
fg_pixel = 0;
else {
glamor_fallback("unsupported alu %x\n", alu);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
return FALSE;
}
}
@@ -350,8 +345,8 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height,
box.y2 = y + height;
glamor_solid_boxes(pixmap, &box, 1, fg_pixel);
- glamor_set_alu(dispatch, GXcopy);
- glamor_put_dispatch(glamor_priv);
+ glamor_set_alu(screen, GXcopy);
+ glamor_put_context(glamor_priv);
return TRUE;
}
diff --git a/xorg-server/glamor/glamor_gl_dispatch.c b/xorg-server/glamor/glamor_gl_dispatch.c
deleted file mode 100644
index 0bdda9c34..000000000
--- a/xorg-server/glamor/glamor_gl_dispatch.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright © 2009 Intel Corporation
- * Copyright © 1998 Keith Packard
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhigang Gong <zhigang.gong@gmail.com>
- *
- */
-
-#include "glamor_priv.h"
-#include <dlfcn.h>
-
-#define INIT_FUNC(dst,func_name,get) \
- dst->func_name = get(#func_name); \
- if (dst->func_name == NULL) { \
- dst->func_name = (void *)dlsym(NULL, #func_name); \
- if (dst->func_name == NULL) { \
- ErrorF("Failed to get function %s\n", #func_name);\
- goto fail; \
- } \
- } \
-
-_X_EXPORT Bool
-glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch,
- int gl_version,
- void *(*get_proc_address) (const char *))
-{
-#ifndef GLAMOR_GLES2
- INIT_FUNC(dispatch, glMatrixMode, get_proc_address);
- INIT_FUNC(dispatch, glLoadIdentity, get_proc_address);
- INIT_FUNC(dispatch, glRasterPos2i, get_proc_address);
- INIT_FUNC(dispatch, glDrawPixels, get_proc_address);
- INIT_FUNC(dispatch, glLogicOp, get_proc_address);
- INIT_FUNC(dispatch, glMapBuffer, get_proc_address);
- INIT_FUNC(dispatch, glMapBufferRange, get_proc_address);
- INIT_FUNC(dispatch, glUnmapBuffer, get_proc_address);
- INIT_FUNC(dispatch, glBlitFramebuffer, get_proc_address);
- INIT_FUNC(dispatch, glDrawRangeElements, get_proc_address);
-#endif
- INIT_FUNC(dispatch, glViewport, get_proc_address);
- INIT_FUNC(dispatch, glDrawArrays, get_proc_address);
- INIT_FUNC(dispatch, glDrawElements, get_proc_address);
- INIT_FUNC(dispatch, glReadPixels, get_proc_address);
- INIT_FUNC(dispatch, glPixelStorei, get_proc_address);
- INIT_FUNC(dispatch, glTexParameteri, get_proc_address);
- INIT_FUNC(dispatch, glTexImage2D, get_proc_address);
- INIT_FUNC(dispatch, glGenTextures, get_proc_address);
- INIT_FUNC(dispatch, glDeleteTextures, get_proc_address);
- INIT_FUNC(dispatch, glBindTexture, get_proc_address);
- INIT_FUNC(dispatch, glTexSubImage2D, get_proc_address);
- INIT_FUNC(dispatch, glFlush, get_proc_address);
- INIT_FUNC(dispatch, glFinish, get_proc_address);
- INIT_FUNC(dispatch, glGetIntegerv, get_proc_address);
- INIT_FUNC(dispatch, glGetString, get_proc_address);
- INIT_FUNC(dispatch, glScissor, get_proc_address);
- INIT_FUNC(dispatch, glEnable, get_proc_address);
- INIT_FUNC(dispatch, glDisable, get_proc_address);
- INIT_FUNC(dispatch, glBlendFunc, get_proc_address);
- INIT_FUNC(dispatch, glActiveTexture, get_proc_address);
- INIT_FUNC(dispatch, glGenBuffers, get_proc_address);
- INIT_FUNC(dispatch, glBufferData, get_proc_address);
- INIT_FUNC(dispatch, glBindBuffer, get_proc_address);
- INIT_FUNC(dispatch, glDeleteBuffers, get_proc_address);
- INIT_FUNC(dispatch, glFramebufferTexture2D, get_proc_address);
- INIT_FUNC(dispatch, glBindFramebuffer, get_proc_address);
- INIT_FUNC(dispatch, glDeleteFramebuffers, get_proc_address);
- INIT_FUNC(dispatch, glGenFramebuffers, get_proc_address);
- INIT_FUNC(dispatch, glCheckFramebufferStatus, get_proc_address);
- INIT_FUNC(dispatch, glVertexAttribPointer, get_proc_address);
- INIT_FUNC(dispatch, glDisableVertexAttribArray, get_proc_address);
- INIT_FUNC(dispatch, glEnableVertexAttribArray, get_proc_address);
- INIT_FUNC(dispatch, glBindAttribLocation, get_proc_address);
- INIT_FUNC(dispatch, glLinkProgram, get_proc_address);
- INIT_FUNC(dispatch, glShaderSource, get_proc_address);
-
- INIT_FUNC(dispatch, glUseProgram, get_proc_address);
- INIT_FUNC(dispatch, glUniform1i, get_proc_address);
- INIT_FUNC(dispatch, glUniform1f, get_proc_address);
- INIT_FUNC(dispatch, glUniform4f, get_proc_address);
- INIT_FUNC(dispatch, glUniform4fv, get_proc_address);
- INIT_FUNC(dispatch, glUniform1fv, get_proc_address);
- INIT_FUNC(dispatch, glUniform2fv, get_proc_address);
- INIT_FUNC(dispatch, glUniformMatrix3fv, get_proc_address);
- INIT_FUNC(dispatch, glCreateProgram, get_proc_address);
- INIT_FUNC(dispatch, glDeleteProgram, get_proc_address);
- INIT_FUNC(dispatch, glCreateShader, get_proc_address);
- INIT_FUNC(dispatch, glCompileShader, get_proc_address);
- INIT_FUNC(dispatch, glAttachShader, get_proc_address);
- INIT_FUNC(dispatch, glDeleteShader, get_proc_address);
- INIT_FUNC(dispatch, glGetShaderiv, get_proc_address);
- INIT_FUNC(dispatch, glGetShaderInfoLog, get_proc_address);
- INIT_FUNC(dispatch, glGetProgramiv, get_proc_address);
- INIT_FUNC(dispatch, glGetProgramInfoLog, get_proc_address);
- INIT_FUNC(dispatch, glGetUniformLocation, get_proc_address);
-
- return TRUE;
- fail:
- return FALSE;
-}
diff --git a/xorg-server/glamor/glamor_gl_dispatch.h b/xorg-server/glamor/glamor_gl_dispatch.h
deleted file mode 100644
index 63790b41f..000000000
--- a/xorg-server/glamor/glamor_gl_dispatch.h
+++ /dev/null
@@ -1,128 +0,0 @@
-typedef struct glamor_gl_dispatch {
- /* Transformation functions */
- void (*glMatrixMode) (GLenum mode);
- void (*glLoadIdentity) (void);
- void (*glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
- /* Drawing functions */
- void (*glRasterPos2i) (GLint x, GLint y);
-
- /* Vertex Array */
- void (*glDrawArrays) (GLenum mode, GLint first, GLsizei count);
-
- /* Elements Array */
- void (*glDrawElements) (GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices);
- void (*glDrawRangeElements) (GLenum mode, GLuint start, GLuint end,
- GLsizei count, GLenum type,
- const GLvoid * indices);
-
- /* Raster functions */
- void (*glReadPixels) (GLint x, GLint y,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type, GLvoid * pixels);
-
- void (*glDrawPixels) (GLsizei width, GLsizei height,
- GLenum format, GLenum type, const GLvoid * pixels);
- void (*glPixelStorei) (GLenum pname, GLint param);
- /* Texture Mapping */
-
- void (*glTexParameteri) (GLenum target, GLenum pname, GLint param);
- void (*glTexImage2D) (GLenum target, GLint level,
- GLint internalFormat,
- GLsizei width, GLsizei height,
- GLint border, GLenum format, GLenum type,
- const GLvoid * pixels);
- /* 1.1 */
- void (*glGenTextures) (GLsizei n, GLuint * textures);
- void (*glDeleteTextures) (GLsizei n, const GLuint * textures);
- void (*glBindTexture) (GLenum target, GLuint texture);
- void (*glTexSubImage2D) (GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type, const GLvoid * pixels);
- /* MISC */
- void (*glFlush) (void);
- void (*glFinish) (void);
- void (*glGetIntegerv) (GLenum pname, GLint * params);
- const GLubyte *(*glGetString) (GLenum name);
- void (*glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
- void (*glEnable) (GLenum cap);
- void (*glDisable) (GLenum cap);
- void (*glBlendFunc) (GLenum sfactor, GLenum dfactor);
- void (*glLogicOp) (GLenum opcode);
-
- /* 1.3 */
- void (*glActiveTexture) (GLenum texture);
-
- /* GL Extentions */
- void (*glGenBuffers) (GLsizei n, GLuint * buffers);
- void (*glBufferData) (GLenum target, GLsizeiptr size,
- const GLvoid * data, GLenum usage);
- GLvoid *(*glMapBuffer) (GLenum target, GLenum access);
- GLvoid *(*glMapBufferRange) (GLenum target, GLintptr offset,
- GLsizeiptr length, GLbitfield access);
- GLboolean(*glUnmapBuffer) (GLenum target);
- void (*glBindBuffer) (GLenum target, GLuint buffer);
- void (*glDeleteBuffers) (GLsizei n, const GLuint * buffers);
-
- void (*glFramebufferTexture2D) (GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture,
- GLint level);
- void (*glBindFramebuffer) (GLenum target, GLuint framebuffer);
- void (*glDeleteFramebuffers) (GLsizei n, const GLuint * framebuffers);
- void (*glGenFramebuffers) (GLsizei n, GLuint * framebuffers);
- GLenum(*glCheckFramebufferStatus) (GLenum target);
- void (*glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1,
- GLint srcY1, GLint dstX0, GLint dstY0,
- GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter);
-
- void (*glVertexAttribPointer) (GLuint index, GLint size,
- GLenum type, GLboolean normalized,
- GLsizei stride, const GLvoid * pointer);
- void (*glDisableVertexAttribArray) (GLuint index);
- void (*glEnableVertexAttribArray) (GLuint index);
- void (*glBindAttribLocation) (GLuint program, GLuint index,
- const GLchar * name);
-
- void (*glLinkProgram) (GLuint program);
- void (*glShaderSource) (GLuint shader, GLsizei count,
- const GLchar * *string, const GLint * length);
- void (*glUseProgram) (GLuint program);
- void (*glUniform1i) (GLint location, GLint v0);
- void (*glUniform1f) (GLint location, GLfloat v0);
- void (*glUniform4f) (GLint location, GLfloat v0, GLfloat v1,
- GLfloat v2, GLfloat v3);
- void (*glUniform1fv) (GLint location, GLsizei count, const GLfloat * value);
- void (*glUniform2fv) (GLint location, GLsizei count, const GLfloat * value);
- void (*glUniform4fv) (GLint location, GLsizei count, const GLfloat * value);
- void (*glUniformMatrix3fv) (GLint location, GLsizei count,
- GLboolean transpose, const GLfloat * value);
- GLuint(*glCreateProgram) (void);
- GLuint(*glDeleteProgram) (GLuint);
- GLuint(*glCreateShader) (GLenum type);
- void (*glCompileShader) (GLuint shader);
- void (*glAttachShader) (GLuint program, GLuint shader);
- void (*glDeleteShader) (GLuint shader);
- void (*glGetShaderiv) (GLuint shader, GLenum pname, GLint * params);
- void (*glGetShaderInfoLog) (GLuint shader, GLsizei bufSize,
- GLsizei * length, GLchar * infoLog);
- void (*glGetProgramiv) (GLuint program, GLenum pname, GLint * params);
- void (*glGetProgramInfoLog) (GLuint program, GLsizei bufSize,
- GLsizei * length, GLchar * infoLog);
- GLint(*glGetUniformLocation) (GLuint program, const GLchar * name);
-
-} glamor_gl_dispatch;
-
-typedef void *(*get_proc_address_t) (const char *);
-
-_X_EXPORT Bool
-
-glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch,
- int gl_version,
- get_proc_address_t get_proc_address);
-
-_X_EXPORT Bool
-
-glamor_gl_dispatch_init(ScreenPtr screen,
- struct glamor_gl_dispatch *dispatch, int gl_version);
diff --git a/xorg-server/glamor/glamor_glext.h b/xorg-server/glamor/glamor_glext.h
deleted file mode 100644
index 2a220c32f..000000000
--- a/xorg-server/glamor/glamor_glext.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright © 2001 Keith Packard
- * Copyright © 2008 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- * Authors:
- * Zhigang Gong <zhigang.gong@linux.intel.com>
- *
- */
-
-#ifdef GLAMOR_GLES2
-
-#define GL_BGRA GL_BGRA_EXT
-#define GL_COLOR_INDEX 0x1900
-#define GL_BITMAP 0x1A00
-#define GL_UNSIGNED_INT_8_8_8_8 0x8035
-#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
-#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
-#define GL_UNSIGNED_INT_10_10_10_2 0x8036
-#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365
-
-#define GL_PIXEL_PACK_BUFFER 0x88EB
-#define GL_PIXEL_UNPACK_BUFFER 0x88EC
-#define GL_CLAMP_TO_BORDER 0x812D
-
-#define GL_READ_WRITE 0x88BA
-#define GL_READ_ONLY 0x88B8
-#define GL_WRITE_ONLY 0x88B9
-#define GL_STREAM_DRAW 0x88E0
-#define GL_STREAM_READ 0x88E1
-#define GL_PACK_ROW_LENGTH 0x0D02
-#define GL_UNPACK_ROW_LENGTH 0x0CF2
-
-#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB
-#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
-
-#define GL_PACK_INVERT_MESA 0x8758
-#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020
-#define GL_MAP_READ_BIT 0x0001
-#define GL_MAP_WRITE_BIT 0x0002
-
-#endif
diff --git a/xorg-server/glamor/glamor_glx.c b/xorg-server/glamor/glamor_glx.c
new file mode 100644
index 000000000..311bf758d
--- /dev/null
+++ b/xorg-server/glamor/glamor_glx.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2013 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <epoxy/glx.h>
+#include "glamor_context.h"
+
+/**
+ * @file glamor_glx.c
+ *
+ * GLX context management for glamor.
+ *
+ * This has to be kept separate from the server sources because of
+ * Xlib's conflicting definition of CARD32 and similar typedefs.
+ */
+
+static void
+glamor_glx_get_context(struct glamor_context *glamor_ctx)
+{
+ GLXContext old_ctx;
+
+ if (glamor_ctx->get_count++)
+ return;
+
+ old_ctx = glXGetCurrentContext();
+ if (old_ctx == glamor_ctx->ctx)
+ return;
+
+ glXMakeCurrent(glamor_ctx->display, glamor_ctx->drawable_xid,
+ glamor_ctx->ctx);
+}
+
+
+static void
+glamor_glx_put_context(struct glamor_context *glamor_ctx)
+{
+ if (--glamor_ctx->get_count)
+ return;
+
+ /* We actually reset the context, so that indirect GLX's EGL usage
+ * won't get confused by ours.
+ */
+ glXMakeCurrent(glamor_ctx->display, None, NULL);
+}
+
+Bool
+glamor_glx_screen_init(struct glamor_context *glamor_ctx)
+{
+ glamor_ctx->ctx = glXGetCurrentContext();
+ if (!glamor_ctx->ctx)
+ return False;
+
+ glamor_ctx->display = glXGetCurrentDisplay();
+ if (!glamor_ctx->display)
+ return False;
+
+ glamor_ctx->drawable_xid = glXGetCurrentDrawable();
+
+ glamor_ctx->get_context = glamor_glx_get_context;
+ glamor_ctx->put_context = glamor_glx_put_context;
+
+ return True;
+}
diff --git a/xorg-server/glamor/glamor_glyphs.c b/xorg-server/glamor/glamor_glyphs.c
index 3586b33da..caafa4348 100644
--- a/xorg-server/glamor/glamor_glyphs.c
+++ b/xorg-server/glamor/glamor_glyphs.c
@@ -1274,15 +1274,13 @@ glamor_buffer_glyph(glamor_screen_private *glamor_priv,
if (buffer->source == NULL)
buffer->source = source;
if (glyphs_dst_mode == GLYPHS_DST_MODE_VIA_MASK_CACHE) {
- glamor_gl_dispatch *dispatch;
-
/* mode 1 means we are using global mask cache,
* thus we have to composite from the cache picture
* to the cache picture, we need a flush here to make
* sure latter we get the corret glyphs data.*/
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glFlush();
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glFlush();
+ glamor_put_context(glamor_priv);
}
}
else {
diff --git a/xorg-server/glamor/glamor_gradient.c b/xorg-server/glamor/glamor_gradient.c
index df2ccb8a0..9f6f1b1cf 100644
--- a/xorg-server/glamor/glamor_gradient.c
+++ b/xorg-server/glamor/glamor_gradient.c
@@ -42,15 +42,13 @@
#ifdef GLAMOR_GRADIENT_SHADER
-static GLint
-_glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count,
- int use_array)
+static const char *
+_glamor_create_getcolor_fs_source(ScreenPtr screen, int stops_count,
+ int use_array)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
char *gradient_fs = NULL;
- GLint fs_getcolor_prog;
#define gradient_fs_getcolor\
GLAMOR_DEFAULT_PRECISION\
@@ -177,22 +175,16 @@ _glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count,
"}\n";
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (use_array) {
XNFasprintf(&gradient_fs,
gradient_fs_getcolor, stops_count, stops_count);
- fs_getcolor_prog =
- glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, gradient_fs);
- free(gradient_fs);
+ return gradient_fs;
}
else {
- fs_getcolor_prog =
- glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER,
- gradient_fs_getcolor_no_array);
+ return XNFstrdup(gradient_fs_getcolor_no_array);
}
-
- return fs_getcolor_prog;
}
static void
@@ -200,12 +192,11 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
int dyn_gen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
int index;
GLint gradient_prog = 0;
char *gradient_fs = NULL;
- GLint fs_main_prog, fs_getcolor_prog, vs_prog;
+ GLint fs_prog, vs_prog;
const char *gradient_vs =
GLAMOR_DEFAULT_PRECISION
@@ -346,7 +337,10 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
" } else {\n"\
" gl_FragColor = get_color(stop_len);\n"\
" }\n"\
- "}\n"
+ "}\n"\
+ "\n"\
+ "%s\n" /* fs_getcolor_source */
+ const char *fs_getcolor_source;
glamor_priv = glamor_get_screen_private(screen);
@@ -355,61 +349,42 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
return;
}
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]) {
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_VS_PROG][2]);
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0;
-
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_FS_MAIN_PROG][2]);
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] =
- 0;
-
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_FS_GETCOLOR_PROG][2]);
- glamor_priv->
- radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0;
-
- dispatch->glDeleteProgram(glamor_priv->
- gradient_prog[SHADER_GRADIENT_RADIAL][2]);
+ glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]);
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2] = 0;
}
- gradient_prog = dispatch->glCreateProgram();
+ gradient_prog = glCreateProgram();
+
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, gradient_vs);
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, gradient_vs);
+ fs_getcolor_source =
+ _glamor_create_getcolor_fs_source(screen, stops_count,
+ (stops_count > 0));
XNFasprintf(&gradient_fs,
gradient_radial_fs_template,
PIXMAN_REPEAT_NONE, PIXMAN_REPEAT_NORMAL,
- PIXMAN_REPEAT_REFLECT);
+ PIXMAN_REPEAT_REFLECT,
+ fs_getcolor_source);
- fs_main_prog = glamor_compile_glsl_prog(dispatch,
- GL_FRAGMENT_SHADER, gradient_fs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, gradient_fs);
free(gradient_fs);
- fs_getcolor_prog =
- _glamor_create_getcolor_fs_program(screen, stops_count,
- (stops_count > 0));
+ glAttachShader(gradient_prog, vs_prog);
+ glAttachShader(gradient_prog, fs_prog);
+ glDeleteShader(vs_prog);
+ glDeleteShader(fs_prog);
- dispatch->glAttachShader(gradient_prog, vs_prog);
- dispatch->glAttachShader(gradient_prog, fs_getcolor_prog);
- dispatch->glAttachShader(gradient_prog, fs_main_prog);
+ glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
- dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS,
- "v_positionsition");
- dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE,
- "v_texcoord");
+ glamor_link_glsl_prog(gradient_prog);
- glamor_link_glsl_prog(dispatch, gradient_prog);
-
- dispatch->glUseProgram(0);
+ glUseProgram(0);
if (dyn_gen) {
index = 2;
@@ -423,15 +398,8 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
}
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][index] = gradient_prog;
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] =
- vs_prog;
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] =
- fs_main_prog;
- glamor_priv->
- radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] =
- fs_getcolor_prog;
-
- glamor_put_dispatch(glamor_priv);
+
+ glamor_put_context(glamor_priv);
}
static void
@@ -439,12 +407,11 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
int dyn_gen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
int index = 0;
GLint gradient_prog = 0;
char *gradient_fs = NULL;
- GLint fs_main_prog, fs_getcolor_prog, vs_prog;
+ GLint fs_prog, vs_prog;
const char *gradient_vs =
GLAMOR_DEFAULT_PRECISION
@@ -587,7 +554,10 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
"{\n"\
" float stop_len = get_stop_len();\n"\
" gl_FragColor = get_color(stop_len);\n"\
- "}\n"
+ "}\n"\
+ "\n"\
+ "%s" /* fs_getcolor_source */
+ const char *fs_getcolor_source;
glamor_priv = glamor_get_screen_private(screen);
@@ -596,58 +566,38 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
return;
}
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]) {
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_VS_PROG][2]);
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0;
-
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_FS_MAIN_PROG][2]);
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] =
- 0;
-
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_FS_GETCOLOR_PROG][2]);
- glamor_priv->
- linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0;
-
- dispatch->glDeleteProgram(glamor_priv->
- gradient_prog[SHADER_GRADIENT_LINEAR][2]);
+ glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]);
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2] = 0;
}
- gradient_prog = dispatch->glCreateProgram();
+ gradient_prog = glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, gradient_vs);
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, gradient_vs);
+
+ fs_getcolor_source =
+ _glamor_create_getcolor_fs_source(screen, stops_count, stops_count > 0);
XNFasprintf(&gradient_fs,
gradient_fs_template,
- PIXMAN_REPEAT_NORMAL, PIXMAN_REPEAT_REFLECT);
+ PIXMAN_REPEAT_NORMAL, PIXMAN_REPEAT_REFLECT,
+ fs_getcolor_source);
- fs_main_prog = glamor_compile_glsl_prog(dispatch,
- GL_FRAGMENT_SHADER, gradient_fs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, gradient_fs);
free(gradient_fs);
- fs_getcolor_prog =
- _glamor_create_getcolor_fs_program(screen, stops_count,
- (stops_count > 0));
-
- dispatch->glAttachShader(gradient_prog, vs_prog);
- dispatch->glAttachShader(gradient_prog, fs_getcolor_prog);
- dispatch->glAttachShader(gradient_prog, fs_main_prog);
+ glAttachShader(gradient_prog, vs_prog);
+ glAttachShader(gradient_prog, fs_prog);
+ glDeleteShader(vs_prog);
+ glDeleteShader(fs_prog);
- dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS,
- "v_position");
- dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE,
- "v_texcoord");
+ glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
- glamor_link_glsl_prog(dispatch, gradient_prog);
+ glamor_link_glsl_prog(gradient_prog);
- dispatch->glUseProgram(0);
+ glUseProgram(0);
if (dyn_gen) {
index = 2;
@@ -661,15 +611,8 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
}
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][index] = gradient_prog;
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] =
- vs_prog;
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] =
- fs_main_prog;
- glamor_priv->
- linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] =
- fs_getcolor_prog;
-
- glamor_put_dispatch(glamor_priv);
+
+ glamor_put_context(glamor_priv);
}
void
@@ -682,18 +625,7 @@ glamor_init_gradient_shader(ScreenPtr screen)
for (i = 0; i < 3; i++) {
glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i] = 0;
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0;
- glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] =
- 0;
- glamor_priv->
- linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0;
-
glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i] = 0;
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0;
- glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] =
- 0;
- glamor_priv->
- radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0;
}
glamor_priv->linear_max_nstops = 0;
glamor_priv->radial_max_nstops = 0;
@@ -709,59 +641,23 @@ void
glamor_fini_gradient_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
int i = 0;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
for (i = 0; i < 3; i++) {
/* Linear Gradient */
- if (glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_VS_PROG][i]);
-
- if (glamor_priv->
- linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_FS_MAIN_PROG][i]);
-
- if (glamor_priv->
- linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- linear_gradient_shaders
- [SHADER_GRADIENT_FS_GETCOLOR_PROG][i]);
-
if (glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i])
- dispatch->glDeleteProgram(glamor_priv->
- gradient_prog[SHADER_GRADIENT_LINEAR][i]);
-
- /* Radial Gradient */
- if (glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_VS_PROG][i]);
-
- if (glamor_priv->
- radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_FS_MAIN_PROG][i]);
-
- if (glamor_priv->
- radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i])
- dispatch->glDeleteShader(glamor_priv->
- radial_gradient_shaders
- [SHADER_GRADIENT_FS_GETCOLOR_PROG][i]);
+ glDeleteProgram(glamor_priv->gradient_prog
+ [SHADER_GRADIENT_LINEAR][i]);
if (glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i])
- dispatch->glDeleteProgram(glamor_priv->
- gradient_prog[SHADER_GRADIENT_RADIAL][i]);
+ glDeleteProgram(glamor_priv->gradient_prog
+ [SHADER_GRADIENT_RADIAL][i]);
}
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
static void
@@ -835,7 +731,6 @@ _glamor_gradient_set_pixmap_destination(ScreenPtr screen,
{
glamor_pixmap_private *pixmap_priv;
PixmapPtr pixmap = NULL;
- glamor_gl_dispatch *dispatch = NULL;
pixmap = glamor_get_drawable_pixmap(dst_picture->pDrawable);
pixmap_priv = glamor_get_pixmap_private(pixmap);
@@ -893,17 +788,17 @@ _glamor_gradient_set_pixmap_destination(ScreenPtr screen,
tex_vertices[0], tex_vertices[1], tex_vertices[2], tex_vertices[3],
tex_vertices[4], tex_vertices[5], tex_vertices[6], tex_vertices[7]);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 0, vertices);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
- GL_FALSE, 0, tex_vertices);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, 0, vertices);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
+ GL_FALSE, 0, tex_vertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
return 1;
}
@@ -996,7 +891,6 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
PictFormatShort format)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
PicturePtr dst_picture = NULL;
PixmapPtr pixmap = NULL;
GLint gradient_prog = 0;
@@ -1047,7 +941,7 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
GLint r2_uniform_location = 0;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
/* Create a pixmap with VBO. */
pixmap = glamor_create_pixmap(screen,
@@ -1088,77 +982,74 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
}
/* Bind all the uniform vars . */
- transform_mat_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "transform_mat");
- repeat_type_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "repeat_type");
- n_stop_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "n_stop");
- A_value_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "A_value");
- repeat_type_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "repeat_type");
- c1_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "c1");
- r1_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "r1");
- c2_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "c2");
- r2_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "r2");
+ transform_mat_uniform_location = glGetUniformLocation(gradient_prog,
+ "transform_mat");
+ repeat_type_uniform_location = glGetUniformLocation(gradient_prog,
+ "repeat_type");
+ n_stop_uniform_location = glGetUniformLocation(gradient_prog, "n_stop");
+ A_value_uniform_location = glGetUniformLocation(gradient_prog, "A_value");
+ repeat_type_uniform_location =glGetUniformLocation(gradient_prog,
+ "repeat_type");
+ c1_uniform_location = glGetUniformLocation(gradient_prog, "c1");
+ r1_uniform_location = glGetUniformLocation(gradient_prog, "r1");
+ c2_uniform_location = glGetUniformLocation(gradient_prog, "c2");
+ r2_uniform_location = glGetUniformLocation(gradient_prog, "r2");
if (src_picture->pSourcePict->radial.nstops + 2 <= RADIAL_SMALL_STOPS) {
stop0_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop0");
+ glGetUniformLocation(gradient_prog, "stop0");
stop1_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop1");
+ glGetUniformLocation(gradient_prog, "stop1");
stop2_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop2");
+ glGetUniformLocation(gradient_prog, "stop2");
stop3_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop3");
+ glGetUniformLocation(gradient_prog, "stop3");
stop4_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop4");
+ glGetUniformLocation(gradient_prog, "stop4");
stop5_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop5");
+ glGetUniformLocation(gradient_prog, "stop5");
stop6_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop6");
+ glGetUniformLocation(gradient_prog, "stop6");
stop7_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop7");
+ glGetUniformLocation(gradient_prog, "stop7");
stop_color0_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color0");
+ glGetUniformLocation(gradient_prog, "stop_color0");
stop_color1_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color1");
+ glGetUniformLocation(gradient_prog, "stop_color1");
stop_color2_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color2");
+ glGetUniformLocation(gradient_prog, "stop_color2");
stop_color3_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color3");
+ glGetUniformLocation(gradient_prog, "stop_color3");
stop_color4_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color4");
+ glGetUniformLocation(gradient_prog, "stop_color4");
stop_color5_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color5");
+ glGetUniformLocation(gradient_prog, "stop_color5");
stop_color6_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color6");
+ glGetUniformLocation(gradient_prog, "stop_color6");
stop_color7_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color7");
+ glGetUniformLocation(gradient_prog, "stop_color7");
}
else {
stops_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stops");
+ glGetUniformLocation(gradient_prog, "stops");
stop_colors_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_colors");
+ glGetUniformLocation(gradient_prog, "stop_colors");
}
- dispatch->glUseProgram(gradient_prog);
+ glUseProgram(gradient_prog);
- dispatch->glUniform1i(repeat_type_uniform_location,
- src_picture->repeatType);
+ glUniform1i(repeat_type_uniform_location, src_picture->repeatType);
if (src_picture->transform) {
_glamor_gradient_convert_trans_matrix(src_picture->transform,
transform_mat, width, height, 0);
- dispatch->glUniformMatrix3fv(transform_mat_uniform_location,
- 1, 1, &transform_mat[0][0]);
+ glUniformMatrix3fv(transform_mat_uniform_location,
+ 1, 1, &transform_mat[0][0]);
}
else {
- dispatch->glUniformMatrix3fv(transform_mat_uniform_location,
- 1, 1, &identity_mat[0][0]);
+ glUniformMatrix3fv(transform_mat_uniform_location,
+ 1, 1, &identity_mat[0][0]);
}
if (!_glamor_gradient_set_pixmap_destination
@@ -1193,54 +1084,53 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
if (src_picture->pSourcePict->linear.nstops + 2 <= RADIAL_SMALL_STOPS) {
int j = 0;
- dispatch->glUniform4f(stop_color0_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color0_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color1_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color1_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color2_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color2_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color3_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color3_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color4_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color4_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color5_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color5_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color6_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color6_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color7_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color7_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j = 0;
- dispatch->glUniform1f(stop0_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop1_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop2_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop3_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop4_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop5_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop6_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop7_uniform_location, n_stops[j++]);
- dispatch->glUniform1i(n_stop_uniform_location, count);
+ glUniform1f(stop0_uniform_location, n_stops[j++]);
+ glUniform1f(stop1_uniform_location, n_stops[j++]);
+ glUniform1f(stop2_uniform_location, n_stops[j++]);
+ glUniform1f(stop3_uniform_location, n_stops[j++]);
+ glUniform1f(stop4_uniform_location, n_stops[j++]);
+ glUniform1f(stop5_uniform_location, n_stops[j++]);
+ glUniform1f(stop6_uniform_location, n_stops[j++]);
+ glUniform1f(stop7_uniform_location, n_stops[j++]);
+ glUniform1i(n_stop_uniform_location, count);
}
else {
- dispatch->glUniform4fv(stop_colors_uniform_location, count,
- stop_colors);
- dispatch->glUniform1fv(stops_uniform_location, count, n_stops);
- dispatch->glUniform1i(n_stop_uniform_location, count);
+ glUniform4fv(stop_colors_uniform_location, count, stop_colors);
+ glUniform1fv(stops_uniform_location, count, n_stops);
+ glUniform1i(n_stop_uniform_location, count);
}
c1x = (float) pixman_fixed_to_double(src_picture->pSourcePict->radial.c1.x);
@@ -1255,25 +1145,25 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
glamor_set_circle_centre(width, height, c1x, c1y, glamor_priv->yInverted,
cxy);
- dispatch->glUniform2fv(c1_uniform_location, 1, cxy);
- dispatch->glUniform1f(r1_uniform_location, r1);
+ glUniform2fv(c1_uniform_location, 1, cxy);
+ glUniform1f(r1_uniform_location, r1);
glamor_set_circle_centre(width, height, c2x, c2y, glamor_priv->yInverted,
cxy);
- dispatch->glUniform2fv(c2_uniform_location, 1, cxy);
- dispatch->glUniform1f(r2_uniform_location, r2);
+ glUniform2fv(c2_uniform_location, 1, cxy);
+ glUniform1f(r2_uniform_location, r2);
A_value =
(c2x - c1x) * (c2x - c1x) + (c2y - c1y) * (c2y - c1y) - (r2 -
r1) * (r2 -
r1);
- dispatch->glUniform1f(A_value_uniform_location, A_value);
+ glUniform1f(A_value_uniform_location, A_value);
DEBUGF("C1:(%f, %f) R1:%f\nC2:(%f, %f) R2:%f\nA = %f\n",
c1x, c1y, r1, c2x, c2y, r2, A_value);
/* Now rendering. */
- dispatch->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
/* Do the clear logic. */
if (stops_count > RADIAL_SMALL_STOPS) {
@@ -1281,14 +1171,14 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
free(stop_colors);
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
return dst_picture;
GRADIENT_FAIL:
@@ -1303,13 +1193,13 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen,
free(stop_colors);
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
return NULL;
}
@@ -1321,7 +1211,6 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
PictFormatShort format)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
PicturePtr dst_picture = NULL;
PixmapPtr pixmap = NULL;
GLint gradient_prog = 0;
@@ -1374,7 +1263,7 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
GLint pt_distance_uniform_location = 0;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
/* Create a pixmap with VBO. */
pixmap = glamor_create_pixmap(screen,
@@ -1417,79 +1306,78 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
/* Bind all the uniform vars . */
n_stop_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "n_stop");
+ glGetUniformLocation(gradient_prog, "n_stop");
pt_slope_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "pt_slope");
+ glGetUniformLocation(gradient_prog, "pt_slope");
repeat_type_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "repeat_type");
+ glGetUniformLocation(gradient_prog, "repeat_type");
hor_ver_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "hor_ver");
+ glGetUniformLocation(gradient_prog, "hor_ver");
transform_mat_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "transform_mat");
+ glGetUniformLocation(gradient_prog, "transform_mat");
cos_val_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "cos_val");
+ glGetUniformLocation(gradient_prog, "cos_val");
p1_distance_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "p1_distance");
+ glGetUniformLocation(gradient_prog, "p1_distance");
pt_distance_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "pt_distance");
+ glGetUniformLocation(gradient_prog, "pt_distance");
if (src_picture->pSourcePict->linear.nstops + 2 <= LINEAR_SMALL_STOPS) {
stop0_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop0");
+ glGetUniformLocation(gradient_prog, "stop0");
stop1_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop1");
+ glGetUniformLocation(gradient_prog, "stop1");
stop2_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop2");
+ glGetUniformLocation(gradient_prog, "stop2");
stop3_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop3");
+ glGetUniformLocation(gradient_prog, "stop3");
stop4_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop4");
+ glGetUniformLocation(gradient_prog, "stop4");
stop5_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop5");
+ glGetUniformLocation(gradient_prog, "stop5");
stop6_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop6");
+ glGetUniformLocation(gradient_prog, "stop6");
stop7_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop7");
+ glGetUniformLocation(gradient_prog, "stop7");
stop_color0_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color0");
+ glGetUniformLocation(gradient_prog, "stop_color0");
stop_color1_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color1");
+ glGetUniformLocation(gradient_prog, "stop_color1");
stop_color2_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color2");
+ glGetUniformLocation(gradient_prog, "stop_color2");
stop_color3_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color3");
+ glGetUniformLocation(gradient_prog, "stop_color3");
stop_color4_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color4");
+ glGetUniformLocation(gradient_prog, "stop_color4");
stop_color5_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color5");
+ glGetUniformLocation(gradient_prog, "stop_color5");
stop_color6_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color6");
+ glGetUniformLocation(gradient_prog, "stop_color6");
stop_color7_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_color7");
+ glGetUniformLocation(gradient_prog, "stop_color7");
}
else {
stops_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stops");
+ glGetUniformLocation(gradient_prog, "stops");
stop_colors_uniform_location =
- dispatch->glGetUniformLocation(gradient_prog, "stop_colors");
+ glGetUniformLocation(gradient_prog, "stop_colors");
}
- dispatch->glUseProgram(gradient_prog);
+ glUseProgram(gradient_prog);
- dispatch->glUniform1i(repeat_type_uniform_location,
- src_picture->repeatType);
+ glUniform1i(repeat_type_uniform_location, src_picture->repeatType);
/* set the transform matrix. */
if (src_picture->transform) {
_glamor_gradient_convert_trans_matrix(src_picture->transform,
transform_mat, width, height, 1);
- dispatch->glUniformMatrix3fv(transform_mat_uniform_location,
- 1, 1, &transform_mat[0][0]);
+ glUniformMatrix3fv(transform_mat_uniform_location,
+ 1, 1, &transform_mat[0][0]);
}
else {
- dispatch->glUniformMatrix3fv(transform_mat_uniform_location,
- 1, 1, &identity_mat[0][0]);
+ glUniformMatrix3fv(transform_mat_uniform_location,
+ 1, 1, &identity_mat[0][0]);
}
if (!_glamor_gradient_set_pixmap_destination
@@ -1547,66 +1435,65 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
if (src_picture->pSourcePict->linear.nstops + 2 <= LINEAR_SMALL_STOPS) {
int j = 0;
- dispatch->glUniform4f(stop_color0_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color0_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color1_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color1_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color2_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color2_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color3_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color3_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color4_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color4_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color5_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color5_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color6_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color6_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j++;
- dispatch->glUniform4f(stop_color7_uniform_location,
- stop_colors[4 * j + 0], stop_colors[4 * j + 1],
- stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
+ glUniform4f(stop_color7_uniform_location,
+ stop_colors[4 * j + 0], stop_colors[4 * j + 1],
+ stop_colors[4 * j + 2], stop_colors[4 * j + 3]);
j = 0;
- dispatch->glUniform1f(stop0_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop1_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop2_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop3_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop4_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop5_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop6_uniform_location, n_stops[j++]);
- dispatch->glUniform1f(stop7_uniform_location, n_stops[j++]);
-
- dispatch->glUniform1i(n_stop_uniform_location, count);
+ glUniform1f(stop0_uniform_location, n_stops[j++]);
+ glUniform1f(stop1_uniform_location, n_stops[j++]);
+ glUniform1f(stop2_uniform_location, n_stops[j++]);
+ glUniform1f(stop3_uniform_location, n_stops[j++]);
+ glUniform1f(stop4_uniform_location, n_stops[j++]);
+ glUniform1f(stop5_uniform_location, n_stops[j++]);
+ glUniform1f(stop6_uniform_location, n_stops[j++]);
+ glUniform1f(stop7_uniform_location, n_stops[j++]);
+
+ glUniform1i(n_stop_uniform_location, count);
}
else {
- dispatch->glUniform4fv(stop_colors_uniform_location, count,
- stop_colors);
- dispatch->glUniform1fv(stops_uniform_location, count, n_stops);
- dispatch->glUniform1i(n_stop_uniform_location, count);
+ glUniform4fv(stop_colors_uniform_location, count, stop_colors);
+ glUniform1fv(stops_uniform_location, count, n_stops);
+ glUniform1i(n_stop_uniform_location, count);
}
if (src_picture->pSourcePict->linear.p2.y == src_picture->pSourcePict->linear.p1.y) { // The horizontal case.
- dispatch->glUniform1i(hor_ver_uniform_location, 1);
+ glUniform1i(hor_ver_uniform_location, 1);
DEBUGF("p1.y: %f, p2.y: %f, enter the horizontal case\n",
pt1[1], pt2[1]);
p1_distance = pt1[0];
pt_distance = (pt2[0] - p1_distance);
- dispatch->glUniform1f(p1_distance_uniform_location, p1_distance);
- dispatch->glUniform1f(pt_distance_uniform_location, pt_distance);
+ glUniform1f(p1_distance_uniform_location, p1_distance);
+ glUniform1f(pt_distance_uniform_location, pt_distance);
}
else {
/* The slope need to compute here. In shader, the viewport set will change
@@ -1616,20 +1503,20 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
(float) (src_picture->pSourcePict->linear.p2.y
- src_picture->pSourcePict->linear.p1.y);
slope = slope * yscale / xscale;
- dispatch->glUniform1f(pt_slope_uniform_location, slope);
- dispatch->glUniform1i(hor_ver_uniform_location, 0);
+ glUniform1f(pt_slope_uniform_location, slope);
+ glUniform1i(hor_ver_uniform_location, 0);
cos_val = sqrt(1.0 / (slope * slope + 1.0));
- dispatch->glUniform1f(cos_val_uniform_location, cos_val);
+ glUniform1f(cos_val_uniform_location, cos_val);
p1_distance = (pt1[1] - pt1[0] * slope) * cos_val;
pt_distance = (pt2[1] - pt2[0] * slope) * cos_val - p1_distance;
- dispatch->glUniform1f(p1_distance_uniform_location, p1_distance);
- dispatch->glUniform1f(pt_distance_uniform_location, pt_distance);
+ glUniform1f(p1_distance_uniform_location, p1_distance);
+ glUniform1f(pt_distance_uniform_location, pt_distance);
}
/* Now rendering. */
- dispatch->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
/* Do the clear logic. */
if (stops_count > LINEAR_SMALL_STOPS) {
@@ -1637,14 +1524,14 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
free(stop_colors);
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
return dst_picture;
GRADIENT_FAIL:
@@ -1659,13 +1546,13 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen,
free(stop_colors);
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
return NULL;
}
diff --git a/xorg-server/glamor/glamor_picture.c b/xorg-server/glamor/glamor_picture.c
index f51a7e459..8bbe2e98b 100644
--- a/xorg-server/glamor/glamor_picture.c
+++ b/xorg-server/glamor/glamor_picture.c
@@ -93,8 +93,7 @@ glamor_create_picture(PicturePtr picture)
* we have to mark this pixmap as a separated texture, and don't
* fallback to DDX layer. */
if (pixmap_priv->type == GLAMOR_TEXTURE_DRM
- && !glamor_pict_format_is_compatible(picture->format,
- pixmap->drawable.depth))
+ && !glamor_pict_format_is_compatible(picture))
glamor_set_pixmap_type(pixmap, GLAMOR_SEPARATE_TEXTURE);
}
}
diff --git a/xorg-server/glamor/glamor_pixmap.c b/xorg-server/glamor/glamor_pixmap.c
index f7de59c39..77197b5d1 100644
--- a/xorg-server/glamor/glamor_pixmap.c
+++ b/xorg-server/glamor/glamor_pixmap.c
@@ -66,18 +66,12 @@ void
glamor_set_destination_pixmap_fbo(glamor_pixmap_fbo *fbo, int x0, int y0,
int width, int height)
{
- glamor_gl_dispatch *dispatch = glamor_get_dispatch(fbo->glamor_priv);
-
- dispatch->glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
-#ifndef GLAMOR_GLES2
- dispatch->glMatrixMode(GL_PROJECTION);
- dispatch->glLoadIdentity();
- dispatch->glMatrixMode(GL_MODELVIEW);
- dispatch->glLoadIdentity();
-#endif
- dispatch->glViewport(x0, y0, width, height);
+ glamor_get_context(fbo->glamor_priv);
+
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb);
+ glViewport(x0, y0, width, height);
- glamor_put_dispatch(fbo->glamor_priv);
+ glamor_put_context(fbo->glamor_priv);
}
void
@@ -121,71 +115,387 @@ glamor_set_planemask(PixmapPtr pixmap, unsigned long planemask)
}
Bool
-glamor_set_alu(struct glamor_gl_dispatch *dispatch, unsigned char alu)
+glamor_set_alu(ScreenPtr screen, unsigned char alu)
{
-#ifndef GLAMOR_GLES2
+ glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
+
+ if (glamor_priv->gl_flavor == GLAMOR_GL_ES2) {
+ if (alu != GXcopy)
+ return FALSE;
+ else
+ return TRUE;
+ }
+
if (alu == GXcopy) {
- dispatch->glDisable(GL_COLOR_LOGIC_OP);
+ glDisable(GL_COLOR_LOGIC_OP);
return TRUE;
}
- dispatch->glEnable(GL_COLOR_LOGIC_OP);
+ glEnable(GL_COLOR_LOGIC_OP);
switch (alu) {
case GXclear:
- dispatch->glLogicOp(GL_CLEAR);
+ glLogicOp(GL_CLEAR);
break;
case GXand:
- dispatch->glLogicOp(GL_AND);
+ glLogicOp(GL_AND);
break;
case GXandReverse:
- dispatch->glLogicOp(GL_AND_REVERSE);
+ glLogicOp(GL_AND_REVERSE);
break;
case GXandInverted:
- dispatch->glLogicOp(GL_AND_INVERTED);
+ glLogicOp(GL_AND_INVERTED);
break;
case GXnoop:
- dispatch->glLogicOp(GL_NOOP);
+ glLogicOp(GL_NOOP);
break;
case GXxor:
- dispatch->glLogicOp(GL_XOR);
+ glLogicOp(GL_XOR);
break;
case GXor:
- dispatch->glLogicOp(GL_OR);
+ glLogicOp(GL_OR);
break;
case GXnor:
- dispatch->glLogicOp(GL_NOR);
+ glLogicOp(GL_NOR);
break;
case GXequiv:
- dispatch->glLogicOp(GL_EQUIV);
+ glLogicOp(GL_EQUIV);
break;
case GXinvert:
- dispatch->glLogicOp(GL_INVERT);
+ glLogicOp(GL_INVERT);
break;
case GXorReverse:
- dispatch->glLogicOp(GL_OR_REVERSE);
+ glLogicOp(GL_OR_REVERSE);
break;
case GXcopyInverted:
- dispatch->glLogicOp(GL_COPY_INVERTED);
+ glLogicOp(GL_COPY_INVERTED);
break;
case GXorInverted:
- dispatch->glLogicOp(GL_OR_INVERTED);
+ glLogicOp(GL_OR_INVERTED);
break;
case GXnand:
- dispatch->glLogicOp(GL_NAND);
+ glLogicOp(GL_NAND);
break;
case GXset:
- dispatch->glLogicOp(GL_SET);
+ glLogicOp(GL_SET);
break;
default:
glamor_fallback("unsupported alu %x\n", alu);
return FALSE;
}
-#else
- if (alu != GXcopy)
- return FALSE;
-#endif
+
return TRUE;
}
+/*
+ * Map picture's format to the correct gl texture format and type.
+ * no_alpha is used to indicate whehter we need to wire alpha to 1.
+ *
+ * Although opengl support A1/GL_BITMAP, we still don't use it
+ * here, it seems that mesa has bugs when uploading a A1 bitmap.
+ *
+ * Return 0 if find a matched texture type. Otherwise return -1.
+ **/
+static int
+glamor_get_tex_format_type_from_pictformat_gl(PictFormatShort format,
+ GLenum *tex_format,
+ GLenum *tex_type,
+ int *no_alpha,
+ int *revert,
+ int *swap_rb, int is_upload)
+{
+ *no_alpha = 0;
+ *revert = REVERT_NONE;
+ *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING;
+ switch (format) {
+ case PICT_a1:
+ *tex_format = GL_ALPHA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1;
+ break;
+ case PICT_b8g8r8x8:
+ *no_alpha = 1;
+ case PICT_b8g8r8a8:
+ *tex_format = GL_BGRA;
+ *tex_type = GL_UNSIGNED_INT_8_8_8_8;
+ break;
+
+ case PICT_x8r8g8b8:
+ *no_alpha = 1;
+ case PICT_a8r8g8b8:
+ *tex_format = GL_BGRA;
+ *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
+ break;
+ case PICT_x8b8g8r8:
+ *no_alpha = 1;
+ case PICT_a8b8g8r8:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
+ break;
+ case PICT_x2r10g10b10:
+ *no_alpha = 1;
+ case PICT_a2r10g10b10:
+ *tex_format = GL_BGRA;
+ *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV;
+ break;
+ case PICT_x2b10g10r10:
+ *no_alpha = 1;
+ case PICT_a2b10g10r10:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV;
+ break;
+
+ case PICT_r5g6b5:
+ *tex_format = GL_RGB;
+ *tex_type = GL_UNSIGNED_SHORT_5_6_5;
+ break;
+ case PICT_b5g6r5:
+ *tex_format = GL_RGB;
+ *tex_type = GL_UNSIGNED_SHORT_5_6_5_REV;
+ break;
+ case PICT_x1b5g5r5:
+ *no_alpha = 1;
+ case PICT_a1b5g5r5:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
+ break;
+
+ case PICT_x1r5g5b5:
+ *no_alpha = 1;
+ case PICT_a1r5g5b5:
+ *tex_format = GL_BGRA;
+ *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
+ break;
+ case PICT_a8:
+ *tex_format = GL_ALPHA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ break;
+ case PICT_x4r4g4b4:
+ *no_alpha = 1;
+ case PICT_a4r4g4b4:
+ *tex_format = GL_BGRA;
+ *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV;
+ break;
+
+ case PICT_x4b4g4r4:
+ *no_alpha = 1;
+ case PICT_a4b4g4r4:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV;
+ break;
+
+ default:
+ LogMessageVerb(X_INFO, 0,
+ "fail to get matched format for %x \n", format);
+ return -1;
+ }
+ return 0;
+}
+
+#define IS_LITTLE_ENDIAN (IMAGE_BYTE_ORDER == LSBFirst)
+
+static int
+glamor_get_tex_format_type_from_pictformat_gles2(PictFormatShort format,
+ GLenum *tex_format,
+ GLenum *tex_type,
+ int *no_alpha,
+ int *revert,
+ int *swap_rb, int is_upload)
+{
+ int need_swap_rb = 0;
+
+ *no_alpha = 0;
+ *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL;
+
+ switch (format) {
+ case PICT_b8g8r8x8:
+ *no_alpha = 1;
+ case PICT_b8g8r8a8:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ need_swap_rb = 1;
+ *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
+ break;
+
+ case PICT_x8r8g8b8:
+ *no_alpha = 1;
+ case PICT_a8r8g8b8:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ need_swap_rb = 1;
+ break;
+
+ case PICT_x8b8g8r8:
+ *no_alpha = 1;
+ case PICT_a8b8g8r8:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ break;
+
+ case PICT_x2r10g10b10:
+ *no_alpha = 1;
+ case PICT_a2r10g10b10:
+ *tex_format = GL_RGBA;
+ /* glReadPixmap doesn't support GL_UNSIGNED_INT_10_10_10_2.
+ * we have to use GL_UNSIGNED_BYTE and do the conversion in
+ * shader latter.*/
+ *tex_type = GL_UNSIGNED_BYTE;
+ if (is_upload == 1) {
+ if (!IS_LITTLE_ENDIAN)
+ *revert = REVERT_UPLOADING_10_10_10_2;
+ else
+ *revert = REVERT_UPLOADING_2_10_10_10;
+ }
+ else {
+ if (!IS_LITTLE_ENDIAN) {
+ *revert = REVERT_DOWNLOADING_10_10_10_2;
+ }
+ else {
+ *revert = REVERT_DOWNLOADING_2_10_10_10;
+ }
+ }
+ need_swap_rb = 1;
+
+ break;
+
+ case PICT_x2b10g10r10:
+ *no_alpha = 1;
+ case PICT_a2b10g10r10:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ if (is_upload == 1) {
+ if (!IS_LITTLE_ENDIAN)
+ *revert = REVERT_UPLOADING_10_10_10_2;
+ else
+ *revert = REVERT_UPLOADING_2_10_10_10;
+ }
+ else {
+ if (!IS_LITTLE_ENDIAN) {
+ *revert = REVERT_DOWNLOADING_10_10_10_2;
+ }
+ else {
+ *revert = REVERT_DOWNLOADING_2_10_10_10;
+ }
+ }
+ break;
+
+ case PICT_r5g6b5:
+ *tex_format = GL_RGB;
+ *tex_type = GL_UNSIGNED_SHORT_5_6_5;
+ *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL;
+
+ break;
+
+ case PICT_b5g6r5:
+ *tex_format = GL_RGB;
+ *tex_type = GL_UNSIGNED_SHORT_5_6_5;
+ need_swap_rb = IS_LITTLE_ENDIAN ? 1 : 0;;
+ break;
+
+ case PICT_x1b5g5r5:
+ *no_alpha = 1;
+ case PICT_a1b5g5r5:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_5_5_5_1;
+ if (IS_LITTLE_ENDIAN) {
+ *revert =
+ is_upload ? REVERT_UPLOADING_1_5_5_5 :
+ REVERT_DOWNLOADING_1_5_5_5;
+ }
+ else
+ *revert = REVERT_NONE;
+ break;
+
+ case PICT_x1r5g5b5:
+ *no_alpha = 1;
+ case PICT_a1r5g5b5:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_5_5_5_1;
+ if (IS_LITTLE_ENDIAN) {
+ *revert =
+ is_upload ? REVERT_UPLOADING_1_5_5_5 :
+ REVERT_DOWNLOADING_1_5_5_5;
+ }
+ else
+ *revert = REVERT_NONE;
+ need_swap_rb = 1;
+ break;
+
+ case PICT_a1:
+ *tex_format = GL_ALPHA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1;
+ break;
+
+ case PICT_a8:
+ *tex_format = GL_ALPHA;
+ *tex_type = GL_UNSIGNED_BYTE;
+ *revert = REVERT_NONE;
+ break;
+
+ case PICT_x4r4g4b4:
+ *no_alpha = 1;
+ case PICT_a4r4g4b4:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_4_4_4_4;
+ *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
+ need_swap_rb = 1;
+ break;
+
+ case PICT_x4b4g4r4:
+ *no_alpha = 1;
+ case PICT_a4b4g4r4:
+ *tex_format = GL_RGBA;
+ *tex_type = GL_UNSIGNED_SHORT_4_4_4_4;
+ *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
+ break;
+
+ default:
+ LogMessageVerb(X_INFO, 0,
+ "fail to get matched format for %x \n", format);
+ return -1;
+ }
+
+ if (need_swap_rb)
+ *swap_rb = is_upload ? SWAP_UPLOADING : SWAP_DOWNLOADING;
+ else
+ *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING;
+ return 0;
+}
+
+static int
+glamor_get_tex_format_type_from_pixmap(PixmapPtr pixmap,
+ GLenum *format,
+ GLenum *type,
+ int *no_alpha,
+ int *revert, int *swap_rb, int is_upload)
+{
+ glamor_pixmap_private *pixmap_priv;
+ PictFormatShort pict_format;
+ glamor_screen_private *glamor_priv =
+ glamor_get_screen_private(pixmap->drawable.pScreen);
+
+ pixmap_priv = glamor_get_pixmap_private(pixmap);
+ if (GLAMOR_PIXMAP_PRIV_IS_PICTURE(pixmap_priv))
+ pict_format = pixmap_priv->base.picture->format;
+ else
+ pict_format = format_for_depth(pixmap->drawable.depth);
+
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ return glamor_get_tex_format_type_from_pictformat_gl(pict_format,
+ format, type,
+ no_alpha,
+ revert,
+ swap_rb,
+ is_upload);
+ } else {
+ return glamor_get_tex_format_type_from_pictformat_gles2(pict_format,
+ format, type,
+ no_alpha,
+ revert,
+ swap_rb,
+ is_upload);
+ }
+}
+
static void *
_glamor_color_convert_a1_a8(void *src_bits, void *dst_bits, int w, int h,
int stride, int revert)
@@ -397,38 +707,35 @@ __glamor_upload_pixmap_to_texture(PixmapPtr pixmap, unsigned int *tex,
{
glamor_screen_private *glamor_priv =
glamor_get_screen_private(pixmap->drawable.pScreen);
- glamor_gl_dispatch *dispatch;
int non_sub = 0;
unsigned int iformat = 0;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (*tex == 0) {
- dispatch->glGenTextures(1, tex);
+ glGenTextures(1, tex);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
- gl_iformat_for_depth(pixmap->drawable.depth, &iformat);
+ iformat = gl_iformat_for_pixmap(pixmap);
else
iformat = format;
non_sub = 1;
assert(x == 0 && y == 0);
}
- dispatch->glBindTexture(GL_TEXTURE_2D, *tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- dispatch->glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
+ glBindTexture(GL_TEXTURE_2D, *tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
if (bits == NULL)
- dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo);
if (non_sub)
- dispatch->glTexImage2D(GL_TEXTURE_2D,
- 0, iformat, w, h, 0, format, type, bits);
+ glTexImage2D(GL_TEXTURE_2D, 0, iformat, w, h, 0, format, type, bits);
else
- dispatch->glTexSubImage2D(GL_TEXTURE_2D,
- 0, x, y, w, h, format, type, bits);
+ glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, format, type, bits);
if (bits == NULL)
- dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
- glamor_put_dispatch(glamor_priv);
+ glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -440,7 +747,6 @@ _glamor_upload_bits_to_pixmap_texture(PixmapPtr pixmap, GLenum format,
glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap);
glamor_screen_private *glamor_priv =
glamor_get_screen_private(pixmap->drawable.pScreen);
- glamor_gl_dispatch *dispatch;
static float vertices[8];
static float texcoords[8] = { 0, 1,
@@ -526,42 +832,35 @@ _glamor_upload_bits_to_pixmap_texture(PixmapPtr pixmap, GLenum format,
x + w, y + h,
glamor_priv->yInverted, vertices);
/* Slow path, we need to flip y or wire alpha to 1. */
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), vertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), ptexcoords);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glamor_get_context(glamor_priv);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, 2 * sizeof(float), vertices);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
+ GL_FALSE, 2 * sizeof(float), ptexcoords);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
glamor_set_destination_pixmap_priv_nc(pixmap_priv);
__glamor_upload_pixmap_to_texture(pixmap, &tex,
format, type, 0, 0, w, h, bits, pbo);
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glBindTexture(GL_TEXTURE_2D, tex);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-#ifndef GLAMOR_GLES2
- dispatch->glEnable(GL_TEXTURE_2D);
-#endif
- dispatch->glUseProgram(glamor_priv->finish_access_prog[no_alpha]);
- dispatch->glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert);
- dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha],
- swap_rb);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glUseProgram(glamor_priv->finish_access_prog[no_alpha]);
+ glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert);
+ glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], swap_rb);
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
-#ifndef GLAMOR_GLES2
- dispatch->glDisable(GL_TEXTURE_2D);
-#endif
- dispatch->glUseProgram(0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glDeleteTextures(1, &tex);
- dispatch->glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glUseProgram(0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDeleteTextures(1, &tex);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
if (need_free_bits)
free(bits);
@@ -615,7 +914,7 @@ glamor_pixmap_upload_prepare(PixmapPtr pixmap, GLenum format, int no_alpha,
return 0;
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
- gl_iformat_for_depth(pixmap->drawable.depth, &iformat);
+ iformat = gl_iformat_for_pixmap(pixmap);
else
iformat = format;
@@ -831,7 +1130,6 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h,
glamor_screen_private *glamor_priv;
ScreenPtr screen;
glamor_pixmap_fbo *temp_fbo;
- glamor_gl_dispatch *dispatch;
float temp_xscale, temp_yscale, source_xscale, source_yscale;
static float vertices[8];
static float texcoords[8];
@@ -844,7 +1142,7 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h,
if (temp_fbo == NULL)
return NULL;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
temp_xscale = 1.0 / w;
temp_yscale = 1.0 / h;
@@ -852,9 +1150,9 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h,
temp_xscale, temp_yscale, 0, 0, w, h,
glamor_priv->yInverted, vertices);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), vertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), vertices);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
pixmap_priv_get_scale(source_priv, &source_xscale, &source_yscale);
glamor_set_normalize_tcoords(source_priv, source_xscale,
@@ -863,27 +1161,26 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h,
x + w, y + h,
glamor_priv->yInverted, texcoords);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), texcoords);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), texcoords);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glBindTexture(GL_TEXTURE_2D, source_priv->base.fbo->tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, source_priv->base.fbo->tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glamor_set_destination_pixmap_fbo(temp_fbo, 0, 0, w, h);
- dispatch->glUseProgram(glamor_priv->finish_access_prog[no_alpha]);
- dispatch->glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert);
- dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha],
- swap_rb);
+ glUseProgram(glamor_priv->finish_access_prog[no_alpha]);
+ glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert);
+ glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], swap_rb);
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
return temp_fbo;
}
@@ -905,7 +1202,6 @@ _glamor_download_sub_pixmap_to_cpu(PixmapPtr pixmap, GLenum format,
void *data, *read;
glamor_screen_private *glamor_priv =
glamor_get_screen_private(pixmap->drawable.pScreen);
- glamor_gl_dispatch *dispatch;
glamor_pixmap_fbo *temp_fbo = NULL;
int need_post_conversion = 0;
int need_free_data = 0;
@@ -964,57 +1260,53 @@ _glamor_download_sub_pixmap_to_cpu(PixmapPtr pixmap, GLenum format,
fbo_y_off = 0;
}
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glPixelStorei(GL_PACK_ALIGNMENT, 4);
+ glamor_get_context(glamor_priv);
+ glPixelStorei(GL_PACK_ALIGNMENT, 4);
if (glamor_priv->has_pack_invert || glamor_priv->yInverted) {
if (!glamor_priv->yInverted) {
assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP);
- dispatch->glPixelStorei(GL_PACK_INVERT_MESA, 1);
+ glPixelStorei(GL_PACK_INVERT_MESA, 1);
}
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && data == NULL) {
assert(pbo > 0);
- dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, pbo);
- dispatch->glBufferData(GL_PIXEL_PACK_BUFFER,
- stride * h, NULL, gl_usage);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, pbo);
+ glBufferData(GL_PIXEL_PACK_BUFFER, stride * h, NULL, gl_usage);
}
- dispatch->glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type,
- data);
+ glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type, data);
if (!glamor_priv->yInverted) {
assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP);
- dispatch->glPixelStorei(GL_PACK_INVERT_MESA, 0);
+ glPixelStorei(GL_PACK_INVERT_MESA, 0);
}
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && bits == NULL) {
- bits = dispatch->glMapBuffer(GL_PIXEL_PACK_BUFFER, gl_access);
- dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+ bits = glMapBuffer(GL_PIXEL_PACK_BUFFER, gl_access);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
}
}
else {
unsigned int temp_pbo;
int yy;
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glGenBuffers(1, &temp_pbo);
- dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, temp_pbo);
- dispatch->glBufferData(GL_PIXEL_PACK_BUFFER,
- stride * h, NULL, GL_STREAM_READ);
- dispatch->glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h,
- format, type, 0);
- read = dispatch->glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
+ glamor_get_context(glamor_priv);
+ glGenBuffers(1, &temp_pbo);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, temp_pbo);
+ glBufferData(GL_PIXEL_PACK_BUFFER, stride * h, NULL, GL_STREAM_READ);
+ glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type, 0);
+ read = glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
for (yy = 0; yy < pixmap->drawable.height; yy++)
memcpy((char *) data + yy * stride,
(char *) read + (h - yy - 1) * stride, stride);
- dispatch->glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
- dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
- dispatch->glDeleteBuffers(1, &temp_pbo);
+ glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+ glDeleteBuffers(1, &temp_pbo);
}
- dispatch->glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glamor_put_dispatch(glamor_priv);
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ glamor_put_context(glamor_priv);
if (need_post_conversion) {
/* As OpenGL desktop version never enters here.
@@ -1168,7 +1460,6 @@ glamor_download_pixmap_to_cpu(PixmapPtr pixmap, glamor_access_t access)
void *data = NULL, *dst;
glamor_screen_private *glamor_priv =
glamor_get_screen_private(pixmap->drawable.pScreen);
- glamor_gl_dispatch *dispatch;
int pbo = 0;
if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv))
@@ -1189,10 +1480,10 @@ glamor_download_pixmap_to_cpu(PixmapPtr pixmap, glamor_access_t access)
data = malloc(stride * pixmap->drawable.height);
}
else {
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (pixmap_priv->base.fbo->pbo == 0)
- dispatch->glGenBuffers(1, &pixmap_priv->base.fbo->pbo);
- glamor_put_dispatch(glamor_priv);
+ glGenBuffers(1, &pixmap_priv->base.fbo->pbo);
+ glamor_put_context(glamor_priv);
pbo = pixmap_priv->base.fbo->pbo;
}
diff --git a/xorg-server/glamor/glamor_priv.h b/xorg-server/glamor/glamor_priv.h
index dc3873013..fe4b42332 100644
--- a/xorg-server/glamor/glamor_priv.h
+++ b/xorg-server/glamor/glamor_priv.h
@@ -35,23 +35,19 @@
#endif
#include "glamor.h"
-#ifdef GLAMOR_GLES2
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-#define GLAMOR_DEFAULT_PRECISION "precision mediump float;\n"
-#include "glamor_glext.h"
-#else
-#include <GL/gl.h>
-#include <GL/glext.h>
-#define GLAMOR_DEFAULT_PRECISION
-#endif
+#include <epoxy/gl.h>
+
+#define GLAMOR_DEFAULT_PRECISION \
+ "#ifdef GL_ES\n" \
+ "precision mediump float;\n" \
+ "#endif\n"
#ifdef RENDER
#include "glyphstr.h"
#endif
#include "glamor_debug.h"
+#include "glamor_context.h"
#include <list.h>
@@ -145,13 +141,6 @@ enum gradient_shader {
SHADER_GRADIENT_COUNT,
};
-enum gradient_shader_prog {
- SHADER_GRADIENT_VS_PROG,
- SHADER_GRADIENT_FS_MAIN_PROG,
- SHADER_GRADIENT_FS_GETCOLOR_PROG,
- SHADER_GRADIENT_PROG_COUNT,
-};
-
struct glamor_screen_private;
struct glamor_pixmap_private;
@@ -178,8 +167,6 @@ typedef struct {
uint16_t evict;
} glamor_glyph_cache_t;
-#include "glamor_gl_dispatch.h"
-
struct glamor_saved_procs {
CloseScreenProcPtr close_screen;
CreateGCProcPtr create_gc;
@@ -202,11 +189,7 @@ struct glamor_saved_procs {
SetWindowPixmapProcPtr set_window_pixmap;
};
-#ifdef GLAMOR_GLES2
#define CACHE_FORMAT_COUNT 3
-#else
-#define CACHE_FORMAT_COUNT 2
-#endif
#define CACHE_BUCKET_WCOUNT 4
#define CACHE_BUCKET_HCOUNT 4
@@ -220,8 +203,7 @@ struct glamor_saved_procs {
#define RENDER_IDEL_MAX 32
typedef struct glamor_screen_private {
- struct glamor_gl_dispatch _dispatch;
- int yInverted;
+ Bool yInverted;
unsigned int tick;
enum glamor_gl_flavor gl_flavor;
int has_pack_invert;
@@ -262,9 +244,7 @@ typedef struct glamor_screen_private {
/* glamor gradient, 0 for small nstops, 1 for
large nstops and 2 for dynamic generate. */
GLint gradient_prog[SHADER_GRADIENT_COUNT][3];
- GLint linear_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3];
int linear_max_nstops;
- GLint radial_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3];
int radial_max_nstops;
/* glamor trapezoid shader. */
@@ -288,6 +268,8 @@ typedef struct glamor_screen_private {
/* xv */
GLint xv_prog;
+
+ struct glamor_context ctx;
} glamor_screen_private;
typedef enum glamor_access {
@@ -583,9 +565,8 @@ Bool glamor_stipple(PixmapPtr pixmap, PixmapPtr stipple,
unsigned char alu, unsigned long planemask,
unsigned long fg_pixel, unsigned long bg_pixel,
int stipple_x, int stipple_y);
-GLint glamor_compile_glsl_prog(glamor_gl_dispatch *dispatch, GLenum type,
- const char *source);
-void glamor_link_glsl_prog(glamor_gl_dispatch *dispatch, GLint prog);
+GLint glamor_compile_glsl_prog(GLenum type, const char *source);
+void glamor_link_glsl_prog(GLint prog);
void glamor_get_color_4f_from_pixel(PixmapPtr pixmap,
unsigned long fg_pixel, GLfloat *color);
@@ -604,7 +585,7 @@ glamor_pixmap_fbo *glamor_es2_pixmap_read_prepare(PixmapPtr source, int x,
int no_alpha, int revert,
int swap_rb);
-Bool glamor_set_alu(struct glamor_gl_dispatch *dispatch, unsigned char alu);
+Bool glamor_set_alu(ScreenPtr screen, unsigned char alu);
Bool glamor_set_planemask(PixmapPtr pixmap, unsigned long planemask);
Bool glamor_change_window_attributes(WindowPtr pWin, unsigned long mask);
RegionPtr glamor_bitmap_to_region(PixmapPtr pixmap);
@@ -935,6 +916,9 @@ void glamor_composite_rectangles(CARD8 op,
xRenderColor *color,
int num_rects, xRectangle *rects);
+extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen,
+ struct glamor_context *glamor_ctx);
+
/* glamor_xv */
typedef struct {
uint32_t transform_index;
diff --git a/xorg-server/glamor/glamor_putimage.c b/xorg-server/glamor/glamor_putimage.c
index 6b25bec84..702e89f14 100644
--- a/xorg-server/glamor/glamor_putimage.c
+++ b/xorg-server/glamor/glamor_putimage.c
@@ -67,27 +67,26 @@ glamor_init_putimage_shaders(ScreenPtr screen)
if (!GLEW_ARB_fragment_shader)
return;
- prog = dispatch->glCreateProgram();
+ prog = glCreateProgram();
vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, xybitmap_vs);
fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, xybitmap_fs);
- dispatch->glAttachShader(prog, vs_prog);
- dispatch->glAttachShader(prog, fs_prog);
+ glAttachShader(prog, vs_prog);
+ glAttachShader(prog, fs_prog);
glamor_link_glsl_prog(prog);
- dispatch->glUseProgram(prog);
- sampler_uniform_location =
- dispatch->glGetUniformLocation(prog, "bitmap_sampler");
- dispatch->glUniform1i(sampler_uniform_location, 0);
+ glUseProgram(prog);
+ sampler_uniform_location = glGetUniformLocation(prog, "bitmap_sampler");
+ glUniform1i(sampler_uniform_location, 0);
glamor_priv->put_image_xybitmap_fg_uniform_location =
- dispatch->glGetUniformLocation(prog, "fg");
+ glGetUniformLocation(prog, "fg");
glamor_priv->put_image_xybitmap_bg_uniform_location =
- dispatch->glGetUniformLocation(prog, "bg");
+ glGetUniformLocation(prog, "bg");
glamor_get_transform_uniform_locations(prog,
&glamor_priv->
put_image_xybitmap_transform);
glamor_priv->put_image_xybitmap_prog = prog;
- dispatch->glUseProgram(0);
+ glUseProgram(0);
#endif
}
@@ -162,40 +161,37 @@ glamor_put_image_xybitmap(DrawablePtr drawable, GCPtr gc,
if (!glamor_set_planemask(pixmap, gc->planemask))
goto fail;
- dispatch->glUseProgram(glamor_priv->put_image_xybitmap_prog);
+ glUseProgram(glamor_priv->put_image_xybitmap_prog);
glamor_get_color_4f_from_pixel(pixmap, gc->fgPixel, fg);
- dispatch->glUniform4fv
- (glamor_priv->put_image_xybitmap_fg_uniform_location, 1, fg);
+ glUniform4fv(glamor_priv->put_image_xybitmap_fg_uniform_location, 1, fg);
glamor_get_color_4f_from_pixel(pixmap, gc->bgPixel, bg);
- dispatch->glUniform4fv
- (glamor_priv->put_image_xybitmap_bg_uniform_location, 1, bg);
-
- dispatch->glGenTextures(1, &tex);
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glEnable(GL_TEXTURE_2D);
- dispatch->glBindTexture(GL_TEXTURE_2D, tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- dispatch->glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- dispatch->glPixelStorei(GL_UNPACK_ROW_LENGTH, stride * 8);
- dispatch->glPixelStorei(GL_UNPACK_SKIP_PIXELS, left_pad);
- dispatch->glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA,
- w, h, 0, GL_COLOR_INDEX, GL_BITMAP, bits);
- dispatch->glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
- dispatch->glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
+ glUniform4fv(glamor_priv->put_image_xybitmap_bg_uniform_location, 1, bg);
+
+ glGenTextures(1, &tex);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+ glPixelStorei(GL_UNPACK_ROW_LENGTH, stride * 8);
+ glPixelStorei(GL_UNPACK_SKIP_PIXELS, left_pad);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA,
+ w, h, 0, GL_COLOR_INDEX, GL_BITMAP, bits);
+ glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+ glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
/* Now that we've set up our bitmap texture and the shader, shove
* the destination rectangle through the cliprects and run the
* shader on the resulting fragments.
*/
- dispatch->glVertexPointer(2, GL_FLOAT, 0, dest_coords);
- dispatch->glEnableClientState(GL_VERTEX_ARRAY);
- dispatch->glClientActiveTexture(GL_TEXTURE0);
- dispatch->glTexCoordPointer(2, GL_FLOAT, 0, bitmap_coords);
- dispatch->glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+ glVertexPointer(2, GL_FLOAT, 0, dest_coords);
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glClientActiveTexture(GL_TEXTURE0);
+ glTexCoordPointer(2, GL_FLOAT, 0, bitmap_coords);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- dispatch->glEnable(GL_SCISSOR_TEST);
+ glEnable(GL_SCISSOR_TEST);
clip = fbGetCompositeClip(gc);
for (nbox = REGION_NUM_RECTS(clip), box = REGION_RECTS(clip); nbox--; box++) {
int x1 = x;
@@ -214,19 +210,17 @@ glamor_put_image_xybitmap(DrawablePtr drawable, GCPtr gc,
if (x1 >= x2 || y1 >= y2)
continue;
- dispatch->glScissor(box->x1,
- y_flip(pixmap, box->y1),
- box->x2 - box->x1, box->y2 - box->y1);
- dispatch->glDrawArrays(GL_QUADS, 0, 4);
+ glScissor(box->x1, y_flip(pixmap, box->y1),
+ box->x2 - box->x1, box->y2 - box->y1);
+ glDrawArrays(GL_QUADS, 0, 4);
}
- dispatch->glDisable(GL_SCISSOR_TEST);
+ glDisable(GL_SCISSOR_TEST);
glamor_set_alu(GXcopy);
glamor_set_planemask(pixmap, ~0);
- dispatch->glDeleteTextures(1, &tex);
- dispatch->glDisable(GL_TEXTURE_2D);
- dispatch->glDisableClientState(GL_VERTEX_ARRAY);
- dispatch->glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+ glDeleteTextures(1, &tex);
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
return;
glamor_set_alu(GXcopy);
glamor_set_planemask(pixmap, ~0);
diff --git a/xorg-server/glamor/glamor_render.c b/xorg-server/glamor/glamor_render.c
index 4a3a97ccd..093a2151d 100644
--- a/xorg-server/glamor/glamor_render.c
+++ b/xorg-server/glamor/glamor_render.c
@@ -62,8 +62,7 @@ static struct blendinfo composite_op_info[] = {
#define RepeatFix 10
static GLuint
-glamor_create_composite_fs(glamor_gl_dispatch *dispatch,
- struct shader_key *key)
+glamor_create_composite_fs(struct shader_key *key)
{
const char *repeat_define =
"#define RepeatNone 0\n"
@@ -266,15 +265,14 @@ glamor_create_composite_fs(glamor_gl_dispatch *dispatch,
XNFasprintf(&source, "%s%s%s%s%s%s", repeat_define, relocate_texture,
rel_sampler, source_fetch, mask_fetch, in);
- prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, source);
+ prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, source);
free(source);
return prog;
}
static GLuint
-glamor_create_composite_vs(glamor_gl_dispatch *dispatch,
- struct shader_key *key)
+glamor_create_composite_vs(struct shader_key *key)
{
const char *main_opening =
"attribute vec4 v_position;\n"
@@ -304,7 +302,7 @@ glamor_create_composite_vs(glamor_gl_dispatch *dispatch,
main_opening,
source_coords_setup, mask_coords_setup, main_closing);
- prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, source);
+ prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, source);
free(source);
return prog;
@@ -317,60 +315,57 @@ glamor_create_composite_shader(ScreenPtr screen, struct shader_key *key,
GLuint vs, fs, prog;
GLint source_sampler_uniform_location, mask_sampler_uniform_location;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
- dispatch = glamor_get_dispatch(glamor_priv);
- vs = glamor_create_composite_vs(dispatch, key);
+ glamor_get_context(glamor_priv);
+ vs = glamor_create_composite_vs(key);
if (vs == 0)
goto out;
- fs = glamor_create_composite_fs(dispatch, key);
+ fs = glamor_create_composite_fs(key);
if (fs == 0)
goto out;
- prog = dispatch->glCreateProgram();
- dispatch->glAttachShader(prog, vs);
- dispatch->glAttachShader(prog, fs);
+ prog = glCreateProgram();
+ glAttachShader(prog, vs);
+ glAttachShader(prog, fs);
- dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_POS, "v_position");
- dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_MASK, "v_texcoord1");
+ glBindAttribLocation(prog, GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(prog, GLAMOR_VERTEX_SOURCE, "v_texcoord0");
+ glBindAttribLocation(prog, GLAMOR_VERTEX_MASK, "v_texcoord1");
- glamor_link_glsl_prog(dispatch, prog);
+ glamor_link_glsl_prog(prog);
shader->prog = prog;
- dispatch->glUseProgram(prog);
+ glUseProgram(prog);
if (key->source == SHADER_SOURCE_SOLID) {
- shader->source_uniform_location =
- dispatch->glGetUniformLocation(prog, "source");
+ shader->source_uniform_location = glGetUniformLocation(prog, "source");
}
else {
source_sampler_uniform_location =
- dispatch->glGetUniformLocation(prog, "source_sampler");
- dispatch->glUniform1i(source_sampler_uniform_location, 0);
- shader->source_wh = dispatch->glGetUniformLocation(prog, "source_wh");
+ glGetUniformLocation(prog, "source_sampler");
+ glUniform1i(source_sampler_uniform_location, 0);
+ shader->source_wh = glGetUniformLocation(prog, "source_wh");
shader->source_repeat_mode =
- dispatch->glGetUniformLocation(prog, "source_repeat_mode");
+ glGetUniformLocation(prog, "source_repeat_mode");
}
if (key->mask != SHADER_MASK_NONE) {
if (key->mask == SHADER_MASK_SOLID) {
- shader->mask_uniform_location =
- dispatch->glGetUniformLocation(prog, "mask");
+ shader->mask_uniform_location = glGetUniformLocation(prog, "mask");
}
else {
mask_sampler_uniform_location =
- dispatch->glGetUniformLocation(prog, "mask_sampler");
- dispatch->glUniform1i(mask_sampler_uniform_location, 1);
- shader->mask_wh = dispatch->glGetUniformLocation(prog, "mask_wh");
+ glGetUniformLocation(prog, "mask_sampler");
+ glUniform1i(mask_sampler_uniform_location, 1);
+ shader->mask_wh = glGetUniformLocation(prog, "mask_wh");
shader->mask_repeat_mode =
- dispatch->glGetUniformLocation(prog, "mask_repeat_mode");
+ glGetUniformLocation(prog, "mask_repeat_mode");
}
}
out:
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
static glamor_composite_shader *
@@ -407,23 +402,21 @@ void
glamor_init_composite_shaders(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
unsigned short *eb;
float *vb = NULL;
int eb_size;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glGenBuffers(1, &glamor_priv->vbo);
- dispatch->glGenBuffers(1, &glamor_priv->ebo);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
+ glamor_get_context(glamor_priv);
+ glGenBuffers(1, &glamor_priv->vbo);
+ glGenBuffers(1, &glamor_priv->ebo);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
eb_size = GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(short) * 2;
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
- dispatch->glBufferData(GL_ELEMENT_ARRAY_BUFFER,
- eb_size, NULL, GL_STATIC_DRAW);
- eb = dispatch->glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY);
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, eb_size, NULL, GL_STATIC_DRAW);
+ eb = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY);
}
else {
vb = malloc(GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) * 2);
@@ -438,51 +431,49 @@ glamor_init_composite_shaders(ScreenPtr screen)
glamor_init_eb(eb, GLAMOR_COMPOSITE_VBO_VERT_CNT);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
- dispatch->glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
else {
- dispatch->glBufferData(GL_ELEMENT_ARRAY_BUFFER,
- eb_size, eb, GL_STATIC_DRAW);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, eb_size, eb, GL_STATIC_DRAW);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) *
- 2, NULL, GL_DYNAMIC_DRAW);
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glBufferData(GL_ARRAY_BUFFER,
+ GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) *
+ 2, NULL, GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
free(eb);
glamor_priv->vb = (char *) vb;
}
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_composite_shaders(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_composite_shader *shader;
int i, j, k;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glDeleteBuffers(1, &glamor_priv->vbo);
- dispatch->glDeleteBuffers(1, &glamor_priv->ebo);
+ glamor_get_context(glamor_priv);
+ glDeleteBuffers(1, &glamor_priv->vbo);
+ glDeleteBuffers(1, &glamor_priv->ebo);
for (i = 0; i < SHADER_SOURCE_COUNT; i++)
for (j = 0; j < SHADER_MASK_COUNT; j++)
for (k = 0; k < SHADER_IN_COUNT; k++) {
shader = &glamor_priv->composite_shader[i][j][k];
if (shader->prog)
- dispatch->glDeleteProgram(shader->prog);
+ glDeleteProgram(shader->prog);
}
if (glamor_priv->gl_flavor != GLAMOR_GL_DESKTOP && glamor_priv->vb)
free(glamor_priv->vb);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -535,44 +526,37 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
glamor_pixmap_private *pixmap_priv,
GLuint wh_location, GLuint repeat_location)
{
- glamor_gl_dispatch *dispatch;
float wh[4];
int repeat_type;
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glActiveTexture(GL_TEXTURE0 + unit);
- dispatch->glBindTexture(GL_TEXTURE_2D, pixmap_priv->base.fbo->tex);
+ glamor_get_context(glamor_priv);
+ glActiveTexture(GL_TEXTURE0 + unit);
+ glBindTexture(GL_TEXTURE_2D, pixmap_priv->base.fbo->tex);
repeat_type = picture->repeatType;
switch (picture->repeatType) {
case RepeatNone:
-#ifndef GLAMOR_GLES2
- /* XXX GLES2 doesn't support GL_CLAMP_TO_BORDER. */
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
- GL_CLAMP_TO_BORDER);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
- GL_CLAMP_TO_BORDER);
-#else
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
- GL_CLAMP_TO_EDGE);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
- GL_CLAMP_TO_EDGE);
-#endif
+ if (glamor_priv->gl_flavor != GLAMOR_GL_ES2) {
+ /* XXX GLES2 doesn't support GL_CLAMP_TO_BORDER. */
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
+ GL_CLAMP_TO_BORDER);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
+ GL_CLAMP_TO_BORDER);
+ } else {
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ }
break;
case RepeatNormal:
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
break;
case RepeatPad:
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
- GL_CLAMP_TO_EDGE);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
- GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
break;
case RepeatReflect:
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,
- GL_MIRRORED_REPEAT);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,
- GL_MIRRORED_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT);
break;
}
@@ -580,23 +564,16 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
default:
case PictFilterFast:
case PictFilterNearest:
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
break;
case PictFilterGood:
case PictFilterBest:
case PictFilterBilinear:
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
break;
}
-#ifndef GLAMOR_GLES2
- dispatch->glEnable(GL_TEXTURE_2D);
-#endif
/*
* GLES2 doesn't support RepeatNone. We need to fix it anyway.
@@ -615,19 +592,18 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
if ((wh[0] != 1.0 || wh[1] != 1.0)
|| (glamor_priv->gl_flavor == GLAMOR_GL_ES2
&& repeat_type == RepeatFix))
- dispatch->glUniform4fv(wh_location, 1, wh);
+ glUniform4fv(wh_location, 1, wh);
else
repeat_type -= RepeatFix;
}
- dispatch->glUniform1i(repeat_location, repeat_type);
- glamor_put_dispatch(glamor_priv);
+ glUniform1i(repeat_location, repeat_type);
+ glamor_put_context(glamor_priv);
}
static void
-glamor_set_composite_solid(glamor_gl_dispatch *dispatch, float *color,
- GLint uniform_location)
+glamor_set_composite_solid(float *color, GLint uniform_location)
{
- dispatch->glUniform4fv(uniform_location, 1, color);
+ glUniform4fv(uniform_location, 1, color);
}
static int
@@ -729,7 +705,6 @@ void
glamor_setup_composite_vbo(ScreenPtr screen, int n_verts)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
int vert_size;
glamor_priv->render_nr_verts = 0;
@@ -741,65 +716,54 @@ glamor_setup_composite_vbo(ScreenPtr screen, int n_verts)
vert_size = n_verts * glamor_priv->vb_stride;
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glamor_get_context(glamor_priv);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
if (glamor_priv->vbo_size < (glamor_priv->vbo_offset + vert_size)) {
glamor_priv->vbo_size = GLAMOR_COMPOSITE_VBO_VERT_CNT *
glamor_priv->vb_stride;
glamor_priv->vbo_offset = 0;
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- glamor_priv->vbo_size, NULL, GL_STREAM_DRAW);
+ glBufferData(GL_ARRAY_BUFFER,
+ glamor_priv->vbo_size, NULL, GL_STREAM_DRAW);
}
- glamor_priv->vb = dispatch->glMapBufferRange(GL_ARRAY_BUFFER,
- glamor_priv->vbo_offset,
- vert_size,
- GL_MAP_WRITE_BIT |
- GL_MAP_UNSYNCHRONIZED_BIT);
+ glamor_priv->vb = glMapBufferRange(GL_ARRAY_BUFFER,
+ glamor_priv->vbo_offset,
+ vert_size,
+ GL_MAP_WRITE_BIT |
+ GL_MAP_UNSYNCHRONIZED_BIT);
assert(glamor_priv->vb != NULL);
glamor_priv->vb -= glamor_priv->vbo_offset;
}
else
glamor_priv->vbo_offset = 0;
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, glamor_priv->vb_stride,
- (void *) ((long)
- glamor_priv->vbo_offset));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE,
+ glamor_priv->vb_stride,
+ (void *) ((long)
+ glamor_priv->vbo_offset));
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
if (glamor_priv->has_source_coords) {
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
- GL_FLOAT, GL_FALSE,
- glamor_priv->vb_stride, (void *) ((long)
- glamor_priv->
- vbo_offset
- +
- 2 *
- sizeof
- (float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
+ GL_FLOAT, GL_FALSE,
+ glamor_priv->vb_stride,
+ (void *) ((long) glamor_priv->vbo_offset +
+ 2 * sizeof(float)));
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
}
if (glamor_priv->has_mask_coords) {
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_MASK, 2,
- GL_FLOAT, GL_FALSE,
- glamor_priv->vb_stride, (void *) ((long)
- glamor_priv->
- vbo_offset
- +
- (glamor_priv->
- has_source_coords
- ? 4 :
- 2) *
- sizeof
- (float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_MASK);
- }
- glamor_put_dispatch(glamor_priv);
+ glVertexAttribPointer(GLAMOR_VERTEX_MASK, 2, GL_FLOAT, GL_FALSE,
+ glamor_priv->vb_stride,
+ (void *) ((long) glamor_priv->vbo_offset +
+ (glamor_priv->has_source_coords ?
+ 4 : 2) * sizeof(float)));
+ glEnableVertexAttribArray(GLAMOR_VERTEX_MASK);
+ }
+ glamor_put_context(glamor_priv);
}
void
@@ -831,32 +795,29 @@ static void
glamor_flush_composite_rects(ScreenPtr screen)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
- dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
+ glUnmapBuffer(GL_ARRAY_BUFFER);
else {
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- glamor_priv->vbo_offset,
- glamor_priv->vb, GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset,
+ glamor_priv->vb, GL_DYNAMIC_DRAW);
}
if (!glamor_priv->render_nr_verts)
return;
-#ifndef GLAMOR_GLES2
- dispatch->glDrawRangeElements(GL_TRIANGLES, 0, glamor_priv->render_nr_verts,
- (glamor_priv->render_nr_verts * 3) / 2,
- GL_UNSIGNED_SHORT, NULL);
-#else
- dispatch->glDrawElements(GL_TRIANGLES,
- (glamor_priv->render_nr_verts * 3) / 2,
- GL_UNSIGNED_SHORT, NULL);
-#endif
- glamor_put_dispatch(glamor_priv);
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ glDrawRangeElements(GL_TRIANGLES, 0, glamor_priv->render_nr_verts,
+ (glamor_priv->render_nr_verts * 3) / 2,
+ GL_UNSIGNED_SHORT, NULL);
+ } else {
+ glDrawElements(GL_TRIANGLES, (glamor_priv->render_nr_verts * 3) / 2,
+ GL_UNSIGNED_SHORT, NULL);
+ }
+ glamor_put_context(glamor_priv);
}
int pict_format_combine_tab[][3] = {
@@ -1228,17 +1189,15 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv,
glamor_composite_shader *shader,
struct blendinfo *op_info)
{
- glamor_gl_dispatch *dispatch;
glamor_screen_private *glamor_priv;
glamor_priv = dest_priv->base.glamor_priv;
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glUseProgram(shader->prog);
+ glamor_get_context(glamor_priv);
+ glUseProgram(shader->prog);
if (key->source == SHADER_SOURCE_SOLID) {
- glamor_set_composite_solid(dispatch,
- shader->source_solid_color,
+ glamor_set_composite_solid(shader->source_solid_color,
shader->source_uniform_location);
}
else {
@@ -1250,8 +1209,7 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv,
if (key->mask != SHADER_MASK_NONE) {
if (key->mask == SHADER_MASK_SOLID) {
- glamor_set_composite_solid(dispatch,
- shader->mask_solid_color,
+ glamor_set_composite_solid(shader->mask_solid_color,
shader->mask_uniform_location);
}
else {
@@ -1263,14 +1221,14 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv,
}
if (op_info->source_blend == GL_ONE && op_info->dest_blend == GL_ZERO) {
- dispatch->glDisable(GL_BLEND);
+ glDisable(GL_BLEND);
}
else {
- dispatch->glEnable(GL_BLEND);
- dispatch->glBlendFunc(op_info->source_blend, op_info->dest_blend);
+ glEnable(GL_BLEND);
+ glBlendFunc(op_info->source_blend, op_info->dest_blend);
}
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -1289,7 +1247,6 @@ glamor_composite_with_shader(CARD8 op,
PixmapPtr dest_pixmap = dest_pixmap_priv->base.pixmap;
PixmapPtr source_pixmap = NULL;
PixmapPtr mask_pixmap = NULL;
- glamor_gl_dispatch *dispatch = NULL;
GLfloat dst_xscale, dst_yscale;
GLfloat mask_xscale = 1, mask_yscale = 1, src_xscale = 1, src_yscale = 1;
struct shader_key key, key_ca;
@@ -1328,7 +1285,7 @@ glamor_composite_with_shader(CARD8 op,
glamor_set_destination_pixmap_priv_nc(dest_pixmap_priv);
glamor_composite_set_shader_blend(dest_pixmap_priv, &key, shader, &op_info);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
glamor_priv->has_source_coords = key.source != SHADER_SOURCE_SOLID;
glamor_priv->has_mask_coords = (key.mask != SHADER_MASK_NONE &&
@@ -1445,25 +1402,19 @@ glamor_composite_with_shader(CARD8 op,
}
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
- dispatch->glDisable(GL_BLEND);
-#ifndef GLAMOR_GLES2
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glDisable(GL_TEXTURE_2D);
- dispatch->glActiveTexture(GL_TEXTURE1);
- dispatch->glDisable(GL_TEXTURE_2D);
-#endif
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
+ glDisable(GL_BLEND);
DEBUGF("finish rendering.\n");
- dispatch->glUseProgram(0);
+ glUseProgram(0);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
if (saved_source_format)
source->format = saved_source_format;
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
ret = TRUE;
return ret;
diff --git a/xorg-server/glamor/glamor_tile.c b/xorg-server/glamor/glamor_tile.c
index 9c8e521b9..7288af30e 100644
--- a/xorg-server/glamor/glamor_tile.c
+++ b/xorg-server/glamor/glamor_tile.c
@@ -37,7 +37,6 @@ void
glamor_init_tile_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
const char *tile_vs =
"attribute vec4 v_position;\n"
"attribute vec4 v_texcoord0;\n"
@@ -63,40 +62,39 @@ glamor_init_tile_shader(ScreenPtr screen)
GLint sampler_uniform_location;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- glamor_priv->tile_prog = dispatch->glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, tile_vs);
- fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, tile_fs);
- dispatch->glAttachShader(glamor_priv->tile_prog, vs_prog);
- dispatch->glAttachShader(glamor_priv->tile_prog, fs_prog);
-
- dispatch->glBindAttribLocation(glamor_priv->tile_prog,
- GLAMOR_VERTEX_POS, "v_position");
- dispatch->glBindAttribLocation(glamor_priv->tile_prog,
- GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(dispatch, glamor_priv->tile_prog);
+ glamor_get_context(glamor_priv);
+ glamor_priv->tile_prog = glCreateProgram();
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, tile_vs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, tile_fs);
+ glAttachShader(glamor_priv->tile_prog, vs_prog);
+ glAttachShader(glamor_priv->tile_prog, fs_prog);
+
+ glBindAttribLocation(glamor_priv->tile_prog,
+ GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(glamor_priv->tile_prog,
+ GLAMOR_VERTEX_SOURCE, "v_texcoord0");
+ glamor_link_glsl_prog(glamor_priv->tile_prog);
sampler_uniform_location =
- dispatch->glGetUniformLocation(glamor_priv->tile_prog, "sampler");
- dispatch->glUseProgram(glamor_priv->tile_prog);
- dispatch->glUniform1i(sampler_uniform_location, 0);
+ glGetUniformLocation(glamor_priv->tile_prog, "sampler");
+ glUseProgram(glamor_priv->tile_prog);
+ glUniform1i(sampler_uniform_location, 0);
glamor_priv->tile_wh =
- dispatch->glGetUniformLocation(glamor_priv->tile_prog, "wh");
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glGetUniformLocation(glamor_priv->tile_prog, "wh");
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_tile_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glDeleteProgram(glamor_priv->tile_prog);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glDeleteProgram(glamor_priv->tile_prog);
+ glamor_put_context(glamor_priv);
}
static void
@@ -105,7 +103,6 @@ _glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
{
ScreenPtr screen = pixmap->drawable.pScreen;
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
int x1 = x;
int x2 = x + width;
int y1 = y;
@@ -127,47 +124,40 @@ _glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
glamor_set_destination_pixmap_priv_nc(dst_pixmap_priv);
pixmap_priv_get_dest_scale(dst_pixmap_priv, &dst_xscale, &dst_yscale);
pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glUseProgram(glamor_priv->tile_prog);
+ glamor_get_context(glamor_priv);
+ glUseProgram(glamor_priv->tile_prog);
glamor_pixmap_fbo_fix_wh_ratio(wh, src_pixmap_priv);
- dispatch->glUniform2fv(glamor_priv->tile_wh, 1, wh);
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-#ifndef GLAMOR_GLES2
- dispatch->glEnable(GL_TEXTURE_2D);
-#endif
+ glUniform2fv(glamor_priv->tile_wh, 1, wh);
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glamor_set_repeat_normalize_tcoords
(src_pixmap_priv, RepeatNormal,
src_xscale, src_yscale,
tile_x1, tile_y1,
tile_x2, tile_y2, glamor_priv->yInverted, source_texcoords);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
- GL_FLOAT, GL_FALSE,
- 2 * sizeof(float), source_texcoords);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), source_texcoords);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
glamor_set_normalize_vcoords(dst_pixmap_priv, dst_xscale, dst_yscale,
x1, y1,
x2, y2, glamor_priv->yInverted, vertices);
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), vertices);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), vertices);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
-#ifndef GLAMOR_GLES2
- dispatch->glDisable(GL_TEXTURE_2D);
-#endif
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
glamor_priv->state = RENDER_STATE;
glamor_priv->render_idle_cnt = 0;
@@ -182,7 +172,6 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
glamor_pixmap_private *dst_pixmap_priv;
glamor_pixmap_private *src_pixmap_priv;
- glamor_gl_dispatch *dispatch;
dst_pixmap_priv = glamor_get_pixmap_private(pixmap);
src_pixmap_priv = glamor_get_pixmap_private(tile);
@@ -206,10 +195,10 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
goto fail;
}
- dispatch = glamor_get_dispatch(glamor_priv);
- if (!glamor_set_alu(dispatch, alu)) {
+ glamor_get_context(glamor_priv);
+ if (!glamor_set_alu(screen, alu)) {
glamor_fallback("unsupported alu %x\n", alu);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
goto fail;
}
@@ -302,8 +291,8 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile,
else
_glamor_tile(pixmap, tile, x, y, width, height, tile_x, tile_y);
- glamor_set_alu(dispatch, GXcopy);
- glamor_put_dispatch(glamor_priv);
+ glamor_set_alu(screen, GXcopy);
+ glamor_put_context(glamor_priv);
return TRUE;
fail:
return FALSE;
diff --git a/xorg-server/glamor/glamor_trapezoid.c b/xorg-server/glamor/glamor_trapezoid.c
index cd99a4782..7bc925a25 100644
--- a/xorg-server/glamor/glamor_trapezoid.c
+++ b/xorg-server/glamor/glamor_trapezoid.c
@@ -204,24 +204,22 @@ static void
glamor_flush_composite_triangles(ScreenPtr screen)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
- dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
+ glUnmapBuffer(GL_ARRAY_BUFFER);
else {
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- glamor_priv->vbo_offset,
- glamor_priv->vb, GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset,
+ glamor_priv->vb, GL_DYNAMIC_DRAW);
}
if (!glamor_priv->render_nr_verts)
return;
- dispatch->glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts);
- glamor_put_dispatch(glamor_priv);
+ glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -582,7 +580,6 @@ static void
glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts)
{
glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
- glamor_gl_dispatch *dispatch;
int stride;
int vert_size;
@@ -605,25 +602,25 @@ glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts)
vert_size = n_verts * glamor_priv->vb_stride;
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
if (glamor_priv->vbo_size < (glamor_priv->vbo_offset + vert_size)) {
glamor_priv->vbo_size = GLAMOR_COMPOSITE_VBO_VERT_CNT *
glamor_priv->vb_stride;
glamor_priv->vbo_offset = 0;
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- glamor_priv->vbo_size, NULL, GL_STREAM_DRAW);
+ glBufferData(GL_ARRAY_BUFFER,
+ glamor_priv->vbo_size, NULL, GL_STREAM_DRAW);
}
- glamor_priv->vb = dispatch->glMapBufferRange(GL_ARRAY_BUFFER,
+ glamor_priv->vb = glMapBufferRange(GL_ARRAY_BUFFER,
glamor_priv->vbo_offset,
vert_size,
GL_MAP_WRITE_BIT |
@@ -636,43 +633,43 @@ glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts)
glamor_priv->vbo_offset = 0;
}
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo);
/* Set the vertex pointer. */
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, glamor_priv->vb_stride,
- (void *) ((long) glamor_priv->vbo_offset));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, glamor_priv->vb_stride,
+ (void *) ((long) glamor_priv->vbo_offset));
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
stride = 2;
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
- GL_FALSE, glamor_priv->vb_stride,
- (void *) ((long) glamor_priv->vbo_offset +
- stride * sizeof(float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT,
+ GL_FALSE, glamor_priv->vb_stride,
+ (void *) ((long) glamor_priv->vbo_offset +
+ stride * sizeof(float)));
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
stride += 2;
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_TOP_BOTTOM, 2, GL_FLOAT,
+ glVertexAttribPointer(GLAMOR_VERTEX_TOP_BOTTOM, 2, GL_FLOAT,
GL_FALSE, glamor_priv->vb_stride,
(void *) ((long) glamor_priv->vbo_offset +
stride * sizeof(float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
stride += 2;
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_LEFT_PARAM, 4, GL_FLOAT,
+ glVertexAttribPointer(GLAMOR_VERTEX_LEFT_PARAM, 4, GL_FLOAT,
GL_FALSE, glamor_priv->vb_stride,
(void *) ((long) glamor_priv->vbo_offset +
stride * sizeof(float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
stride += 4;
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_RIGHT_PARAM, 4, GL_FLOAT,
+ glVertexAttribPointer(GLAMOR_VERTEX_RIGHT_PARAM, 4, GL_FLOAT,
GL_FALSE, glamor_priv->vb_stride,
(void *) ((long) glamor_priv->vbo_offset +
stride * sizeof(float)));
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -701,7 +698,6 @@ _glamor_trapezoids_with_shader(CARD8 op,
GLfloat dst_xscale, dst_yscale;
BoxRec bounds;
PicturePtr temp_src = src;
- glamor_gl_dispatch *dispatch = NULL;
int vert_stride = 3;
int ntriangle_per_loop;
int nclip_rect;
@@ -815,6 +811,8 @@ _glamor_trapezoids_with_shader(CARD8 op,
goto TRAPEZOID_OUT;
}
+ glamor_get_context(glamor_priv);
+
box = REGION_RECTS(&region);
nbox = REGION_NUM_RECTS(&region);
pbox = box;
@@ -833,8 +831,6 @@ _glamor_trapezoids_with_shader(CARD8 op,
glamor_priv->has_mask_coords = (key.mask != SHADER_MASK_NONE &&
key.mask != SHADER_MASK_SOLID);
- dispatch = glamor_get_dispatch(glamor_priv);
-
glamor_get_drawable_deltas(dst->pDrawable, dest_pixmap,
&dest_x_off, &dest_y_off);
@@ -974,19 +970,14 @@ _glamor_trapezoids_with_shader(CARD8 op,
ret = TRUE;
TRAPEZOID_RESET_GL:
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
- dispatch->glDisable(GL_BLEND);
-#ifndef GLAMOR_GLES2
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glDisable(GL_TEXTURE_2D);
- dispatch->glActiveTexture(GL_TEXTURE1);
- dispatch->glDisable(GL_TEXTURE_2D);
-#endif
- dispatch->glUseProgram(0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_MASK);
+ glDisable(GL_BLEND);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
TRAPEZOID_OUT:
if (box) {
@@ -1002,10 +993,6 @@ _glamor_trapezoids_with_shader(CARD8 op,
}
}
- if (dispatch) {
- glamor_put_dispatch(glamor_priv);
- }
-
return ret;
}
@@ -1013,7 +1000,6 @@ void
glamor_init_trapezoid_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
GLint fs_prog, vs_prog;
const char *trapezoid_vs =
@@ -1344,46 +1330,43 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
"}\n";
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
- glamor_priv->trapezoid_prog = dispatch->glCreateProgram();
+ glamor_priv->trapezoid_prog = glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch,
- GL_VERTEX_SHADER, trapezoid_vs);
- fs_prog = glamor_compile_glsl_prog(dispatch,
- GL_FRAGMENT_SHADER, trapezoid_fs);
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, trapezoid_vs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, trapezoid_fs);
- dispatch->glAttachShader(glamor_priv->trapezoid_prog, vs_prog);
- dispatch->glAttachShader(glamor_priv->trapezoid_prog, fs_prog);
+ glAttachShader(glamor_priv->trapezoid_prog, vs_prog);
+ glAttachShader(glamor_priv->trapezoid_prog, fs_prog);
- dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog,
- GLAMOR_VERTEX_POS, "v_positionsition");
- dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog,
- GLAMOR_VERTEX_SOURCE, "v_texcoord");
- dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog,
- GLAMOR_VERTEX_TOP_BOTTOM, "v_top_bottom");
- dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog,
- GLAMOR_VERTEX_LEFT_PARAM, "v_left_param");
- dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog,
- GLAMOR_VERTEX_RIGHT_PARAM, "v_right_param");
+ glBindAttribLocation(glamor_priv->trapezoid_prog,
+ GLAMOR_VERTEX_POS, "v_positionsition");
+ glBindAttribLocation(glamor_priv->trapezoid_prog,
+ GLAMOR_VERTEX_SOURCE, "v_texcoord");
+ glBindAttribLocation(glamor_priv->trapezoid_prog,
+ GLAMOR_VERTEX_TOP_BOTTOM, "v_top_bottom");
+ glBindAttribLocation(glamor_priv->trapezoid_prog,
+ GLAMOR_VERTEX_LEFT_PARAM, "v_left_param");
+ glBindAttribLocation(glamor_priv->trapezoid_prog,
+ GLAMOR_VERTEX_RIGHT_PARAM, "v_right_param");
- glamor_link_glsl_prog(dispatch, glamor_priv->trapezoid_prog);
+ glamor_link_glsl_prog(glamor_priv->trapezoid_prog);
- dispatch->glUseProgram(0);
+ glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_trapezoid_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glDeleteProgram(glamor_priv->trapezoid_prog);
- glamor_put_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
+ glDeleteProgram(glamor_priv->trapezoid_prog);
+ glamor_put_context(glamor_priv);
}
static Bool
@@ -1392,7 +1375,6 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture,
BoxRec *bounds)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_pixmap_private *pixmap_priv;
PixmapPtr pixmap = NULL;
GLint trapezoid_prog;
@@ -1425,20 +1407,20 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture,
return FALSE;
}
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
glamor_set_destination_pixmap_priv_nc(pixmap_priv);
pixmap_priv_get_dest_scale(pixmap_priv, (&xscale), (&yscale));
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
/* Now draw the Trapezoid mask. */
- dispatch->glUseProgram(trapezoid_prog);
+ glUseProgram(trapezoid_prog);
- dispatch->glEnable(GL_BLEND);
- dispatch->glBlendFunc(GL_ONE, GL_ONE);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE, GL_ONE);
nrect_max = GLAMOR_COMPOSITE_VBO_VERT_CNT / (4 * GLAMOR_VERTEX_RIGHT_PARAM);
@@ -1565,37 +1547,36 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture,
continue;
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
- dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
+ glUnmapBuffer(GL_ARRAY_BUFFER);
else {
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
- dispatch->glBufferData(GL_ARRAY_BUFFER,
- glamor_priv->vbo_offset,
- glamor_priv->vb, GL_DYNAMIC_DRAW);
+ glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo);
+ glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset,
+ glamor_priv->vb, GL_DYNAMIC_DRAW);
}
-#ifndef GLAMOR_GLES2
- dispatch->glDrawRangeElements(GL_TRIANGLES, 0,
- glamor_priv->render_nr_verts,
- (glamor_priv->render_nr_verts * 3) / 2,
- GL_UNSIGNED_SHORT, NULL);
-#else
- dispatch->glDrawElements(GL_TRIANGLES,
- (glamor_priv->render_nr_verts * 3) / 2,
- GL_UNSIGNED_SHORT, NULL);
-#endif
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) {
+ glDrawRangeElements(GL_TRIANGLES, 0,
+ glamor_priv->render_nr_verts,
+ (glamor_priv->render_nr_verts * 3) / 2,
+ GL_UNSIGNED_SHORT, NULL);
+ } else {
+ glDrawElements(GL_TRIANGLES,
+ (glamor_priv->render_nr_verts * 3) / 2,
+ GL_UNSIGNED_SHORT, NULL);
+ }
}
- dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0);
- dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- dispatch->glBlendFunc(GL_ONE, GL_ZERO);
- dispatch->glDisable(GL_BLEND);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+ glBlendFunc(GL_ONE, GL_ZERO);
+ glDisable(GL_BLEND);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
return TRUE;
}
diff --git a/xorg-server/glamor/glamor_utils.h b/xorg-server/glamor/glamor_utils.h
index ea827df3b..9374c9d4d 100644
--- a/xorg-server/glamor/glamor_utils.h
+++ b/xorg-server/glamor/glamor_utils.h
@@ -869,19 +869,17 @@ format_for_depth(int depth)
}
}
-static inline void
-gl_iformat_for_depth(int depth, GLenum * format)
+static inline GLenum
+gl_iformat_for_pixmap(PixmapPtr pixmap)
{
- switch (depth) {
-#ifndef GLAMOR_GLES2
- case 1:
- case 8:
- *format = GL_ALPHA;
- break;
-#endif
- default:
- *format = GL_RGBA;
- break;
+ glamor_screen_private *glamor_priv =
+ glamor_get_screen_private(pixmap->drawable.pScreen);
+
+ if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP &&
+ (pixmap->drawable.depth == 1 || pixmap->drawable.depth == 8)) {
+ return GL_ALPHA;
+ } else {
+ return GL_RGBA;
}
}
@@ -916,298 +914,6 @@ format_for_pixmap(PixmapPtr pixmap)
#define SWAP_UPLOADING 2
#define SWAP_NONE_UPLOADING 3
-/*
- * Map picture's format to the correct gl texture format and type.
- * no_alpha is used to indicate whehter we need to wire alpha to 1.
- *
- * Although opengl support A1/GL_BITMAP, we still don't use it
- * here, it seems that mesa has bugs when uploading a A1 bitmap.
- *
- * Return 0 if find a matched texture type. Otherwise return -1.
- **/
-#ifndef GLAMOR_GLES2
-static inline int
-glamor_get_tex_format_type_from_pictformat(PictFormatShort format,
- GLenum * tex_format,
- GLenum * tex_type,
- int *no_alpha,
- int *revert,
- int *swap_rb, int is_upload)
-{
- *no_alpha = 0;
- *revert = REVERT_NONE;
- *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING;
- switch (format) {
- case PICT_a1:
- *tex_format = GL_ALPHA;
- *tex_type = GL_UNSIGNED_BYTE;
- *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1;
- break;
- case PICT_b8g8r8x8:
- *no_alpha = 1;
- case PICT_b8g8r8a8:
- *tex_format = GL_BGRA;
- *tex_type = GL_UNSIGNED_INT_8_8_8_8;
- break;
-
- case PICT_x8r8g8b8:
- *no_alpha = 1;
- case PICT_a8r8g8b8:
- *tex_format = GL_BGRA;
- *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- break;
- case PICT_x8b8g8r8:
- *no_alpha = 1;
- case PICT_a8b8g8r8:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
- break;
- case PICT_x2r10g10b10:
- *no_alpha = 1;
- case PICT_a2r10g10b10:
- *tex_format = GL_BGRA;
- *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV;
- break;
- case PICT_x2b10g10r10:
- *no_alpha = 1;
- case PICT_a2b10g10r10:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV;
- break;
-
- case PICT_r5g6b5:
- *tex_format = GL_RGB;
- *tex_type = GL_UNSIGNED_SHORT_5_6_5;
- break;
- case PICT_b5g6r5:
- *tex_format = GL_RGB;
- *tex_type = GL_UNSIGNED_SHORT_5_6_5_REV;
- break;
- case PICT_x1b5g5r5:
- *no_alpha = 1;
- case PICT_a1b5g5r5:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
- break;
-
- case PICT_x1r5g5b5:
- *no_alpha = 1;
- case PICT_a1r5g5b5:
- *tex_format = GL_BGRA;
- *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV;
- break;
- case PICT_a8:
- *tex_format = GL_ALPHA;
- *tex_type = GL_UNSIGNED_BYTE;
- break;
- case PICT_x4r4g4b4:
- *no_alpha = 1;
- case PICT_a4r4g4b4:
- *tex_format = GL_BGRA;
- *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV;
- break;
-
- case PICT_x4b4g4r4:
- *no_alpha = 1;
- case PICT_a4b4g4r4:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV;
- break;
-
- default:
- LogMessageVerb(X_INFO, 0,
- "fail to get matched format for %x \n", format);
- return -1;
- }
- return 0;
-}
-
-/* Currently, we use RGBA to represent all formats. */
-inline static int
-cache_format(GLenum format)
-{
- switch (format) {
- case GL_ALPHA:
- return 1;
- case GL_RGBA:
- return 0;
- default:
- return -1;
- }
-}
-
-#else
-#define IS_LITTLE_ENDIAN (IMAGE_BYTE_ORDER == LSBFirst)
-
-static inline int
-glamor_get_tex_format_type_from_pictformat(PictFormatShort format,
- GLenum * tex_format,
- GLenum * tex_type,
- int *no_alpha,
- int *revert,
- int *swap_rb, int is_upload)
-{
- int need_swap_rb = 0;
-
- *no_alpha = 0;
- *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL;
-
- switch (format) {
- case PICT_b8g8r8x8:
- *no_alpha = 1;
- case PICT_b8g8r8a8:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_BYTE;
- need_swap_rb = 1;
- *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
- break;
-
- case PICT_x8r8g8b8:
- *no_alpha = 1;
- case PICT_a8r8g8b8:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_BYTE;
- need_swap_rb = 1;
- break;
-
- case PICT_x8b8g8r8:
- *no_alpha = 1;
- case PICT_a8b8g8r8:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_BYTE;
- break;
-
- case PICT_x2r10g10b10:
- *no_alpha = 1;
- case PICT_a2r10g10b10:
- *tex_format = GL_RGBA;
- /* glReadPixmap doesn't support GL_UNSIGNED_INT_10_10_10_2.
- * we have to use GL_UNSIGNED_BYTE and do the conversion in
- * shader latter.*/
- *tex_type = GL_UNSIGNED_BYTE;
- if (is_upload == 1) {
- if (!IS_LITTLE_ENDIAN)
- *revert = REVERT_UPLOADING_10_10_10_2;
- else
- *revert = REVERT_UPLOADING_2_10_10_10;
- }
- else {
- if (!IS_LITTLE_ENDIAN) {
- *revert = REVERT_DOWNLOADING_10_10_10_2;
- }
- else {
- *revert = REVERT_DOWNLOADING_2_10_10_10;
- }
- }
- need_swap_rb = 1;
-
- break;
-
- case PICT_x2b10g10r10:
- *no_alpha = 1;
- case PICT_a2b10g10r10:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_BYTE;
- if (is_upload == 1) {
- if (!IS_LITTLE_ENDIAN)
- *revert = REVERT_UPLOADING_10_10_10_2;
- else
- *revert = REVERT_UPLOADING_2_10_10_10;
- }
- else {
- if (!IS_LITTLE_ENDIAN) {
- *revert = REVERT_DOWNLOADING_10_10_10_2;
- }
- else {
- *revert = REVERT_DOWNLOADING_2_10_10_10;
- }
- }
- break;
-
- case PICT_r5g6b5:
- *tex_format = GL_RGB;
- *tex_type = GL_UNSIGNED_SHORT_5_6_5;
- *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL;
-
- break;
-
- case PICT_b5g6r5:
- *tex_format = GL_RGB;
- *tex_type = GL_UNSIGNED_SHORT_5_6_5;
- need_swap_rb = IS_LITTLE_ENDIAN ? 1 : 0;;
- break;
-
- case PICT_x1b5g5r5:
- *no_alpha = 1;
- case PICT_a1b5g5r5:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_5_5_5_1;
- if (IS_LITTLE_ENDIAN) {
- *revert =
- is_upload ? REVERT_UPLOADING_1_5_5_5 :
- REVERT_DOWNLOADING_1_5_5_5;
- }
- else
- *revert = REVERT_NONE;
- break;
-
- case PICT_x1r5g5b5:
- *no_alpha = 1;
- case PICT_a1r5g5b5:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_5_5_5_1;
- if (IS_LITTLE_ENDIAN) {
- *revert =
- is_upload ? REVERT_UPLOADING_1_5_5_5 :
- REVERT_DOWNLOADING_1_5_5_5;
- }
- else
- *revert = REVERT_NONE;
- need_swap_rb = 1;
- break;
-
- case PICT_a1:
- *tex_format = GL_ALPHA;
- *tex_type = GL_UNSIGNED_BYTE;
- *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1;
- break;
-
- case PICT_a8:
- *tex_format = GL_ALPHA;
- *tex_type = GL_UNSIGNED_BYTE;
- *revert = REVERT_NONE;
- break;
-
- case PICT_x4r4g4b4:
- *no_alpha = 1;
- case PICT_a4r4g4b4:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_4_4_4_4;
- *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
- need_swap_rb = 1;
- break;
-
- case PICT_x4b4g4r4:
- *no_alpha = 1;
- case PICT_a4b4g4r4:
- *tex_format = GL_RGBA;
- *tex_type = GL_UNSIGNED_SHORT_4_4_4_4;
- *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE;
- break;
-
- default:
- LogMessageVerb(X_INFO, 0,
- "fail to get matched format for %x \n", format);
- return -1;
- }
-
- if (need_swap_rb)
- *swap_rb = is_upload ? SWAP_UPLOADING : SWAP_DOWNLOADING;
- else
- *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING;
- return 0;
-}
-
inline static int
cache_format(GLenum format)
{
@@ -1223,31 +929,6 @@ cache_format(GLenum format)
}
}
-#endif
-
-static inline int
-glamor_get_tex_format_type_from_pixmap(PixmapPtr pixmap,
- GLenum * format,
- GLenum * type,
- int *no_alpha,
- int *revert, int *swap_rb, int is_upload)
-{
- glamor_pixmap_private *pixmap_priv;
- PictFormatShort pict_format;
-
- pixmap_priv = glamor_get_pixmap_private(pixmap);
- if (GLAMOR_PIXMAP_PRIV_IS_PICTURE(pixmap_priv))
- pict_format = pixmap_priv->base.picture->format;
- else
- pict_format = format_for_depth(pixmap->drawable.depth);
-
- return glamor_get_tex_format_type_from_pictformat(pict_format,
- format, type,
- no_alpha,
- revert,
- swap_rb, is_upload);
-}
-
/* borrowed from uxa */
static inline Bool
glamor_get_rgba_from_pixel(CARD32 pixel,
@@ -1319,16 +1000,18 @@ glamor_get_rgba_from_pixel(CARD32 pixel,
}
inline static Bool
-glamor_pict_format_is_compatible(PictFormatShort pict_format, int depth)
+glamor_pict_format_is_compatible(PicturePtr picture)
{
GLenum iformat;
+ PixmapPtr pixmap = glamor_get_drawable_pixmap(picture->pDrawable);
- gl_iformat_for_depth(depth, &iformat);
+ iformat = gl_iformat_for_pixmap(pixmap);
switch (iformat) {
case GL_RGBA:
- return (pict_format == PICT_a8r8g8b8 || pict_format == PICT_x8r8g8b8);
+ return (picture->format == PICT_a8r8g8b8 ||
+ picture->format == PICT_x8r8g8b8);
case GL_ALPHA:
- return (pict_format == PICT_a8);
+ return (picture->format == PICT_a8);
default:
return FALSE;
}
@@ -1817,31 +1500,15 @@ __fls(unsigned long x)
#endif
static inline void
-glamor_make_current(ScreenPtr screen)
+glamor_get_context(glamor_screen_private * glamor_priv)
{
- glamor_egl_make_current(screen);
-}
-
-static inline void
-glamor_restore_current(ScreenPtr screen)
-{
- glamor_egl_restore_context(screen);
-}
-
-static inline glamor_gl_dispatch *
-glamor_get_dispatch(glamor_screen_private * glamor_priv)
-{
- if (glamor_priv->flags & GLAMOR_USE_EGL_SCREEN)
- glamor_make_current(glamor_priv->screen);
-
- return &glamor_priv->_dispatch;
+ glamor_priv->ctx.get_context(&glamor_priv->ctx);
}
static inline void
-glamor_put_dispatch(glamor_screen_private * glamor_priv)
+glamor_put_context(glamor_screen_private * glamor_priv)
{
- if (glamor_priv->flags & GLAMOR_USE_EGL_SCREEN)
- glamor_restore_current(glamor_priv->screen);
+ glamor_priv->ctx.put_context(&glamor_priv->ctx);
}
#endif
diff --git a/xorg-server/glamor/glamor_xv.c b/xorg-server/glamor/glamor_xv.c
index cbe07c8b1..dc39476b5 100644
--- a/xorg-server/glamor/glamor_xv.c
+++ b/xorg-server/glamor/glamor_xv.c
@@ -90,38 +90,36 @@ void
glamor_init_xv_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
GLint fs_prog, vs_prog;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
- glamor_priv->xv_prog = dispatch->glCreateProgram();
+ glamor_get_context(glamor_priv);
+ glamor_priv->xv_prog = glCreateProgram();
- vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, xv_vs);
- fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, xv_ps);
- dispatch->glAttachShader(glamor_priv->xv_prog, vs_prog);
- dispatch->glAttachShader(glamor_priv->xv_prog, fs_prog);
+ vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, xv_vs);
+ fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, xv_ps);
+ glAttachShader(glamor_priv->xv_prog, vs_prog);
+ glAttachShader(glamor_priv->xv_prog, fs_prog);
- dispatch->glBindAttribLocation(glamor_priv->xv_prog,
- GLAMOR_VERTEX_POS, "v_position");
- dispatch->glBindAttribLocation(glamor_priv->xv_prog,
- GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(dispatch, glamor_priv->xv_prog);
+ glBindAttribLocation(glamor_priv->xv_prog,
+ GLAMOR_VERTEX_POS, "v_position");
+ glBindAttribLocation(glamor_priv->xv_prog,
+ GLAMOR_VERTEX_SOURCE, "v_texcoord0");
+ glamor_link_glsl_prog(glamor_priv->xv_prog);
- glamor_put_dispatch(glamor_priv);
+ glamor_put_context(glamor_priv);
}
void
glamor_fini_xv_shader(ScreenPtr screen)
{
glamor_screen_private *glamor_priv;
- glamor_gl_dispatch *dispatch;
glamor_priv = glamor_get_screen_private(screen);
- dispatch = glamor_get_dispatch(glamor_priv);
+ glamor_get_context(glamor_priv);
- dispatch->glDeleteProgram(glamor_priv->xv_prog);
- glamor_put_dispatch(glamor_priv);
+ glDeleteProgram(glamor_priv->xv_prog);
+ glamor_put_context(glamor_priv);
}
#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v))
@@ -278,7 +276,6 @@ glamor_display_textured_video(glamor_port_private *port_priv)
glamor_pixmap_private *pixmap_priv =
glamor_get_pixmap_private(port_priv->pPixmap);
glamor_pixmap_private *src_pixmap_priv[3];
- glamor_gl_dispatch *dispatch;
float vertices[32], texcoords[8];
BoxPtr box = REGION_RECTS(&port_priv->clip);
int nBox = REGION_NUM_RECTS(&port_priv->clip);
@@ -327,62 +324,53 @@ glamor_display_textured_video(glamor_port_private *port_priv)
&src_yscale[i]);
}
}
- dispatch = glamor_get_dispatch(glamor_priv);
- dispatch->glUseProgram(glamor_priv->xv_prog);
-
- uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "offsetyco");
- dispatch->glUniform4f(uloc, off[0], off[1], off[2], yco);
- uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "ucogamma");
- dispatch->glUniform4f(uloc, uco[0], uco[1], uco[2], gamma);
- uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "vco");
- dispatch->glUniform4f(uloc, vco[0], vco[1], vco[2], 0);
-
- dispatch->glActiveTexture(GL_TEXTURE0);
- dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[0]->base.fbo->tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- dispatch->glActiveTexture(GL_TEXTURE1);
- dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[1]->base.fbo->tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- dispatch->glActiveTexture(GL_TEXTURE2);
- dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[2]->base.fbo->tex);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- dispatch->glTexParameteri(GL_TEXTURE_2D,
- GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- sampler_loc =
- dispatch->glGetUniformLocation(glamor_priv->xv_prog, "y_sampler");
- dispatch->glUniform1i(sampler_loc, 0);
- sampler_loc =
- dispatch->glGetUniformLocation(glamor_priv->xv_prog, "u_sampler");
- dispatch->glUniform1i(sampler_loc, 1);
- sampler_loc =
- dispatch->glGetUniformLocation(glamor_priv->xv_prog, "v_sampler");
- dispatch->glUniform1i(sampler_loc, 2);
-
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
- GL_FLOAT, GL_FALSE,
- 2 * sizeof(float), texcoords);
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
-
- dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
- GL_FALSE, 2 * sizeof(float), vertices);
-
- dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glamor_get_context(glamor_priv);
+ glUseProgram(glamor_priv->xv_prog);
+
+ uloc = glGetUniformLocation(glamor_priv->xv_prog, "offsetyco");
+ glUniform4f(uloc, off[0], off[1], off[2], yco);
+ uloc = glGetUniformLocation(glamor_priv->xv_prog, "ucogamma");
+ glUniform4f(uloc, uco[0], uco[1], uco[2], gamma);
+ uloc = glGetUniformLocation(glamor_priv->xv_prog, "vco");
+ glUniform4f(uloc, vco[0], vco[1], vco[2], 0);
+
+ glActiveTexture(GL_TEXTURE0);
+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[0]->base.fbo->tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ glActiveTexture(GL_TEXTURE1);
+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[1]->base.fbo->tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ glActiveTexture(GL_TEXTURE2);
+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[2]->base.fbo->tex);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+ sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "y_sampler");
+ glUniform1i(sampler_loc, 0);
+ sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "u_sampler");
+ glUniform1i(sampler_loc, 1);
+ sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "v_sampler");
+ glUniform1i(sampler_loc, 2);
+
+ glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2,
+ GL_FLOAT, GL_FALSE,
+ 2 * sizeof(float), texcoords);
+ glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+
+ glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT,
+ GL_FALSE, 2 * sizeof(float), vertices);
+
+ glEnableVertexAttribArray(GLAMOR_VERTEX_POS);
for (i = 0; i < nBox; i++) {
float off_x = box[i].x1 - port_priv->drw_x;
float off_y = box[i].y1 - port_priv->drw_y;
@@ -418,14 +406,14 @@ glamor_display_textured_video(glamor_port_private *port_priv)
srcy + srch,
glamor_priv->yInverted, texcoords);
- dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
- dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_POS);
+ glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
- dispatch->glUseProgram(0);
- glamor_put_dispatch(glamor_priv);
+ glUseProgram(0);
+ glamor_put_context(glamor_priv);
DamageDamageRegion(port_priv->pDraw, &port_priv->clip);
}
diff --git a/xorg-server/glx/dispatch.h b/xorg-server/glx/dispatch.h
index 3ed83f841..6facd054b 100644
--- a/xorg-server/glx/dispatch.h
+++ b/xorg-server/glx/dispatch.h
@@ -63,7 +63,7 @@
} while(0)
/* total number of offsets below */
-#define _gloffset_COUNT 1096
+#define _gloffset_COUNT 1140
#define _gloffset_NewList 0
#define _gloffset_EndList 1
@@ -473,7 +473,7 @@
#define _gloffset_MultiTexCoord4iv 405
#define _gloffset_MultiTexCoord4s 406
#define _gloffset_MultiTexCoord4sv 407
-#define driDispatchRemapTable_size 688
+#define driDispatchRemapTable_size 732
SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define CompressedTexImage1D_remap_index 0
@@ -926,244 +926,288 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define TexBufferRange_remap_index 447
#define TexStorage2DMultisample_remap_index 448
#define TexStorage3DMultisample_remap_index 449
-#define InvalidateBufferData_remap_index 450
-#define InvalidateBufferSubData_remap_index 451
-#define InvalidateFramebuffer_remap_index 452
-#define InvalidateSubFramebuffer_remap_index 453
-#define InvalidateTexImage_remap_index 454
-#define InvalidateTexSubImage_remap_index 455
-#define PolygonOffsetEXT_remap_index 456
-#define DrawTexfOES_remap_index 457
-#define DrawTexfvOES_remap_index 458
-#define DrawTexiOES_remap_index 459
-#define DrawTexivOES_remap_index 460
-#define DrawTexsOES_remap_index 461
-#define DrawTexsvOES_remap_index 462
-#define DrawTexxOES_remap_index 463
-#define DrawTexxvOES_remap_index 464
-#define PointSizePointerOES_remap_index 465
-#define QueryMatrixxOES_remap_index 466
-#define SampleMaskSGIS_remap_index 467
-#define SamplePatternSGIS_remap_index 468
-#define ColorPointerEXT_remap_index 469
-#define EdgeFlagPointerEXT_remap_index 470
-#define IndexPointerEXT_remap_index 471
-#define NormalPointerEXT_remap_index 472
-#define TexCoordPointerEXT_remap_index 473
-#define VertexPointerEXT_remap_index 474
-#define DiscardFramebufferEXT_remap_index 475
-#define LockArraysEXT_remap_index 476
-#define UnlockArraysEXT_remap_index 477
-#define DebugMessageCallback_remap_index 478
-#define DebugMessageControl_remap_index 479
-#define DebugMessageInsert_remap_index 480
-#define GetDebugMessageLog_remap_index 481
-#define GetObjectLabel_remap_index 482
-#define GetObjectPtrLabel_remap_index 483
-#define ObjectLabel_remap_index 484
-#define ObjectPtrLabel_remap_index 485
-#define PopDebugGroup_remap_index 486
-#define PushDebugGroup_remap_index 487
-#define SecondaryColor3fEXT_remap_index 488
-#define SecondaryColor3fvEXT_remap_index 489
-#define MultiDrawElementsEXT_remap_index 490
-#define FogCoordfEXT_remap_index 491
-#define FogCoordfvEXT_remap_index 492
-#define ResizeBuffersMESA_remap_index 493
-#define WindowPos4dMESA_remap_index 494
-#define WindowPos4dvMESA_remap_index 495
-#define WindowPos4fMESA_remap_index 496
-#define WindowPos4fvMESA_remap_index 497
-#define WindowPos4iMESA_remap_index 498
-#define WindowPos4ivMESA_remap_index 499
-#define WindowPos4sMESA_remap_index 500
-#define WindowPos4svMESA_remap_index 501
-#define MultiModeDrawArraysIBM_remap_index 502
-#define MultiModeDrawElementsIBM_remap_index 503
-#define AreProgramsResidentNV_remap_index 504
-#define ExecuteProgramNV_remap_index 505
-#define GetProgramParameterdvNV_remap_index 506
-#define GetProgramParameterfvNV_remap_index 507
-#define GetProgramStringNV_remap_index 508
-#define GetProgramivNV_remap_index 509
-#define GetTrackMatrixivNV_remap_index 510
-#define GetVertexAttribdvNV_remap_index 511
-#define GetVertexAttribfvNV_remap_index 512
-#define GetVertexAttribivNV_remap_index 513
-#define LoadProgramNV_remap_index 514
-#define ProgramParameters4dvNV_remap_index 515
-#define ProgramParameters4fvNV_remap_index 516
-#define RequestResidentProgramsNV_remap_index 517
-#define TrackMatrixNV_remap_index 518
-#define VertexAttrib1dNV_remap_index 519
-#define VertexAttrib1dvNV_remap_index 520
-#define VertexAttrib1fNV_remap_index 521
-#define VertexAttrib1fvNV_remap_index 522
-#define VertexAttrib1sNV_remap_index 523
-#define VertexAttrib1svNV_remap_index 524
-#define VertexAttrib2dNV_remap_index 525
-#define VertexAttrib2dvNV_remap_index 526
-#define VertexAttrib2fNV_remap_index 527
-#define VertexAttrib2fvNV_remap_index 528
-#define VertexAttrib2sNV_remap_index 529
-#define VertexAttrib2svNV_remap_index 530
-#define VertexAttrib3dNV_remap_index 531
-#define VertexAttrib3dvNV_remap_index 532
-#define VertexAttrib3fNV_remap_index 533
-#define VertexAttrib3fvNV_remap_index 534
-#define VertexAttrib3sNV_remap_index 535
-#define VertexAttrib3svNV_remap_index 536
-#define VertexAttrib4dNV_remap_index 537
-#define VertexAttrib4dvNV_remap_index 538
-#define VertexAttrib4fNV_remap_index 539
-#define VertexAttrib4fvNV_remap_index 540
-#define VertexAttrib4sNV_remap_index 541
-#define VertexAttrib4svNV_remap_index 542
-#define VertexAttrib4ubNV_remap_index 543
-#define VertexAttrib4ubvNV_remap_index 544
-#define VertexAttribPointerNV_remap_index 545
-#define VertexAttribs1dvNV_remap_index 546
-#define VertexAttribs1fvNV_remap_index 547
-#define VertexAttribs1svNV_remap_index 548
-#define VertexAttribs2dvNV_remap_index 549
-#define VertexAttribs2fvNV_remap_index 550
-#define VertexAttribs2svNV_remap_index 551
-#define VertexAttribs3dvNV_remap_index 552
-#define VertexAttribs3fvNV_remap_index 553
-#define VertexAttribs3svNV_remap_index 554
-#define VertexAttribs4dvNV_remap_index 555
-#define VertexAttribs4fvNV_remap_index 556
-#define VertexAttribs4svNV_remap_index 557
-#define VertexAttribs4ubvNV_remap_index 558
-#define GetTexBumpParameterfvATI_remap_index 559
-#define GetTexBumpParameterivATI_remap_index 560
-#define TexBumpParameterfvATI_remap_index 561
-#define TexBumpParameterivATI_remap_index 562
-#define AlphaFragmentOp1ATI_remap_index 563
-#define AlphaFragmentOp2ATI_remap_index 564
-#define AlphaFragmentOp3ATI_remap_index 565
-#define BeginFragmentShaderATI_remap_index 566
-#define BindFragmentShaderATI_remap_index 567
-#define ColorFragmentOp1ATI_remap_index 568
-#define ColorFragmentOp2ATI_remap_index 569
-#define ColorFragmentOp3ATI_remap_index 570
-#define DeleteFragmentShaderATI_remap_index 571
-#define EndFragmentShaderATI_remap_index 572
-#define GenFragmentShadersATI_remap_index 573
-#define PassTexCoordATI_remap_index 574
-#define SampleMapATI_remap_index 575
-#define SetFragmentShaderConstantATI_remap_index 576
-#define ActiveStencilFaceEXT_remap_index 577
-#define BindVertexArrayAPPLE_remap_index 578
-#define GenVertexArraysAPPLE_remap_index 579
-#define GetProgramNamedParameterdvNV_remap_index 580
-#define GetProgramNamedParameterfvNV_remap_index 581
-#define ProgramNamedParameter4dNV_remap_index 582
-#define ProgramNamedParameter4dvNV_remap_index 583
-#define ProgramNamedParameter4fNV_remap_index 584
-#define ProgramNamedParameter4fvNV_remap_index 585
-#define PrimitiveRestartNV_remap_index 586
-#define GetTexGenxvOES_remap_index 587
-#define TexGenxOES_remap_index 588
-#define TexGenxvOES_remap_index 589
-#define DepthBoundsEXT_remap_index 590
-#define BindFramebufferEXT_remap_index 591
-#define BindRenderbufferEXT_remap_index 592
-#define BufferParameteriAPPLE_remap_index 593
-#define FlushMappedBufferRangeAPPLE_remap_index 594
-#define VertexAttribI1iEXT_remap_index 595
-#define VertexAttribI1uiEXT_remap_index 596
-#define VertexAttribI2iEXT_remap_index 597
-#define VertexAttribI2ivEXT_remap_index 598
-#define VertexAttribI2uiEXT_remap_index 599
-#define VertexAttribI2uivEXT_remap_index 600
-#define VertexAttribI3iEXT_remap_index 601
-#define VertexAttribI3ivEXT_remap_index 602
-#define VertexAttribI3uiEXT_remap_index 603
-#define VertexAttribI3uivEXT_remap_index 604
-#define VertexAttribI4iEXT_remap_index 605
-#define VertexAttribI4ivEXT_remap_index 606
-#define VertexAttribI4uiEXT_remap_index 607
-#define VertexAttribI4uivEXT_remap_index 608
-#define ClearColorIiEXT_remap_index 609
-#define ClearColorIuiEXT_remap_index 610
-#define BindBufferOffsetEXT_remap_index 611
-#define BeginPerfMonitorAMD_remap_index 612
-#define DeletePerfMonitorsAMD_remap_index 613
-#define EndPerfMonitorAMD_remap_index 614
-#define GenPerfMonitorsAMD_remap_index 615
-#define GetPerfMonitorCounterDataAMD_remap_index 616
-#define GetPerfMonitorCounterInfoAMD_remap_index 617
-#define GetPerfMonitorCounterStringAMD_remap_index 618
-#define GetPerfMonitorCountersAMD_remap_index 619
-#define GetPerfMonitorGroupStringAMD_remap_index 620
-#define GetPerfMonitorGroupsAMD_remap_index 621
-#define SelectPerfMonitorCountersAMD_remap_index 622
-#define GetObjectParameterivAPPLE_remap_index 623
-#define ObjectPurgeableAPPLE_remap_index 624
-#define ObjectUnpurgeableAPPLE_remap_index 625
-#define ActiveProgramEXT_remap_index 626
-#define CreateShaderProgramEXT_remap_index 627
-#define UseShaderProgramEXT_remap_index 628
-#define TextureBarrierNV_remap_index 629
-#define VDPAUFiniNV_remap_index 630
-#define VDPAUGetSurfaceivNV_remap_index 631
-#define VDPAUInitNV_remap_index 632
-#define VDPAUIsSurfaceNV_remap_index 633
-#define VDPAUMapSurfacesNV_remap_index 634
-#define VDPAURegisterOutputSurfaceNV_remap_index 635
-#define VDPAURegisterVideoSurfaceNV_remap_index 636
-#define VDPAUSurfaceAccessNV_remap_index 637
-#define VDPAUUnmapSurfacesNV_remap_index 638
-#define VDPAUUnregisterSurfaceNV_remap_index 639
-#define StencilFuncSeparateATI_remap_index 640
-#define ProgramEnvParameters4fvEXT_remap_index 641
-#define ProgramLocalParameters4fvEXT_remap_index 642
-#define EGLImageTargetRenderbufferStorageOES_remap_index 643
-#define EGLImageTargetTexture2DOES_remap_index 644
-#define AlphaFuncx_remap_index 645
-#define ClearColorx_remap_index 646
-#define ClearDepthx_remap_index 647
-#define Color4x_remap_index 648
-#define DepthRangex_remap_index 649
-#define Fogx_remap_index 650
-#define Fogxv_remap_index 651
-#define Frustumf_remap_index 652
-#define Frustumx_remap_index 653
-#define LightModelx_remap_index 654
-#define LightModelxv_remap_index 655
-#define Lightx_remap_index 656
-#define Lightxv_remap_index 657
-#define LineWidthx_remap_index 658
-#define LoadMatrixx_remap_index 659
-#define Materialx_remap_index 660
-#define Materialxv_remap_index 661
-#define MultMatrixx_remap_index 662
-#define MultiTexCoord4x_remap_index 663
-#define Normal3x_remap_index 664
-#define Orthof_remap_index 665
-#define Orthox_remap_index 666
-#define PointSizex_remap_index 667
-#define PolygonOffsetx_remap_index 668
-#define Rotatex_remap_index 669
-#define SampleCoveragex_remap_index 670
-#define Scalex_remap_index 671
-#define TexEnvx_remap_index 672
-#define TexEnvxv_remap_index 673
-#define TexParameterx_remap_index 674
-#define Translatex_remap_index 675
-#define ClipPlanef_remap_index 676
-#define ClipPlanex_remap_index 677
-#define GetClipPlanef_remap_index 678
-#define GetClipPlanex_remap_index 679
-#define GetFixedv_remap_index 680
-#define GetLightxv_remap_index 681
-#define GetMaterialxv_remap_index 682
-#define GetTexEnvxv_remap_index 683
-#define GetTexParameterxv_remap_index 684
-#define PointParameterx_remap_index 685
-#define PointParameterxv_remap_index 686
-#define TexParameterxv_remap_index 687
+#define BufferStorage_remap_index 450
+#define InvalidateBufferData_remap_index 451
+#define InvalidateBufferSubData_remap_index 452
+#define InvalidateFramebuffer_remap_index 453
+#define InvalidateSubFramebuffer_remap_index 454
+#define InvalidateTexImage_remap_index 455
+#define InvalidateTexSubImage_remap_index 456
+#define PolygonOffsetEXT_remap_index 457
+#define DrawTexfOES_remap_index 458
+#define DrawTexfvOES_remap_index 459
+#define DrawTexiOES_remap_index 460
+#define DrawTexivOES_remap_index 461
+#define DrawTexsOES_remap_index 462
+#define DrawTexsvOES_remap_index 463
+#define DrawTexxOES_remap_index 464
+#define DrawTexxvOES_remap_index 465
+#define PointSizePointerOES_remap_index 466
+#define QueryMatrixxOES_remap_index 467
+#define SampleMaskSGIS_remap_index 468
+#define SamplePatternSGIS_remap_index 469
+#define ColorPointerEXT_remap_index 470
+#define EdgeFlagPointerEXT_remap_index 471
+#define IndexPointerEXT_remap_index 472
+#define NormalPointerEXT_remap_index 473
+#define TexCoordPointerEXT_remap_index 474
+#define VertexPointerEXT_remap_index 475
+#define DiscardFramebufferEXT_remap_index 476
+#define ActiveShaderProgram_remap_index 477
+#define BindProgramPipeline_remap_index 478
+#define CreateShaderProgramv_remap_index 479
+#define DeleteProgramPipelines_remap_index 480
+#define GenProgramPipelines_remap_index 481
+#define GetProgramPipelineInfoLog_remap_index 482
+#define GetProgramPipelineiv_remap_index 483
+#define IsProgramPipeline_remap_index 484
+#define LockArraysEXT_remap_index 485
+#define ProgramUniform1f_remap_index 486
+#define ProgramUniform1fv_remap_index 487
+#define ProgramUniform1i_remap_index 488
+#define ProgramUniform1iv_remap_index 489
+#define ProgramUniform1ui_remap_index 490
+#define ProgramUniform1uiv_remap_index 491
+#define ProgramUniform2f_remap_index 492
+#define ProgramUniform2fv_remap_index 493
+#define ProgramUniform2i_remap_index 494
+#define ProgramUniform2iv_remap_index 495
+#define ProgramUniform2ui_remap_index 496
+#define ProgramUniform2uiv_remap_index 497
+#define ProgramUniform3f_remap_index 498
+#define ProgramUniform3fv_remap_index 499
+#define ProgramUniform3i_remap_index 500
+#define ProgramUniform3iv_remap_index 501
+#define ProgramUniform3ui_remap_index 502
+#define ProgramUniform3uiv_remap_index 503
+#define ProgramUniform4f_remap_index 504
+#define ProgramUniform4fv_remap_index 505
+#define ProgramUniform4i_remap_index 506
+#define ProgramUniform4iv_remap_index 507
+#define ProgramUniform4ui_remap_index 508
+#define ProgramUniform4uiv_remap_index 509
+#define ProgramUniformMatrix2fv_remap_index 510
+#define ProgramUniformMatrix2x3fv_remap_index 511
+#define ProgramUniformMatrix2x4fv_remap_index 512
+#define ProgramUniformMatrix3fv_remap_index 513
+#define ProgramUniformMatrix3x2fv_remap_index 514
+#define ProgramUniformMatrix3x4fv_remap_index 515
+#define ProgramUniformMatrix4fv_remap_index 516
+#define ProgramUniformMatrix4x2fv_remap_index 517
+#define ProgramUniformMatrix4x3fv_remap_index 518
+#define UnlockArraysEXT_remap_index 519
+#define UseProgramStages_remap_index 520
+#define ValidateProgramPipeline_remap_index 521
+#define DebugMessageCallback_remap_index 522
+#define DebugMessageControl_remap_index 523
+#define DebugMessageInsert_remap_index 524
+#define GetDebugMessageLog_remap_index 525
+#define GetObjectLabel_remap_index 526
+#define GetObjectPtrLabel_remap_index 527
+#define ObjectLabel_remap_index 528
+#define ObjectPtrLabel_remap_index 529
+#define PopDebugGroup_remap_index 530
+#define PushDebugGroup_remap_index 531
+#define SecondaryColor3fEXT_remap_index 532
+#define SecondaryColor3fvEXT_remap_index 533
+#define MultiDrawElementsEXT_remap_index 534
+#define FogCoordfEXT_remap_index 535
+#define FogCoordfvEXT_remap_index 536
+#define ResizeBuffersMESA_remap_index 537
+#define WindowPos4dMESA_remap_index 538
+#define WindowPos4dvMESA_remap_index 539
+#define WindowPos4fMESA_remap_index 540
+#define WindowPos4fvMESA_remap_index 541
+#define WindowPos4iMESA_remap_index 542
+#define WindowPos4ivMESA_remap_index 543
+#define WindowPos4sMESA_remap_index 544
+#define WindowPos4svMESA_remap_index 545
+#define MultiModeDrawArraysIBM_remap_index 546
+#define MultiModeDrawElementsIBM_remap_index 547
+#define AreProgramsResidentNV_remap_index 548
+#define ExecuteProgramNV_remap_index 549
+#define GetProgramParameterdvNV_remap_index 550
+#define GetProgramParameterfvNV_remap_index 551
+#define GetProgramStringNV_remap_index 552
+#define GetProgramivNV_remap_index 553
+#define GetTrackMatrixivNV_remap_index 554
+#define GetVertexAttribdvNV_remap_index 555
+#define GetVertexAttribfvNV_remap_index 556
+#define GetVertexAttribivNV_remap_index 557
+#define LoadProgramNV_remap_index 558
+#define ProgramParameters4dvNV_remap_index 559
+#define ProgramParameters4fvNV_remap_index 560
+#define RequestResidentProgramsNV_remap_index 561
+#define TrackMatrixNV_remap_index 562
+#define VertexAttrib1dNV_remap_index 563
+#define VertexAttrib1dvNV_remap_index 564
+#define VertexAttrib1fNV_remap_index 565
+#define VertexAttrib1fvNV_remap_index 566
+#define VertexAttrib1sNV_remap_index 567
+#define VertexAttrib1svNV_remap_index 568
+#define VertexAttrib2dNV_remap_index 569
+#define VertexAttrib2dvNV_remap_index 570
+#define VertexAttrib2fNV_remap_index 571
+#define VertexAttrib2fvNV_remap_index 572
+#define VertexAttrib2sNV_remap_index 573
+#define VertexAttrib2svNV_remap_index 574
+#define VertexAttrib3dNV_remap_index 575
+#define VertexAttrib3dvNV_remap_index 576
+#define VertexAttrib3fNV_remap_index 577
+#define VertexAttrib3fvNV_remap_index 578
+#define VertexAttrib3sNV_remap_index 579
+#define VertexAttrib3svNV_remap_index 580
+#define VertexAttrib4dNV_remap_index 581
+#define VertexAttrib4dvNV_remap_index 582
+#define VertexAttrib4fNV_remap_index 583
+#define VertexAttrib4fvNV_remap_index 584
+#define VertexAttrib4sNV_remap_index 585
+#define VertexAttrib4svNV_remap_index 586
+#define VertexAttrib4ubNV_remap_index 587
+#define VertexAttrib4ubvNV_remap_index 588
+#define VertexAttribPointerNV_remap_index 589
+#define VertexAttribs1dvNV_remap_index 590
+#define VertexAttribs1fvNV_remap_index 591
+#define VertexAttribs1svNV_remap_index 592
+#define VertexAttribs2dvNV_remap_index 593
+#define VertexAttribs2fvNV_remap_index 594
+#define VertexAttribs2svNV_remap_index 595
+#define VertexAttribs3dvNV_remap_index 596
+#define VertexAttribs3fvNV_remap_index 597
+#define VertexAttribs3svNV_remap_index 598
+#define VertexAttribs4dvNV_remap_index 599
+#define VertexAttribs4fvNV_remap_index 600
+#define VertexAttribs4svNV_remap_index 601
+#define VertexAttribs4ubvNV_remap_index 602
+#define GetTexBumpParameterfvATI_remap_index 603
+#define GetTexBumpParameterivATI_remap_index 604
+#define TexBumpParameterfvATI_remap_index 605
+#define TexBumpParameterivATI_remap_index 606
+#define AlphaFragmentOp1ATI_remap_index 607
+#define AlphaFragmentOp2ATI_remap_index 608
+#define AlphaFragmentOp3ATI_remap_index 609
+#define BeginFragmentShaderATI_remap_index 610
+#define BindFragmentShaderATI_remap_index 611
+#define ColorFragmentOp1ATI_remap_index 612
+#define ColorFragmentOp2ATI_remap_index 613
+#define ColorFragmentOp3ATI_remap_index 614
+#define DeleteFragmentShaderATI_remap_index 615
+#define EndFragmentShaderATI_remap_index 616
+#define GenFragmentShadersATI_remap_index 617
+#define PassTexCoordATI_remap_index 618
+#define SampleMapATI_remap_index 619
+#define SetFragmentShaderConstantATI_remap_index 620
+#define ActiveStencilFaceEXT_remap_index 621
+#define BindVertexArrayAPPLE_remap_index 622
+#define GenVertexArraysAPPLE_remap_index 623
+#define GetProgramNamedParameterdvNV_remap_index 624
+#define GetProgramNamedParameterfvNV_remap_index 625
+#define ProgramNamedParameter4dNV_remap_index 626
+#define ProgramNamedParameter4dvNV_remap_index 627
+#define ProgramNamedParameter4fNV_remap_index 628
+#define ProgramNamedParameter4fvNV_remap_index 629
+#define PrimitiveRestartNV_remap_index 630
+#define GetTexGenxvOES_remap_index 631
+#define TexGenxOES_remap_index 632
+#define TexGenxvOES_remap_index 633
+#define DepthBoundsEXT_remap_index 634
+#define BindFramebufferEXT_remap_index 635
+#define BindRenderbufferEXT_remap_index 636
+#define BufferParameteriAPPLE_remap_index 637
+#define FlushMappedBufferRangeAPPLE_remap_index 638
+#define VertexAttribI1iEXT_remap_index 639
+#define VertexAttribI1uiEXT_remap_index 640
+#define VertexAttribI2iEXT_remap_index 641
+#define VertexAttribI2ivEXT_remap_index 642
+#define VertexAttribI2uiEXT_remap_index 643
+#define VertexAttribI2uivEXT_remap_index 644
+#define VertexAttribI3iEXT_remap_index 645
+#define VertexAttribI3ivEXT_remap_index 646
+#define VertexAttribI3uiEXT_remap_index 647
+#define VertexAttribI3uivEXT_remap_index 648
+#define VertexAttribI4iEXT_remap_index 649
+#define VertexAttribI4ivEXT_remap_index 650
+#define VertexAttribI4uiEXT_remap_index 651
+#define VertexAttribI4uivEXT_remap_index 652
+#define ClearColorIiEXT_remap_index 653
+#define ClearColorIuiEXT_remap_index 654
+#define BindBufferOffsetEXT_remap_index 655
+#define BeginPerfMonitorAMD_remap_index 656
+#define DeletePerfMonitorsAMD_remap_index 657
+#define EndPerfMonitorAMD_remap_index 658
+#define GenPerfMonitorsAMD_remap_index 659
+#define GetPerfMonitorCounterDataAMD_remap_index 660
+#define GetPerfMonitorCounterInfoAMD_remap_index 661
+#define GetPerfMonitorCounterStringAMD_remap_index 662
+#define GetPerfMonitorCountersAMD_remap_index 663
+#define GetPerfMonitorGroupStringAMD_remap_index 664
+#define GetPerfMonitorGroupsAMD_remap_index 665
+#define SelectPerfMonitorCountersAMD_remap_index 666
+#define GetObjectParameterivAPPLE_remap_index 667
+#define ObjectPurgeableAPPLE_remap_index 668
+#define ObjectUnpurgeableAPPLE_remap_index 669
+#define ActiveProgramEXT_remap_index 670
+#define CreateShaderProgramEXT_remap_index 671
+#define UseShaderProgramEXT_remap_index 672
+#define TextureBarrierNV_remap_index 673
+#define VDPAUFiniNV_remap_index 674
+#define VDPAUGetSurfaceivNV_remap_index 675
+#define VDPAUInitNV_remap_index 676
+#define VDPAUIsSurfaceNV_remap_index 677
+#define VDPAUMapSurfacesNV_remap_index 678
+#define VDPAURegisterOutputSurfaceNV_remap_index 679
+#define VDPAURegisterVideoSurfaceNV_remap_index 680
+#define VDPAUSurfaceAccessNV_remap_index 681
+#define VDPAUUnmapSurfacesNV_remap_index 682
+#define VDPAUUnregisterSurfaceNV_remap_index 683
+#define StencilFuncSeparateATI_remap_index 684
+#define ProgramEnvParameters4fvEXT_remap_index 685
+#define ProgramLocalParameters4fvEXT_remap_index 686
+#define EGLImageTargetRenderbufferStorageOES_remap_index 687
+#define EGLImageTargetTexture2DOES_remap_index 688
+#define AlphaFuncx_remap_index 689
+#define ClearColorx_remap_index 690
+#define ClearDepthx_remap_index 691
+#define Color4x_remap_index 692
+#define DepthRangex_remap_index 693
+#define Fogx_remap_index 694
+#define Fogxv_remap_index 695
+#define Frustumf_remap_index 696
+#define Frustumx_remap_index 697
+#define LightModelx_remap_index 698
+#define LightModelxv_remap_index 699
+#define Lightx_remap_index 700
+#define Lightxv_remap_index 701
+#define LineWidthx_remap_index 702
+#define LoadMatrixx_remap_index 703
+#define Materialx_remap_index 704
+#define Materialxv_remap_index 705
+#define MultMatrixx_remap_index 706
+#define MultiTexCoord4x_remap_index 707
+#define Normal3x_remap_index 708
+#define Orthof_remap_index 709
+#define Orthox_remap_index 710
+#define PointSizex_remap_index 711
+#define PolygonOffsetx_remap_index 712
+#define Rotatex_remap_index 713
+#define SampleCoveragex_remap_index 714
+#define Scalex_remap_index 715
+#define TexEnvx_remap_index 716
+#define TexEnvxv_remap_index 717
+#define TexParameterx_remap_index 718
+#define Translatex_remap_index 719
+#define ClipPlanef_remap_index 720
+#define ClipPlanex_remap_index 721
+#define GetClipPlanef_remap_index 722
+#define GetClipPlanex_remap_index 723
+#define GetFixedv_remap_index 724
+#define GetLightxv_remap_index 725
+#define GetMaterialxv_remap_index 726
+#define GetTexEnvxv_remap_index 727
+#define GetTexParameterxv_remap_index 728
+#define PointParameterx_remap_index 729
+#define PointParameterxv_remap_index 730
+#define TexParameterxv_remap_index 731
#define _gloffset_CompressedTexImage1D driDispatchRemapTable[CompressedTexImage1D_remap_index]
#define _gloffset_CompressedTexImage2D driDispatchRemapTable[CompressedTexImage2D_remap_index]
@@ -1615,6 +1659,7 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_TexBufferRange driDispatchRemapTable[TexBufferRange_remap_index]
#define _gloffset_TexStorage2DMultisample driDispatchRemapTable[TexStorage2DMultisample_remap_index]
#define _gloffset_TexStorage3DMultisample driDispatchRemapTable[TexStorage3DMultisample_remap_index]
+#define _gloffset_BufferStorage driDispatchRemapTable[BufferStorage_remap_index]
#define _gloffset_InvalidateBufferData driDispatchRemapTable[InvalidateBufferData_remap_index]
#define _gloffset_InvalidateBufferSubData driDispatchRemapTable[InvalidateBufferSubData_remap_index]
#define _gloffset_InvalidateFramebuffer driDispatchRemapTable[InvalidateFramebuffer_remap_index]
@@ -1641,8 +1686,51 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ];
#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index]
#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index]
#define _gloffset_DiscardFramebufferEXT driDispatchRemapTable[DiscardFramebufferEXT_remap_index]
+#define _gloffset_ActiveShaderProgram driDispatchRemapTable[ActiveShaderProgram_remap_index]
+#define _gloffset_BindProgramPipeline driDispatchRemapTable[BindProgramPipeline_remap_index]
+#define _gloffset_CreateShaderProgramv driDispatchRemapTable[CreateShaderProgramv_remap_index]
+#define _gloffset_DeleteProgramPipelines driDispatchRemapTable[DeleteProgramPipelines_remap_index]
+#define _gloffset_GenProgramPipelines driDispatchRemapTable[GenProgramPipelines_remap_index]
+#define _gloffset_GetProgramPipelineInfoLog driDispatchRemapTable[GetProgramPipelineInfoLog_remap_index]
+#define _gloffset_GetProgramPipelineiv driDispatchRemapTable[GetProgramPipelineiv_remap_index]
+#define _gloffset_IsProgramPipeline driDispatchRemapTable[IsProgramPipeline_remap_index]
#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index]
+#define _gloffset_ProgramUniform1f driDispatchRemapTable[ProgramUniform1f_remap_index]
+#define _gloffset_ProgramUniform1fv driDispatchRemapTable[ProgramUniform1fv_remap_index]
+#define _gloffset_ProgramUniform1i driDispatchRemapTable[ProgramUniform1i_remap_index]
+#define _gloffset_ProgramUniform1iv driDispatchRemapTable[ProgramUniform1iv_remap_index]
+#define _gloffset_ProgramUniform1ui driDispatchRemapTable[ProgramUniform1ui_remap_index]
+#define _gloffset_ProgramUniform1uiv driDispatchRemapTable[ProgramUniform1uiv_remap_index]
+#define _gloffset_ProgramUniform2f driDispatchRemapTable[ProgramUniform2f_remap_index]
+#define _gloffset_ProgramUniform2fv driDispatchRemapTable[ProgramUniform2fv_remap_index]
+#define _gloffset_ProgramUniform2i driDispatchRemapTable[ProgramUniform2i_remap_index]
+#define _gloffset_ProgramUniform2iv driDispatchRemapTable[ProgramUniform2iv_remap_index]
+#define _gloffset_ProgramUniform2ui driDispatchRemapTable[ProgramUniform2ui_remap_index]
+#define _gloffset_ProgramUniform2uiv driDispatchRemapTable[ProgramUniform2uiv_remap_index]
+#define _gloffset_ProgramUniform3f driDispatchRemapTable[ProgramUniform3f_remap_index]
+#define _gloffset_ProgramUniform3fv driDispatchRemapTable[ProgramUniform3fv_remap_index]
+#define _gloffset_ProgramUniform3i driDispatchRemapTable[ProgramUniform3i_remap_index]
+#define _gloffset_ProgramUniform3iv driDispatchRemapTable[ProgramUniform3iv_remap_index]
+#define _gloffset_ProgramUniform3ui driDispatchRemapTable[ProgramUniform3ui_remap_index]
+#define _gloffset_ProgramUniform3uiv driDispatchRemapTable[ProgramUniform3uiv_remap_index]
+#define _gloffset_ProgramUniform4f driDispatchRemapTable[ProgramUniform4f_remap_index]
+#define _gloffset_ProgramUniform4fv driDispatchRemapTable[ProgramUniform4fv_remap_index]
+#define _gloffset_ProgramUniform4i driDispatchRemapTable[ProgramUniform4i_remap_index]
+#define _gloffset_ProgramUniform4iv driDispatchRemapTable[ProgramUniform4iv_remap_index]
+#define _gloffset_ProgramUniform4ui driDispatchRemapTable[ProgramUniform4ui_remap_index]
+#define _gloffset_ProgramUniform4uiv driDispatchRemapTable[ProgramUniform4uiv_remap_index]
+#define _gloffset_ProgramUniformMatrix2fv driDispatchRemapTable[ProgramUniformMatrix2fv_remap_index]
+#define _gloffset_ProgramUniformMatrix2x3fv driDispatchRemapTable[ProgramUniformMatrix2x3fv_remap_index]
+#define _gloffset_ProgramUniformMatrix2x4fv driDispatchRemapTable[ProgramUniformMatrix2x4fv_remap_index]
+#define _gloffset_ProgramUniformMatrix3fv driDispatchRemapTable[ProgramUniformMatrix3fv_remap_index]
+#define _gloffset_ProgramUniformMatrix3x2fv driDispatchRemapTable[ProgramUniformMatrix3x2fv_remap_index]
+#define _gloffset_ProgramUniformMatrix3x4fv driDispatchRemapTable[ProgramUniformMatrix3x4fv_remap_index]
+#define _gloffset_ProgramUniformMatrix4fv driDispatchRemapTable[ProgramUniformMatrix4fv_remap_index]
+#define _gloffset_ProgramUniformMatrix4x2fv driDispatchRemapTable[ProgramUniformMatrix4x2fv_remap_index]
+#define _gloffset_ProgramUniformMatrix4x3fv driDispatchRemapTable[ProgramUniformMatrix4x3fv_remap_index]
#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index]
+#define _gloffset_UseProgramStages driDispatchRemapTable[UseProgramStages_remap_index]
+#define _gloffset_ValidateProgramPipeline driDispatchRemapTable[ValidateProgramPipeline_remap_index]
#define _gloffset_DebugMessageCallback driDispatchRemapTable[DebugMessageCallback_remap_index]
#define _gloffset_DebugMessageControl driDispatchRemapTable[DebugMessageControl_remap_index]
#define _gloffset_DebugMessageInsert driDispatchRemapTable[DebugMessageInsert_remap_index]
@@ -11292,6 +11380,17 @@ static INLINE void SET_TexStorage3DMultisample(struct _glapi_table *disp, void (
SET_by_offset(disp, _gloffset_TexStorage3DMultisample, fn);
}
+typedef void (GLAPIENTRYP _glptr_BufferStorage)(GLenum, GLsizeiptr, const GLvoid *, GLbitfield);
+#define CALL_BufferStorage(disp, parameters) \
+ (* GET_BufferStorage(disp)) parameters
+static INLINE _glptr_BufferStorage GET_BufferStorage(struct _glapi_table *disp) {
+ return (_glptr_BufferStorage) (GET_by_offset(disp, _gloffset_BufferStorage));
+}
+
+static INLINE void SET_BufferStorage(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizeiptr, const GLvoid *, GLbitfield)) {
+ SET_by_offset(disp, _gloffset_BufferStorage, fn);
+}
+
typedef void (GLAPIENTRYP _glptr_InvalidateBufferData)(GLuint);
#define CALL_InvalidateBufferData(disp, parameters) \
(* GET_InvalidateBufferData(disp)) parameters
@@ -11578,6 +11677,94 @@ static INLINE void SET_DiscardFramebufferEXT(struct _glapi_table *disp, void (GL
SET_by_offset(disp, _gloffset_DiscardFramebufferEXT, fn);
}
+typedef void (GLAPIENTRYP _glptr_ActiveShaderProgram)(GLuint, GLuint);
+#define CALL_ActiveShaderProgram(disp, parameters) \
+ (* GET_ActiveShaderProgram(disp)) parameters
+static INLINE _glptr_ActiveShaderProgram GET_ActiveShaderProgram(struct _glapi_table *disp) {
+ return (_glptr_ActiveShaderProgram) (GET_by_offset(disp, _gloffset_ActiveShaderProgram));
+}
+
+static INLINE void SET_ActiveShaderProgram(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLuint)) {
+ SET_by_offset(disp, _gloffset_ActiveShaderProgram, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_BindProgramPipeline)(GLuint);
+#define CALL_BindProgramPipeline(disp, parameters) \
+ (* GET_BindProgramPipeline(disp)) parameters
+static INLINE _glptr_BindProgramPipeline GET_BindProgramPipeline(struct _glapi_table *disp) {
+ return (_glptr_BindProgramPipeline) (GET_by_offset(disp, _gloffset_BindProgramPipeline));
+}
+
+static INLINE void SET_BindProgramPipeline(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) {
+ SET_by_offset(disp, _gloffset_BindProgramPipeline, fn);
+}
+
+typedef GLuint (GLAPIENTRYP _glptr_CreateShaderProgramv)(GLenum, GLsizei, const GLchar * const *);
+#define CALL_CreateShaderProgramv(disp, parameters) \
+ (* GET_CreateShaderProgramv(disp)) parameters
+static INLINE _glptr_CreateShaderProgramv GET_CreateShaderProgramv(struct _glapi_table *disp) {
+ return (_glptr_CreateShaderProgramv) (GET_by_offset(disp, _gloffset_CreateShaderProgramv));
+}
+
+static INLINE void SET_CreateShaderProgramv(struct _glapi_table *disp, GLuint (GLAPIENTRYP fn)(GLenum, GLsizei, const GLchar * const *)) {
+ SET_by_offset(disp, _gloffset_CreateShaderProgramv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_DeleteProgramPipelines)(GLsizei, const GLuint *);
+#define CALL_DeleteProgramPipelines(disp, parameters) \
+ (* GET_DeleteProgramPipelines(disp)) parameters
+static INLINE _glptr_DeleteProgramPipelines GET_DeleteProgramPipelines(struct _glapi_table *disp) {
+ return (_glptr_DeleteProgramPipelines) (GET_by_offset(disp, _gloffset_DeleteProgramPipelines));
+}
+
+static INLINE void SET_DeleteProgramPipelines(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, const GLuint *)) {
+ SET_by_offset(disp, _gloffset_DeleteProgramPipelines, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_GenProgramPipelines)(GLsizei, GLuint *);
+#define CALL_GenProgramPipelines(disp, parameters) \
+ (* GET_GenProgramPipelines(disp)) parameters
+static INLINE _glptr_GenProgramPipelines GET_GenProgramPipelines(struct _glapi_table *disp) {
+ return (_glptr_GenProgramPipelines) (GET_by_offset(disp, _gloffset_GenProgramPipelines));
+}
+
+static INLINE void SET_GenProgramPipelines(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, GLuint *)) {
+ SET_by_offset(disp, _gloffset_GenProgramPipelines, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_GetProgramPipelineInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *);
+#define CALL_GetProgramPipelineInfoLog(disp, parameters) \
+ (* GET_GetProgramPipelineInfoLog(disp)) parameters
+static INLINE _glptr_GetProgramPipelineInfoLog GET_GetProgramPipelineInfoLog(struct _glapi_table *disp) {
+ return (_glptr_GetProgramPipelineInfoLog) (GET_by_offset(disp, _gloffset_GetProgramPipelineInfoLog));
+}
+
+static INLINE void SET_GetProgramPipelineInfoLog(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, GLsizei *, GLchar *)) {
+ SET_by_offset(disp, _gloffset_GetProgramPipelineInfoLog, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_GetProgramPipelineiv)(GLuint, GLenum, GLint *);
+#define CALL_GetProgramPipelineiv(disp, parameters) \
+ (* GET_GetProgramPipelineiv(disp)) parameters
+static INLINE _glptr_GetProgramPipelineiv GET_GetProgramPipelineiv(struct _glapi_table *disp) {
+ return (_glptr_GetProgramPipelineiv) (GET_by_offset(disp, _gloffset_GetProgramPipelineiv));
+}
+
+static INLINE void SET_GetProgramPipelineiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLenum, GLint *)) {
+ SET_by_offset(disp, _gloffset_GetProgramPipelineiv, fn);
+}
+
+typedef GLboolean (GLAPIENTRYP _glptr_IsProgramPipeline)(GLuint);
+#define CALL_IsProgramPipeline(disp, parameters) \
+ (* GET_IsProgramPipeline(disp)) parameters
+static INLINE _glptr_IsProgramPipeline GET_IsProgramPipeline(struct _glapi_table *disp) {
+ return (_glptr_IsProgramPipeline) (GET_by_offset(disp, _gloffset_IsProgramPipeline));
+}
+
+static INLINE void SET_IsProgramPipeline(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLuint)) {
+ SET_by_offset(disp, _gloffset_IsProgramPipeline, fn);
+}
+
typedef void (GLAPIENTRYP _glptr_LockArraysEXT)(GLint, GLsizei);
#define CALL_LockArraysEXT(disp, parameters) \
(* GET_LockArraysEXT(disp)) parameters
@@ -11589,6 +11776,369 @@ static INLINE void SET_LockArraysEXT(struct _glapi_table *disp, void (GLAPIENTRY
SET_by_offset(disp, _gloffset_LockArraysEXT, fn);
}
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1f)(GLuint, GLint, GLfloat);
+#define CALL_ProgramUniform1f(disp, parameters) \
+ (* GET_ProgramUniform1f(disp)) parameters
+static INLINE _glptr_ProgramUniform1f GET_ProgramUniform1f(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1f) (GET_by_offset(disp, _gloffset_ProgramUniform1f));
+}
+
+static INLINE void SET_ProgramUniform1f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1f, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1fv)(GLuint, GLint, GLsizei, const GLfloat *);
+#define CALL_ProgramUniform1fv(disp, parameters) \
+ (* GET_ProgramUniform1fv(disp)) parameters
+static INLINE _glptr_ProgramUniform1fv GET_ProgramUniform1fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1fv) (GET_by_offset(disp, _gloffset_ProgramUniform1fv));
+}
+
+static INLINE void SET_ProgramUniform1fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1i)(GLuint, GLint, GLint);
+#define CALL_ProgramUniform1i(disp, parameters) \
+ (* GET_ProgramUniform1i(disp)) parameters
+static INLINE _glptr_ProgramUniform1i GET_ProgramUniform1i(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1i) (GET_by_offset(disp, _gloffset_ProgramUniform1i));
+}
+
+static INLINE void SET_ProgramUniform1i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1i, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1iv)(GLuint, GLint, GLsizei, const GLint *);
+#define CALL_ProgramUniform1iv(disp, parameters) \
+ (* GET_ProgramUniform1iv(disp)) parameters
+static INLINE _glptr_ProgramUniform1iv GET_ProgramUniform1iv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1iv) (GET_by_offset(disp, _gloffset_ProgramUniform1iv));
+}
+
+static INLINE void SET_ProgramUniform1iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1iv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1ui)(GLuint, GLint, GLuint);
+#define CALL_ProgramUniform1ui(disp, parameters) \
+ (* GET_ProgramUniform1ui(disp)) parameters
+static INLINE _glptr_ProgramUniform1ui GET_ProgramUniform1ui(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1ui) (GET_by_offset(disp, _gloffset_ProgramUniform1ui));
+}
+
+static INLINE void SET_ProgramUniform1ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1ui, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform1uiv)(GLuint, GLint, GLsizei, const GLuint *);
+#define CALL_ProgramUniform1uiv(disp, parameters) \
+ (* GET_ProgramUniform1uiv(disp)) parameters
+static INLINE _glptr_ProgramUniform1uiv GET_ProgramUniform1uiv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform1uiv) (GET_by_offset(disp, _gloffset_ProgramUniform1uiv));
+}
+
+static INLINE void SET_ProgramUniform1uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform1uiv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2f)(GLuint, GLint, GLfloat, GLfloat);
+#define CALL_ProgramUniform2f(disp, parameters) \
+ (* GET_ProgramUniform2f(disp)) parameters
+static INLINE _glptr_ProgramUniform2f GET_ProgramUniform2f(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2f) (GET_by_offset(disp, _gloffset_ProgramUniform2f));
+}
+
+static INLINE void SET_ProgramUniform2f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2f, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2fv)(GLuint, GLint, GLsizei, const GLfloat *);
+#define CALL_ProgramUniform2fv(disp, parameters) \
+ (* GET_ProgramUniform2fv(disp)) parameters
+static INLINE _glptr_ProgramUniform2fv GET_ProgramUniform2fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2fv) (GET_by_offset(disp, _gloffset_ProgramUniform2fv));
+}
+
+static INLINE void SET_ProgramUniform2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2i)(GLuint, GLint, GLint, GLint);
+#define CALL_ProgramUniform2i(disp, parameters) \
+ (* GET_ProgramUniform2i(disp)) parameters
+static INLINE _glptr_ProgramUniform2i GET_ProgramUniform2i(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2i) (GET_by_offset(disp, _gloffset_ProgramUniform2i));
+}
+
+static INLINE void SET_ProgramUniform2i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2i, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2iv)(GLuint, GLint, GLsizei, const GLint *);
+#define CALL_ProgramUniform2iv(disp, parameters) \
+ (* GET_ProgramUniform2iv(disp)) parameters
+static INLINE _glptr_ProgramUniform2iv GET_ProgramUniform2iv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2iv) (GET_by_offset(disp, _gloffset_ProgramUniform2iv));
+}
+
+static INLINE void SET_ProgramUniform2iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2iv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2ui)(GLuint, GLint, GLuint, GLuint);
+#define CALL_ProgramUniform2ui(disp, parameters) \
+ (* GET_ProgramUniform2ui(disp)) parameters
+static INLINE _glptr_ProgramUniform2ui GET_ProgramUniform2ui(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2ui) (GET_by_offset(disp, _gloffset_ProgramUniform2ui));
+}
+
+static INLINE void SET_ProgramUniform2ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2ui, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform2uiv)(GLuint, GLint, GLsizei, const GLuint *);
+#define CALL_ProgramUniform2uiv(disp, parameters) \
+ (* GET_ProgramUniform2uiv(disp)) parameters
+static INLINE _glptr_ProgramUniform2uiv GET_ProgramUniform2uiv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform2uiv) (GET_by_offset(disp, _gloffset_ProgramUniform2uiv));
+}
+
+static INLINE void SET_ProgramUniform2uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform2uiv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3f)(GLuint, GLint, GLfloat, GLfloat, GLfloat);
+#define CALL_ProgramUniform3f(disp, parameters) \
+ (* GET_ProgramUniform3f(disp)) parameters
+static INLINE _glptr_ProgramUniform3f GET_ProgramUniform3f(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3f) (GET_by_offset(disp, _gloffset_ProgramUniform3f));
+}
+
+static INLINE void SET_ProgramUniform3f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat, GLfloat)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3f, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3fv)(GLuint, GLint, GLsizei, const GLfloat *);
+#define CALL_ProgramUniform3fv(disp, parameters) \
+ (* GET_ProgramUniform3fv(disp)) parameters
+static INLINE _glptr_ProgramUniform3fv GET_ProgramUniform3fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3fv) (GET_by_offset(disp, _gloffset_ProgramUniform3fv));
+}
+
+static INLINE void SET_ProgramUniform3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3i)(GLuint, GLint, GLint, GLint, GLint);
+#define CALL_ProgramUniform3i(disp, parameters) \
+ (* GET_ProgramUniform3i(disp)) parameters
+static INLINE _glptr_ProgramUniform3i GET_ProgramUniform3i(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3i) (GET_by_offset(disp, _gloffset_ProgramUniform3i));
+}
+
+static INLINE void SET_ProgramUniform3i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint, GLint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3i, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3iv)(GLuint, GLint, GLsizei, const GLint *);
+#define CALL_ProgramUniform3iv(disp, parameters) \
+ (* GET_ProgramUniform3iv(disp)) parameters
+static INLINE _glptr_ProgramUniform3iv GET_ProgramUniform3iv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3iv) (GET_by_offset(disp, _gloffset_ProgramUniform3iv));
+}
+
+static INLINE void SET_ProgramUniform3iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3iv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3ui)(GLuint, GLint, GLuint, GLuint, GLuint);
+#define CALL_ProgramUniform3ui(disp, parameters) \
+ (* GET_ProgramUniform3ui(disp)) parameters
+static INLINE _glptr_ProgramUniform3ui GET_ProgramUniform3ui(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3ui) (GET_by_offset(disp, _gloffset_ProgramUniform3ui));
+}
+
+static INLINE void SET_ProgramUniform3ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint, GLuint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3ui, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform3uiv)(GLuint, GLint, GLsizei, const GLuint *);
+#define CALL_ProgramUniform3uiv(disp, parameters) \
+ (* GET_ProgramUniform3uiv(disp)) parameters
+static INLINE _glptr_ProgramUniform3uiv GET_ProgramUniform3uiv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform3uiv) (GET_by_offset(disp, _gloffset_ProgramUniform3uiv));
+}
+
+static INLINE void SET_ProgramUniform3uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform3uiv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4f)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+#define CALL_ProgramUniform4f(disp, parameters) \
+ (* GET_ProgramUniform4f(disp)) parameters
+static INLINE _glptr_ProgramUniform4f GET_ProgramUniform4f(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4f) (GET_by_offset(disp, _gloffset_ProgramUniform4f));
+}
+
+static INLINE void SET_ProgramUniform4f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4f, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4fv)(GLuint, GLint, GLsizei, const GLfloat *);
+#define CALL_ProgramUniform4fv(disp, parameters) \
+ (* GET_ProgramUniform4fv(disp)) parameters
+static INLINE _glptr_ProgramUniform4fv GET_ProgramUniform4fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4fv) (GET_by_offset(disp, _gloffset_ProgramUniform4fv));
+}
+
+static INLINE void SET_ProgramUniform4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4i)(GLuint, GLint, GLint, GLint, GLint, GLint);
+#define CALL_ProgramUniform4i(disp, parameters) \
+ (* GET_ProgramUniform4i(disp)) parameters
+static INLINE _glptr_ProgramUniform4i GET_ProgramUniform4i(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4i) (GET_by_offset(disp, _gloffset_ProgramUniform4i));
+}
+
+static INLINE void SET_ProgramUniform4i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint, GLint, GLint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4i, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4iv)(GLuint, GLint, GLsizei, const GLint *);
+#define CALL_ProgramUniform4iv(disp, parameters) \
+ (* GET_ProgramUniform4iv(disp)) parameters
+static INLINE _glptr_ProgramUniform4iv GET_ProgramUniform4iv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4iv) (GET_by_offset(disp, _gloffset_ProgramUniform4iv));
+}
+
+static INLINE void SET_ProgramUniform4iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4iv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4ui)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
+#define CALL_ProgramUniform4ui(disp, parameters) \
+ (* GET_ProgramUniform4ui(disp)) parameters
+static INLINE _glptr_ProgramUniform4ui GET_ProgramUniform4ui(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4ui) (GET_by_offset(disp, _gloffset_ProgramUniform4ui));
+}
+
+static INLINE void SET_ProgramUniform4ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4ui, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniform4uiv)(GLuint, GLint, GLsizei, const GLuint *);
+#define CALL_ProgramUniform4uiv(disp, parameters) \
+ (* GET_ProgramUniform4uiv(disp)) parameters
+static INLINE _glptr_ProgramUniform4uiv GET_ProgramUniform4uiv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniform4uiv) (GET_by_offset(disp, _gloffset_ProgramUniform4uiv));
+}
+
+static INLINE void SET_ProgramUniform4uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniform4uiv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix2fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix2fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix2fv GET_ProgramUniformMatrix2fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix2fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix2x3fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix2x3fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix2x3fv GET_ProgramUniformMatrix2x3fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix2x3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2x3fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix2x3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix2x3fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix2x4fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix2x4fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix2x4fv GET_ProgramUniformMatrix2x4fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix2x4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2x4fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix2x4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix2x4fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix3fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix3fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix3fv GET_ProgramUniformMatrix3fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix3fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix3x2fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix3x2fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix3x2fv GET_ProgramUniformMatrix3x2fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix3x2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3x2fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix3x2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix3x2fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix3x4fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix3x4fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix3x4fv GET_ProgramUniformMatrix3x4fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix3x4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3x4fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix3x4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix3x4fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix4fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix4fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix4fv GET_ProgramUniformMatrix4fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix4fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix4x2fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix4x2fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix4x2fv GET_ProgramUniformMatrix4x2fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix4x2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4x2fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix4x2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix4x2fv, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
+#define CALL_ProgramUniformMatrix4x3fv(disp, parameters) \
+ (* GET_ProgramUniformMatrix4x3fv(disp)) parameters
+static INLINE _glptr_ProgramUniformMatrix4x3fv GET_ProgramUniformMatrix4x3fv(struct _glapi_table *disp) {
+ return (_glptr_ProgramUniformMatrix4x3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4x3fv));
+}
+
+static INLINE void SET_ProgramUniformMatrix4x3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) {
+ SET_by_offset(disp, _gloffset_ProgramUniformMatrix4x3fv, fn);
+}
+
typedef void (GLAPIENTRYP _glptr_UnlockArraysEXT)(void);
#define CALL_UnlockArraysEXT(disp, parameters) \
(* GET_UnlockArraysEXT(disp)) parameters
@@ -11600,6 +12150,28 @@ static INLINE void SET_UnlockArraysEXT(struct _glapi_table *disp, void (GLAPIENT
SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn);
}
+typedef void (GLAPIENTRYP _glptr_UseProgramStages)(GLuint, GLbitfield, GLuint);
+#define CALL_UseProgramStages(disp, parameters) \
+ (* GET_UseProgramStages(disp)) parameters
+static INLINE _glptr_UseProgramStages GET_UseProgramStages(struct _glapi_table *disp) {
+ return (_glptr_UseProgramStages) (GET_by_offset(disp, _gloffset_UseProgramStages));
+}
+
+static INLINE void SET_UseProgramStages(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLbitfield, GLuint)) {
+ SET_by_offset(disp, _gloffset_UseProgramStages, fn);
+}
+
+typedef void (GLAPIENTRYP _glptr_ValidateProgramPipeline)(GLuint);
+#define CALL_ValidateProgramPipeline(disp, parameters) \
+ (* GET_ValidateProgramPipeline(disp)) parameters
+static INLINE _glptr_ValidateProgramPipeline GET_ValidateProgramPipeline(struct _glapi_table *disp) {
+ return (_glptr_ValidateProgramPipeline) (GET_by_offset(disp, _gloffset_ValidateProgramPipeline));
+}
+
+static INLINE void SET_ValidateProgramPipeline(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) {
+ SET_by_offset(disp, _gloffset_ValidateProgramPipeline, fn);
+}
+
typedef void (GLAPIENTRYP _glptr_DebugMessageCallback)(GLDEBUGPROC, const GLvoid *);
#define CALL_DebugMessageCallback(disp, parameters) \
(* GET_DebugMessageCallback(disp)) parameters
@@ -13305,14 +13877,14 @@ static INLINE void SET_VDPAUInitNV(struct _glapi_table *disp, void (GLAPIENTRYP
SET_by_offset(disp, _gloffset_VDPAUInitNV, fn);
}
-typedef void (GLAPIENTRYP _glptr_VDPAUIsSurfaceNV)(GLintptr);
+typedef GLboolean (GLAPIENTRYP _glptr_VDPAUIsSurfaceNV)(GLintptr);
#define CALL_VDPAUIsSurfaceNV(disp, parameters) \
(* GET_VDPAUIsSurfaceNV(disp)) parameters
static INLINE _glptr_VDPAUIsSurfaceNV GET_VDPAUIsSurfaceNV(struct _glapi_table *disp) {
return (_glptr_VDPAUIsSurfaceNV) (GET_by_offset(disp, _gloffset_VDPAUIsSurfaceNV));
}
-static INLINE void SET_VDPAUIsSurfaceNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLintptr)) {
+static INLINE void SET_VDPAUIsSurfaceNV(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLintptr)) {
SET_by_offset(disp, _gloffset_VDPAUIsSurfaceNV, fn);
}
diff --git a/xorg-server/glx/glapi.h b/xorg-server/glx/glapi.h
index b10f19a63..67bf1f42e 100644
--- a/xorg-server/glx/glapi.h
+++ b/xorg-server/glx/glapi.h
@@ -44,13 +44,14 @@
#ifndef _GLAPI_H
#define _GLAPI_H
-#include "glthread.h"
+#include "u_thread.h"
#ifdef __cplusplus
extern "C" {
#endif
+
#ifdef _GLAPI_NO_EXPORTS
# define _GLAPI_EXPORT
#else /* _GLAPI_NO_EXPORTS */
@@ -69,7 +70,6 @@ extern "C" {
#include "GL/gl.h"
#include "GL/glext.h"
-#include "glthread.h"
struct _glapi_table;
@@ -84,8 +84,8 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
#define _glapi_get_dispatch _mglapi_get_dispatch
#define _glapi_set_context _mglapi_set_context
#define _glapi_get_context _mglapi_get_context
-#define _glapi_Context _mglapi_Context
#define _glapi_Dispatch _mglapi_Dispatch
+#define _glapi_Context _mglapi_Context
#endif
/*
@@ -100,12 +100,14 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
**/
#if defined (GLX_USE_TLS)
-_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch;
+_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch
+ ;
-_GLAPI_EXPORT extern const void *_glapi_Context;
-_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+_GLAPI_EXPORT extern __thread void * _glapi_tls_Context
+ ;
-_GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
+_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+_GLAPI_EXPORT extern const void *_glapi_Context;
# define GET_DISPATCH() _glapi_tls_Dispatch
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context
@@ -118,20 +120,22 @@ _GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
#define SERVEXTERN _declspec(dllexport)
#endif
-SERVEXTERN void *_glapi_Context;
SERVEXTERN struct _glapi_table *_glapi_Dispatch;
+SERVEXTERN void *_glapi_Context;
# ifdef THREADS
# define GET_DISPATCH() \
(likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch())
-
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \
(likely(_glapi_Context) ? _glapi_Context : _glapi_get_context())
+
# else
+
# define GET_DISPATCH() _glapi_Dispatch
# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context
+
# endif
#endif /* defined (GLX_USE_TLS) */
@@ -183,8 +187,10 @@ _glapi_get_proc_address(const char *funcName);
extern struct _glapi_table *
_glapi_create_table_from_handle(void *handle, const char *symbol_prefix);
-#endif
+
#ifdef __cplusplus
}
#endif
+
+#endif /* _GLAPI_H */
diff --git a/xorg-server/glx/glapitable.h b/xorg-server/glx/glapitable.h
index 3cb9b7b44..7f5fcbb43 100644
--- a/xorg-server/glx/glapitable.h
+++ b/xorg-server/glx/glapitable.h
@@ -899,244 +899,288 @@ struct _glapi_table
void (GLAPIENTRYP TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 855 */
void (GLAPIENTRYP TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); /* 856 */
void (GLAPIENTRYP TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); /* 857 */
- void (GLAPIENTRYP InvalidateBufferData)(GLuint buffer); /* 858 */
- void (GLAPIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 859 */
- void (GLAPIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 860 */
- void (GLAPIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 861 */
- void (GLAPIENTRYP InvalidateTexImage)(GLuint texture, GLint level); /* 862 */
- void (GLAPIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 863 */
- void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 864 */
- void (GLAPIENTRYP DrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); /* 865 */
- void (GLAPIENTRYP DrawTexfvOES)(const GLfloat * coords); /* 866 */
- void (GLAPIENTRYP DrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height); /* 867 */
- void (GLAPIENTRYP DrawTexivOES)(const GLint * coords); /* 868 */
- void (GLAPIENTRYP DrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); /* 869 */
- void (GLAPIENTRYP DrawTexsvOES)(const GLshort * coords); /* 870 */
- void (GLAPIENTRYP DrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); /* 871 */
- void (GLAPIENTRYP DrawTexxvOES)(const GLfixed * coords); /* 872 */
- void (GLAPIENTRYP PointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 873 */
- GLbitfield (GLAPIENTRYP QueryMatrixxOES)(GLfixed * mantissa, GLint * exponent); /* 874 */
- void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 875 */
- void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 876 */
- void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 877 */
- void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 878 */
- void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 879 */
- void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 880 */
- void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 881 */
- void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 882 */
- void (GLAPIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 883 */
- void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 884 */
- void (GLAPIENTRYP UnlockArraysEXT)(void); /* 885 */
- void (GLAPIENTRYP DebugMessageCallback)(GLDEBUGPROC callback, const GLvoid * userParam); /* 886 */
- void (GLAPIENTRYP DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); /* 887 */
- void (GLAPIENTRYP DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); /* 888 */
- GLuint (GLAPIENTRYP GetDebugMessageLog)(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); /* 889 */
- void (GLAPIENTRYP GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); /* 890 */
- void (GLAPIENTRYP GetObjectPtrLabel)(const GLvoid * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); /* 891 */
- void (GLAPIENTRYP ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); /* 892 */
- void (GLAPIENTRYP ObjectPtrLabel)(const GLvoid * ptr, GLsizei length, const GLchar * label); /* 893 */
- void (GLAPIENTRYP PopDebugGroup)(void); /* 894 */
- void (GLAPIENTRYP PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); /* 895 */
- void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 896 */
- void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 897 */
- void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount); /* 898 */
- void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 899 */
- void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 900 */
- void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 901 */
- void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 902 */
- void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 903 */
- void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 904 */
- void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 905 */
- void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 906 */
- void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 907 */
- void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 908 */
- void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 909 */
- void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 910 */
- void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 911 */
- GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 912 */
- void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 913 */
- void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 914 */
- void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 915 */
- void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 916 */
- void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 917 */
- void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 918 */
- void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 919 */
- void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 920 */
- void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 921 */
- void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 922 */
- void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 923 */
- void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 924 */
- void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 925 */
- void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 926 */
- void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 927 */
- void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 928 */
- void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 929 */
- void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 930 */
- void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 931 */
- void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 932 */
- void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 933 */
- void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 934 */
- void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 935 */
- void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 936 */
- void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 937 */
- void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 938 */
- void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 939 */
- void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 940 */
- void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 941 */
- void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 942 */
- void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 943 */
- void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 944 */
- void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 945 */
- void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 946 */
- void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 947 */
- void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 948 */
- void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 949 */
- void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 950 */
- void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 951 */
- void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 952 */
- void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 953 */
- void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 954 */
- void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 955 */
- void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 956 */
- void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 957 */
- void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 958 */
- void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 959 */
- void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 960 */
- void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 961 */
- void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 962 */
- void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 963 */
- void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 964 */
- void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 965 */
- void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 966 */
- void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 967 */
- void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 968 */
- void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 969 */
- void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 970 */
- void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 971 */
- void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 972 */
- void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 973 */
- void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 974 */
- void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 975 */
- void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 976 */
- void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 977 */
- void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 978 */
- void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 979 */
- void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 980 */
- GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 981 */
- void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 982 */
- void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 983 */
- void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 984 */
- void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 985 */
- void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 986 */
- void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 987 */
- void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 988 */
- void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 989 */
- void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 990 */
- void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 991 */
- void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 992 */
- void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 993 */
- void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 994 */
- void (GLAPIENTRYP GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed * params); /* 995 */
- void (GLAPIENTRYP TexGenxOES)(GLenum coord, GLenum pname, GLint param); /* 996 */
- void (GLAPIENTRYP TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed * params); /* 997 */
- void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 998 */
- void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 999 */
- void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1000 */
- void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1001 */
- void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1002 */
- void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 1003 */
- void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 1004 */
- void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 1005 */
- void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 1006 */
- void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 1007 */
- void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 1008 */
- void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 1009 */
- void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 1010 */
- void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 1011 */
- void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 1012 */
- void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 1013 */
- void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 1014 */
- void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 1015 */
- void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 1016 */
- void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 1017 */
- void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 1018 */
- void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1019 */
- void (GLAPIENTRYP BeginPerfMonitorAMD)(GLuint monitor); /* 1020 */
- void (GLAPIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1021 */
- void (GLAPIENTRYP EndPerfMonitorAMD)(GLuint monitor); /* 1022 */
- void (GLAPIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1023 */
- void (GLAPIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten); /* 1024 */
- void (GLAPIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid * data); /* 1025 */
- void (GLAPIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString); /* 1026 */
- void (GLAPIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei countersSize, GLuint * counters); /* 1027 */
- void (GLAPIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString); /* 1028 */
- void (GLAPIENTRYP GetPerfMonitorGroupsAMD)(GLint * numGroups, GLsizei groupsSize, GLuint * groups); /* 1029 */
- void (GLAPIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList); /* 1030 */
- void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 1031 */
- GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1032 */
- GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1033 */
- void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 1034 */
- GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 1035 */
- void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 1036 */
- void (GLAPIENTRYP TextureBarrierNV)(void); /* 1037 */
- void (GLAPIENTRYP VDPAUFiniNV)(void); /* 1038 */
- void (GLAPIENTRYP VDPAUGetSurfaceivNV)(GLintptr surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 1039 */
- void (GLAPIENTRYP VDPAUInitNV)(const GLvoid * vdpDevice, const GLvoid * getProcAddress); /* 1040 */
- void (GLAPIENTRYP VDPAUIsSurfaceNV)(GLintptr surface); /* 1041 */
- void (GLAPIENTRYP VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1042 */
- GLintptr (GLAPIENTRYP VDPAURegisterOutputSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1043 */
- GLintptr (GLAPIENTRYP VDPAURegisterVideoSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1044 */
- void (GLAPIENTRYP VDPAUSurfaceAccessNV)(GLintptr surface, GLenum access); /* 1045 */
- void (GLAPIENTRYP VDPAUUnmapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1046 */
- void (GLAPIENTRYP VDPAUUnregisterSurfaceNV)(GLintptr surface); /* 1047 */
- void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1048 */
- void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1049 */
- void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1050 */
- void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 1051 */
- void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 1052 */
- void (GLAPIENTRYP AlphaFuncx)(GLenum func, GLclampx ref); /* 1053 */
- void (GLAPIENTRYP ClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); /* 1054 */
- void (GLAPIENTRYP ClearDepthx)(GLclampx depth); /* 1055 */
- void (GLAPIENTRYP Color4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1056 */
- void (GLAPIENTRYP DepthRangex)(GLclampx zNear, GLclampx zFar); /* 1057 */
- void (GLAPIENTRYP Fogx)(GLenum pname, GLfixed param); /* 1058 */
- void (GLAPIENTRYP Fogxv)(GLenum pname, const GLfixed * params); /* 1059 */
- void (GLAPIENTRYP Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1060 */
- void (GLAPIENTRYP Frustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1061 */
- void (GLAPIENTRYP LightModelx)(GLenum pname, GLfixed param); /* 1062 */
- void (GLAPIENTRYP LightModelxv)(GLenum pname, const GLfixed * params); /* 1063 */
- void (GLAPIENTRYP Lightx)(GLenum light, GLenum pname, GLfixed param); /* 1064 */
- void (GLAPIENTRYP Lightxv)(GLenum light, GLenum pname, const GLfixed * params); /* 1065 */
- void (GLAPIENTRYP LineWidthx)(GLfixed width); /* 1066 */
- void (GLAPIENTRYP LoadMatrixx)(const GLfixed * m); /* 1067 */
- void (GLAPIENTRYP Materialx)(GLenum face, GLenum pname, GLfixed param); /* 1068 */
- void (GLAPIENTRYP Materialxv)(GLenum face, GLenum pname, const GLfixed * params); /* 1069 */
- void (GLAPIENTRYP MultMatrixx)(const GLfixed * m); /* 1070 */
- void (GLAPIENTRYP MultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 1071 */
- void (GLAPIENTRYP Normal3x)(GLfixed nx, GLfixed ny, GLfixed nz); /* 1072 */
- void (GLAPIENTRYP Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1073 */
- void (GLAPIENTRYP Orthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1074 */
- void (GLAPIENTRYP PointSizex)(GLfixed size); /* 1075 */
- void (GLAPIENTRYP PolygonOffsetx)(GLfixed factor, GLfixed units); /* 1076 */
- void (GLAPIENTRYP Rotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 1077 */
- void (GLAPIENTRYP SampleCoveragex)(GLclampx value, GLboolean invert); /* 1078 */
- void (GLAPIENTRYP Scalex)(GLfixed x, GLfixed y, GLfixed z); /* 1079 */
- void (GLAPIENTRYP TexEnvx)(GLenum target, GLenum pname, GLfixed param); /* 1080 */
- void (GLAPIENTRYP TexEnvxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1081 */
- void (GLAPIENTRYP TexParameterx)(GLenum target, GLenum pname, GLfixed param); /* 1082 */
- void (GLAPIENTRYP Translatex)(GLfixed x, GLfixed y, GLfixed z); /* 1083 */
- void (GLAPIENTRYP ClipPlanef)(GLenum plane, const GLfloat * equation); /* 1084 */
- void (GLAPIENTRYP ClipPlanex)(GLenum plane, const GLfixed * equation); /* 1085 */
- void (GLAPIENTRYP GetClipPlanef)(GLenum plane, GLfloat * equation); /* 1086 */
- void (GLAPIENTRYP GetClipPlanex)(GLenum plane, GLfixed * equation); /* 1087 */
- void (GLAPIENTRYP GetFixedv)(GLenum pname, GLfixed * params); /* 1088 */
- void (GLAPIENTRYP GetLightxv)(GLenum light, GLenum pname, GLfixed * params); /* 1089 */
- void (GLAPIENTRYP GetMaterialxv)(GLenum face, GLenum pname, GLfixed * params); /* 1090 */
- void (GLAPIENTRYP GetTexEnvxv)(GLenum target, GLenum pname, GLfixed * params); /* 1091 */
- void (GLAPIENTRYP GetTexParameterxv)(GLenum target, GLenum pname, GLfixed * params); /* 1092 */
- void (GLAPIENTRYP PointParameterx)(GLenum pname, GLfixed param); /* 1093 */
- void (GLAPIENTRYP PointParameterxv)(GLenum pname, const GLfixed * params); /* 1094 */
- void (GLAPIENTRYP TexParameterxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1095 */
+ void (GLAPIENTRYP BufferStorage)(GLenum target, GLsizeiptr size, const GLvoid * data, GLbitfield flags); /* 858 */
+ void (GLAPIENTRYP InvalidateBufferData)(GLuint buffer); /* 859 */
+ void (GLAPIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 860 */
+ void (GLAPIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 861 */
+ void (GLAPIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 862 */
+ void (GLAPIENTRYP InvalidateTexImage)(GLuint texture, GLint level); /* 863 */
+ void (GLAPIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 864 */
+ void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 865 */
+ void (GLAPIENTRYP DrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); /* 866 */
+ void (GLAPIENTRYP DrawTexfvOES)(const GLfloat * coords); /* 867 */
+ void (GLAPIENTRYP DrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height); /* 868 */
+ void (GLAPIENTRYP DrawTexivOES)(const GLint * coords); /* 869 */
+ void (GLAPIENTRYP DrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); /* 870 */
+ void (GLAPIENTRYP DrawTexsvOES)(const GLshort * coords); /* 871 */
+ void (GLAPIENTRYP DrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); /* 872 */
+ void (GLAPIENTRYP DrawTexxvOES)(const GLfixed * coords); /* 873 */
+ void (GLAPIENTRYP PointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 874 */
+ GLbitfield (GLAPIENTRYP QueryMatrixxOES)(GLfixed * mantissa, GLint * exponent); /* 875 */
+ void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 876 */
+ void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 877 */
+ void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 878 */
+ void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 879 */
+ void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 880 */
+ void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 881 */
+ void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 882 */
+ void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 883 */
+ void (GLAPIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 884 */
+ void (GLAPIENTRYP ActiveShaderProgram)(GLuint pipeline, GLuint program); /* 885 */
+ void (GLAPIENTRYP BindProgramPipeline)(GLuint pipeline); /* 886 */
+ GLuint (GLAPIENTRYP CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar * const * strings); /* 887 */
+ void (GLAPIENTRYP DeleteProgramPipelines)(GLsizei n, const GLuint * pipelines); /* 888 */
+ void (GLAPIENTRYP GenProgramPipelines)(GLsizei n, GLuint * pipelines); /* 889 */
+ void (GLAPIENTRYP GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 890 */
+ void (GLAPIENTRYP GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint * params); /* 891 */
+ GLboolean (GLAPIENTRYP IsProgramPipeline)(GLuint pipeline); /* 892 */
+ void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 893 */
+ void (GLAPIENTRYP ProgramUniform1f)(GLuint program, GLint location, GLfloat x); /* 894 */
+ void (GLAPIENTRYP ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 895 */
+ void (GLAPIENTRYP ProgramUniform1i)(GLuint program, GLint location, GLint x); /* 896 */
+ void (GLAPIENTRYP ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 897 */
+ void (GLAPIENTRYP ProgramUniform1ui)(GLuint program, GLint location, GLuint x); /* 898 */
+ void (GLAPIENTRYP ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 899 */
+ void (GLAPIENTRYP ProgramUniform2f)(GLuint program, GLint location, GLfloat x, GLfloat y); /* 900 */
+ void (GLAPIENTRYP ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 901 */
+ void (GLAPIENTRYP ProgramUniform2i)(GLuint program, GLint location, GLint x, GLint y); /* 902 */
+ void (GLAPIENTRYP ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 903 */
+ void (GLAPIENTRYP ProgramUniform2ui)(GLuint program, GLint location, GLuint x, GLuint y); /* 904 */
+ void (GLAPIENTRYP ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 905 */
+ void (GLAPIENTRYP ProgramUniform3f)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); /* 906 */
+ void (GLAPIENTRYP ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 907 */
+ void (GLAPIENTRYP ProgramUniform3i)(GLuint program, GLint location, GLint x, GLint y, GLint z); /* 908 */
+ void (GLAPIENTRYP ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 909 */
+ void (GLAPIENTRYP ProgramUniform3ui)(GLuint program, GLint location, GLuint x, GLuint y, GLuint z); /* 910 */
+ void (GLAPIENTRYP ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 911 */
+ void (GLAPIENTRYP ProgramUniform4f)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 912 */
+ void (GLAPIENTRYP ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 913 */
+ void (GLAPIENTRYP ProgramUniform4i)(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); /* 914 */
+ void (GLAPIENTRYP ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 915 */
+ void (GLAPIENTRYP ProgramUniform4ui)(GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 916 */
+ void (GLAPIENTRYP ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 917 */
+ void (GLAPIENTRYP ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 918 */
+ void (GLAPIENTRYP ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 919 */
+ void (GLAPIENTRYP ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 920 */
+ void (GLAPIENTRYP ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 921 */
+ void (GLAPIENTRYP ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 922 */
+ void (GLAPIENTRYP ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 923 */
+ void (GLAPIENTRYP ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 924 */
+ void (GLAPIENTRYP ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 925 */
+ void (GLAPIENTRYP ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 926 */
+ void (GLAPIENTRYP UnlockArraysEXT)(void); /* 927 */
+ void (GLAPIENTRYP UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); /* 928 */
+ void (GLAPIENTRYP ValidateProgramPipeline)(GLuint pipeline); /* 929 */
+ void (GLAPIENTRYP DebugMessageCallback)(GLDEBUGPROC callback, const GLvoid * userParam); /* 930 */
+ void (GLAPIENTRYP DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); /* 931 */
+ void (GLAPIENTRYP DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); /* 932 */
+ GLuint (GLAPIENTRYP GetDebugMessageLog)(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); /* 933 */
+ void (GLAPIENTRYP GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); /* 934 */
+ void (GLAPIENTRYP GetObjectPtrLabel)(const GLvoid * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); /* 935 */
+ void (GLAPIENTRYP ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); /* 936 */
+ void (GLAPIENTRYP ObjectPtrLabel)(const GLvoid * ptr, GLsizei length, const GLchar * label); /* 937 */
+ void (GLAPIENTRYP PopDebugGroup)(void); /* 938 */
+ void (GLAPIENTRYP PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); /* 939 */
+ void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 940 */
+ void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 941 */
+ void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount); /* 942 */
+ void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 943 */
+ void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 944 */
+ void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 945 */
+ void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 946 */
+ void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 947 */
+ void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 948 */
+ void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 949 */
+ void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 950 */
+ void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 951 */
+ void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 952 */
+ void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 953 */
+ void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 954 */
+ void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 955 */
+ GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 956 */
+ void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 957 */
+ void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 958 */
+ void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 959 */
+ void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 960 */
+ void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 961 */
+ void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 962 */
+ void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 963 */
+ void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 964 */
+ void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 965 */
+ void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 966 */
+ void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 967 */
+ void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 968 */
+ void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 969 */
+ void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 970 */
+ void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 971 */
+ void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 972 */
+ void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 973 */
+ void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 974 */
+ void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 975 */
+ void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 976 */
+ void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 977 */
+ void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 978 */
+ void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 979 */
+ void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 980 */
+ void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 981 */
+ void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 982 */
+ void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 983 */
+ void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 984 */
+ void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 985 */
+ void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 986 */
+ void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 987 */
+ void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 988 */
+ void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 989 */
+ void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 990 */
+ void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 991 */
+ void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 992 */
+ void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 993 */
+ void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 994 */
+ void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 995 */
+ void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 996 */
+ void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 997 */
+ void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 998 */
+ void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 999 */
+ void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1000 */
+ void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1001 */
+ void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1002 */
+ void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1003 */
+ void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1004 */
+ void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1005 */
+ void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1006 */
+ void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1007 */
+ void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1008 */
+ void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1009 */
+ void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 1010 */
+ void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 1011 */
+ void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 1012 */
+ void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 1013 */
+ void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 1014 */
+ void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1015 */
+ void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1016 */
+ void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1017 */
+ void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 1018 */
+ void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 1019 */
+ void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1020 */
+ void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1021 */
+ void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 1022 */
+ void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 1023 */
+ void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 1024 */
+ GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 1025 */
+ void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 1026 */
+ void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 1027 */
+ void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 1028 */
+ void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 1029 */
+ void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 1030 */
+ void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 1031 */
+ void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 1032 */
+ void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 1033 */
+ void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1034 */
+ void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 1035 */
+ void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1036 */
+ void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 1037 */
+ void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 1038 */
+ void (GLAPIENTRYP GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed * params); /* 1039 */
+ void (GLAPIENTRYP TexGenxOES)(GLenum coord, GLenum pname, GLint param); /* 1040 */
+ void (GLAPIENTRYP TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed * params); /* 1041 */
+ void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 1042 */
+ void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 1043 */
+ void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1044 */
+ void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1045 */
+ void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1046 */
+ void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 1047 */
+ void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 1048 */
+ void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 1049 */
+ void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 1050 */
+ void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 1051 */
+ void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 1052 */
+ void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 1053 */
+ void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 1054 */
+ void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 1055 */
+ void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 1056 */
+ void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 1057 */
+ void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 1058 */
+ void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 1059 */
+ void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 1060 */
+ void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 1061 */
+ void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 1062 */
+ void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1063 */
+ void (GLAPIENTRYP BeginPerfMonitorAMD)(GLuint monitor); /* 1064 */
+ void (GLAPIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1065 */
+ void (GLAPIENTRYP EndPerfMonitorAMD)(GLuint monitor); /* 1066 */
+ void (GLAPIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1067 */
+ void (GLAPIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten); /* 1068 */
+ void (GLAPIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid * data); /* 1069 */
+ void (GLAPIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString); /* 1070 */
+ void (GLAPIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei countersSize, GLuint * counters); /* 1071 */
+ void (GLAPIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString); /* 1072 */
+ void (GLAPIENTRYP GetPerfMonitorGroupsAMD)(GLint * numGroups, GLsizei groupsSize, GLuint * groups); /* 1073 */
+ void (GLAPIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList); /* 1074 */
+ void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 1075 */
+ GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1076 */
+ GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1077 */
+ void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 1078 */
+ GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 1079 */
+ void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 1080 */
+ void (GLAPIENTRYP TextureBarrierNV)(void); /* 1081 */
+ void (GLAPIENTRYP VDPAUFiniNV)(void); /* 1082 */
+ void (GLAPIENTRYP VDPAUGetSurfaceivNV)(GLintptr surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 1083 */
+ void (GLAPIENTRYP VDPAUInitNV)(const GLvoid * vdpDevice, const GLvoid * getProcAddress); /* 1084 */
+ GLboolean (GLAPIENTRYP VDPAUIsSurfaceNV)(GLintptr surface); /* 1085 */
+ void (GLAPIENTRYP VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1086 */
+ GLintptr (GLAPIENTRYP VDPAURegisterOutputSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1087 */
+ GLintptr (GLAPIENTRYP VDPAURegisterVideoSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1088 */
+ void (GLAPIENTRYP VDPAUSurfaceAccessNV)(GLintptr surface, GLenum access); /* 1089 */
+ void (GLAPIENTRYP VDPAUUnmapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1090 */
+ void (GLAPIENTRYP VDPAUUnregisterSurfaceNV)(GLintptr surface); /* 1091 */
+ void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1092 */
+ void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1093 */
+ void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1094 */
+ void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 1095 */
+ void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 1096 */
+ void (GLAPIENTRYP AlphaFuncx)(GLenum func, GLclampx ref); /* 1097 */
+ void (GLAPIENTRYP ClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); /* 1098 */
+ void (GLAPIENTRYP ClearDepthx)(GLclampx depth); /* 1099 */
+ void (GLAPIENTRYP Color4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1100 */
+ void (GLAPIENTRYP DepthRangex)(GLclampx zNear, GLclampx zFar); /* 1101 */
+ void (GLAPIENTRYP Fogx)(GLenum pname, GLfixed param); /* 1102 */
+ void (GLAPIENTRYP Fogxv)(GLenum pname, const GLfixed * params); /* 1103 */
+ void (GLAPIENTRYP Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1104 */
+ void (GLAPIENTRYP Frustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1105 */
+ void (GLAPIENTRYP LightModelx)(GLenum pname, GLfixed param); /* 1106 */
+ void (GLAPIENTRYP LightModelxv)(GLenum pname, const GLfixed * params); /* 1107 */
+ void (GLAPIENTRYP Lightx)(GLenum light, GLenum pname, GLfixed param); /* 1108 */
+ void (GLAPIENTRYP Lightxv)(GLenum light, GLenum pname, const GLfixed * params); /* 1109 */
+ void (GLAPIENTRYP LineWidthx)(GLfixed width); /* 1110 */
+ void (GLAPIENTRYP LoadMatrixx)(const GLfixed * m); /* 1111 */
+ void (GLAPIENTRYP Materialx)(GLenum face, GLenum pname, GLfixed param); /* 1112 */
+ void (GLAPIENTRYP Materialxv)(GLenum face, GLenum pname, const GLfixed * params); /* 1113 */
+ void (GLAPIENTRYP MultMatrixx)(const GLfixed * m); /* 1114 */
+ void (GLAPIENTRYP MultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 1115 */
+ void (GLAPIENTRYP Normal3x)(GLfixed nx, GLfixed ny, GLfixed nz); /* 1116 */
+ void (GLAPIENTRYP Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1117 */
+ void (GLAPIENTRYP Orthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1118 */
+ void (GLAPIENTRYP PointSizex)(GLfixed size); /* 1119 */
+ void (GLAPIENTRYP PolygonOffsetx)(GLfixed factor, GLfixed units); /* 1120 */
+ void (GLAPIENTRYP Rotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 1121 */
+ void (GLAPIENTRYP SampleCoveragex)(GLclampx value, GLboolean invert); /* 1122 */
+ void (GLAPIENTRYP Scalex)(GLfixed x, GLfixed y, GLfixed z); /* 1123 */
+ void (GLAPIENTRYP TexEnvx)(GLenum target, GLenum pname, GLfixed param); /* 1124 */
+ void (GLAPIENTRYP TexEnvxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1125 */
+ void (GLAPIENTRYP TexParameterx)(GLenum target, GLenum pname, GLfixed param); /* 1126 */
+ void (GLAPIENTRYP Translatex)(GLfixed x, GLfixed y, GLfixed z); /* 1127 */
+ void (GLAPIENTRYP ClipPlanef)(GLenum plane, const GLfloat * equation); /* 1128 */
+ void (GLAPIENTRYP ClipPlanex)(GLenum plane, const GLfixed * equation); /* 1129 */
+ void (GLAPIENTRYP GetClipPlanef)(GLenum plane, GLfloat * equation); /* 1130 */
+ void (GLAPIENTRYP GetClipPlanex)(GLenum plane, GLfixed * equation); /* 1131 */
+ void (GLAPIENTRYP GetFixedv)(GLenum pname, GLfixed * params); /* 1132 */
+ void (GLAPIENTRYP GetLightxv)(GLenum light, GLenum pname, GLfixed * params); /* 1133 */
+ void (GLAPIENTRYP GetMaterialxv)(GLenum face, GLenum pname, GLfixed * params); /* 1134 */
+ void (GLAPIENTRYP GetTexEnvxv)(GLenum target, GLenum pname, GLfixed * params); /* 1135 */
+ void (GLAPIENTRYP GetTexParameterxv)(GLenum target, GLenum pname, GLfixed * params); /* 1136 */
+ void (GLAPIENTRYP PointParameterx)(GLenum pname, GLfixed param); /* 1137 */
+ void (GLAPIENTRYP PointParameterxv)(GLenum pname, const GLfixed * params); /* 1138 */
+ void (GLAPIENTRYP TexParameterxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1139 */
#endif /* !defined HAVE_SHARED_GLAPI */
};
diff --git a/xorg-server/glx/glfunctions.h b/xorg-server/glx/glfunctions.h
index b15d05eb8..6634f827a 100644
--- a/xorg-server/glx/glfunctions.h
+++ b/xorg-server/glx/glfunctions.h
@@ -31,7 +31,7 @@
#include "glapitable.h"
#include "glapi.h"
-#include "glthread.h"
+#include "u_thread.h"
#include "dispatch.h"
#define glNewList(a1, a2) CALL_NewList(GET_DISPATCH(), (a1, a2))
@@ -892,6 +892,7 @@
#define glTexBufferRange(a1, a2, a3, a4, a5) CALL_TexBufferRange(GET_DISPATCH(), (a1, a2, a3, a4, a5))
#define glTexStorage2DMultisample(a1, a2, a3, a4, a5, a6) CALL_TexStorage2DMultisample(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
#define glTexStorage3DMultisample(a1, a2, a3, a4, a5, a6, a7) CALL_TexStorage3DMultisample(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6, a7))
+#define glBufferStorage(a1, a2, a3, a4) CALL_BufferStorage(GET_DISPATCH(), (a1, a2, a3, a4))
#define glInvalidateBufferData(a1) CALL_InvalidateBufferData(GET_DISPATCH(), (a1))
#define glInvalidateBufferSubData(a1, a2, a3) CALL_InvalidateBufferSubData(GET_DISPATCH(), (a1, a2, a3))
#define glInvalidateFramebuffer(a1, a2, a3) CALL_InvalidateFramebuffer(GET_DISPATCH(), (a1, a2, a3))
@@ -918,8 +919,51 @@
#define glTexCoordPointerEXT(a1, a2, a3, a4, a5) CALL_TexCoordPointerEXT(GET_DISPATCH(), (a1, a2, a3, a4, a5))
#define glVertexPointerEXT(a1, a2, a3, a4, a5) CALL_VertexPointerEXT(GET_DISPATCH(), (a1, a2, a3, a4, a5))
#define glDiscardFramebufferEXT(a1, a2, a3) CALL_DiscardFramebufferEXT(GET_DISPATCH(), (a1, a2, a3))
+#define glActiveShaderProgram(a1, a2) CALL_ActiveShaderProgram(GET_DISPATCH(), (a1, a2))
+#define glBindProgramPipeline(a1) CALL_BindProgramPipeline(GET_DISPATCH(), (a1))
+#define glCreateShaderProgramv(a1, a2, a3) CALL_CreateShaderProgramv(GET_DISPATCH(), (a1, a2, a3))
+#define glDeleteProgramPipelines(a1, a2) CALL_DeleteProgramPipelines(GET_DISPATCH(), (a1, a2))
+#define glGenProgramPipelines(a1, a2) CALL_GenProgramPipelines(GET_DISPATCH(), (a1, a2))
+#define glGetProgramPipelineInfoLog(a1, a2, a3, a4) CALL_GetProgramPipelineInfoLog(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glGetProgramPipelineiv(a1, a2, a3) CALL_GetProgramPipelineiv(GET_DISPATCH(), (a1, a2, a3))
+#define glIsProgramPipeline(a1) CALL_IsProgramPipeline(GET_DISPATCH(), (a1))
#define glLockArraysEXT(a1, a2) CALL_LockArraysEXT(GET_DISPATCH(), (a1, a2))
+#define glProgramUniform1f(a1, a2, a3) CALL_ProgramUniform1f(GET_DISPATCH(), (a1, a2, a3))
+#define glProgramUniform1fv(a1, a2, a3, a4) CALL_ProgramUniform1fv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform1i(a1, a2, a3) CALL_ProgramUniform1i(GET_DISPATCH(), (a1, a2, a3))
+#define glProgramUniform1iv(a1, a2, a3, a4) CALL_ProgramUniform1iv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform1ui(a1, a2, a3) CALL_ProgramUniform1ui(GET_DISPATCH(), (a1, a2, a3))
+#define glProgramUniform1uiv(a1, a2, a3, a4) CALL_ProgramUniform1uiv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2f(a1, a2, a3, a4) CALL_ProgramUniform2f(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2fv(a1, a2, a3, a4) CALL_ProgramUniform2fv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2i(a1, a2, a3, a4) CALL_ProgramUniform2i(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2iv(a1, a2, a3, a4) CALL_ProgramUniform2iv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2ui(a1, a2, a3, a4) CALL_ProgramUniform2ui(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform2uiv(a1, a2, a3, a4) CALL_ProgramUniform2uiv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform3f(a1, a2, a3, a4, a5) CALL_ProgramUniform3f(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniform3fv(a1, a2, a3, a4) CALL_ProgramUniform3fv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform3i(a1, a2, a3, a4, a5) CALL_ProgramUniform3i(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniform3iv(a1, a2, a3, a4) CALL_ProgramUniform3iv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform3ui(a1, a2, a3, a4, a5) CALL_ProgramUniform3ui(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniform3uiv(a1, a2, a3, a4) CALL_ProgramUniform3uiv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform4f(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4f(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
+#define glProgramUniform4fv(a1, a2, a3, a4) CALL_ProgramUniform4fv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform4i(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4i(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
+#define glProgramUniform4iv(a1, a2, a3, a4) CALL_ProgramUniform4iv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniform4ui(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4ui(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
+#define glProgramUniform4uiv(a1, a2, a3, a4) CALL_ProgramUniform4uiv(GET_DISPATCH(), (a1, a2, a3, a4))
+#define glProgramUniformMatrix2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix2x3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2x3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix2x4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2x4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix3x2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3x2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix3x4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3x4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix4x2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4x2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
+#define glProgramUniformMatrix4x3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4x3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5))
#define glUnlockArraysEXT() CALL_UnlockArraysEXT(GET_DISPATCH(), ())
+#define glUseProgramStages(a1, a2, a3) CALL_UseProgramStages(GET_DISPATCH(), (a1, a2, a3))
+#define glValidateProgramPipeline(a1) CALL_ValidateProgramPipeline(GET_DISPATCH(), (a1))
#define glDebugMessageCallback(a1, a2) CALL_DebugMessageCallback(GET_DISPATCH(), (a1, a2))
#define glDebugMessageControl(a1, a2, a3, a4, a5, a6) CALL_DebugMessageControl(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
#define glDebugMessageInsert(a1, a2, a3, a4, a5, a6) CALL_DebugMessageInsert(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6))
diff --git a/xorg-server/glx/glprocs.h b/xorg-server/glx/glprocs.h
index 8b3af8752..d96269bab 100644
--- a/xorg-server/glx/glprocs.h
+++ b/xorg-server/glx/glprocs.h
@@ -910,6 +910,7 @@ static const char gl_string_table[] =
"glTexBufferRange\0"
"glTexStorage2DMultisample\0"
"glTexStorage3DMultisample\0"
+ "glBufferStorage\0"
"glInvalidateBufferData\0"
"glInvalidateBufferSubData\0"
"glInvalidateFramebuffer\0"
@@ -936,8 +937,51 @@ static const char gl_string_table[] =
"glTexCoordPointerEXT\0"
"glVertexPointerEXT\0"
"glDiscardFramebufferEXT\0"
+ "glActiveShaderProgram\0"
+ "glBindProgramPipeline\0"
+ "glCreateShaderProgramv\0"
+ "glDeleteProgramPipelines\0"
+ "glGenProgramPipelines\0"
+ "glGetProgramPipelineInfoLog\0"
+ "glGetProgramPipelineiv\0"
+ "glIsProgramPipeline\0"
"glLockArraysEXT\0"
+ "glProgramUniform1f\0"
+ "glProgramUniform1fv\0"
+ "glProgramUniform1i\0"
+ "glProgramUniform1iv\0"
+ "glProgramUniform1ui\0"
+ "glProgramUniform1uiv\0"
+ "glProgramUniform2f\0"
+ "glProgramUniform2fv\0"
+ "glProgramUniform2i\0"
+ "glProgramUniform2iv\0"
+ "glProgramUniform2ui\0"
+ "glProgramUniform2uiv\0"
+ "glProgramUniform3f\0"
+ "glProgramUniform3fv\0"
+ "glProgramUniform3i\0"
+ "glProgramUniform3iv\0"
+ "glProgramUniform3ui\0"
+ "glProgramUniform3uiv\0"
+ "glProgramUniform4f\0"
+ "glProgramUniform4fv\0"
+ "glProgramUniform4i\0"
+ "glProgramUniform4iv\0"
+ "glProgramUniform4ui\0"
+ "glProgramUniform4uiv\0"
+ "glProgramUniformMatrix2fv\0"
+ "glProgramUniformMatrix2x3fv\0"
+ "glProgramUniformMatrix2x4fv\0"
+ "glProgramUniformMatrix3fv\0"
+ "glProgramUniformMatrix3x2fv\0"
+ "glProgramUniformMatrix3x4fv\0"
+ "glProgramUniformMatrix4fv\0"
+ "glProgramUniformMatrix4x2fv\0"
+ "glProgramUniformMatrix4x3fv\0"
"glUnlockArraysEXT\0"
+ "glUseProgramStages\0"
+ "glValidateProgramPipeline\0"
"glDebugMessageCallback\0"
"glDebugMessageControl\0"
"glDebugMessageInsert\0"
@@ -1627,7 +1671,6 @@ static const char gl_string_table[] =
#define gl_dispatch_stub_732 mgl_dispatch_stub_732
#define gl_dispatch_stub_733 mgl_dispatch_stub_733
#define gl_dispatch_stub_832 mgl_dispatch_stub_832
-#define gl_dispatch_stub_865 mgl_dispatch_stub_865
#define gl_dispatch_stub_866 mgl_dispatch_stub_866
#define gl_dispatch_stub_867 mgl_dispatch_stub_867
#define gl_dispatch_stub_868 mgl_dispatch_stub_868
@@ -1639,64 +1682,65 @@ static const char gl_string_table[] =
#define gl_dispatch_stub_874 mgl_dispatch_stub_874
#define gl_dispatch_stub_875 mgl_dispatch_stub_875
#define gl_dispatch_stub_876 mgl_dispatch_stub_876
-#define gl_dispatch_stub_883 mgl_dispatch_stub_883
-#define gl_dispatch_stub_910 mgl_dispatch_stub_910
-#define gl_dispatch_stub_911 mgl_dispatch_stub_911
-#define gl_dispatch_stub_985 mgl_dispatch_stub_985
-#define gl_dispatch_stub_986 mgl_dispatch_stub_986
-#define gl_dispatch_stub_987 mgl_dispatch_stub_987
-#define gl_dispatch_stub_995 mgl_dispatch_stub_995
-#define gl_dispatch_stub_996 mgl_dispatch_stub_996
-#define gl_dispatch_stub_997 mgl_dispatch_stub_997
-#define gl_dispatch_stub_998 mgl_dispatch_stub_998
-#define gl_dispatch_stub_1001 mgl_dispatch_stub_1001
-#define gl_dispatch_stub_1002 mgl_dispatch_stub_1002
-#define gl_dispatch_stub_1048 mgl_dispatch_stub_1048
-#define gl_dispatch_stub_1049 mgl_dispatch_stub_1049
-#define gl_dispatch_stub_1050 mgl_dispatch_stub_1050
-#define gl_dispatch_stub_1053 mgl_dispatch_stub_1053
-#define gl_dispatch_stub_1054 mgl_dispatch_stub_1054
-#define gl_dispatch_stub_1055 mgl_dispatch_stub_1055
-#define gl_dispatch_stub_1056 mgl_dispatch_stub_1056
-#define gl_dispatch_stub_1057 mgl_dispatch_stub_1057
-#define gl_dispatch_stub_1058 mgl_dispatch_stub_1058
-#define gl_dispatch_stub_1059 mgl_dispatch_stub_1059
-#define gl_dispatch_stub_1060 mgl_dispatch_stub_1060
-#define gl_dispatch_stub_1061 mgl_dispatch_stub_1061
-#define gl_dispatch_stub_1062 mgl_dispatch_stub_1062
-#define gl_dispatch_stub_1063 mgl_dispatch_stub_1063
-#define gl_dispatch_stub_1064 mgl_dispatch_stub_1064
-#define gl_dispatch_stub_1065 mgl_dispatch_stub_1065
-#define gl_dispatch_stub_1066 mgl_dispatch_stub_1066
-#define gl_dispatch_stub_1067 mgl_dispatch_stub_1067
-#define gl_dispatch_stub_1068 mgl_dispatch_stub_1068
-#define gl_dispatch_stub_1069 mgl_dispatch_stub_1069
-#define gl_dispatch_stub_1070 mgl_dispatch_stub_1070
-#define gl_dispatch_stub_1071 mgl_dispatch_stub_1071
-#define gl_dispatch_stub_1072 mgl_dispatch_stub_1072
-#define gl_dispatch_stub_1073 mgl_dispatch_stub_1073
-#define gl_dispatch_stub_1074 mgl_dispatch_stub_1074
-#define gl_dispatch_stub_1075 mgl_dispatch_stub_1075
-#define gl_dispatch_stub_1076 mgl_dispatch_stub_1076
-#define gl_dispatch_stub_1077 mgl_dispatch_stub_1077
-#define gl_dispatch_stub_1078 mgl_dispatch_stub_1078
-#define gl_dispatch_stub_1079 mgl_dispatch_stub_1079
-#define gl_dispatch_stub_1080 mgl_dispatch_stub_1080
-#define gl_dispatch_stub_1081 mgl_dispatch_stub_1081
-#define gl_dispatch_stub_1082 mgl_dispatch_stub_1082
-#define gl_dispatch_stub_1083 mgl_dispatch_stub_1083
-#define gl_dispatch_stub_1084 mgl_dispatch_stub_1084
-#define gl_dispatch_stub_1085 mgl_dispatch_stub_1085
-#define gl_dispatch_stub_1086 mgl_dispatch_stub_1086
-#define gl_dispatch_stub_1087 mgl_dispatch_stub_1087
-#define gl_dispatch_stub_1088 mgl_dispatch_stub_1088
-#define gl_dispatch_stub_1089 mgl_dispatch_stub_1089
-#define gl_dispatch_stub_1090 mgl_dispatch_stub_1090
-#define gl_dispatch_stub_1091 mgl_dispatch_stub_1091
+#define gl_dispatch_stub_877 mgl_dispatch_stub_877
+#define gl_dispatch_stub_884 mgl_dispatch_stub_884
+#define gl_dispatch_stub_954 mgl_dispatch_stub_954
+#define gl_dispatch_stub_955 mgl_dispatch_stub_955
+#define gl_dispatch_stub_1029 mgl_dispatch_stub_1029
+#define gl_dispatch_stub_1030 mgl_dispatch_stub_1030
+#define gl_dispatch_stub_1031 mgl_dispatch_stub_1031
+#define gl_dispatch_stub_1039 mgl_dispatch_stub_1039
+#define gl_dispatch_stub_1040 mgl_dispatch_stub_1040
+#define gl_dispatch_stub_1041 mgl_dispatch_stub_1041
+#define gl_dispatch_stub_1042 mgl_dispatch_stub_1042
+#define gl_dispatch_stub_1045 mgl_dispatch_stub_1045
+#define gl_dispatch_stub_1046 mgl_dispatch_stub_1046
#define gl_dispatch_stub_1092 mgl_dispatch_stub_1092
#define gl_dispatch_stub_1093 mgl_dispatch_stub_1093
#define gl_dispatch_stub_1094 mgl_dispatch_stub_1094
-#define gl_dispatch_stub_1095 mgl_dispatch_stub_1095
+#define gl_dispatch_stub_1097 mgl_dispatch_stub_1097
+#define gl_dispatch_stub_1098 mgl_dispatch_stub_1098
+#define gl_dispatch_stub_1099 mgl_dispatch_stub_1099
+#define gl_dispatch_stub_1100 mgl_dispatch_stub_1100
+#define gl_dispatch_stub_1101 mgl_dispatch_stub_1101
+#define gl_dispatch_stub_1102 mgl_dispatch_stub_1102
+#define gl_dispatch_stub_1103 mgl_dispatch_stub_1103
+#define gl_dispatch_stub_1104 mgl_dispatch_stub_1104
+#define gl_dispatch_stub_1105 mgl_dispatch_stub_1105
+#define gl_dispatch_stub_1106 mgl_dispatch_stub_1106
+#define gl_dispatch_stub_1107 mgl_dispatch_stub_1107
+#define gl_dispatch_stub_1108 mgl_dispatch_stub_1108
+#define gl_dispatch_stub_1109 mgl_dispatch_stub_1109
+#define gl_dispatch_stub_1110 mgl_dispatch_stub_1110
+#define gl_dispatch_stub_1111 mgl_dispatch_stub_1111
+#define gl_dispatch_stub_1112 mgl_dispatch_stub_1112
+#define gl_dispatch_stub_1113 mgl_dispatch_stub_1113
+#define gl_dispatch_stub_1114 mgl_dispatch_stub_1114
+#define gl_dispatch_stub_1115 mgl_dispatch_stub_1115
+#define gl_dispatch_stub_1116 mgl_dispatch_stub_1116
+#define gl_dispatch_stub_1117 mgl_dispatch_stub_1117
+#define gl_dispatch_stub_1118 mgl_dispatch_stub_1118
+#define gl_dispatch_stub_1119 mgl_dispatch_stub_1119
+#define gl_dispatch_stub_1120 mgl_dispatch_stub_1120
+#define gl_dispatch_stub_1121 mgl_dispatch_stub_1121
+#define gl_dispatch_stub_1122 mgl_dispatch_stub_1122
+#define gl_dispatch_stub_1123 mgl_dispatch_stub_1123
+#define gl_dispatch_stub_1124 mgl_dispatch_stub_1124
+#define gl_dispatch_stub_1125 mgl_dispatch_stub_1125
+#define gl_dispatch_stub_1126 mgl_dispatch_stub_1126
+#define gl_dispatch_stub_1127 mgl_dispatch_stub_1127
+#define gl_dispatch_stub_1128 mgl_dispatch_stub_1128
+#define gl_dispatch_stub_1129 mgl_dispatch_stub_1129
+#define gl_dispatch_stub_1130 mgl_dispatch_stub_1130
+#define gl_dispatch_stub_1131 mgl_dispatch_stub_1131
+#define gl_dispatch_stub_1132 mgl_dispatch_stub_1132
+#define gl_dispatch_stub_1133 mgl_dispatch_stub_1133
+#define gl_dispatch_stub_1134 mgl_dispatch_stub_1134
+#define gl_dispatch_stub_1135 mgl_dispatch_stub_1135
+#define gl_dispatch_stub_1136 mgl_dispatch_stub_1136
+#define gl_dispatch_stub_1137 mgl_dispatch_stub_1137
+#define gl_dispatch_stub_1138 mgl_dispatch_stub_1138
+#define gl_dispatch_stub_1139 mgl_dispatch_stub_1139
#endif /* USE_MGL_NAMESPACE */
@@ -1718,76 +1762,76 @@ void GLAPIENTRY gl_dispatch_stub_731(GLuint id, GLenum pname, GLint64 * params);
void GLAPIENTRY gl_dispatch_stub_732(GLuint id, GLenum pname, GLuint64 * params);
void GLAPIENTRY gl_dispatch_stub_733(GLuint id, GLenum target);
void GLAPIENTRY gl_dispatch_stub_832(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_865(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-void GLAPIENTRY gl_dispatch_stub_866(const GLfloat * coords);
-void GLAPIENTRY gl_dispatch_stub_867(GLint x, GLint y, GLint z, GLint width, GLint height);
-void GLAPIENTRY gl_dispatch_stub_868(const GLint * coords);
-void GLAPIENTRY gl_dispatch_stub_869(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-void GLAPIENTRY gl_dispatch_stub_870(const GLshort * coords);
-void GLAPIENTRY gl_dispatch_stub_871(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-void GLAPIENTRY gl_dispatch_stub_872(const GLfixed * coords);
-void GLAPIENTRY gl_dispatch_stub_873(GLenum type, GLsizei stride, const GLvoid * pointer);
-GLbitfield GLAPIENTRY gl_dispatch_stub_874(GLfixed * mantissa, GLint * exponent);
-void GLAPIENTRY gl_dispatch_stub_875(GLclampf value, GLboolean invert);
-void GLAPIENTRY gl_dispatch_stub_876(GLenum pattern);
-void GLAPIENTRY gl_dispatch_stub_883(GLenum target, GLsizei numAttachments, const GLenum * attachments);
-void GLAPIENTRY gl_dispatch_stub_910(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_911(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_985(GLenum face);
-void GLAPIENTRY gl_dispatch_stub_986(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_987(GLsizei n, GLuint * arrays);
-void GLAPIENTRY gl_dispatch_stub_995(GLenum coord, GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_996(GLenum coord, GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_997(GLenum coord, GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_998(GLclampd zmin, GLclampd zmax);
-void GLAPIENTRY gl_dispatch_stub_1001(GLenum target, GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_1002(GLenum target, GLintptr offset, GLsizeiptr size);
-void GLAPIENTRY gl_dispatch_stub_1048(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-void GLAPIENTRY gl_dispatch_stub_1049(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_1050(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_1053(GLenum func, GLclampx ref);
-void GLAPIENTRY gl_dispatch_stub_1054(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-void GLAPIENTRY gl_dispatch_stub_1055(GLclampx depth);
-void GLAPIENTRY gl_dispatch_stub_1056(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-void GLAPIENTRY gl_dispatch_stub_1057(GLclampx zNear, GLclampx zFar);
-void GLAPIENTRY gl_dispatch_stub_1058(GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1059(GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1060(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-void GLAPIENTRY gl_dispatch_stub_1061(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-void GLAPIENTRY gl_dispatch_stub_1062(GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1063(GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1064(GLenum light, GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1065(GLenum light, GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1066(GLfixed width);
-void GLAPIENTRY gl_dispatch_stub_1067(const GLfixed * m);
-void GLAPIENTRY gl_dispatch_stub_1068(GLenum face, GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1069(GLenum face, GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1070(const GLfixed * m);
-void GLAPIENTRY gl_dispatch_stub_1071(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-void GLAPIENTRY gl_dispatch_stub_1072(GLfixed nx, GLfixed ny, GLfixed nz);
-void GLAPIENTRY gl_dispatch_stub_1073(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-void GLAPIENTRY gl_dispatch_stub_1074(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-void GLAPIENTRY gl_dispatch_stub_1075(GLfixed size);
-void GLAPIENTRY gl_dispatch_stub_1076(GLfixed factor, GLfixed units);
-void GLAPIENTRY gl_dispatch_stub_1077(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-void GLAPIENTRY gl_dispatch_stub_1078(GLclampx value, GLboolean invert);
-void GLAPIENTRY gl_dispatch_stub_1079(GLfixed x, GLfixed y, GLfixed z);
-void GLAPIENTRY gl_dispatch_stub_1080(GLenum target, GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1081(GLenum target, GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1082(GLenum target, GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1083(GLfixed x, GLfixed y, GLfixed z);
-void GLAPIENTRY gl_dispatch_stub_1084(GLenum plane, const GLfloat * equation);
-void GLAPIENTRY gl_dispatch_stub_1085(GLenum plane, const GLfixed * equation);
-void GLAPIENTRY gl_dispatch_stub_1086(GLenum plane, GLfloat * equation);
-void GLAPIENTRY gl_dispatch_stub_1087(GLenum plane, GLfixed * equation);
-void GLAPIENTRY gl_dispatch_stub_1088(GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1089(GLenum light, GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1090(GLenum face, GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1091(GLenum target, GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1092(GLenum target, GLenum pname, GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1093(GLenum pname, GLfixed param);
-void GLAPIENTRY gl_dispatch_stub_1094(GLenum pname, const GLfixed * params);
-void GLAPIENTRY gl_dispatch_stub_1095(GLenum target, GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_866(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+void GLAPIENTRY gl_dispatch_stub_867(const GLfloat * coords);
+void GLAPIENTRY gl_dispatch_stub_868(GLint x, GLint y, GLint z, GLint width, GLint height);
+void GLAPIENTRY gl_dispatch_stub_869(const GLint * coords);
+void GLAPIENTRY gl_dispatch_stub_870(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+void GLAPIENTRY gl_dispatch_stub_871(const GLshort * coords);
+void GLAPIENTRY gl_dispatch_stub_872(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+void GLAPIENTRY gl_dispatch_stub_873(const GLfixed * coords);
+void GLAPIENTRY gl_dispatch_stub_874(GLenum type, GLsizei stride, const GLvoid * pointer);
+GLbitfield GLAPIENTRY gl_dispatch_stub_875(GLfixed * mantissa, GLint * exponent);
+void GLAPIENTRY gl_dispatch_stub_876(GLclampf value, GLboolean invert);
+void GLAPIENTRY gl_dispatch_stub_877(GLenum pattern);
+void GLAPIENTRY gl_dispatch_stub_884(GLenum target, GLsizei numAttachments, const GLenum * attachments);
+void GLAPIENTRY gl_dispatch_stub_954(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_955(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_1029(GLenum face);
+void GLAPIENTRY gl_dispatch_stub_1030(GLuint array);
+void GLAPIENTRY gl_dispatch_stub_1031(GLsizei n, GLuint * arrays);
+void GLAPIENTRY gl_dispatch_stub_1039(GLenum coord, GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1040(GLenum coord, GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_1041(GLenum coord, GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1042(GLclampd zmin, GLclampd zmax);
+void GLAPIENTRY gl_dispatch_stub_1045(GLenum target, GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_1046(GLenum target, GLintptr offset, GLsizeiptr size);
+void GLAPIENTRY gl_dispatch_stub_1092(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+void GLAPIENTRY gl_dispatch_stub_1093(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_1094(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_1097(GLenum func, GLclampx ref);
+void GLAPIENTRY gl_dispatch_stub_1098(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+void GLAPIENTRY gl_dispatch_stub_1099(GLclampx depth);
+void GLAPIENTRY gl_dispatch_stub_1100(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+void GLAPIENTRY gl_dispatch_stub_1101(GLclampx zNear, GLclampx zFar);
+void GLAPIENTRY gl_dispatch_stub_1102(GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1103(GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1104(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+void GLAPIENTRY gl_dispatch_stub_1105(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+void GLAPIENTRY gl_dispatch_stub_1106(GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1107(GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1108(GLenum light, GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1109(GLenum light, GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1110(GLfixed width);
+void GLAPIENTRY gl_dispatch_stub_1111(const GLfixed * m);
+void GLAPIENTRY gl_dispatch_stub_1112(GLenum face, GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1113(GLenum face, GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1114(const GLfixed * m);
+void GLAPIENTRY gl_dispatch_stub_1115(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+void GLAPIENTRY gl_dispatch_stub_1116(GLfixed nx, GLfixed ny, GLfixed nz);
+void GLAPIENTRY gl_dispatch_stub_1117(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+void GLAPIENTRY gl_dispatch_stub_1118(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+void GLAPIENTRY gl_dispatch_stub_1119(GLfixed size);
+void GLAPIENTRY gl_dispatch_stub_1120(GLfixed factor, GLfixed units);
+void GLAPIENTRY gl_dispatch_stub_1121(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+void GLAPIENTRY gl_dispatch_stub_1122(GLclampx value, GLboolean invert);
+void GLAPIENTRY gl_dispatch_stub_1123(GLfixed x, GLfixed y, GLfixed z);
+void GLAPIENTRY gl_dispatch_stub_1124(GLenum target, GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1125(GLenum target, GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1126(GLenum target, GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1127(GLfixed x, GLfixed y, GLfixed z);
+void GLAPIENTRY gl_dispatch_stub_1128(GLenum plane, const GLfloat * equation);
+void GLAPIENTRY gl_dispatch_stub_1129(GLenum plane, const GLfixed * equation);
+void GLAPIENTRY gl_dispatch_stub_1130(GLenum plane, GLfloat * equation);
+void GLAPIENTRY gl_dispatch_stub_1131(GLenum plane, GLfixed * equation);
+void GLAPIENTRY gl_dispatch_stub_1132(GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1133(GLenum light, GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1134(GLenum face, GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1135(GLenum target, GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1136(GLenum target, GLenum pname, GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1137(GLenum pname, GLfixed param);
+void GLAPIENTRY gl_dispatch_stub_1138(GLenum pname, const GLfixed * params);
+void GLAPIENTRY gl_dispatch_stub_1139(GLenum target, GLenum pname, const GLfixed * params);
#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */
static const glprocs_table_t static_functions[] = {
@@ -2649,702 +2693,746 @@ static const glprocs_table_t static_functions[] = {
NAME_FUNC_OFFSET(14379, glTexBufferRange, glTexBufferRange, NULL, 855),
NAME_FUNC_OFFSET(14396, glTexStorage2DMultisample, glTexStorage2DMultisample, NULL, 856),
NAME_FUNC_OFFSET(14422, glTexStorage3DMultisample, glTexStorage3DMultisample, NULL, 857),
- NAME_FUNC_OFFSET(14448, glInvalidateBufferData, glInvalidateBufferData, NULL, 858),
- NAME_FUNC_OFFSET(14471, glInvalidateBufferSubData, glInvalidateBufferSubData, NULL, 859),
- NAME_FUNC_OFFSET(14497, glInvalidateFramebuffer, glInvalidateFramebuffer, NULL, 860),
- NAME_FUNC_OFFSET(14521, glInvalidateSubFramebuffer, glInvalidateSubFramebuffer, NULL, 861),
- NAME_FUNC_OFFSET(14548, glInvalidateTexImage, glInvalidateTexImage, NULL, 862),
- NAME_FUNC_OFFSET(14569, glInvalidateTexSubImage, glInvalidateTexSubImage, NULL, 863),
- NAME_FUNC_OFFSET(14593, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 864),
- NAME_FUNC_OFFSET(14612, gl_dispatch_stub_865, gl_dispatch_stub_865, NULL, 865),
- NAME_FUNC_OFFSET(14626, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866),
- NAME_FUNC_OFFSET(14641, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867),
- NAME_FUNC_OFFSET(14655, gl_dispatch_stub_868, gl_dispatch_stub_868, NULL, 868),
- NAME_FUNC_OFFSET(14670, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL, 869),
- NAME_FUNC_OFFSET(14684, gl_dispatch_stub_870, gl_dispatch_stub_870, NULL, 870),
- NAME_FUNC_OFFSET(14699, gl_dispatch_stub_871, gl_dispatch_stub_871, NULL, 871),
- NAME_FUNC_OFFSET(14713, gl_dispatch_stub_872, gl_dispatch_stub_872, NULL, 872),
- NAME_FUNC_OFFSET(14728, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
- NAME_FUNC_OFFSET(14750, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874),
- NAME_FUNC_OFFSET(14768, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875),
- NAME_FUNC_OFFSET(14785, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876),
- NAME_FUNC_OFFSET(14805, glColorPointerEXT, glColorPointerEXT, NULL, 877),
- NAME_FUNC_OFFSET(14823, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 878),
- NAME_FUNC_OFFSET(14844, glIndexPointerEXT, glIndexPointerEXT, NULL, 879),
- NAME_FUNC_OFFSET(14862, glNormalPointerEXT, glNormalPointerEXT, NULL, 880),
- NAME_FUNC_OFFSET(14881, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 881),
- NAME_FUNC_OFFSET(14902, glVertexPointerEXT, glVertexPointerEXT, NULL, 882),
- NAME_FUNC_OFFSET(14921, gl_dispatch_stub_883, gl_dispatch_stub_883, NULL, 883),
- NAME_FUNC_OFFSET(14945, glLockArraysEXT, glLockArraysEXT, NULL, 884),
- NAME_FUNC_OFFSET(14961, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 885),
- NAME_FUNC_OFFSET(14979, glDebugMessageCallback, glDebugMessageCallback, NULL, 886),
- NAME_FUNC_OFFSET(15002, glDebugMessageControl, glDebugMessageControl, NULL, 887),
- NAME_FUNC_OFFSET(15024, glDebugMessageInsert, glDebugMessageInsert, NULL, 888),
- NAME_FUNC_OFFSET(15045, glGetDebugMessageLog, glGetDebugMessageLog, NULL, 889),
- NAME_FUNC_OFFSET(15066, glGetObjectLabel, glGetObjectLabel, NULL, 890),
- NAME_FUNC_OFFSET(15083, glGetObjectPtrLabel, glGetObjectPtrLabel, NULL, 891),
- NAME_FUNC_OFFSET(15103, glObjectLabel, glObjectLabel, NULL, 892),
- NAME_FUNC_OFFSET(15117, glObjectPtrLabel, glObjectPtrLabel, NULL, 893),
- NAME_FUNC_OFFSET(15134, glPopDebugGroup, glPopDebugGroup, NULL, 894),
- NAME_FUNC_OFFSET(15150, glPushDebugGroup, glPushDebugGroup, NULL, 895),
- NAME_FUNC_OFFSET(15167, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 896),
- NAME_FUNC_OFFSET(15189, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 897),
- NAME_FUNC_OFFSET(15212, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 898),
- NAME_FUNC_OFFSET(15235, glFogCoordfEXT, glFogCoordfEXT, NULL, 899),
- NAME_FUNC_OFFSET(15250, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 900),
- NAME_FUNC_OFFSET(15266, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 901),
- NAME_FUNC_OFFSET(15286, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 902),
- NAME_FUNC_OFFSET(15304, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 903),
- NAME_FUNC_OFFSET(15323, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 904),
- NAME_FUNC_OFFSET(15341, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 905),
- NAME_FUNC_OFFSET(15360, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 906),
- NAME_FUNC_OFFSET(15378, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 907),
- NAME_FUNC_OFFSET(15397, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 908),
- NAME_FUNC_OFFSET(15415, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 909),
- NAME_FUNC_OFFSET(15434, gl_dispatch_stub_910, gl_dispatch_stub_910, NULL, 910),
- NAME_FUNC_OFFSET(15459, gl_dispatch_stub_911, gl_dispatch_stub_911, NULL, 911),
- NAME_FUNC_OFFSET(15486, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 912),
- NAME_FUNC_OFFSET(15510, glExecuteProgramNV, glExecuteProgramNV, NULL, 913),
- NAME_FUNC_OFFSET(15529, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 914),
- NAME_FUNC_OFFSET(15555, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 915),
- NAME_FUNC_OFFSET(15581, glGetProgramStringNV, glGetProgramStringNV, NULL, 916),
- NAME_FUNC_OFFSET(15602, glGetProgramivNV, glGetProgramivNV, NULL, 917),
- NAME_FUNC_OFFSET(15619, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 918),
- NAME_FUNC_OFFSET(15640, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 919),
- NAME_FUNC_OFFSET(15662, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 920),
- NAME_FUNC_OFFSET(15684, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 921),
- NAME_FUNC_OFFSET(15706, glLoadProgramNV, glLoadProgramNV, NULL, 922),
- NAME_FUNC_OFFSET(15722, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 923),
- NAME_FUNC_OFFSET(15747, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 924),
- NAME_FUNC_OFFSET(15772, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 925),
- NAME_FUNC_OFFSET(15800, glTrackMatrixNV, glTrackMatrixNV, NULL, 926),
- NAME_FUNC_OFFSET(15816, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 927),
- NAME_FUNC_OFFSET(15835, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 928),
- NAME_FUNC_OFFSET(15855, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 929),
- NAME_FUNC_OFFSET(15874, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 930),
- NAME_FUNC_OFFSET(15894, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 931),
- NAME_FUNC_OFFSET(15913, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 932),
- NAME_FUNC_OFFSET(15933, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 933),
- NAME_FUNC_OFFSET(15952, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 934),
- NAME_FUNC_OFFSET(15972, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 935),
- NAME_FUNC_OFFSET(15991, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 936),
- NAME_FUNC_OFFSET(16011, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 937),
- NAME_FUNC_OFFSET(16030, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 938),
- NAME_FUNC_OFFSET(16050, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 939),
- NAME_FUNC_OFFSET(16069, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 940),
- NAME_FUNC_OFFSET(16089, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 941),
- NAME_FUNC_OFFSET(16108, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 942),
- NAME_FUNC_OFFSET(16128, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 943),
- NAME_FUNC_OFFSET(16147, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 944),
- NAME_FUNC_OFFSET(16167, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 945),
- NAME_FUNC_OFFSET(16186, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 946),
- NAME_FUNC_OFFSET(16206, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 947),
- NAME_FUNC_OFFSET(16225, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 948),
- NAME_FUNC_OFFSET(16245, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 949),
- NAME_FUNC_OFFSET(16264, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 950),
- NAME_FUNC_OFFSET(16284, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 951),
- NAME_FUNC_OFFSET(16304, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 952),
- NAME_FUNC_OFFSET(16325, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 953),
- NAME_FUNC_OFFSET(16349, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 954),
- NAME_FUNC_OFFSET(16370, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 955),
- NAME_FUNC_OFFSET(16391, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 956),
- NAME_FUNC_OFFSET(16412, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 957),
- NAME_FUNC_OFFSET(16433, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 958),
- NAME_FUNC_OFFSET(16454, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 959),
- NAME_FUNC_OFFSET(16475, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 960),
- NAME_FUNC_OFFSET(16496, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 961),
- NAME_FUNC_OFFSET(16517, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 962),
- NAME_FUNC_OFFSET(16538, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 963),
- NAME_FUNC_OFFSET(16559, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 964),
- NAME_FUNC_OFFSET(16580, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 965),
- NAME_FUNC_OFFSET(16601, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 966),
- NAME_FUNC_OFFSET(16623, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 967),
- NAME_FUNC_OFFSET(16650, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 968),
- NAME_FUNC_OFFSET(16677, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 969),
- NAME_FUNC_OFFSET(16701, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 970),
- NAME_FUNC_OFFSET(16725, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 971),
- NAME_FUNC_OFFSET(16747, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 972),
- NAME_FUNC_OFFSET(16769, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 973),
- NAME_FUNC_OFFSET(16791, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 974),
- NAME_FUNC_OFFSET(16816, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 975),
- NAME_FUNC_OFFSET(16840, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 976),
- NAME_FUNC_OFFSET(16862, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 977),
- NAME_FUNC_OFFSET(16884, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 978),
- NAME_FUNC_OFFSET(16906, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 979),
- NAME_FUNC_OFFSET(16932, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 980),
- NAME_FUNC_OFFSET(16955, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 981),
- NAME_FUNC_OFFSET(16979, glPassTexCoordATI, glPassTexCoordATI, NULL, 982),
- NAME_FUNC_OFFSET(16997, glSampleMapATI, glSampleMapATI, NULL, 983),
- NAME_FUNC_OFFSET(17012, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 984),
- NAME_FUNC_OFFSET(17043, gl_dispatch_stub_985, gl_dispatch_stub_985, NULL, 985),
- NAME_FUNC_OFFSET(17066, gl_dispatch_stub_986, gl_dispatch_stub_986, NULL, 986),
- NAME_FUNC_OFFSET(17089, gl_dispatch_stub_987, gl_dispatch_stub_987, NULL, 987),
- NAME_FUNC_OFFSET(17112, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 988),
- NAME_FUNC_OFFSET(17143, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 989),
- NAME_FUNC_OFFSET(17174, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 990),
- NAME_FUNC_OFFSET(17202, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 991),
- NAME_FUNC_OFFSET(17231, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 992),
- NAME_FUNC_OFFSET(17259, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 993),
- NAME_FUNC_OFFSET(17288, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 994),
- NAME_FUNC_OFFSET(17309, gl_dispatch_stub_995, gl_dispatch_stub_995, NULL, 995),
- NAME_FUNC_OFFSET(17326, gl_dispatch_stub_996, gl_dispatch_stub_996, NULL, 996),
- NAME_FUNC_OFFSET(17339, gl_dispatch_stub_997, gl_dispatch_stub_997, NULL, 997),
- NAME_FUNC_OFFSET(17353, gl_dispatch_stub_998, gl_dispatch_stub_998, NULL, 998),
- NAME_FUNC_OFFSET(17370, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 999),
- NAME_FUNC_OFFSET(17391, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 1000),
- NAME_FUNC_OFFSET(17413, gl_dispatch_stub_1001, gl_dispatch_stub_1001, NULL, 1001),
- NAME_FUNC_OFFSET(17437, gl_dispatch_stub_1002, gl_dispatch_stub_1002, NULL, 1002),
- NAME_FUNC_OFFSET(17467, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1003),
- NAME_FUNC_OFFSET(17488, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1004),
- NAME_FUNC_OFFSET(17510, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1005),
- NAME_FUNC_OFFSET(17531, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1006),
- NAME_FUNC_OFFSET(17553, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1007),
- NAME_FUNC_OFFSET(17575, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1008),
- NAME_FUNC_OFFSET(17598, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1009),
- NAME_FUNC_OFFSET(17619, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1010),
- NAME_FUNC_OFFSET(17641, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1011),
- NAME_FUNC_OFFSET(17663, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1012),
- NAME_FUNC_OFFSET(17686, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1013),
- NAME_FUNC_OFFSET(17707, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1014),
- NAME_FUNC_OFFSET(17729, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1015),
- NAME_FUNC_OFFSET(17751, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1016),
- NAME_FUNC_OFFSET(17774, glClearColorIiEXT, glClearColorIiEXT, NULL, 1017),
- NAME_FUNC_OFFSET(17792, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 1018),
- NAME_FUNC_OFFSET(17811, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 1019),
- NAME_FUNC_OFFSET(17833, glBeginPerfMonitorAMD, glBeginPerfMonitorAMD, NULL, 1020),
- NAME_FUNC_OFFSET(17855, glDeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, NULL, 1021),
- NAME_FUNC_OFFSET(17879, glEndPerfMonitorAMD, glEndPerfMonitorAMD, NULL, 1022),
- NAME_FUNC_OFFSET(17899, glGenPerfMonitorsAMD, glGenPerfMonitorsAMD, NULL, 1023),
- NAME_FUNC_OFFSET(17920, glGetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, NULL, 1024),
- NAME_FUNC_OFFSET(17951, glGetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, NULL, 1025),
- NAME_FUNC_OFFSET(17982, glGetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, NULL, 1026),
- NAME_FUNC_OFFSET(18015, glGetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, NULL, 1027),
- NAME_FUNC_OFFSET(18043, glGetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, NULL, 1028),
- NAME_FUNC_OFFSET(18074, glGetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, NULL, 1029),
- NAME_FUNC_OFFSET(18100, glSelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, NULL, 1030),
- NAME_FUNC_OFFSET(18131, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 1031),
- NAME_FUNC_OFFSET(18159, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 1032),
- NAME_FUNC_OFFSET(18182, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 1033),
- NAME_FUNC_OFFSET(18207, glActiveProgramEXT, glActiveProgramEXT, NULL, 1034),
- NAME_FUNC_OFFSET(18226, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 1035),
- NAME_FUNC_OFFSET(18251, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 1036),
- NAME_FUNC_OFFSET(18273, glTextureBarrierNV, glTextureBarrierNV, NULL, 1037),
- NAME_FUNC_OFFSET(18292, glVDPAUFiniNV, glVDPAUFiniNV, NULL, 1038),
- NAME_FUNC_OFFSET(18306, glVDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, NULL, 1039),
- NAME_FUNC_OFFSET(18328, glVDPAUInitNV, glVDPAUInitNV, NULL, 1040),
- NAME_FUNC_OFFSET(18342, glVDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, NULL, 1041),
- NAME_FUNC_OFFSET(18361, glVDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, NULL, 1042),
- NAME_FUNC_OFFSET(18382, glVDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, NULL, 1043),
- NAME_FUNC_OFFSET(18413, glVDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, NULL, 1044),
- NAME_FUNC_OFFSET(18443, glVDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, NULL, 1045),
- NAME_FUNC_OFFSET(18466, glVDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, NULL, 1046),
- NAME_FUNC_OFFSET(18489, glVDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, NULL, 1047),
- NAME_FUNC_OFFSET(18516, gl_dispatch_stub_1048, gl_dispatch_stub_1048, NULL, 1048),
- NAME_FUNC_OFFSET(18541, gl_dispatch_stub_1049, gl_dispatch_stub_1049, NULL, 1049),
- NAME_FUNC_OFFSET(18570, gl_dispatch_stub_1050, gl_dispatch_stub_1050, NULL, 1050),
- NAME_FUNC_OFFSET(18601, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 1051),
- NAME_FUNC_OFFSET(18640, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 1052),
- NAME_FUNC_OFFSET(18669, gl_dispatch_stub_1053, gl_dispatch_stub_1053, NULL, 1053),
- NAME_FUNC_OFFSET(18682, gl_dispatch_stub_1054, gl_dispatch_stub_1054, NULL, 1054),
- NAME_FUNC_OFFSET(18696, gl_dispatch_stub_1055, gl_dispatch_stub_1055, NULL, 1055),
- NAME_FUNC_OFFSET(18710, gl_dispatch_stub_1056, gl_dispatch_stub_1056, NULL, 1056),
- NAME_FUNC_OFFSET(18720, gl_dispatch_stub_1057, gl_dispatch_stub_1057, NULL, 1057),
- NAME_FUNC_OFFSET(18734, gl_dispatch_stub_1058, gl_dispatch_stub_1058, NULL, 1058),
- NAME_FUNC_OFFSET(18741, gl_dispatch_stub_1059, gl_dispatch_stub_1059, NULL, 1059),
- NAME_FUNC_OFFSET(18749, gl_dispatch_stub_1060, gl_dispatch_stub_1060, NULL, 1060),
- NAME_FUNC_OFFSET(18760, gl_dispatch_stub_1061, gl_dispatch_stub_1061, NULL, 1061),
- NAME_FUNC_OFFSET(18771, gl_dispatch_stub_1062, gl_dispatch_stub_1062, NULL, 1062),
- NAME_FUNC_OFFSET(18785, gl_dispatch_stub_1063, gl_dispatch_stub_1063, NULL, 1063),
- NAME_FUNC_OFFSET(18800, gl_dispatch_stub_1064, gl_dispatch_stub_1064, NULL, 1064),
- NAME_FUNC_OFFSET(18809, gl_dispatch_stub_1065, gl_dispatch_stub_1065, NULL, 1065),
- NAME_FUNC_OFFSET(18819, gl_dispatch_stub_1066, gl_dispatch_stub_1066, NULL, 1066),
- NAME_FUNC_OFFSET(18832, gl_dispatch_stub_1067, gl_dispatch_stub_1067, NULL, 1067),
- NAME_FUNC_OFFSET(18846, gl_dispatch_stub_1068, gl_dispatch_stub_1068, NULL, 1068),
- NAME_FUNC_OFFSET(18858, gl_dispatch_stub_1069, gl_dispatch_stub_1069, NULL, 1069),
- NAME_FUNC_OFFSET(18871, gl_dispatch_stub_1070, gl_dispatch_stub_1070, NULL, 1070),
- NAME_FUNC_OFFSET(18885, gl_dispatch_stub_1071, gl_dispatch_stub_1071, NULL, 1071),
- NAME_FUNC_OFFSET(18903, gl_dispatch_stub_1072, gl_dispatch_stub_1072, NULL, 1072),
- NAME_FUNC_OFFSET(18914, gl_dispatch_stub_1073, gl_dispatch_stub_1073, NULL, 1073),
- NAME_FUNC_OFFSET(18923, gl_dispatch_stub_1074, gl_dispatch_stub_1074, NULL, 1074),
- NAME_FUNC_OFFSET(18932, gl_dispatch_stub_1075, gl_dispatch_stub_1075, NULL, 1075),
- NAME_FUNC_OFFSET(18945, gl_dispatch_stub_1076, gl_dispatch_stub_1076, NULL, 1076),
- NAME_FUNC_OFFSET(18962, gl_dispatch_stub_1077, gl_dispatch_stub_1077, NULL, 1077),
- NAME_FUNC_OFFSET(18972, gl_dispatch_stub_1078, gl_dispatch_stub_1078, NULL, 1078),
- NAME_FUNC_OFFSET(18990, gl_dispatch_stub_1079, gl_dispatch_stub_1079, NULL, 1079),
- NAME_FUNC_OFFSET(18999, gl_dispatch_stub_1080, gl_dispatch_stub_1080, NULL, 1080),
- NAME_FUNC_OFFSET(19009, gl_dispatch_stub_1081, gl_dispatch_stub_1081, NULL, 1081),
- NAME_FUNC_OFFSET(19020, gl_dispatch_stub_1082, gl_dispatch_stub_1082, NULL, 1082),
- NAME_FUNC_OFFSET(19036, gl_dispatch_stub_1083, gl_dispatch_stub_1083, NULL, 1083),
- NAME_FUNC_OFFSET(19049, gl_dispatch_stub_1084, gl_dispatch_stub_1084, NULL, 1084),
- NAME_FUNC_OFFSET(19062, gl_dispatch_stub_1085, gl_dispatch_stub_1085, NULL, 1085),
- NAME_FUNC_OFFSET(19075, gl_dispatch_stub_1086, gl_dispatch_stub_1086, NULL, 1086),
- NAME_FUNC_OFFSET(19091, gl_dispatch_stub_1087, gl_dispatch_stub_1087, NULL, 1087),
- NAME_FUNC_OFFSET(19107, gl_dispatch_stub_1088, gl_dispatch_stub_1088, NULL, 1088),
- NAME_FUNC_OFFSET(19119, gl_dispatch_stub_1089, gl_dispatch_stub_1089, NULL, 1089),
- NAME_FUNC_OFFSET(19132, gl_dispatch_stub_1090, gl_dispatch_stub_1090, NULL, 1090),
- NAME_FUNC_OFFSET(19148, gl_dispatch_stub_1091, gl_dispatch_stub_1091, NULL, 1091),
- NAME_FUNC_OFFSET(19162, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092),
- NAME_FUNC_OFFSET(19182, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093),
- NAME_FUNC_OFFSET(19200, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094),
- NAME_FUNC_OFFSET(19219, gl_dispatch_stub_1095, gl_dispatch_stub_1095, NULL, 1095),
- NAME_FUNC_OFFSET(19236, glTexGenf, glTexGenf, NULL, 190),
- NAME_FUNC_OFFSET(19249, glTexGenfv, glTexGenfv, NULL, 191),
- NAME_FUNC_OFFSET(19263, glTexGeni, glTexGeni, NULL, 192),
- NAME_FUNC_OFFSET(19276, glTexGeniv, glTexGeniv, NULL, 193),
- NAME_FUNC_OFFSET(19290, glReadBuffer, glReadBuffer, NULL, 254),
- NAME_FUNC_OFFSET(19305, glGetTexGenfv, glGetTexGenfv, NULL, 279),
- NAME_FUNC_OFFSET(19322, glGetTexGeniv, glGetTexGeniv, NULL, 280),
- NAME_FUNC_OFFSET(19339, glArrayElement, glArrayElement, NULL, 306),
- NAME_FUNC_OFFSET(19357, glBindTexture, glBindTexture, NULL, 307),
- NAME_FUNC_OFFSET(19374, glDrawArrays, glDrawArrays, NULL, 310),
- NAME_FUNC_OFFSET(19390, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322),
- NAME_FUNC_OFFSET(19415, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
- NAME_FUNC_OFFSET(19435, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
- NAME_FUNC_OFFSET(19455, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325),
- NAME_FUNC_OFFSET(19478, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326),
- NAME_FUNC_OFFSET(19501, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327),
- NAME_FUNC_OFFSET(19521, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328),
- NAME_FUNC_OFFSET(19538, glGetPointerv, glGetPointerv, NULL, 329),
- NAME_FUNC_OFFSET(19555, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330),
- NAME_FUNC_OFFSET(19570, glPrioritizeTextures, glPrioritizeTextures, NULL, 331),
- NAME_FUNC_OFFSET(19594, glTexSubImage1D, glTexSubImage1D, NULL, 332),
- NAME_FUNC_OFFSET(19613, glTexSubImage2D, glTexSubImage2D, NULL, 333),
- NAME_FUNC_OFFSET(19632, glBlendColor, glBlendColor, NULL, 336),
- NAME_FUNC_OFFSET(19648, glBlendEquation, glBlendEquation, NULL, 337),
- NAME_FUNC_OFFSET(19667, glBlendEquation, glBlendEquation, NULL, 337),
- NAME_FUNC_OFFSET(19686, glDrawRangeElements, glDrawRangeElements, NULL, 338),
- NAME_FUNC_OFFSET(19709, glColorTable, glColorTable, NULL, 339),
- NAME_FUNC_OFFSET(19725, glColorTable, glColorTable, NULL, 339),
- NAME_FUNC_OFFSET(19741, glColorTableParameterfv, glColorTableParameterfv, NULL, 340),
- NAME_FUNC_OFFSET(19768, glColorTableParameteriv, glColorTableParameteriv, NULL, 341),
- NAME_FUNC_OFFSET(19795, glCopyColorTable, glCopyColorTable, NULL, 342),
- NAME_FUNC_OFFSET(19815, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
- NAME_FUNC_OFFSET(19834, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
- NAME_FUNC_OFFSET(19853, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
- NAME_FUNC_OFFSET(19883, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
- NAME_FUNC_OFFSET(19913, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
- NAME_FUNC_OFFSET(19943, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
- NAME_FUNC_OFFSET(19973, glColorSubTable, glColorSubTable, NULL, 346),
- NAME_FUNC_OFFSET(19992, glCopyColorSubTable, glCopyColorSubTable, NULL, 347),
- NAME_FUNC_OFFSET(20015, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348),
- NAME_FUNC_OFFSET(20040, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349),
- NAME_FUNC_OFFSET(20065, glConvolutionParameterf, glConvolutionParameterf, NULL, 350),
- NAME_FUNC_OFFSET(20092, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351),
- NAME_FUNC_OFFSET(20120, glConvolutionParameteri, glConvolutionParameteri, NULL, 352),
- NAME_FUNC_OFFSET(20147, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353),
- NAME_FUNC_OFFSET(20175, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354),
- NAME_FUNC_OFFSET(20204, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355),
- NAME_FUNC_OFFSET(20233, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356),
- NAME_FUNC_OFFSET(20259, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357),
- NAME_FUNC_OFFSET(20290, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358),
- NAME_FUNC_OFFSET(20321, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359),
- NAME_FUNC_OFFSET(20345, glSeparableFilter2D, glSeparableFilter2D, NULL, 360),
- NAME_FUNC_OFFSET(20368, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361),
- NAME_FUNC_OFFSET(20386, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362),
- NAME_FUNC_OFFSET(20415, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363),
- NAME_FUNC_OFFSET(20444, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364),
- NAME_FUNC_OFFSET(20459, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365),
- NAME_FUNC_OFFSET(20485, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366),
- NAME_FUNC_OFFSET(20511, glHistogram, glHistogram, NULL, 367),
- NAME_FUNC_OFFSET(20526, glMinmax, glMinmax, NULL, 368),
- NAME_FUNC_OFFSET(20538, glResetHistogram, glResetHistogram, NULL, 369),
- NAME_FUNC_OFFSET(20558, glResetMinmax, glResetMinmax, NULL, 370),
- NAME_FUNC_OFFSET(20575, glTexImage3D, glTexImage3D, NULL, 371),
- NAME_FUNC_OFFSET(20591, glTexImage3D, glTexImage3D, NULL, 371),
- NAME_FUNC_OFFSET(20607, glTexSubImage3D, glTexSubImage3D, NULL, 372),
- NAME_FUNC_OFFSET(20626, glTexSubImage3D, glTexSubImage3D, NULL, 372),
- NAME_FUNC_OFFSET(20645, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
- NAME_FUNC_OFFSET(20668, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
- NAME_FUNC_OFFSET(20691, glActiveTexture, glActiveTexture, NULL, 374),
- NAME_FUNC_OFFSET(20710, glClientActiveTexture, glClientActiveTexture, NULL, 375),
- NAME_FUNC_OFFSET(20735, glMultiTexCoord1d, glMultiTexCoord1d, NULL, 376),
- NAME_FUNC_OFFSET(20756, glMultiTexCoord1dv, glMultiTexCoord1dv, NULL, 377),
- NAME_FUNC_OFFSET(20778, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378),
- NAME_FUNC_OFFSET(20796, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379),
- NAME_FUNC_OFFSET(20815, glMultiTexCoord1i, glMultiTexCoord1i, NULL, 380),
- NAME_FUNC_OFFSET(20836, glMultiTexCoord1iv, glMultiTexCoord1iv, NULL, 381),
- NAME_FUNC_OFFSET(20858, glMultiTexCoord1s, glMultiTexCoord1s, NULL, 382),
- NAME_FUNC_OFFSET(20879, glMultiTexCoord1sv, glMultiTexCoord1sv, NULL, 383),
- NAME_FUNC_OFFSET(20901, glMultiTexCoord2d, glMultiTexCoord2d, NULL, 384),
- NAME_FUNC_OFFSET(20922, glMultiTexCoord2dv, glMultiTexCoord2dv, NULL, 385),
- NAME_FUNC_OFFSET(20944, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386),
- NAME_FUNC_OFFSET(20962, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387),
- NAME_FUNC_OFFSET(20981, glMultiTexCoord2i, glMultiTexCoord2i, NULL, 388),
- NAME_FUNC_OFFSET(21002, glMultiTexCoord2iv, glMultiTexCoord2iv, NULL, 389),
- NAME_FUNC_OFFSET(21024, glMultiTexCoord2s, glMultiTexCoord2s, NULL, 390),
- NAME_FUNC_OFFSET(21045, glMultiTexCoord2sv, glMultiTexCoord2sv, NULL, 391),
- NAME_FUNC_OFFSET(21067, glMultiTexCoord3d, glMultiTexCoord3d, NULL, 392),
- NAME_FUNC_OFFSET(21088, glMultiTexCoord3dv, glMultiTexCoord3dv, NULL, 393),
- NAME_FUNC_OFFSET(21110, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394),
- NAME_FUNC_OFFSET(21128, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395),
- NAME_FUNC_OFFSET(21147, glMultiTexCoord3i, glMultiTexCoord3i, NULL, 396),
- NAME_FUNC_OFFSET(21168, glMultiTexCoord3iv, glMultiTexCoord3iv, NULL, 397),
- NAME_FUNC_OFFSET(21190, glMultiTexCoord3s, glMultiTexCoord3s, NULL, 398),
- NAME_FUNC_OFFSET(21211, glMultiTexCoord3sv, glMultiTexCoord3sv, NULL, 399),
- NAME_FUNC_OFFSET(21233, glMultiTexCoord4d, glMultiTexCoord4d, NULL, 400),
- NAME_FUNC_OFFSET(21254, glMultiTexCoord4dv, glMultiTexCoord4dv, NULL, 401),
- NAME_FUNC_OFFSET(21276, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402),
- NAME_FUNC_OFFSET(21294, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403),
- NAME_FUNC_OFFSET(21313, glMultiTexCoord4i, glMultiTexCoord4i, NULL, 404),
- NAME_FUNC_OFFSET(21334, glMultiTexCoord4iv, glMultiTexCoord4iv, NULL, 405),
- NAME_FUNC_OFFSET(21356, glMultiTexCoord4s, glMultiTexCoord4s, NULL, 406),
- NAME_FUNC_OFFSET(21377, glMultiTexCoord4sv, glMultiTexCoord4sv, NULL, 407),
- NAME_FUNC_OFFSET(21399, glCompressedTexImage1D, glCompressedTexImage1D, NULL, 408),
- NAME_FUNC_OFFSET(21425, glCompressedTexImage2D, glCompressedTexImage2D, NULL, 409),
- NAME_FUNC_OFFSET(21451, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410),
- NAME_FUNC_OFFSET(21477, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410),
- NAME_FUNC_OFFSET(21503, glCompressedTexSubImage1D, glCompressedTexSubImage1D, NULL, 411),
- NAME_FUNC_OFFSET(21532, glCompressedTexSubImage2D, glCompressedTexSubImage2D, NULL, 412),
- NAME_FUNC_OFFSET(21561, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413),
- NAME_FUNC_OFFSET(21590, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413),
- NAME_FUNC_OFFSET(21619, glGetCompressedTexImage, glGetCompressedTexImage, NULL, 414),
- NAME_FUNC_OFFSET(21646, glLoadTransposeMatrixd, glLoadTransposeMatrixd, NULL, 415),
- NAME_FUNC_OFFSET(21672, glLoadTransposeMatrixf, glLoadTransposeMatrixf, NULL, 416),
- NAME_FUNC_OFFSET(21698, glMultTransposeMatrixd, glMultTransposeMatrixd, NULL, 417),
- NAME_FUNC_OFFSET(21724, glMultTransposeMatrixf, glMultTransposeMatrixf, NULL, 418),
- NAME_FUNC_OFFSET(21750, glSampleCoverage, glSampleCoverage, NULL, 419),
- NAME_FUNC_OFFSET(21770, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
- NAME_FUNC_OFFSET(21793, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
- NAME_FUNC_OFFSET(21817, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
- NAME_FUNC_OFFSET(21840, glFogCoordPointer, glFogCoordPointer, NULL, 421),
- NAME_FUNC_OFFSET(21861, glFogCoordd, glFogCoordd, NULL, 422),
- NAME_FUNC_OFFSET(21876, glFogCoorddv, glFogCoorddv, NULL, 423),
- NAME_FUNC_OFFSET(21892, glMultiDrawArrays, glMultiDrawArrays, NULL, 424),
- NAME_FUNC_OFFSET(21913, glPointParameterf, glPointParameterf, NULL, 425),
- NAME_FUNC_OFFSET(21934, glPointParameterf, glPointParameterf, NULL, 425),
- NAME_FUNC_OFFSET(21955, glPointParameterf, glPointParameterf, NULL, 425),
- NAME_FUNC_OFFSET(21977, glPointParameterfv, glPointParameterfv, NULL, 426),
- NAME_FUNC_OFFSET(21999, glPointParameterfv, glPointParameterfv, NULL, 426),
- NAME_FUNC_OFFSET(22021, glPointParameterfv, glPointParameterfv, NULL, 426),
- NAME_FUNC_OFFSET(22044, glPointParameteri, glPointParameteri, NULL, 427),
- NAME_FUNC_OFFSET(22064, glPointParameteriv, glPointParameteriv, NULL, 428),
- NAME_FUNC_OFFSET(22085, glSecondaryColor3b, glSecondaryColor3b, NULL, 429),
- NAME_FUNC_OFFSET(22107, glSecondaryColor3bv, glSecondaryColor3bv, NULL, 430),
- NAME_FUNC_OFFSET(22130, glSecondaryColor3d, glSecondaryColor3d, NULL, 431),
- NAME_FUNC_OFFSET(22152, glSecondaryColor3dv, glSecondaryColor3dv, NULL, 432),
- NAME_FUNC_OFFSET(22175, glSecondaryColor3i, glSecondaryColor3i, NULL, 433),
- NAME_FUNC_OFFSET(22197, glSecondaryColor3iv, glSecondaryColor3iv, NULL, 434),
- NAME_FUNC_OFFSET(22220, glSecondaryColor3s, glSecondaryColor3s, NULL, 435),
- NAME_FUNC_OFFSET(22242, glSecondaryColor3sv, glSecondaryColor3sv, NULL, 436),
- NAME_FUNC_OFFSET(22265, glSecondaryColor3ub, glSecondaryColor3ub, NULL, 437),
- NAME_FUNC_OFFSET(22288, glSecondaryColor3ubv, glSecondaryColor3ubv, NULL, 438),
- NAME_FUNC_OFFSET(22312, glSecondaryColor3ui, glSecondaryColor3ui, NULL, 439),
- NAME_FUNC_OFFSET(22335, glSecondaryColor3uiv, glSecondaryColor3uiv, NULL, 440),
- NAME_FUNC_OFFSET(22359, glSecondaryColor3us, glSecondaryColor3us, NULL, 441),
- NAME_FUNC_OFFSET(22382, glSecondaryColor3usv, glSecondaryColor3usv, NULL, 442),
- NAME_FUNC_OFFSET(22406, glSecondaryColorPointer, glSecondaryColorPointer, NULL, 443),
- NAME_FUNC_OFFSET(22433, glWindowPos2d, glWindowPos2d, NULL, 444),
- NAME_FUNC_OFFSET(22450, glWindowPos2d, glWindowPos2d, NULL, 444),
- NAME_FUNC_OFFSET(22468, glWindowPos2dv, glWindowPos2dv, NULL, 445),
- NAME_FUNC_OFFSET(22486, glWindowPos2dv, glWindowPos2dv, NULL, 445),
- NAME_FUNC_OFFSET(22505, glWindowPos2f, glWindowPos2f, NULL, 446),
- NAME_FUNC_OFFSET(22522, glWindowPos2f, glWindowPos2f, NULL, 446),
- NAME_FUNC_OFFSET(22540, glWindowPos2fv, glWindowPos2fv, NULL, 447),
- NAME_FUNC_OFFSET(22558, glWindowPos2fv, glWindowPos2fv, NULL, 447),
- NAME_FUNC_OFFSET(22577, glWindowPos2i, glWindowPos2i, NULL, 448),
- NAME_FUNC_OFFSET(22594, glWindowPos2i, glWindowPos2i, NULL, 448),
- NAME_FUNC_OFFSET(22612, glWindowPos2iv, glWindowPos2iv, NULL, 449),
- NAME_FUNC_OFFSET(22630, glWindowPos2iv, glWindowPos2iv, NULL, 449),
- NAME_FUNC_OFFSET(22649, glWindowPos2s, glWindowPos2s, NULL, 450),
- NAME_FUNC_OFFSET(22666, glWindowPos2s, glWindowPos2s, NULL, 450),
- NAME_FUNC_OFFSET(22684, glWindowPos2sv, glWindowPos2sv, NULL, 451),
- NAME_FUNC_OFFSET(22702, glWindowPos2sv, glWindowPos2sv, NULL, 451),
- NAME_FUNC_OFFSET(22721, glWindowPos3d, glWindowPos3d, NULL, 452),
- NAME_FUNC_OFFSET(22738, glWindowPos3d, glWindowPos3d, NULL, 452),
- NAME_FUNC_OFFSET(22756, glWindowPos3dv, glWindowPos3dv, NULL, 453),
- NAME_FUNC_OFFSET(22774, glWindowPos3dv, glWindowPos3dv, NULL, 453),
- NAME_FUNC_OFFSET(22793, glWindowPos3f, glWindowPos3f, NULL, 454),
- NAME_FUNC_OFFSET(22810, glWindowPos3f, glWindowPos3f, NULL, 454),
- NAME_FUNC_OFFSET(22828, glWindowPos3fv, glWindowPos3fv, NULL, 455),
- NAME_FUNC_OFFSET(22846, glWindowPos3fv, glWindowPos3fv, NULL, 455),
- NAME_FUNC_OFFSET(22865, glWindowPos3i, glWindowPos3i, NULL, 456),
- NAME_FUNC_OFFSET(22882, glWindowPos3i, glWindowPos3i, NULL, 456),
- NAME_FUNC_OFFSET(22900, glWindowPos3iv, glWindowPos3iv, NULL, 457),
- NAME_FUNC_OFFSET(22918, glWindowPos3iv, glWindowPos3iv, NULL, 457),
- NAME_FUNC_OFFSET(22937, glWindowPos3s, glWindowPos3s, NULL, 458),
- NAME_FUNC_OFFSET(22954, glWindowPos3s, glWindowPos3s, NULL, 458),
- NAME_FUNC_OFFSET(22972, glWindowPos3sv, glWindowPos3sv, NULL, 459),
- NAME_FUNC_OFFSET(22990, glWindowPos3sv, glWindowPos3sv, NULL, 459),
- NAME_FUNC_OFFSET(23009, glBeginQuery, glBeginQuery, NULL, 460),
- NAME_FUNC_OFFSET(23025, glBindBuffer, glBindBuffer, NULL, 461),
- NAME_FUNC_OFFSET(23041, glBufferData, glBufferData, NULL, 462),
- NAME_FUNC_OFFSET(23057, glBufferSubData, glBufferSubData, NULL, 463),
- NAME_FUNC_OFFSET(23076, glDeleteBuffers, glDeleteBuffers, NULL, 464),
- NAME_FUNC_OFFSET(23095, glDeleteQueries, glDeleteQueries, NULL, 465),
- NAME_FUNC_OFFSET(23114, glEndQuery, glEndQuery, NULL, 466),
- NAME_FUNC_OFFSET(23128, glGenBuffers, glGenBuffers, NULL, 467),
- NAME_FUNC_OFFSET(23144, glGenQueries, glGenQueries, NULL, 468),
- NAME_FUNC_OFFSET(23160, glGetBufferParameteriv, glGetBufferParameteriv, NULL, 469),
- NAME_FUNC_OFFSET(23186, glGetBufferPointerv, glGetBufferPointerv, NULL, 470),
- NAME_FUNC_OFFSET(23209, glGetBufferPointerv, glGetBufferPointerv, NULL, 470),
- NAME_FUNC_OFFSET(23232, glGetBufferSubData, glGetBufferSubData, NULL, 471),
- NAME_FUNC_OFFSET(23254, glGetQueryObjectiv, glGetQueryObjectiv, NULL, 472),
- NAME_FUNC_OFFSET(23276, glGetQueryObjectuiv, glGetQueryObjectuiv, NULL, 473),
- NAME_FUNC_OFFSET(23299, glGetQueryiv, glGetQueryiv, NULL, 474),
- NAME_FUNC_OFFSET(23315, glIsBuffer, glIsBuffer, NULL, 475),
- NAME_FUNC_OFFSET(23329, glIsQuery, glIsQuery, NULL, 476),
- NAME_FUNC_OFFSET(23342, glMapBuffer, glMapBuffer, NULL, 477),
- NAME_FUNC_OFFSET(23357, glMapBuffer, glMapBuffer, NULL, 477),
- NAME_FUNC_OFFSET(23372, glUnmapBuffer, glUnmapBuffer, NULL, 478),
- NAME_FUNC_OFFSET(23389, glUnmapBuffer, glUnmapBuffer, NULL, 478),
- NAME_FUNC_OFFSET(23406, glBindAttribLocation, glBindAttribLocation, NULL, 480),
- NAME_FUNC_OFFSET(23430, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
- NAME_FUNC_OFFSET(23457, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
- NAME_FUNC_OFFSET(23484, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
- NAME_FUNC_OFFSET(23511, glCompileShader, glCompileShader, NULL, 482),
- NAME_FUNC_OFFSET(23530, glDisableVertexAttribArray, glDisableVertexAttribArray, NULL, 488),
- NAME_FUNC_OFFSET(23560, glDrawBuffers, glDrawBuffers, NULL, 489),
- NAME_FUNC_OFFSET(23577, glDrawBuffers, glDrawBuffers, NULL, 489),
- NAME_FUNC_OFFSET(23594, glDrawBuffers, glDrawBuffers, NULL, 489),
- NAME_FUNC_OFFSET(23610, glEnableVertexAttribArray, glEnableVertexAttribArray, NULL, 490),
- NAME_FUNC_OFFSET(23639, glGetActiveAttrib, glGetActiveAttrib, NULL, 491),
- NAME_FUNC_OFFSET(23660, glGetActiveUniform, glGetActiveUniform, NULL, 492),
- NAME_FUNC_OFFSET(23682, glGetAttribLocation, glGetAttribLocation, NULL, 494),
- NAME_FUNC_OFFSET(23705, glGetShaderSource, glGetShaderSource, NULL, 498),
- NAME_FUNC_OFFSET(23726, glGetUniformLocation, glGetUniformLocation, NULL, 500),
- NAME_FUNC_OFFSET(23750, glGetUniformfv, glGetUniformfv, NULL, 501),
- NAME_FUNC_OFFSET(23768, glGetUniformiv, glGetUniformiv, NULL, 502),
- NAME_FUNC_OFFSET(23786, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503),
- NAME_FUNC_OFFSET(23815, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503),
- NAME_FUNC_OFFSET(23843, glGetVertexAttribdv, glGetVertexAttribdv, NULL, 504),
- NAME_FUNC_OFFSET(23866, glGetVertexAttribfv, glGetVertexAttribfv, NULL, 505),
- NAME_FUNC_OFFSET(23889, glGetVertexAttribiv, glGetVertexAttribiv, NULL, 506),
- NAME_FUNC_OFFSET(23912, glLinkProgram, glLinkProgram, NULL, 509),
- NAME_FUNC_OFFSET(23929, glShaderSource, glShaderSource, NULL, 510),
- NAME_FUNC_OFFSET(23947, glStencilOpSeparate, glStencilOpSeparate, NULL, 513),
- NAME_FUNC_OFFSET(23970, glUniform1f, glUniform1f, NULL, 514),
- NAME_FUNC_OFFSET(23985, glUniform1fv, glUniform1fv, NULL, 515),
- NAME_FUNC_OFFSET(24001, glUniform1i, glUniform1i, NULL, 516),
- NAME_FUNC_OFFSET(24016, glUniform1iv, glUniform1iv, NULL, 517),
- NAME_FUNC_OFFSET(24032, glUniform2f, glUniform2f, NULL, 518),
- NAME_FUNC_OFFSET(24047, glUniform2fv, glUniform2fv, NULL, 519),
- NAME_FUNC_OFFSET(24063, glUniform2i, glUniform2i, NULL, 520),
- NAME_FUNC_OFFSET(24078, glUniform2iv, glUniform2iv, NULL, 521),
- NAME_FUNC_OFFSET(24094, glUniform3f, glUniform3f, NULL, 522),
- NAME_FUNC_OFFSET(24109, glUniform3fv, glUniform3fv, NULL, 523),
- NAME_FUNC_OFFSET(24125, glUniform3i, glUniform3i, NULL, 524),
- NAME_FUNC_OFFSET(24140, glUniform3iv, glUniform3iv, NULL, 525),
- NAME_FUNC_OFFSET(24156, glUniform4f, glUniform4f, NULL, 526),
- NAME_FUNC_OFFSET(24171, glUniform4fv, glUniform4fv, NULL, 527),
- NAME_FUNC_OFFSET(24187, glUniform4i, glUniform4i, NULL, 528),
- NAME_FUNC_OFFSET(24202, glUniform4iv, glUniform4iv, NULL, 529),
- NAME_FUNC_OFFSET(24218, glUniformMatrix2fv, glUniformMatrix2fv, NULL, 530),
- NAME_FUNC_OFFSET(24240, glUniformMatrix3fv, glUniformMatrix3fv, NULL, 531),
- NAME_FUNC_OFFSET(24262, glUniformMatrix4fv, glUniformMatrix4fv, NULL, 532),
- NAME_FUNC_OFFSET(24284, glUseProgram, glUseProgram, NULL, 533),
- NAME_FUNC_OFFSET(24306, glValidateProgram, glValidateProgram, NULL, 534),
- NAME_FUNC_OFFSET(24327, glVertexAttrib1d, glVertexAttrib1d, NULL, 535),
- NAME_FUNC_OFFSET(24347, glVertexAttrib1dv, glVertexAttrib1dv, NULL, 536),
- NAME_FUNC_OFFSET(24368, glVertexAttrib1s, glVertexAttrib1s, NULL, 537),
- NAME_FUNC_OFFSET(24388, glVertexAttrib1sv, glVertexAttrib1sv, NULL, 538),
- NAME_FUNC_OFFSET(24409, glVertexAttrib2d, glVertexAttrib2d, NULL, 539),
- NAME_FUNC_OFFSET(24429, glVertexAttrib2dv, glVertexAttrib2dv, NULL, 540),
- NAME_FUNC_OFFSET(24450, glVertexAttrib2s, glVertexAttrib2s, NULL, 541),
- NAME_FUNC_OFFSET(24470, glVertexAttrib2sv, glVertexAttrib2sv, NULL, 542),
- NAME_FUNC_OFFSET(24491, glVertexAttrib3d, glVertexAttrib3d, NULL, 543),
- NAME_FUNC_OFFSET(24511, glVertexAttrib3dv, glVertexAttrib3dv, NULL, 544),
- NAME_FUNC_OFFSET(24532, glVertexAttrib3s, glVertexAttrib3s, NULL, 545),
- NAME_FUNC_OFFSET(24552, glVertexAttrib3sv, glVertexAttrib3sv, NULL, 546),
- NAME_FUNC_OFFSET(24573, glVertexAttrib4Nbv, glVertexAttrib4Nbv, NULL, 547),
- NAME_FUNC_OFFSET(24595, glVertexAttrib4Niv, glVertexAttrib4Niv, NULL, 548),
- NAME_FUNC_OFFSET(24617, glVertexAttrib4Nsv, glVertexAttrib4Nsv, NULL, 549),
- NAME_FUNC_OFFSET(24639, glVertexAttrib4Nub, glVertexAttrib4Nub, NULL, 550),
- NAME_FUNC_OFFSET(24661, glVertexAttrib4Nubv, glVertexAttrib4Nubv, NULL, 551),
- NAME_FUNC_OFFSET(24684, glVertexAttrib4Nuiv, glVertexAttrib4Nuiv, NULL, 552),
- NAME_FUNC_OFFSET(24707, glVertexAttrib4Nusv, glVertexAttrib4Nusv, NULL, 553),
- NAME_FUNC_OFFSET(24730, glVertexAttrib4bv, glVertexAttrib4bv, NULL, 554),
- NAME_FUNC_OFFSET(24751, glVertexAttrib4d, glVertexAttrib4d, NULL, 555),
- NAME_FUNC_OFFSET(24771, glVertexAttrib4dv, glVertexAttrib4dv, NULL, 556),
- NAME_FUNC_OFFSET(24792, glVertexAttrib4iv, glVertexAttrib4iv, NULL, 557),
- NAME_FUNC_OFFSET(24813, glVertexAttrib4s, glVertexAttrib4s, NULL, 558),
- NAME_FUNC_OFFSET(24833, glVertexAttrib4sv, glVertexAttrib4sv, NULL, 559),
- NAME_FUNC_OFFSET(24854, glVertexAttrib4ubv, glVertexAttrib4ubv, NULL, 560),
- NAME_FUNC_OFFSET(24876, glVertexAttrib4uiv, glVertexAttrib4uiv, NULL, 561),
- NAME_FUNC_OFFSET(24898, glVertexAttrib4usv, glVertexAttrib4usv, NULL, 562),
- NAME_FUNC_OFFSET(24920, glVertexAttribPointer, glVertexAttribPointer, NULL, 563),
- NAME_FUNC_OFFSET(24945, glBeginConditionalRender, glBeginConditionalRender, NULL, 570),
- NAME_FUNC_OFFSET(24972, glBeginTransformFeedback, glBeginTransformFeedback, NULL, 571),
- NAME_FUNC_OFFSET(25000, glBindBufferBase, glBindBufferBase, NULL, 572),
- NAME_FUNC_OFFSET(25020, glBindBufferRange, glBindBufferRange, NULL, 573),
- NAME_FUNC_OFFSET(25041, glBindFragDataLocation, glBindFragDataLocation, NULL, 574),
- NAME_FUNC_OFFSET(25067, glClampColor, glClampColor, NULL, 575),
- NAME_FUNC_OFFSET(25083, glColorMaski, glColorMaski, NULL, 580),
- NAME_FUNC_OFFSET(25105, glDisablei, glDisablei, NULL, 581),
- NAME_FUNC_OFFSET(25125, glEnablei, glEnablei, NULL, 582),
- NAME_FUNC_OFFSET(25144, glEndConditionalRender, glEndConditionalRender, NULL, 583),
- NAME_FUNC_OFFSET(25169, glEndTransformFeedback, glEndTransformFeedback, NULL, 584),
- NAME_FUNC_OFFSET(25195, glGetBooleani_v, glGetBooleani_v, NULL, 585),
- NAME_FUNC_OFFSET(25219, glGetFragDataLocation, glGetFragDataLocation, NULL, 586),
- NAME_FUNC_OFFSET(25244, glGetIntegeri_v, glGetIntegeri_v, NULL, 587),
- NAME_FUNC_OFFSET(25268, glGetTexParameterIiv, glGetTexParameterIiv, NULL, 589),
- NAME_FUNC_OFFSET(25292, glGetTexParameterIuiv, glGetTexParameterIuiv, NULL, 590),
- NAME_FUNC_OFFSET(25317, glGetTransformFeedbackVarying, glGetTransformFeedbackVarying, NULL, 591),
- NAME_FUNC_OFFSET(25350, glGetUniformuiv, glGetUniformuiv, NULL, 592),
- NAME_FUNC_OFFSET(25369, glGetVertexAttribIiv, glGetVertexAttribIiv, NULL, 593),
- NAME_FUNC_OFFSET(25393, glGetVertexAttribIuiv, glGetVertexAttribIuiv, NULL, 594),
- NAME_FUNC_OFFSET(25418, glIsEnabledi, glIsEnabledi, NULL, 595),
- NAME_FUNC_OFFSET(25440, glTexParameterIiv, glTexParameterIiv, NULL, 596),
- NAME_FUNC_OFFSET(25461, glTexParameterIuiv, glTexParameterIuiv, NULL, 597),
- NAME_FUNC_OFFSET(25483, glTransformFeedbackVaryings, glTransformFeedbackVaryings, NULL, 598),
- NAME_FUNC_OFFSET(25514, glUniform1ui, glUniform1ui, NULL, 599),
- NAME_FUNC_OFFSET(25530, glUniform1uiv, glUniform1uiv, NULL, 600),
- NAME_FUNC_OFFSET(25547, glUniform2ui, glUniform2ui, NULL, 601),
- NAME_FUNC_OFFSET(25563, glUniform2uiv, glUniform2uiv, NULL, 602),
- NAME_FUNC_OFFSET(25580, glUniform3ui, glUniform3ui, NULL, 603),
- NAME_FUNC_OFFSET(25596, glUniform3uiv, glUniform3uiv, NULL, 604),
- NAME_FUNC_OFFSET(25613, glUniform4ui, glUniform4ui, NULL, 605),
- NAME_FUNC_OFFSET(25629, glUniform4uiv, glUniform4uiv, NULL, 606),
- NAME_FUNC_OFFSET(25646, glVertexAttribI1iv, glVertexAttribI1iv, NULL, 607),
- NAME_FUNC_OFFSET(25668, glVertexAttribI1uiv, glVertexAttribI1uiv, NULL, 608),
- NAME_FUNC_OFFSET(25691, glVertexAttribI4bv, glVertexAttribI4bv, NULL, 609),
- NAME_FUNC_OFFSET(25713, glVertexAttribI4sv, glVertexAttribI4sv, NULL, 610),
- NAME_FUNC_OFFSET(25735, glVertexAttribI4ubv, glVertexAttribI4ubv, NULL, 611),
- NAME_FUNC_OFFSET(25758, glVertexAttribI4usv, glVertexAttribI4usv, NULL, 612),
- NAME_FUNC_OFFSET(25781, glVertexAttribIPointer, glVertexAttribIPointer, NULL, 613),
- NAME_FUNC_OFFSET(25807, glPrimitiveRestartIndex, glPrimitiveRestartIndex, NULL, 614),
- NAME_FUNC_OFFSET(25833, glTexBuffer, glTexBuffer, NULL, 615),
- NAME_FUNC_OFFSET(25848, glFramebufferTexture, glFramebufferTexture, NULL, 616),
- NAME_FUNC_OFFSET(25872, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 619),
- NAME_FUNC_OFFSET(25897, glMinSampleShading, glMinSampleShading, NULL, 620),
- NAME_FUNC_OFFSET(25919, glBindProgramARB, glBindProgramARB, NULL, 621),
- NAME_FUNC_OFFSET(25935, glDeleteProgramsARB, glDeleteProgramsARB, NULL, 622),
- NAME_FUNC_OFFSET(25954, glGenProgramsARB, glGenProgramsARB, NULL, 623),
- NAME_FUNC_OFFSET(25970, glIsProgramARB, glIsProgramARB, NULL, 630),
- NAME_FUNC_OFFSET(25984, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 631),
- NAME_FUNC_OFFSET(26007, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 632),
- NAME_FUNC_OFFSET(26031, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 633),
- NAME_FUNC_OFFSET(26054, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 634),
- NAME_FUNC_OFFSET(26078, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 640),
- NAME_FUNC_OFFSET(26095, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 641),
- NAME_FUNC_OFFSET(26113, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 642),
- NAME_FUNC_OFFSET(26130, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 643),
- NAME_FUNC_OFFSET(26148, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 644),
- NAME_FUNC_OFFSET(26165, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 645),
- NAME_FUNC_OFFSET(26183, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 646),
- NAME_FUNC_OFFSET(26200, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 647),
- NAME_FUNC_OFFSET(26218, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658),
- NAME_FUNC_OFFSET(26243, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658),
- NAME_FUNC_OFFSET(26265, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659),
- NAME_FUNC_OFFSET(26292, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659),
- NAME_FUNC_OFFSET(26316, glBindFramebuffer, glBindFramebuffer, NULL, 660),
- NAME_FUNC_OFFSET(26337, glBindRenderbuffer, glBindRenderbuffer, NULL, 661),
- NAME_FUNC_OFFSET(26359, glBlitFramebuffer, glBlitFramebuffer, NULL, 662),
- NAME_FUNC_OFFSET(26380, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663),
- NAME_FUNC_OFFSET(26408, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663),
- NAME_FUNC_OFFSET(26436, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664),
- NAME_FUNC_OFFSET(26460, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664),
- NAME_FUNC_OFFSET(26484, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665),
- NAME_FUNC_OFFSET(26509, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665),
- NAME_FUNC_OFFSET(26534, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666),
- NAME_FUNC_OFFSET(26563, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666),
- NAME_FUNC_OFFSET(26592, glFramebufferTexture1D, glFramebufferTexture1D, NULL, 667),
- NAME_FUNC_OFFSET(26618, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668),
- NAME_FUNC_OFFSET(26644, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668),
- NAME_FUNC_OFFSET(26670, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669),
- NAME_FUNC_OFFSET(26696, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669),
- NAME_FUNC_OFFSET(26722, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670),
- NAME_FUNC_OFFSET(26751, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670),
- NAME_FUNC_OFFSET(26780, glGenFramebuffers, glGenFramebuffers, NULL, 671),
- NAME_FUNC_OFFSET(26801, glGenFramebuffers, glGenFramebuffers, NULL, 671),
- NAME_FUNC_OFFSET(26822, glGenRenderbuffers, glGenRenderbuffers, NULL, 672),
- NAME_FUNC_OFFSET(26844, glGenRenderbuffers, glGenRenderbuffers, NULL, 672),
- NAME_FUNC_OFFSET(26866, glGenerateMipmap, glGenerateMipmap, NULL, 673),
- NAME_FUNC_OFFSET(26886, glGenerateMipmap, glGenerateMipmap, NULL, 673),
- NAME_FUNC_OFFSET(26906, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674),
- NAME_FUNC_OFFSET(26947, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674),
- NAME_FUNC_OFFSET(26988, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675),
- NAME_FUNC_OFFSET(27020, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675),
- NAME_FUNC_OFFSET(27052, glIsFramebuffer, glIsFramebuffer, NULL, 676),
- NAME_FUNC_OFFSET(27071, glIsFramebuffer, glIsFramebuffer, NULL, 676),
- NAME_FUNC_OFFSET(27090, glIsRenderbuffer, glIsRenderbuffer, NULL, 677),
- NAME_FUNC_OFFSET(27110, glIsRenderbuffer, glIsRenderbuffer, NULL, 677),
- NAME_FUNC_OFFSET(27130, glRenderbufferStorage, glRenderbufferStorage, NULL, 678),
- NAME_FUNC_OFFSET(27155, glRenderbufferStorage, glRenderbufferStorage, NULL, 678),
- NAME_FUNC_OFFSET(27180, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 679),
- NAME_FUNC_OFFSET(27216, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 681),
- NAME_FUNC_OFFSET(27244, glMapBufferRange, glMapBufferRange, NULL, 682),
- NAME_FUNC_OFFSET(27264, glBindVertexArray, glBindVertexArray, NULL, 683),
- NAME_FUNC_OFFSET(27285, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684),
- NAME_FUNC_OFFSET(27311, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684),
- NAME_FUNC_OFFSET(27335, glGenVertexArrays, glGenVertexArrays, NULL, 685),
- NAME_FUNC_OFFSET(27356, glIsVertexArray, glIsVertexArray, NULL, 686),
- NAME_FUNC_OFFSET(27377, glIsVertexArray, glIsVertexArray, NULL, 686),
- NAME_FUNC_OFFSET(27396, glProvokingVertex, glProvokingVertex, NULL, 706),
- NAME_FUNC_OFFSET(27417, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 711),
- NAME_FUNC_OFFSET(27451, glBlendEquationiARB, glBlendEquationiARB, NULL, 712),
- NAME_FUNC_OFFSET(27477, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 713),
- NAME_FUNC_OFFSET(27507, glBlendFunciARB, glBlendFunciARB, NULL, 714),
- NAME_FUNC_OFFSET(27529, gl_dispatch_stub_731, gl_dispatch_stub_731, NULL, 731),
- NAME_FUNC_OFFSET(27553, gl_dispatch_stub_732, gl_dispatch_stub_732, NULL, 732),
- NAME_FUNC_OFFSET(27578, glClearDepthf, glClearDepthf, NULL, 785),
- NAME_FUNC_OFFSET(27595, glDepthRangef, glDepthRangef, NULL, 786),
- NAME_FUNC_OFFSET(27612, glGetProgramBinary, glGetProgramBinary, NULL, 790),
- NAME_FUNC_OFFSET(27634, glProgramBinary, glProgramBinary, NULL, 791),
- NAME_FUNC_OFFSET(27653, glProgramParameteri, glProgramParameteri, NULL, 792),
- NAME_FUNC_OFFSET(27676, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875),
- NAME_FUNC_OFFSET(27692, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876),
- NAME_FUNC_OFFSET(27711, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 896),
- NAME_FUNC_OFFSET(27730, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 897),
- NAME_FUNC_OFFSET(27750, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 898),
- NAME_FUNC_OFFSET(27770, glFogCoordfEXT, glFogCoordfEXT, NULL, 899),
- NAME_FUNC_OFFSET(27782, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 900),
- NAME_FUNC_OFFSET(27795, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1003),
- NAME_FUNC_OFFSET(27813, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1004),
- NAME_FUNC_OFFSET(27832, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1005),
- NAME_FUNC_OFFSET(27850, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1006),
- NAME_FUNC_OFFSET(27869, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1007),
- NAME_FUNC_OFFSET(27888, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1008),
- NAME_FUNC_OFFSET(27908, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1009),
- NAME_FUNC_OFFSET(27926, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1010),
- NAME_FUNC_OFFSET(27945, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1011),
- NAME_FUNC_OFFSET(27964, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1012),
- NAME_FUNC_OFFSET(27984, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1013),
- NAME_FUNC_OFFSET(28002, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1014),
- NAME_FUNC_OFFSET(28021, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1015),
- NAME_FUNC_OFFSET(28040, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1016),
- NAME_FUNC_OFFSET(28060, gl_dispatch_stub_1053, gl_dispatch_stub_1053, NULL, 1053),
- NAME_FUNC_OFFSET(28076, gl_dispatch_stub_1054, gl_dispatch_stub_1054, NULL, 1054),
- NAME_FUNC_OFFSET(28093, gl_dispatch_stub_1055, gl_dispatch_stub_1055, NULL, 1055),
- NAME_FUNC_OFFSET(28110, gl_dispatch_stub_1056, gl_dispatch_stub_1056, NULL, 1056),
- NAME_FUNC_OFFSET(28123, gl_dispatch_stub_1057, gl_dispatch_stub_1057, NULL, 1057),
- NAME_FUNC_OFFSET(28140, gl_dispatch_stub_1058, gl_dispatch_stub_1058, NULL, 1058),
- NAME_FUNC_OFFSET(28150, gl_dispatch_stub_1059, gl_dispatch_stub_1059, NULL, 1059),
- NAME_FUNC_OFFSET(28161, gl_dispatch_stub_1060, gl_dispatch_stub_1060, NULL, 1060),
- NAME_FUNC_OFFSET(28175, gl_dispatch_stub_1061, gl_dispatch_stub_1061, NULL, 1061),
- NAME_FUNC_OFFSET(28189, gl_dispatch_stub_1062, gl_dispatch_stub_1062, NULL, 1062),
- NAME_FUNC_OFFSET(28206, gl_dispatch_stub_1063, gl_dispatch_stub_1063, NULL, 1063),
- NAME_FUNC_OFFSET(28224, gl_dispatch_stub_1064, gl_dispatch_stub_1064, NULL, 1064),
- NAME_FUNC_OFFSET(28236, gl_dispatch_stub_1065, gl_dispatch_stub_1065, NULL, 1065),
- NAME_FUNC_OFFSET(28249, gl_dispatch_stub_1066, gl_dispatch_stub_1066, NULL, 1066),
- NAME_FUNC_OFFSET(28265, gl_dispatch_stub_1067, gl_dispatch_stub_1067, NULL, 1067),
- NAME_FUNC_OFFSET(28282, gl_dispatch_stub_1068, gl_dispatch_stub_1068, NULL, 1068),
- NAME_FUNC_OFFSET(28297, gl_dispatch_stub_1069, gl_dispatch_stub_1069, NULL, 1069),
- NAME_FUNC_OFFSET(28313, gl_dispatch_stub_1070, gl_dispatch_stub_1070, NULL, 1070),
- NAME_FUNC_OFFSET(28330, gl_dispatch_stub_1071, gl_dispatch_stub_1071, NULL, 1071),
- NAME_FUNC_OFFSET(28351, gl_dispatch_stub_1072, gl_dispatch_stub_1072, NULL, 1072),
- NAME_FUNC_OFFSET(28365, gl_dispatch_stub_1073, gl_dispatch_stub_1073, NULL, 1073),
- NAME_FUNC_OFFSET(28377, gl_dispatch_stub_1074, gl_dispatch_stub_1074, NULL, 1074),
- NAME_FUNC_OFFSET(28389, gl_dispatch_stub_1075, gl_dispatch_stub_1075, NULL, 1075),
- NAME_FUNC_OFFSET(28405, gl_dispatch_stub_1076, gl_dispatch_stub_1076, NULL, 1076),
- NAME_FUNC_OFFSET(28425, gl_dispatch_stub_1077, gl_dispatch_stub_1077, NULL, 1077),
- NAME_FUNC_OFFSET(28438, gl_dispatch_stub_1078, gl_dispatch_stub_1078, NULL, 1078),
- NAME_FUNC_OFFSET(28459, gl_dispatch_stub_1079, gl_dispatch_stub_1079, NULL, 1079),
- NAME_FUNC_OFFSET(28471, gl_dispatch_stub_1080, gl_dispatch_stub_1080, NULL, 1080),
- NAME_FUNC_OFFSET(28484, gl_dispatch_stub_1081, gl_dispatch_stub_1081, NULL, 1081),
- NAME_FUNC_OFFSET(28498, gl_dispatch_stub_1082, gl_dispatch_stub_1082, NULL, 1082),
- NAME_FUNC_OFFSET(28517, gl_dispatch_stub_1083, gl_dispatch_stub_1083, NULL, 1083),
- NAME_FUNC_OFFSET(28533, gl_dispatch_stub_1084, gl_dispatch_stub_1084, NULL, 1084),
- NAME_FUNC_OFFSET(28549, gl_dispatch_stub_1085, gl_dispatch_stub_1085, NULL, 1085),
- NAME_FUNC_OFFSET(28565, gl_dispatch_stub_1086, gl_dispatch_stub_1086, NULL, 1086),
- NAME_FUNC_OFFSET(28584, gl_dispatch_stub_1087, gl_dispatch_stub_1087, NULL, 1087),
- NAME_FUNC_OFFSET(28603, gl_dispatch_stub_1088, gl_dispatch_stub_1088, NULL, 1088),
- NAME_FUNC_OFFSET(28618, gl_dispatch_stub_1089, gl_dispatch_stub_1089, NULL, 1089),
- NAME_FUNC_OFFSET(28634, gl_dispatch_stub_1090, gl_dispatch_stub_1090, NULL, 1090),
- NAME_FUNC_OFFSET(28653, gl_dispatch_stub_1091, gl_dispatch_stub_1091, NULL, 1091),
- NAME_FUNC_OFFSET(28670, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092),
- NAME_FUNC_OFFSET(28693, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093),
- NAME_FUNC_OFFSET(28714, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094),
- NAME_FUNC_OFFSET(28736, gl_dispatch_stub_1095, gl_dispatch_stub_1095, NULL, 1095),
+ NAME_FUNC_OFFSET(14448, glBufferStorage, glBufferStorage, NULL, 858),
+ NAME_FUNC_OFFSET(14464, glInvalidateBufferData, glInvalidateBufferData, NULL, 859),
+ NAME_FUNC_OFFSET(14487, glInvalidateBufferSubData, glInvalidateBufferSubData, NULL, 860),
+ NAME_FUNC_OFFSET(14513, glInvalidateFramebuffer, glInvalidateFramebuffer, NULL, 861),
+ NAME_FUNC_OFFSET(14537, glInvalidateSubFramebuffer, glInvalidateSubFramebuffer, NULL, 862),
+ NAME_FUNC_OFFSET(14564, glInvalidateTexImage, glInvalidateTexImage, NULL, 863),
+ NAME_FUNC_OFFSET(14585, glInvalidateTexSubImage, glInvalidateTexSubImage, NULL, 864),
+ NAME_FUNC_OFFSET(14609, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 865),
+ NAME_FUNC_OFFSET(14628, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866),
+ NAME_FUNC_OFFSET(14642, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867),
+ NAME_FUNC_OFFSET(14657, gl_dispatch_stub_868, gl_dispatch_stub_868, NULL, 868),
+ NAME_FUNC_OFFSET(14671, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL, 869),
+ NAME_FUNC_OFFSET(14686, gl_dispatch_stub_870, gl_dispatch_stub_870, NULL, 870),
+ NAME_FUNC_OFFSET(14700, gl_dispatch_stub_871, gl_dispatch_stub_871, NULL, 871),
+ NAME_FUNC_OFFSET(14715, gl_dispatch_stub_872, gl_dispatch_stub_872, NULL, 872),
+ NAME_FUNC_OFFSET(14729, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
+ NAME_FUNC_OFFSET(14744, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874),
+ NAME_FUNC_OFFSET(14766, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875),
+ NAME_FUNC_OFFSET(14784, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876),
+ NAME_FUNC_OFFSET(14801, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877),
+ NAME_FUNC_OFFSET(14821, glColorPointerEXT, glColorPointerEXT, NULL, 878),
+ NAME_FUNC_OFFSET(14839, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 879),
+ NAME_FUNC_OFFSET(14860, glIndexPointerEXT, glIndexPointerEXT, NULL, 880),
+ NAME_FUNC_OFFSET(14878, glNormalPointerEXT, glNormalPointerEXT, NULL, 881),
+ NAME_FUNC_OFFSET(14897, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 882),
+ NAME_FUNC_OFFSET(14918, glVertexPointerEXT, glVertexPointerEXT, NULL, 883),
+ NAME_FUNC_OFFSET(14937, gl_dispatch_stub_884, gl_dispatch_stub_884, NULL, 884),
+ NAME_FUNC_OFFSET(14961, glActiveShaderProgram, glActiveShaderProgram, NULL, 885),
+ NAME_FUNC_OFFSET(14983, glBindProgramPipeline, glBindProgramPipeline, NULL, 886),
+ NAME_FUNC_OFFSET(15005, glCreateShaderProgramv, glCreateShaderProgramv, NULL, 887),
+ NAME_FUNC_OFFSET(15028, glDeleteProgramPipelines, glDeleteProgramPipelines, NULL, 888),
+ NAME_FUNC_OFFSET(15053, glGenProgramPipelines, glGenProgramPipelines, NULL, 889),
+ NAME_FUNC_OFFSET(15075, glGetProgramPipelineInfoLog, glGetProgramPipelineInfoLog, NULL, 890),
+ NAME_FUNC_OFFSET(15103, glGetProgramPipelineiv, glGetProgramPipelineiv, NULL, 891),
+ NAME_FUNC_OFFSET(15126, glIsProgramPipeline, glIsProgramPipeline, NULL, 892),
+ NAME_FUNC_OFFSET(15146, glLockArraysEXT, glLockArraysEXT, NULL, 893),
+ NAME_FUNC_OFFSET(15162, glProgramUniform1f, glProgramUniform1f, NULL, 894),
+ NAME_FUNC_OFFSET(15181, glProgramUniform1fv, glProgramUniform1fv, NULL, 895),
+ NAME_FUNC_OFFSET(15201, glProgramUniform1i, glProgramUniform1i, NULL, 896),
+ NAME_FUNC_OFFSET(15220, glProgramUniform1iv, glProgramUniform1iv, NULL, 897),
+ NAME_FUNC_OFFSET(15240, glProgramUniform1ui, glProgramUniform1ui, NULL, 898),
+ NAME_FUNC_OFFSET(15260, glProgramUniform1uiv, glProgramUniform1uiv, NULL, 899),
+ NAME_FUNC_OFFSET(15281, glProgramUniform2f, glProgramUniform2f, NULL, 900),
+ NAME_FUNC_OFFSET(15300, glProgramUniform2fv, glProgramUniform2fv, NULL, 901),
+ NAME_FUNC_OFFSET(15320, glProgramUniform2i, glProgramUniform2i, NULL, 902),
+ NAME_FUNC_OFFSET(15339, glProgramUniform2iv, glProgramUniform2iv, NULL, 903),
+ NAME_FUNC_OFFSET(15359, glProgramUniform2ui, glProgramUniform2ui, NULL, 904),
+ NAME_FUNC_OFFSET(15379, glProgramUniform2uiv, glProgramUniform2uiv, NULL, 905),
+ NAME_FUNC_OFFSET(15400, glProgramUniform3f, glProgramUniform3f, NULL, 906),
+ NAME_FUNC_OFFSET(15419, glProgramUniform3fv, glProgramUniform3fv, NULL, 907),
+ NAME_FUNC_OFFSET(15439, glProgramUniform3i, glProgramUniform3i, NULL, 908),
+ NAME_FUNC_OFFSET(15458, glProgramUniform3iv, glProgramUniform3iv, NULL, 909),
+ NAME_FUNC_OFFSET(15478, glProgramUniform3ui, glProgramUniform3ui, NULL, 910),
+ NAME_FUNC_OFFSET(15498, glProgramUniform3uiv, glProgramUniform3uiv, NULL, 911),
+ NAME_FUNC_OFFSET(15519, glProgramUniform4f, glProgramUniform4f, NULL, 912),
+ NAME_FUNC_OFFSET(15538, glProgramUniform4fv, glProgramUniform4fv, NULL, 913),
+ NAME_FUNC_OFFSET(15558, glProgramUniform4i, glProgramUniform4i, NULL, 914),
+ NAME_FUNC_OFFSET(15577, glProgramUniform4iv, glProgramUniform4iv, NULL, 915),
+ NAME_FUNC_OFFSET(15597, glProgramUniform4ui, glProgramUniform4ui, NULL, 916),
+ NAME_FUNC_OFFSET(15617, glProgramUniform4uiv, glProgramUniform4uiv, NULL, 917),
+ NAME_FUNC_OFFSET(15638, glProgramUniformMatrix2fv, glProgramUniformMatrix2fv, NULL, 918),
+ NAME_FUNC_OFFSET(15664, glProgramUniformMatrix2x3fv, glProgramUniformMatrix2x3fv, NULL, 919),
+ NAME_FUNC_OFFSET(15692, glProgramUniformMatrix2x4fv, glProgramUniformMatrix2x4fv, NULL, 920),
+ NAME_FUNC_OFFSET(15720, glProgramUniformMatrix3fv, glProgramUniformMatrix3fv, NULL, 921),
+ NAME_FUNC_OFFSET(15746, glProgramUniformMatrix3x2fv, glProgramUniformMatrix3x2fv, NULL, 922),
+ NAME_FUNC_OFFSET(15774, glProgramUniformMatrix3x4fv, glProgramUniformMatrix3x4fv, NULL, 923),
+ NAME_FUNC_OFFSET(15802, glProgramUniformMatrix4fv, glProgramUniformMatrix4fv, NULL, 924),
+ NAME_FUNC_OFFSET(15828, glProgramUniformMatrix4x2fv, glProgramUniformMatrix4x2fv, NULL, 925),
+ NAME_FUNC_OFFSET(15856, glProgramUniformMatrix4x3fv, glProgramUniformMatrix4x3fv, NULL, 926),
+ NAME_FUNC_OFFSET(15884, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 927),
+ NAME_FUNC_OFFSET(15902, glUseProgramStages, glUseProgramStages, NULL, 928),
+ NAME_FUNC_OFFSET(15921, glValidateProgramPipeline, glValidateProgramPipeline, NULL, 929),
+ NAME_FUNC_OFFSET(15947, glDebugMessageCallback, glDebugMessageCallback, NULL, 930),
+ NAME_FUNC_OFFSET(15970, glDebugMessageControl, glDebugMessageControl, NULL, 931),
+ NAME_FUNC_OFFSET(15992, glDebugMessageInsert, glDebugMessageInsert, NULL, 932),
+ NAME_FUNC_OFFSET(16013, glGetDebugMessageLog, glGetDebugMessageLog, NULL, 933),
+ NAME_FUNC_OFFSET(16034, glGetObjectLabel, glGetObjectLabel, NULL, 934),
+ NAME_FUNC_OFFSET(16051, glGetObjectPtrLabel, glGetObjectPtrLabel, NULL, 935),
+ NAME_FUNC_OFFSET(16071, glObjectLabel, glObjectLabel, NULL, 936),
+ NAME_FUNC_OFFSET(16085, glObjectPtrLabel, glObjectPtrLabel, NULL, 937),
+ NAME_FUNC_OFFSET(16102, glPopDebugGroup, glPopDebugGroup, NULL, 938),
+ NAME_FUNC_OFFSET(16118, glPushDebugGroup, glPushDebugGroup, NULL, 939),
+ NAME_FUNC_OFFSET(16135, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 940),
+ NAME_FUNC_OFFSET(16157, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 941),
+ NAME_FUNC_OFFSET(16180, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 942),
+ NAME_FUNC_OFFSET(16203, glFogCoordfEXT, glFogCoordfEXT, NULL, 943),
+ NAME_FUNC_OFFSET(16218, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 944),
+ NAME_FUNC_OFFSET(16234, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 945),
+ NAME_FUNC_OFFSET(16254, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 946),
+ NAME_FUNC_OFFSET(16272, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 947),
+ NAME_FUNC_OFFSET(16291, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 948),
+ NAME_FUNC_OFFSET(16309, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 949),
+ NAME_FUNC_OFFSET(16328, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 950),
+ NAME_FUNC_OFFSET(16346, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 951),
+ NAME_FUNC_OFFSET(16365, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 952),
+ NAME_FUNC_OFFSET(16383, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 953),
+ NAME_FUNC_OFFSET(16402, gl_dispatch_stub_954, gl_dispatch_stub_954, NULL, 954),
+ NAME_FUNC_OFFSET(16427, gl_dispatch_stub_955, gl_dispatch_stub_955, NULL, 955),
+ NAME_FUNC_OFFSET(16454, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 956),
+ NAME_FUNC_OFFSET(16478, glExecuteProgramNV, glExecuteProgramNV, NULL, 957),
+ NAME_FUNC_OFFSET(16497, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 958),
+ NAME_FUNC_OFFSET(16523, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 959),
+ NAME_FUNC_OFFSET(16549, glGetProgramStringNV, glGetProgramStringNV, NULL, 960),
+ NAME_FUNC_OFFSET(16570, glGetProgramivNV, glGetProgramivNV, NULL, 961),
+ NAME_FUNC_OFFSET(16587, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 962),
+ NAME_FUNC_OFFSET(16608, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 963),
+ NAME_FUNC_OFFSET(16630, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 964),
+ NAME_FUNC_OFFSET(16652, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 965),
+ NAME_FUNC_OFFSET(16674, glLoadProgramNV, glLoadProgramNV, NULL, 966),
+ NAME_FUNC_OFFSET(16690, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 967),
+ NAME_FUNC_OFFSET(16715, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 968),
+ NAME_FUNC_OFFSET(16740, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 969),
+ NAME_FUNC_OFFSET(16768, glTrackMatrixNV, glTrackMatrixNV, NULL, 970),
+ NAME_FUNC_OFFSET(16784, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 971),
+ NAME_FUNC_OFFSET(16803, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 972),
+ NAME_FUNC_OFFSET(16823, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 973),
+ NAME_FUNC_OFFSET(16842, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 974),
+ NAME_FUNC_OFFSET(16862, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 975),
+ NAME_FUNC_OFFSET(16881, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 976),
+ NAME_FUNC_OFFSET(16901, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 977),
+ NAME_FUNC_OFFSET(16920, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 978),
+ NAME_FUNC_OFFSET(16940, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 979),
+ NAME_FUNC_OFFSET(16959, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 980),
+ NAME_FUNC_OFFSET(16979, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 981),
+ NAME_FUNC_OFFSET(16998, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 982),
+ NAME_FUNC_OFFSET(17018, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 983),
+ NAME_FUNC_OFFSET(17037, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 984),
+ NAME_FUNC_OFFSET(17057, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 985),
+ NAME_FUNC_OFFSET(17076, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 986),
+ NAME_FUNC_OFFSET(17096, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 987),
+ NAME_FUNC_OFFSET(17115, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 988),
+ NAME_FUNC_OFFSET(17135, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 989),
+ NAME_FUNC_OFFSET(17154, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 990),
+ NAME_FUNC_OFFSET(17174, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 991),
+ NAME_FUNC_OFFSET(17193, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 992),
+ NAME_FUNC_OFFSET(17213, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 993),
+ NAME_FUNC_OFFSET(17232, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 994),
+ NAME_FUNC_OFFSET(17252, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 995),
+ NAME_FUNC_OFFSET(17272, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 996),
+ NAME_FUNC_OFFSET(17293, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 997),
+ NAME_FUNC_OFFSET(17317, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 998),
+ NAME_FUNC_OFFSET(17338, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 999),
+ NAME_FUNC_OFFSET(17359, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 1000),
+ NAME_FUNC_OFFSET(17380, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 1001),
+ NAME_FUNC_OFFSET(17401, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 1002),
+ NAME_FUNC_OFFSET(17422, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 1003),
+ NAME_FUNC_OFFSET(17443, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 1004),
+ NAME_FUNC_OFFSET(17464, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 1005),
+ NAME_FUNC_OFFSET(17485, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 1006),
+ NAME_FUNC_OFFSET(17506, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 1007),
+ NAME_FUNC_OFFSET(17527, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 1008),
+ NAME_FUNC_OFFSET(17548, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 1009),
+ NAME_FUNC_OFFSET(17569, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 1010),
+ NAME_FUNC_OFFSET(17591, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 1011),
+ NAME_FUNC_OFFSET(17618, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 1012),
+ NAME_FUNC_OFFSET(17645, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 1013),
+ NAME_FUNC_OFFSET(17669, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 1014),
+ NAME_FUNC_OFFSET(17693, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 1015),
+ NAME_FUNC_OFFSET(17715, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 1016),
+ NAME_FUNC_OFFSET(17737, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 1017),
+ NAME_FUNC_OFFSET(17759, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 1018),
+ NAME_FUNC_OFFSET(17784, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 1019),
+ NAME_FUNC_OFFSET(17808, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 1020),
+ NAME_FUNC_OFFSET(17830, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 1021),
+ NAME_FUNC_OFFSET(17852, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 1022),
+ NAME_FUNC_OFFSET(17874, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 1023),
+ NAME_FUNC_OFFSET(17900, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 1024),
+ NAME_FUNC_OFFSET(17923, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 1025),
+ NAME_FUNC_OFFSET(17947, glPassTexCoordATI, glPassTexCoordATI, NULL, 1026),
+ NAME_FUNC_OFFSET(17965, glSampleMapATI, glSampleMapATI, NULL, 1027),
+ NAME_FUNC_OFFSET(17980, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 1028),
+ NAME_FUNC_OFFSET(18011, gl_dispatch_stub_1029, gl_dispatch_stub_1029, NULL, 1029),
+ NAME_FUNC_OFFSET(18034, gl_dispatch_stub_1030, gl_dispatch_stub_1030, NULL, 1030),
+ NAME_FUNC_OFFSET(18057, gl_dispatch_stub_1031, gl_dispatch_stub_1031, NULL, 1031),
+ NAME_FUNC_OFFSET(18080, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 1032),
+ NAME_FUNC_OFFSET(18111, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 1033),
+ NAME_FUNC_OFFSET(18142, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 1034),
+ NAME_FUNC_OFFSET(18170, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 1035),
+ NAME_FUNC_OFFSET(18199, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 1036),
+ NAME_FUNC_OFFSET(18227, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 1037),
+ NAME_FUNC_OFFSET(18256, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 1038),
+ NAME_FUNC_OFFSET(18277, gl_dispatch_stub_1039, gl_dispatch_stub_1039, NULL, 1039),
+ NAME_FUNC_OFFSET(18294, gl_dispatch_stub_1040, gl_dispatch_stub_1040, NULL, 1040),
+ NAME_FUNC_OFFSET(18307, gl_dispatch_stub_1041, gl_dispatch_stub_1041, NULL, 1041),
+ NAME_FUNC_OFFSET(18321, gl_dispatch_stub_1042, gl_dispatch_stub_1042, NULL, 1042),
+ NAME_FUNC_OFFSET(18338, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 1043),
+ NAME_FUNC_OFFSET(18359, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 1044),
+ NAME_FUNC_OFFSET(18381, gl_dispatch_stub_1045, gl_dispatch_stub_1045, NULL, 1045),
+ NAME_FUNC_OFFSET(18405, gl_dispatch_stub_1046, gl_dispatch_stub_1046, NULL, 1046),
+ NAME_FUNC_OFFSET(18435, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1047),
+ NAME_FUNC_OFFSET(18456, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1048),
+ NAME_FUNC_OFFSET(18478, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1049),
+ NAME_FUNC_OFFSET(18499, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1050),
+ NAME_FUNC_OFFSET(18521, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1051),
+ NAME_FUNC_OFFSET(18543, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1052),
+ NAME_FUNC_OFFSET(18566, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1053),
+ NAME_FUNC_OFFSET(18587, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1054),
+ NAME_FUNC_OFFSET(18609, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1055),
+ NAME_FUNC_OFFSET(18631, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1056),
+ NAME_FUNC_OFFSET(18654, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1057),
+ NAME_FUNC_OFFSET(18675, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1058),
+ NAME_FUNC_OFFSET(18697, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1059),
+ NAME_FUNC_OFFSET(18719, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1060),
+ NAME_FUNC_OFFSET(18742, glClearColorIiEXT, glClearColorIiEXT, NULL, 1061),
+ NAME_FUNC_OFFSET(18760, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 1062),
+ NAME_FUNC_OFFSET(18779, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 1063),
+ NAME_FUNC_OFFSET(18801, glBeginPerfMonitorAMD, glBeginPerfMonitorAMD, NULL, 1064),
+ NAME_FUNC_OFFSET(18823, glDeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, NULL, 1065),
+ NAME_FUNC_OFFSET(18847, glEndPerfMonitorAMD, glEndPerfMonitorAMD, NULL, 1066),
+ NAME_FUNC_OFFSET(18867, glGenPerfMonitorsAMD, glGenPerfMonitorsAMD, NULL, 1067),
+ NAME_FUNC_OFFSET(18888, glGetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, NULL, 1068),
+ NAME_FUNC_OFFSET(18919, glGetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, NULL, 1069),
+ NAME_FUNC_OFFSET(18950, glGetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, NULL, 1070),
+ NAME_FUNC_OFFSET(18983, glGetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, NULL, 1071),
+ NAME_FUNC_OFFSET(19011, glGetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, NULL, 1072),
+ NAME_FUNC_OFFSET(19042, glGetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, NULL, 1073),
+ NAME_FUNC_OFFSET(19068, glSelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, NULL, 1074),
+ NAME_FUNC_OFFSET(19099, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 1075),
+ NAME_FUNC_OFFSET(19127, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 1076),
+ NAME_FUNC_OFFSET(19150, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 1077),
+ NAME_FUNC_OFFSET(19175, glActiveProgramEXT, glActiveProgramEXT, NULL, 1078),
+ NAME_FUNC_OFFSET(19194, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 1079),
+ NAME_FUNC_OFFSET(19219, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 1080),
+ NAME_FUNC_OFFSET(19241, glTextureBarrierNV, glTextureBarrierNV, NULL, 1081),
+ NAME_FUNC_OFFSET(19260, glVDPAUFiniNV, glVDPAUFiniNV, NULL, 1082),
+ NAME_FUNC_OFFSET(19274, glVDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, NULL, 1083),
+ NAME_FUNC_OFFSET(19296, glVDPAUInitNV, glVDPAUInitNV, NULL, 1084),
+ NAME_FUNC_OFFSET(19310, glVDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, NULL, 1085),
+ NAME_FUNC_OFFSET(19329, glVDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, NULL, 1086),
+ NAME_FUNC_OFFSET(19350, glVDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, NULL, 1087),
+ NAME_FUNC_OFFSET(19381, glVDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, NULL, 1088),
+ NAME_FUNC_OFFSET(19411, glVDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, NULL, 1089),
+ NAME_FUNC_OFFSET(19434, glVDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, NULL, 1090),
+ NAME_FUNC_OFFSET(19457, glVDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, NULL, 1091),
+ NAME_FUNC_OFFSET(19484, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092),
+ NAME_FUNC_OFFSET(19509, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093),
+ NAME_FUNC_OFFSET(19538, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094),
+ NAME_FUNC_OFFSET(19569, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 1095),
+ NAME_FUNC_OFFSET(19608, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 1096),
+ NAME_FUNC_OFFSET(19637, gl_dispatch_stub_1097, gl_dispatch_stub_1097, NULL, 1097),
+ NAME_FUNC_OFFSET(19650, gl_dispatch_stub_1098, gl_dispatch_stub_1098, NULL, 1098),
+ NAME_FUNC_OFFSET(19664, gl_dispatch_stub_1099, gl_dispatch_stub_1099, NULL, 1099),
+ NAME_FUNC_OFFSET(19678, gl_dispatch_stub_1100, gl_dispatch_stub_1100, NULL, 1100),
+ NAME_FUNC_OFFSET(19688, gl_dispatch_stub_1101, gl_dispatch_stub_1101, NULL, 1101),
+ NAME_FUNC_OFFSET(19702, gl_dispatch_stub_1102, gl_dispatch_stub_1102, NULL, 1102),
+ NAME_FUNC_OFFSET(19709, gl_dispatch_stub_1103, gl_dispatch_stub_1103, NULL, 1103),
+ NAME_FUNC_OFFSET(19717, gl_dispatch_stub_1104, gl_dispatch_stub_1104, NULL, 1104),
+ NAME_FUNC_OFFSET(19728, gl_dispatch_stub_1105, gl_dispatch_stub_1105, NULL, 1105),
+ NAME_FUNC_OFFSET(19739, gl_dispatch_stub_1106, gl_dispatch_stub_1106, NULL, 1106),
+ NAME_FUNC_OFFSET(19753, gl_dispatch_stub_1107, gl_dispatch_stub_1107, NULL, 1107),
+ NAME_FUNC_OFFSET(19768, gl_dispatch_stub_1108, gl_dispatch_stub_1108, NULL, 1108),
+ NAME_FUNC_OFFSET(19777, gl_dispatch_stub_1109, gl_dispatch_stub_1109, NULL, 1109),
+ NAME_FUNC_OFFSET(19787, gl_dispatch_stub_1110, gl_dispatch_stub_1110, NULL, 1110),
+ NAME_FUNC_OFFSET(19800, gl_dispatch_stub_1111, gl_dispatch_stub_1111, NULL, 1111),
+ NAME_FUNC_OFFSET(19814, gl_dispatch_stub_1112, gl_dispatch_stub_1112, NULL, 1112),
+ NAME_FUNC_OFFSET(19826, gl_dispatch_stub_1113, gl_dispatch_stub_1113, NULL, 1113),
+ NAME_FUNC_OFFSET(19839, gl_dispatch_stub_1114, gl_dispatch_stub_1114, NULL, 1114),
+ NAME_FUNC_OFFSET(19853, gl_dispatch_stub_1115, gl_dispatch_stub_1115, NULL, 1115),
+ NAME_FUNC_OFFSET(19871, gl_dispatch_stub_1116, gl_dispatch_stub_1116, NULL, 1116),
+ NAME_FUNC_OFFSET(19882, gl_dispatch_stub_1117, gl_dispatch_stub_1117, NULL, 1117),
+ NAME_FUNC_OFFSET(19891, gl_dispatch_stub_1118, gl_dispatch_stub_1118, NULL, 1118),
+ NAME_FUNC_OFFSET(19900, gl_dispatch_stub_1119, gl_dispatch_stub_1119, NULL, 1119),
+ NAME_FUNC_OFFSET(19913, gl_dispatch_stub_1120, gl_dispatch_stub_1120, NULL, 1120),
+ NAME_FUNC_OFFSET(19930, gl_dispatch_stub_1121, gl_dispatch_stub_1121, NULL, 1121),
+ NAME_FUNC_OFFSET(19940, gl_dispatch_stub_1122, gl_dispatch_stub_1122, NULL, 1122),
+ NAME_FUNC_OFFSET(19958, gl_dispatch_stub_1123, gl_dispatch_stub_1123, NULL, 1123),
+ NAME_FUNC_OFFSET(19967, gl_dispatch_stub_1124, gl_dispatch_stub_1124, NULL, 1124),
+ NAME_FUNC_OFFSET(19977, gl_dispatch_stub_1125, gl_dispatch_stub_1125, NULL, 1125),
+ NAME_FUNC_OFFSET(19988, gl_dispatch_stub_1126, gl_dispatch_stub_1126, NULL, 1126),
+ NAME_FUNC_OFFSET(20004, gl_dispatch_stub_1127, gl_dispatch_stub_1127, NULL, 1127),
+ NAME_FUNC_OFFSET(20017, gl_dispatch_stub_1128, gl_dispatch_stub_1128, NULL, 1128),
+ NAME_FUNC_OFFSET(20030, gl_dispatch_stub_1129, gl_dispatch_stub_1129, NULL, 1129),
+ NAME_FUNC_OFFSET(20043, gl_dispatch_stub_1130, gl_dispatch_stub_1130, NULL, 1130),
+ NAME_FUNC_OFFSET(20059, gl_dispatch_stub_1131, gl_dispatch_stub_1131, NULL, 1131),
+ NAME_FUNC_OFFSET(20075, gl_dispatch_stub_1132, gl_dispatch_stub_1132, NULL, 1132),
+ NAME_FUNC_OFFSET(20087, gl_dispatch_stub_1133, gl_dispatch_stub_1133, NULL, 1133),
+ NAME_FUNC_OFFSET(20100, gl_dispatch_stub_1134, gl_dispatch_stub_1134, NULL, 1134),
+ NAME_FUNC_OFFSET(20116, gl_dispatch_stub_1135, gl_dispatch_stub_1135, NULL, 1135),
+ NAME_FUNC_OFFSET(20130, gl_dispatch_stub_1136, gl_dispatch_stub_1136, NULL, 1136),
+ NAME_FUNC_OFFSET(20150, gl_dispatch_stub_1137, gl_dispatch_stub_1137, NULL, 1137),
+ NAME_FUNC_OFFSET(20168, gl_dispatch_stub_1138, gl_dispatch_stub_1138, NULL, 1138),
+ NAME_FUNC_OFFSET(20187, gl_dispatch_stub_1139, gl_dispatch_stub_1139, NULL, 1139),
+ NAME_FUNC_OFFSET(20204, glTexGenf, glTexGenf, NULL, 190),
+ NAME_FUNC_OFFSET(20217, glTexGenfv, glTexGenfv, NULL, 191),
+ NAME_FUNC_OFFSET(20231, glTexGeni, glTexGeni, NULL, 192),
+ NAME_FUNC_OFFSET(20244, glTexGeniv, glTexGeniv, NULL, 193),
+ NAME_FUNC_OFFSET(20258, glReadBuffer, glReadBuffer, NULL, 254),
+ NAME_FUNC_OFFSET(20273, glGetTexGenfv, glGetTexGenfv, NULL, 279),
+ NAME_FUNC_OFFSET(20290, glGetTexGeniv, glGetTexGeniv, NULL, 280),
+ NAME_FUNC_OFFSET(20307, glArrayElement, glArrayElement, NULL, 306),
+ NAME_FUNC_OFFSET(20325, glBindTexture, glBindTexture, NULL, 307),
+ NAME_FUNC_OFFSET(20342, glDrawArrays, glDrawArrays, NULL, 310),
+ NAME_FUNC_OFFSET(20358, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322),
+ NAME_FUNC_OFFSET(20383, glCopyTexImage1D, glCopyTexImage1D, NULL, 323),
+ NAME_FUNC_OFFSET(20403, glCopyTexImage2D, glCopyTexImage2D, NULL, 324),
+ NAME_FUNC_OFFSET(20423, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325),
+ NAME_FUNC_OFFSET(20446, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326),
+ NAME_FUNC_OFFSET(20469, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327),
+ NAME_FUNC_OFFSET(20489, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328),
+ NAME_FUNC_OFFSET(20506, glGetPointerv, glGetPointerv, NULL, 329),
+ NAME_FUNC_OFFSET(20523, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330),
+ NAME_FUNC_OFFSET(20538, glPrioritizeTextures, glPrioritizeTextures, NULL, 331),
+ NAME_FUNC_OFFSET(20562, glTexSubImage1D, glTexSubImage1D, NULL, 332),
+ NAME_FUNC_OFFSET(20581, glTexSubImage2D, glTexSubImage2D, NULL, 333),
+ NAME_FUNC_OFFSET(20600, glBlendColor, glBlendColor, NULL, 336),
+ NAME_FUNC_OFFSET(20616, glBlendEquation, glBlendEquation, NULL, 337),
+ NAME_FUNC_OFFSET(20635, glBlendEquation, glBlendEquation, NULL, 337),
+ NAME_FUNC_OFFSET(20654, glDrawRangeElements, glDrawRangeElements, NULL, 338),
+ NAME_FUNC_OFFSET(20677, glColorTable, glColorTable, NULL, 339),
+ NAME_FUNC_OFFSET(20693, glColorTable, glColorTable, NULL, 339),
+ NAME_FUNC_OFFSET(20709, glColorTableParameterfv, glColorTableParameterfv, NULL, 340),
+ NAME_FUNC_OFFSET(20736, glColorTableParameteriv, glColorTableParameteriv, NULL, 341),
+ NAME_FUNC_OFFSET(20763, glCopyColorTable, glCopyColorTable, NULL, 342),
+ NAME_FUNC_OFFSET(20783, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
+ NAME_FUNC_OFFSET(20802, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343),
+ NAME_FUNC_OFFSET(20821, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
+ NAME_FUNC_OFFSET(20851, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344),
+ NAME_FUNC_OFFSET(20881, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
+ NAME_FUNC_OFFSET(20911, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345),
+ NAME_FUNC_OFFSET(20941, glColorSubTable, glColorSubTable, NULL, 346),
+ NAME_FUNC_OFFSET(20960, glCopyColorSubTable, glCopyColorSubTable, NULL, 347),
+ NAME_FUNC_OFFSET(20983, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348),
+ NAME_FUNC_OFFSET(21008, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349),
+ NAME_FUNC_OFFSET(21033, glConvolutionParameterf, glConvolutionParameterf, NULL, 350),
+ NAME_FUNC_OFFSET(21060, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351),
+ NAME_FUNC_OFFSET(21088, glConvolutionParameteri, glConvolutionParameteri, NULL, 352),
+ NAME_FUNC_OFFSET(21115, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353),
+ NAME_FUNC_OFFSET(21143, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354),
+ NAME_FUNC_OFFSET(21172, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355),
+ NAME_FUNC_OFFSET(21201, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356),
+ NAME_FUNC_OFFSET(21227, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357),
+ NAME_FUNC_OFFSET(21258, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358),
+ NAME_FUNC_OFFSET(21289, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359),
+ NAME_FUNC_OFFSET(21313, glSeparableFilter2D, glSeparableFilter2D, NULL, 360),
+ NAME_FUNC_OFFSET(21336, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361),
+ NAME_FUNC_OFFSET(21354, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362),
+ NAME_FUNC_OFFSET(21383, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363),
+ NAME_FUNC_OFFSET(21412, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364),
+ NAME_FUNC_OFFSET(21427, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365),
+ NAME_FUNC_OFFSET(21453, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366),
+ NAME_FUNC_OFFSET(21479, glHistogram, glHistogram, NULL, 367),
+ NAME_FUNC_OFFSET(21494, glMinmax, glMinmax, NULL, 368),
+ NAME_FUNC_OFFSET(21506, glResetHistogram, glResetHistogram, NULL, 369),
+ NAME_FUNC_OFFSET(21526, glResetMinmax, glResetMinmax, NULL, 370),
+ NAME_FUNC_OFFSET(21543, glTexImage3D, glTexImage3D, NULL, 371),
+ NAME_FUNC_OFFSET(21559, glTexImage3D, glTexImage3D, NULL, 371),
+ NAME_FUNC_OFFSET(21575, glTexSubImage3D, glTexSubImage3D, NULL, 372),
+ NAME_FUNC_OFFSET(21594, glTexSubImage3D, glTexSubImage3D, NULL, 372),
+ NAME_FUNC_OFFSET(21613, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
+ NAME_FUNC_OFFSET(21636, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373),
+ NAME_FUNC_OFFSET(21659, glActiveTexture, glActiveTexture, NULL, 374),
+ NAME_FUNC_OFFSET(21678, glClientActiveTexture, glClientActiveTexture, NULL, 375),
+ NAME_FUNC_OFFSET(21703, glMultiTexCoord1d, glMultiTexCoord1d, NULL, 376),
+ NAME_FUNC_OFFSET(21724, glMultiTexCoord1dv, glMultiTexCoord1dv, NULL, 377),
+ NAME_FUNC_OFFSET(21746, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378),
+ NAME_FUNC_OFFSET(21764, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379),
+ NAME_FUNC_OFFSET(21783, glMultiTexCoord1i, glMultiTexCoord1i, NULL, 380),
+ NAME_FUNC_OFFSET(21804, glMultiTexCoord1iv, glMultiTexCoord1iv, NULL, 381),
+ NAME_FUNC_OFFSET(21826, glMultiTexCoord1s, glMultiTexCoord1s, NULL, 382),
+ NAME_FUNC_OFFSET(21847, glMultiTexCoord1sv, glMultiTexCoord1sv, NULL, 383),
+ NAME_FUNC_OFFSET(21869, glMultiTexCoord2d, glMultiTexCoord2d, NULL, 384),
+ NAME_FUNC_OFFSET(21890, glMultiTexCoord2dv, glMultiTexCoord2dv, NULL, 385),
+ NAME_FUNC_OFFSET(21912, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386),
+ NAME_FUNC_OFFSET(21930, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387),
+ NAME_FUNC_OFFSET(21949, glMultiTexCoord2i, glMultiTexCoord2i, NULL, 388),
+ NAME_FUNC_OFFSET(21970, glMultiTexCoord2iv, glMultiTexCoord2iv, NULL, 389),
+ NAME_FUNC_OFFSET(21992, glMultiTexCoord2s, glMultiTexCoord2s, NULL, 390),
+ NAME_FUNC_OFFSET(22013, glMultiTexCoord2sv, glMultiTexCoord2sv, NULL, 391),
+ NAME_FUNC_OFFSET(22035, glMultiTexCoord3d, glMultiTexCoord3d, NULL, 392),
+ NAME_FUNC_OFFSET(22056, glMultiTexCoord3dv, glMultiTexCoord3dv, NULL, 393),
+ NAME_FUNC_OFFSET(22078, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394),
+ NAME_FUNC_OFFSET(22096, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395),
+ NAME_FUNC_OFFSET(22115, glMultiTexCoord3i, glMultiTexCoord3i, NULL, 396),
+ NAME_FUNC_OFFSET(22136, glMultiTexCoord3iv, glMultiTexCoord3iv, NULL, 397),
+ NAME_FUNC_OFFSET(22158, glMultiTexCoord3s, glMultiTexCoord3s, NULL, 398),
+ NAME_FUNC_OFFSET(22179, glMultiTexCoord3sv, glMultiTexCoord3sv, NULL, 399),
+ NAME_FUNC_OFFSET(22201, glMultiTexCoord4d, glMultiTexCoord4d, NULL, 400),
+ NAME_FUNC_OFFSET(22222, glMultiTexCoord4dv, glMultiTexCoord4dv, NULL, 401),
+ NAME_FUNC_OFFSET(22244, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402),
+ NAME_FUNC_OFFSET(22262, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403),
+ NAME_FUNC_OFFSET(22281, glMultiTexCoord4i, glMultiTexCoord4i, NULL, 404),
+ NAME_FUNC_OFFSET(22302, glMultiTexCoord4iv, glMultiTexCoord4iv, NULL, 405),
+ NAME_FUNC_OFFSET(22324, glMultiTexCoord4s, glMultiTexCoord4s, NULL, 406),
+ NAME_FUNC_OFFSET(22345, glMultiTexCoord4sv, glMultiTexCoord4sv, NULL, 407),
+ NAME_FUNC_OFFSET(22367, glCompressedTexImage1D, glCompressedTexImage1D, NULL, 408),
+ NAME_FUNC_OFFSET(22393, glCompressedTexImage2D, glCompressedTexImage2D, NULL, 409),
+ NAME_FUNC_OFFSET(22419, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410),
+ NAME_FUNC_OFFSET(22445, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410),
+ NAME_FUNC_OFFSET(22471, glCompressedTexSubImage1D, glCompressedTexSubImage1D, NULL, 411),
+ NAME_FUNC_OFFSET(22500, glCompressedTexSubImage2D, glCompressedTexSubImage2D, NULL, 412),
+ NAME_FUNC_OFFSET(22529, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413),
+ NAME_FUNC_OFFSET(22558, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413),
+ NAME_FUNC_OFFSET(22587, glGetCompressedTexImage, glGetCompressedTexImage, NULL, 414),
+ NAME_FUNC_OFFSET(22614, glLoadTransposeMatrixd, glLoadTransposeMatrixd, NULL, 415),
+ NAME_FUNC_OFFSET(22640, glLoadTransposeMatrixf, glLoadTransposeMatrixf, NULL, 416),
+ NAME_FUNC_OFFSET(22666, glMultTransposeMatrixd, glMultTransposeMatrixd, NULL, 417),
+ NAME_FUNC_OFFSET(22692, glMultTransposeMatrixf, glMultTransposeMatrixf, NULL, 418),
+ NAME_FUNC_OFFSET(22718, glSampleCoverage, glSampleCoverage, NULL, 419),
+ NAME_FUNC_OFFSET(22738, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
+ NAME_FUNC_OFFSET(22761, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
+ NAME_FUNC_OFFSET(22785, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420),
+ NAME_FUNC_OFFSET(22808, glFogCoordPointer, glFogCoordPointer, NULL, 421),
+ NAME_FUNC_OFFSET(22829, glFogCoordd, glFogCoordd, NULL, 422),
+ NAME_FUNC_OFFSET(22844, glFogCoorddv, glFogCoorddv, NULL, 423),
+ NAME_FUNC_OFFSET(22860, glMultiDrawArrays, glMultiDrawArrays, NULL, 424),
+ NAME_FUNC_OFFSET(22881, glPointParameterf, glPointParameterf, NULL, 425),
+ NAME_FUNC_OFFSET(22902, glPointParameterf, glPointParameterf, NULL, 425),
+ NAME_FUNC_OFFSET(22923, glPointParameterf, glPointParameterf, NULL, 425),
+ NAME_FUNC_OFFSET(22945, glPointParameterfv, glPointParameterfv, NULL, 426),
+ NAME_FUNC_OFFSET(22967, glPointParameterfv, glPointParameterfv, NULL, 426),
+ NAME_FUNC_OFFSET(22989, glPointParameterfv, glPointParameterfv, NULL, 426),
+ NAME_FUNC_OFFSET(23012, glPointParameteri, glPointParameteri, NULL, 427),
+ NAME_FUNC_OFFSET(23032, glPointParameteriv, glPointParameteriv, NULL, 428),
+ NAME_FUNC_OFFSET(23053, glSecondaryColor3b, glSecondaryColor3b, NULL, 429),
+ NAME_FUNC_OFFSET(23075, glSecondaryColor3bv, glSecondaryColor3bv, NULL, 430),
+ NAME_FUNC_OFFSET(23098, glSecondaryColor3d, glSecondaryColor3d, NULL, 431),
+ NAME_FUNC_OFFSET(23120, glSecondaryColor3dv, glSecondaryColor3dv, NULL, 432),
+ NAME_FUNC_OFFSET(23143, glSecondaryColor3i, glSecondaryColor3i, NULL, 433),
+ NAME_FUNC_OFFSET(23165, glSecondaryColor3iv, glSecondaryColor3iv, NULL, 434),
+ NAME_FUNC_OFFSET(23188, glSecondaryColor3s, glSecondaryColor3s, NULL, 435),
+ NAME_FUNC_OFFSET(23210, glSecondaryColor3sv, glSecondaryColor3sv, NULL, 436),
+ NAME_FUNC_OFFSET(23233, glSecondaryColor3ub, glSecondaryColor3ub, NULL, 437),
+ NAME_FUNC_OFFSET(23256, glSecondaryColor3ubv, glSecondaryColor3ubv, NULL, 438),
+ NAME_FUNC_OFFSET(23280, glSecondaryColor3ui, glSecondaryColor3ui, NULL, 439),
+ NAME_FUNC_OFFSET(23303, glSecondaryColor3uiv, glSecondaryColor3uiv, NULL, 440),
+ NAME_FUNC_OFFSET(23327, glSecondaryColor3us, glSecondaryColor3us, NULL, 441),
+ NAME_FUNC_OFFSET(23350, glSecondaryColor3usv, glSecondaryColor3usv, NULL, 442),
+ NAME_FUNC_OFFSET(23374, glSecondaryColorPointer, glSecondaryColorPointer, NULL, 443),
+ NAME_FUNC_OFFSET(23401, glWindowPos2d, glWindowPos2d, NULL, 444),
+ NAME_FUNC_OFFSET(23418, glWindowPos2d, glWindowPos2d, NULL, 444),
+ NAME_FUNC_OFFSET(23436, glWindowPos2dv, glWindowPos2dv, NULL, 445),
+ NAME_FUNC_OFFSET(23454, glWindowPos2dv, glWindowPos2dv, NULL, 445),
+ NAME_FUNC_OFFSET(23473, glWindowPos2f, glWindowPos2f, NULL, 446),
+ NAME_FUNC_OFFSET(23490, glWindowPos2f, glWindowPos2f, NULL, 446),
+ NAME_FUNC_OFFSET(23508, glWindowPos2fv, glWindowPos2fv, NULL, 447),
+ NAME_FUNC_OFFSET(23526, glWindowPos2fv, glWindowPos2fv, NULL, 447),
+ NAME_FUNC_OFFSET(23545, glWindowPos2i, glWindowPos2i, NULL, 448),
+ NAME_FUNC_OFFSET(23562, glWindowPos2i, glWindowPos2i, NULL, 448),
+ NAME_FUNC_OFFSET(23580, glWindowPos2iv, glWindowPos2iv, NULL, 449),
+ NAME_FUNC_OFFSET(23598, glWindowPos2iv, glWindowPos2iv, NULL, 449),
+ NAME_FUNC_OFFSET(23617, glWindowPos2s, glWindowPos2s, NULL, 450),
+ NAME_FUNC_OFFSET(23634, glWindowPos2s, glWindowPos2s, NULL, 450),
+ NAME_FUNC_OFFSET(23652, glWindowPos2sv, glWindowPos2sv, NULL, 451),
+ NAME_FUNC_OFFSET(23670, glWindowPos2sv, glWindowPos2sv, NULL, 451),
+ NAME_FUNC_OFFSET(23689, glWindowPos3d, glWindowPos3d, NULL, 452),
+ NAME_FUNC_OFFSET(23706, glWindowPos3d, glWindowPos3d, NULL, 452),
+ NAME_FUNC_OFFSET(23724, glWindowPos3dv, glWindowPos3dv, NULL, 453),
+ NAME_FUNC_OFFSET(23742, glWindowPos3dv, glWindowPos3dv, NULL, 453),
+ NAME_FUNC_OFFSET(23761, glWindowPos3f, glWindowPos3f, NULL, 454),
+ NAME_FUNC_OFFSET(23778, glWindowPos3f, glWindowPos3f, NULL, 454),
+ NAME_FUNC_OFFSET(23796, glWindowPos3fv, glWindowPos3fv, NULL, 455),
+ NAME_FUNC_OFFSET(23814, glWindowPos3fv, glWindowPos3fv, NULL, 455),
+ NAME_FUNC_OFFSET(23833, glWindowPos3i, glWindowPos3i, NULL, 456),
+ NAME_FUNC_OFFSET(23850, glWindowPos3i, glWindowPos3i, NULL, 456),
+ NAME_FUNC_OFFSET(23868, glWindowPos3iv, glWindowPos3iv, NULL, 457),
+ NAME_FUNC_OFFSET(23886, glWindowPos3iv, glWindowPos3iv, NULL, 457),
+ NAME_FUNC_OFFSET(23905, glWindowPos3s, glWindowPos3s, NULL, 458),
+ NAME_FUNC_OFFSET(23922, glWindowPos3s, glWindowPos3s, NULL, 458),
+ NAME_FUNC_OFFSET(23940, glWindowPos3sv, glWindowPos3sv, NULL, 459),
+ NAME_FUNC_OFFSET(23958, glWindowPos3sv, glWindowPos3sv, NULL, 459),
+ NAME_FUNC_OFFSET(23977, glBeginQuery, glBeginQuery, NULL, 460),
+ NAME_FUNC_OFFSET(23993, glBindBuffer, glBindBuffer, NULL, 461),
+ NAME_FUNC_OFFSET(24009, glBufferData, glBufferData, NULL, 462),
+ NAME_FUNC_OFFSET(24025, glBufferSubData, glBufferSubData, NULL, 463),
+ NAME_FUNC_OFFSET(24044, glDeleteBuffers, glDeleteBuffers, NULL, 464),
+ NAME_FUNC_OFFSET(24063, glDeleteQueries, glDeleteQueries, NULL, 465),
+ NAME_FUNC_OFFSET(24082, glEndQuery, glEndQuery, NULL, 466),
+ NAME_FUNC_OFFSET(24096, glGenBuffers, glGenBuffers, NULL, 467),
+ NAME_FUNC_OFFSET(24112, glGenQueries, glGenQueries, NULL, 468),
+ NAME_FUNC_OFFSET(24128, glGetBufferParameteriv, glGetBufferParameteriv, NULL, 469),
+ NAME_FUNC_OFFSET(24154, glGetBufferPointerv, glGetBufferPointerv, NULL, 470),
+ NAME_FUNC_OFFSET(24177, glGetBufferPointerv, glGetBufferPointerv, NULL, 470),
+ NAME_FUNC_OFFSET(24200, glGetBufferSubData, glGetBufferSubData, NULL, 471),
+ NAME_FUNC_OFFSET(24222, glGetQueryObjectiv, glGetQueryObjectiv, NULL, 472),
+ NAME_FUNC_OFFSET(24244, glGetQueryObjectuiv, glGetQueryObjectuiv, NULL, 473),
+ NAME_FUNC_OFFSET(24267, glGetQueryiv, glGetQueryiv, NULL, 474),
+ NAME_FUNC_OFFSET(24283, glIsBuffer, glIsBuffer, NULL, 475),
+ NAME_FUNC_OFFSET(24297, glIsQuery, glIsQuery, NULL, 476),
+ NAME_FUNC_OFFSET(24310, glMapBuffer, glMapBuffer, NULL, 477),
+ NAME_FUNC_OFFSET(24325, glMapBuffer, glMapBuffer, NULL, 477),
+ NAME_FUNC_OFFSET(24340, glUnmapBuffer, glUnmapBuffer, NULL, 478),
+ NAME_FUNC_OFFSET(24357, glUnmapBuffer, glUnmapBuffer, NULL, 478),
+ NAME_FUNC_OFFSET(24374, glBindAttribLocation, glBindAttribLocation, NULL, 480),
+ NAME_FUNC_OFFSET(24398, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
+ NAME_FUNC_OFFSET(24425, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
+ NAME_FUNC_OFFSET(24452, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481),
+ NAME_FUNC_OFFSET(24479, glCompileShader, glCompileShader, NULL, 482),
+ NAME_FUNC_OFFSET(24498, glDisableVertexAttribArray, glDisableVertexAttribArray, NULL, 488),
+ NAME_FUNC_OFFSET(24528, glDrawBuffers, glDrawBuffers, NULL, 489),
+ NAME_FUNC_OFFSET(24545, glDrawBuffers, glDrawBuffers, NULL, 489),
+ NAME_FUNC_OFFSET(24562, glDrawBuffers, glDrawBuffers, NULL, 489),
+ NAME_FUNC_OFFSET(24578, glEnableVertexAttribArray, glEnableVertexAttribArray, NULL, 490),
+ NAME_FUNC_OFFSET(24607, glGetActiveAttrib, glGetActiveAttrib, NULL, 491),
+ NAME_FUNC_OFFSET(24628, glGetActiveUniform, glGetActiveUniform, NULL, 492),
+ NAME_FUNC_OFFSET(24650, glGetAttribLocation, glGetAttribLocation, NULL, 494),
+ NAME_FUNC_OFFSET(24673, glGetShaderSource, glGetShaderSource, NULL, 498),
+ NAME_FUNC_OFFSET(24694, glGetUniformLocation, glGetUniformLocation, NULL, 500),
+ NAME_FUNC_OFFSET(24718, glGetUniformfv, glGetUniformfv, NULL, 501),
+ NAME_FUNC_OFFSET(24736, glGetUniformiv, glGetUniformiv, NULL, 502),
+ NAME_FUNC_OFFSET(24754, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503),
+ NAME_FUNC_OFFSET(24783, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503),
+ NAME_FUNC_OFFSET(24811, glGetVertexAttribdv, glGetVertexAttribdv, NULL, 504),
+ NAME_FUNC_OFFSET(24834, glGetVertexAttribfv, glGetVertexAttribfv, NULL, 505),
+ NAME_FUNC_OFFSET(24857, glGetVertexAttribiv, glGetVertexAttribiv, NULL, 506),
+ NAME_FUNC_OFFSET(24880, glLinkProgram, glLinkProgram, NULL, 509),
+ NAME_FUNC_OFFSET(24897, glShaderSource, glShaderSource, NULL, 510),
+ NAME_FUNC_OFFSET(24915, glStencilOpSeparate, glStencilOpSeparate, NULL, 513),
+ NAME_FUNC_OFFSET(24938, glUniform1f, glUniform1f, NULL, 514),
+ NAME_FUNC_OFFSET(24953, glUniform1fv, glUniform1fv, NULL, 515),
+ NAME_FUNC_OFFSET(24969, glUniform1i, glUniform1i, NULL, 516),
+ NAME_FUNC_OFFSET(24984, glUniform1iv, glUniform1iv, NULL, 517),
+ NAME_FUNC_OFFSET(25000, glUniform2f, glUniform2f, NULL, 518),
+ NAME_FUNC_OFFSET(25015, glUniform2fv, glUniform2fv, NULL, 519),
+ NAME_FUNC_OFFSET(25031, glUniform2i, glUniform2i, NULL, 520),
+ NAME_FUNC_OFFSET(25046, glUniform2iv, glUniform2iv, NULL, 521),
+ NAME_FUNC_OFFSET(25062, glUniform3f, glUniform3f, NULL, 522),
+ NAME_FUNC_OFFSET(25077, glUniform3fv, glUniform3fv, NULL, 523),
+ NAME_FUNC_OFFSET(25093, glUniform3i, glUniform3i, NULL, 524),
+ NAME_FUNC_OFFSET(25108, glUniform3iv, glUniform3iv, NULL, 525),
+ NAME_FUNC_OFFSET(25124, glUniform4f, glUniform4f, NULL, 526),
+ NAME_FUNC_OFFSET(25139, glUniform4fv, glUniform4fv, NULL, 527),
+ NAME_FUNC_OFFSET(25155, glUniform4i, glUniform4i, NULL, 528),
+ NAME_FUNC_OFFSET(25170, glUniform4iv, glUniform4iv, NULL, 529),
+ NAME_FUNC_OFFSET(25186, glUniformMatrix2fv, glUniformMatrix2fv, NULL, 530),
+ NAME_FUNC_OFFSET(25208, glUniformMatrix3fv, glUniformMatrix3fv, NULL, 531),
+ NAME_FUNC_OFFSET(25230, glUniformMatrix4fv, glUniformMatrix4fv, NULL, 532),
+ NAME_FUNC_OFFSET(25252, glUseProgram, glUseProgram, NULL, 533),
+ NAME_FUNC_OFFSET(25274, glValidateProgram, glValidateProgram, NULL, 534),
+ NAME_FUNC_OFFSET(25295, glVertexAttrib1d, glVertexAttrib1d, NULL, 535),
+ NAME_FUNC_OFFSET(25315, glVertexAttrib1dv, glVertexAttrib1dv, NULL, 536),
+ NAME_FUNC_OFFSET(25336, glVertexAttrib1s, glVertexAttrib1s, NULL, 537),
+ NAME_FUNC_OFFSET(25356, glVertexAttrib1sv, glVertexAttrib1sv, NULL, 538),
+ NAME_FUNC_OFFSET(25377, glVertexAttrib2d, glVertexAttrib2d, NULL, 539),
+ NAME_FUNC_OFFSET(25397, glVertexAttrib2dv, glVertexAttrib2dv, NULL, 540),
+ NAME_FUNC_OFFSET(25418, glVertexAttrib2s, glVertexAttrib2s, NULL, 541),
+ NAME_FUNC_OFFSET(25438, glVertexAttrib2sv, glVertexAttrib2sv, NULL, 542),
+ NAME_FUNC_OFFSET(25459, glVertexAttrib3d, glVertexAttrib3d, NULL, 543),
+ NAME_FUNC_OFFSET(25479, glVertexAttrib3dv, glVertexAttrib3dv, NULL, 544),
+ NAME_FUNC_OFFSET(25500, glVertexAttrib3s, glVertexAttrib3s, NULL, 545),
+ NAME_FUNC_OFFSET(25520, glVertexAttrib3sv, glVertexAttrib3sv, NULL, 546),
+ NAME_FUNC_OFFSET(25541, glVertexAttrib4Nbv, glVertexAttrib4Nbv, NULL, 547),
+ NAME_FUNC_OFFSET(25563, glVertexAttrib4Niv, glVertexAttrib4Niv, NULL, 548),
+ NAME_FUNC_OFFSET(25585, glVertexAttrib4Nsv, glVertexAttrib4Nsv, NULL, 549),
+ NAME_FUNC_OFFSET(25607, glVertexAttrib4Nub, glVertexAttrib4Nub, NULL, 550),
+ NAME_FUNC_OFFSET(25629, glVertexAttrib4Nubv, glVertexAttrib4Nubv, NULL, 551),
+ NAME_FUNC_OFFSET(25652, glVertexAttrib4Nuiv, glVertexAttrib4Nuiv, NULL, 552),
+ NAME_FUNC_OFFSET(25675, glVertexAttrib4Nusv, glVertexAttrib4Nusv, NULL, 553),
+ NAME_FUNC_OFFSET(25698, glVertexAttrib4bv, glVertexAttrib4bv, NULL, 554),
+ NAME_FUNC_OFFSET(25719, glVertexAttrib4d, glVertexAttrib4d, NULL, 555),
+ NAME_FUNC_OFFSET(25739, glVertexAttrib4dv, glVertexAttrib4dv, NULL, 556),
+ NAME_FUNC_OFFSET(25760, glVertexAttrib4iv, glVertexAttrib4iv, NULL, 557),
+ NAME_FUNC_OFFSET(25781, glVertexAttrib4s, glVertexAttrib4s, NULL, 558),
+ NAME_FUNC_OFFSET(25801, glVertexAttrib4sv, glVertexAttrib4sv, NULL, 559),
+ NAME_FUNC_OFFSET(25822, glVertexAttrib4ubv, glVertexAttrib4ubv, NULL, 560),
+ NAME_FUNC_OFFSET(25844, glVertexAttrib4uiv, glVertexAttrib4uiv, NULL, 561),
+ NAME_FUNC_OFFSET(25866, glVertexAttrib4usv, glVertexAttrib4usv, NULL, 562),
+ NAME_FUNC_OFFSET(25888, glVertexAttribPointer, glVertexAttribPointer, NULL, 563),
+ NAME_FUNC_OFFSET(25913, glBeginConditionalRender, glBeginConditionalRender, NULL, 570),
+ NAME_FUNC_OFFSET(25940, glBeginTransformFeedback, glBeginTransformFeedback, NULL, 571),
+ NAME_FUNC_OFFSET(25968, glBindBufferBase, glBindBufferBase, NULL, 572),
+ NAME_FUNC_OFFSET(25988, glBindBufferRange, glBindBufferRange, NULL, 573),
+ NAME_FUNC_OFFSET(26009, glBindFragDataLocation, glBindFragDataLocation, NULL, 574),
+ NAME_FUNC_OFFSET(26035, glClampColor, glClampColor, NULL, 575),
+ NAME_FUNC_OFFSET(26051, glColorMaski, glColorMaski, NULL, 580),
+ NAME_FUNC_OFFSET(26073, glDisablei, glDisablei, NULL, 581),
+ NAME_FUNC_OFFSET(26093, glEnablei, glEnablei, NULL, 582),
+ NAME_FUNC_OFFSET(26112, glEndConditionalRender, glEndConditionalRender, NULL, 583),
+ NAME_FUNC_OFFSET(26137, glEndTransformFeedback, glEndTransformFeedback, NULL, 584),
+ NAME_FUNC_OFFSET(26163, glGetBooleani_v, glGetBooleani_v, NULL, 585),
+ NAME_FUNC_OFFSET(26187, glGetFragDataLocation, glGetFragDataLocation, NULL, 586),
+ NAME_FUNC_OFFSET(26212, glGetIntegeri_v, glGetIntegeri_v, NULL, 587),
+ NAME_FUNC_OFFSET(26236, glGetTexParameterIiv, glGetTexParameterIiv, NULL, 589),
+ NAME_FUNC_OFFSET(26260, glGetTexParameterIuiv, glGetTexParameterIuiv, NULL, 590),
+ NAME_FUNC_OFFSET(26285, glGetTransformFeedbackVarying, glGetTransformFeedbackVarying, NULL, 591),
+ NAME_FUNC_OFFSET(26318, glGetUniformuiv, glGetUniformuiv, NULL, 592),
+ NAME_FUNC_OFFSET(26337, glGetVertexAttribIiv, glGetVertexAttribIiv, NULL, 593),
+ NAME_FUNC_OFFSET(26361, glGetVertexAttribIuiv, glGetVertexAttribIuiv, NULL, 594),
+ NAME_FUNC_OFFSET(26386, glIsEnabledi, glIsEnabledi, NULL, 595),
+ NAME_FUNC_OFFSET(26408, glTexParameterIiv, glTexParameterIiv, NULL, 596),
+ NAME_FUNC_OFFSET(26429, glTexParameterIuiv, glTexParameterIuiv, NULL, 597),
+ NAME_FUNC_OFFSET(26451, glTransformFeedbackVaryings, glTransformFeedbackVaryings, NULL, 598),
+ NAME_FUNC_OFFSET(26482, glUniform1ui, glUniform1ui, NULL, 599),
+ NAME_FUNC_OFFSET(26498, glUniform1uiv, glUniform1uiv, NULL, 600),
+ NAME_FUNC_OFFSET(26515, glUniform2ui, glUniform2ui, NULL, 601),
+ NAME_FUNC_OFFSET(26531, glUniform2uiv, glUniform2uiv, NULL, 602),
+ NAME_FUNC_OFFSET(26548, glUniform3ui, glUniform3ui, NULL, 603),
+ NAME_FUNC_OFFSET(26564, glUniform3uiv, glUniform3uiv, NULL, 604),
+ NAME_FUNC_OFFSET(26581, glUniform4ui, glUniform4ui, NULL, 605),
+ NAME_FUNC_OFFSET(26597, glUniform4uiv, glUniform4uiv, NULL, 606),
+ NAME_FUNC_OFFSET(26614, glVertexAttribI1iv, glVertexAttribI1iv, NULL, 607),
+ NAME_FUNC_OFFSET(26636, glVertexAttribI1uiv, glVertexAttribI1uiv, NULL, 608),
+ NAME_FUNC_OFFSET(26659, glVertexAttribI4bv, glVertexAttribI4bv, NULL, 609),
+ NAME_FUNC_OFFSET(26681, glVertexAttribI4sv, glVertexAttribI4sv, NULL, 610),
+ NAME_FUNC_OFFSET(26703, glVertexAttribI4ubv, glVertexAttribI4ubv, NULL, 611),
+ NAME_FUNC_OFFSET(26726, glVertexAttribI4usv, glVertexAttribI4usv, NULL, 612),
+ NAME_FUNC_OFFSET(26749, glVertexAttribIPointer, glVertexAttribIPointer, NULL, 613),
+ NAME_FUNC_OFFSET(26775, glPrimitiveRestartIndex, glPrimitiveRestartIndex, NULL, 614),
+ NAME_FUNC_OFFSET(26801, glTexBuffer, glTexBuffer, NULL, 615),
+ NAME_FUNC_OFFSET(26816, glFramebufferTexture, glFramebufferTexture, NULL, 616),
+ NAME_FUNC_OFFSET(26840, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 619),
+ NAME_FUNC_OFFSET(26865, glMinSampleShading, glMinSampleShading, NULL, 620),
+ NAME_FUNC_OFFSET(26887, glBindProgramARB, glBindProgramARB, NULL, 621),
+ NAME_FUNC_OFFSET(26903, glDeleteProgramsARB, glDeleteProgramsARB, NULL, 622),
+ NAME_FUNC_OFFSET(26922, glGenProgramsARB, glGenProgramsARB, NULL, 623),
+ NAME_FUNC_OFFSET(26938, glIsProgramARB, glIsProgramARB, NULL, 630),
+ NAME_FUNC_OFFSET(26952, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 631),
+ NAME_FUNC_OFFSET(26975, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 632),
+ NAME_FUNC_OFFSET(26999, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 633),
+ NAME_FUNC_OFFSET(27022, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 634),
+ NAME_FUNC_OFFSET(27046, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 640),
+ NAME_FUNC_OFFSET(27063, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 641),
+ NAME_FUNC_OFFSET(27081, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 642),
+ NAME_FUNC_OFFSET(27098, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 643),
+ NAME_FUNC_OFFSET(27116, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 644),
+ NAME_FUNC_OFFSET(27133, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 645),
+ NAME_FUNC_OFFSET(27151, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 646),
+ NAME_FUNC_OFFSET(27168, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 647),
+ NAME_FUNC_OFFSET(27186, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658),
+ NAME_FUNC_OFFSET(27211, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658),
+ NAME_FUNC_OFFSET(27233, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659),
+ NAME_FUNC_OFFSET(27260, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659),
+ NAME_FUNC_OFFSET(27284, glBindFramebuffer, glBindFramebuffer, NULL, 660),
+ NAME_FUNC_OFFSET(27305, glBindRenderbuffer, glBindRenderbuffer, NULL, 661),
+ NAME_FUNC_OFFSET(27327, glBlitFramebuffer, glBlitFramebuffer, NULL, 662),
+ NAME_FUNC_OFFSET(27348, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663),
+ NAME_FUNC_OFFSET(27376, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663),
+ NAME_FUNC_OFFSET(27404, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664),
+ NAME_FUNC_OFFSET(27428, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664),
+ NAME_FUNC_OFFSET(27452, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665),
+ NAME_FUNC_OFFSET(27477, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665),
+ NAME_FUNC_OFFSET(27502, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666),
+ NAME_FUNC_OFFSET(27531, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666),
+ NAME_FUNC_OFFSET(27560, glFramebufferTexture1D, glFramebufferTexture1D, NULL, 667),
+ NAME_FUNC_OFFSET(27586, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668),
+ NAME_FUNC_OFFSET(27612, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668),
+ NAME_FUNC_OFFSET(27638, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669),
+ NAME_FUNC_OFFSET(27664, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669),
+ NAME_FUNC_OFFSET(27690, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670),
+ NAME_FUNC_OFFSET(27719, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670),
+ NAME_FUNC_OFFSET(27748, glGenFramebuffers, glGenFramebuffers, NULL, 671),
+ NAME_FUNC_OFFSET(27769, glGenFramebuffers, glGenFramebuffers, NULL, 671),
+ NAME_FUNC_OFFSET(27790, glGenRenderbuffers, glGenRenderbuffers, NULL, 672),
+ NAME_FUNC_OFFSET(27812, glGenRenderbuffers, glGenRenderbuffers, NULL, 672),
+ NAME_FUNC_OFFSET(27834, glGenerateMipmap, glGenerateMipmap, NULL, 673),
+ NAME_FUNC_OFFSET(27854, glGenerateMipmap, glGenerateMipmap, NULL, 673),
+ NAME_FUNC_OFFSET(27874, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674),
+ NAME_FUNC_OFFSET(27915, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674),
+ NAME_FUNC_OFFSET(27956, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675),
+ NAME_FUNC_OFFSET(27988, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675),
+ NAME_FUNC_OFFSET(28020, glIsFramebuffer, glIsFramebuffer, NULL, 676),
+ NAME_FUNC_OFFSET(28039, glIsFramebuffer, glIsFramebuffer, NULL, 676),
+ NAME_FUNC_OFFSET(28058, glIsRenderbuffer, glIsRenderbuffer, NULL, 677),
+ NAME_FUNC_OFFSET(28078, glIsRenderbuffer, glIsRenderbuffer, NULL, 677),
+ NAME_FUNC_OFFSET(28098, glRenderbufferStorage, glRenderbufferStorage, NULL, 678),
+ NAME_FUNC_OFFSET(28123, glRenderbufferStorage, glRenderbufferStorage, NULL, 678),
+ NAME_FUNC_OFFSET(28148, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 679),
+ NAME_FUNC_OFFSET(28184, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 681),
+ NAME_FUNC_OFFSET(28212, glMapBufferRange, glMapBufferRange, NULL, 682),
+ NAME_FUNC_OFFSET(28232, glBindVertexArray, glBindVertexArray, NULL, 683),
+ NAME_FUNC_OFFSET(28253, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684),
+ NAME_FUNC_OFFSET(28279, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684),
+ NAME_FUNC_OFFSET(28303, glGenVertexArrays, glGenVertexArrays, NULL, 685),
+ NAME_FUNC_OFFSET(28324, glIsVertexArray, glIsVertexArray, NULL, 686),
+ NAME_FUNC_OFFSET(28345, glIsVertexArray, glIsVertexArray, NULL, 686),
+ NAME_FUNC_OFFSET(28364, glProvokingVertex, glProvokingVertex, NULL, 706),
+ NAME_FUNC_OFFSET(28385, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 711),
+ NAME_FUNC_OFFSET(28419, glBlendEquationiARB, glBlendEquationiARB, NULL, 712),
+ NAME_FUNC_OFFSET(28445, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 713),
+ NAME_FUNC_OFFSET(28475, glBlendFunciARB, glBlendFunciARB, NULL, 714),
+ NAME_FUNC_OFFSET(28497, gl_dispatch_stub_731, gl_dispatch_stub_731, NULL, 731),
+ NAME_FUNC_OFFSET(28521, gl_dispatch_stub_732, gl_dispatch_stub_732, NULL, 732),
+ NAME_FUNC_OFFSET(28546, glClearDepthf, glClearDepthf, NULL, 785),
+ NAME_FUNC_OFFSET(28563, glDepthRangef, glDepthRangef, NULL, 786),
+ NAME_FUNC_OFFSET(28580, glGetProgramBinary, glGetProgramBinary, NULL, 790),
+ NAME_FUNC_OFFSET(28602, glProgramBinary, glProgramBinary, NULL, 791),
+ NAME_FUNC_OFFSET(28621, glProgramParameteri, glProgramParameteri, NULL, 792),
+ NAME_FUNC_OFFSET(28644, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876),
+ NAME_FUNC_OFFSET(28660, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877),
+ NAME_FUNC_OFFSET(28679, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 940),
+ NAME_FUNC_OFFSET(28698, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 941),
+ NAME_FUNC_OFFSET(28718, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 942),
+ NAME_FUNC_OFFSET(28738, glFogCoordfEXT, glFogCoordfEXT, NULL, 943),
+ NAME_FUNC_OFFSET(28750, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 944),
+ NAME_FUNC_OFFSET(28763, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1047),
+ NAME_FUNC_OFFSET(28781, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1048),
+ NAME_FUNC_OFFSET(28800, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1049),
+ NAME_FUNC_OFFSET(28818, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1050),
+ NAME_FUNC_OFFSET(28837, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1051),
+ NAME_FUNC_OFFSET(28856, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1052),
+ NAME_FUNC_OFFSET(28876, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1053),
+ NAME_FUNC_OFFSET(28894, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1054),
+ NAME_FUNC_OFFSET(28913, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1055),
+ NAME_FUNC_OFFSET(28932, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1056),
+ NAME_FUNC_OFFSET(28952, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1057),
+ NAME_FUNC_OFFSET(28970, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1058),
+ NAME_FUNC_OFFSET(28989, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1059),
+ NAME_FUNC_OFFSET(29008, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1060),
+ NAME_FUNC_OFFSET(29028, gl_dispatch_stub_1097, gl_dispatch_stub_1097, NULL, 1097),
+ NAME_FUNC_OFFSET(29044, gl_dispatch_stub_1098, gl_dispatch_stub_1098, NULL, 1098),
+ NAME_FUNC_OFFSET(29061, gl_dispatch_stub_1099, gl_dispatch_stub_1099, NULL, 1099),
+ NAME_FUNC_OFFSET(29078, gl_dispatch_stub_1100, gl_dispatch_stub_1100, NULL, 1100),
+ NAME_FUNC_OFFSET(29091, gl_dispatch_stub_1101, gl_dispatch_stub_1101, NULL, 1101),
+ NAME_FUNC_OFFSET(29108, gl_dispatch_stub_1102, gl_dispatch_stub_1102, NULL, 1102),
+ NAME_FUNC_OFFSET(29118, gl_dispatch_stub_1103, gl_dispatch_stub_1103, NULL, 1103),
+ NAME_FUNC_OFFSET(29129, gl_dispatch_stub_1104, gl_dispatch_stub_1104, NULL, 1104),
+ NAME_FUNC_OFFSET(29143, gl_dispatch_stub_1105, gl_dispatch_stub_1105, NULL, 1105),
+ NAME_FUNC_OFFSET(29157, gl_dispatch_stub_1106, gl_dispatch_stub_1106, NULL, 1106),
+ NAME_FUNC_OFFSET(29174, gl_dispatch_stub_1107, gl_dispatch_stub_1107, NULL, 1107),
+ NAME_FUNC_OFFSET(29192, gl_dispatch_stub_1108, gl_dispatch_stub_1108, NULL, 1108),
+ NAME_FUNC_OFFSET(29204, gl_dispatch_stub_1109, gl_dispatch_stub_1109, NULL, 1109),
+ NAME_FUNC_OFFSET(29217, gl_dispatch_stub_1110, gl_dispatch_stub_1110, NULL, 1110),
+ NAME_FUNC_OFFSET(29233, gl_dispatch_stub_1111, gl_dispatch_stub_1111, NULL, 1111),
+ NAME_FUNC_OFFSET(29250, gl_dispatch_stub_1112, gl_dispatch_stub_1112, NULL, 1112),
+ NAME_FUNC_OFFSET(29265, gl_dispatch_stub_1113, gl_dispatch_stub_1113, NULL, 1113),
+ NAME_FUNC_OFFSET(29281, gl_dispatch_stub_1114, gl_dispatch_stub_1114, NULL, 1114),
+ NAME_FUNC_OFFSET(29298, gl_dispatch_stub_1115, gl_dispatch_stub_1115, NULL, 1115),
+ NAME_FUNC_OFFSET(29319, gl_dispatch_stub_1116, gl_dispatch_stub_1116, NULL, 1116),
+ NAME_FUNC_OFFSET(29333, gl_dispatch_stub_1117, gl_dispatch_stub_1117, NULL, 1117),
+ NAME_FUNC_OFFSET(29345, gl_dispatch_stub_1118, gl_dispatch_stub_1118, NULL, 1118),
+ NAME_FUNC_OFFSET(29357, gl_dispatch_stub_1119, gl_dispatch_stub_1119, NULL, 1119),
+ NAME_FUNC_OFFSET(29373, gl_dispatch_stub_1120, gl_dispatch_stub_1120, NULL, 1120),
+ NAME_FUNC_OFFSET(29393, gl_dispatch_stub_1121, gl_dispatch_stub_1121, NULL, 1121),
+ NAME_FUNC_OFFSET(29406, gl_dispatch_stub_1122, gl_dispatch_stub_1122, NULL, 1122),
+ NAME_FUNC_OFFSET(29427, gl_dispatch_stub_1123, gl_dispatch_stub_1123, NULL, 1123),
+ NAME_FUNC_OFFSET(29439, gl_dispatch_stub_1124, gl_dispatch_stub_1124, NULL, 1124),
+ NAME_FUNC_OFFSET(29452, gl_dispatch_stub_1125, gl_dispatch_stub_1125, NULL, 1125),
+ NAME_FUNC_OFFSET(29466, gl_dispatch_stub_1126, gl_dispatch_stub_1126, NULL, 1126),
+ NAME_FUNC_OFFSET(29485, gl_dispatch_stub_1127, gl_dispatch_stub_1127, NULL, 1127),
+ NAME_FUNC_OFFSET(29501, gl_dispatch_stub_1128, gl_dispatch_stub_1128, NULL, 1128),
+ NAME_FUNC_OFFSET(29517, gl_dispatch_stub_1129, gl_dispatch_stub_1129, NULL, 1129),
+ NAME_FUNC_OFFSET(29533, gl_dispatch_stub_1130, gl_dispatch_stub_1130, NULL, 1130),
+ NAME_FUNC_OFFSET(29552, gl_dispatch_stub_1131, gl_dispatch_stub_1131, NULL, 1131),
+ NAME_FUNC_OFFSET(29571, gl_dispatch_stub_1132, gl_dispatch_stub_1132, NULL, 1132),
+ NAME_FUNC_OFFSET(29586, gl_dispatch_stub_1133, gl_dispatch_stub_1133, NULL, 1133),
+ NAME_FUNC_OFFSET(29602, gl_dispatch_stub_1134, gl_dispatch_stub_1134, NULL, 1134),
+ NAME_FUNC_OFFSET(29621, gl_dispatch_stub_1135, gl_dispatch_stub_1135, NULL, 1135),
+ NAME_FUNC_OFFSET(29638, gl_dispatch_stub_1136, gl_dispatch_stub_1136, NULL, 1136),
+ NAME_FUNC_OFFSET(29661, gl_dispatch_stub_1137, gl_dispatch_stub_1137, NULL, 1137),
+ NAME_FUNC_OFFSET(29682, gl_dispatch_stub_1138, gl_dispatch_stub_1138, NULL, 1138),
+ NAME_FUNC_OFFSET(29704, gl_dispatch_stub_1139, gl_dispatch_stub_1139, NULL, 1139),
NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
};
diff --git a/xorg-server/glx/glthread.c b/xorg-server/glx/glthread.c
deleted file mode 100644
index fd4c6cc09..000000000
--- a/xorg-server/glx/glthread.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.1
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * XXX There's probably some work to do in order to make this file
- * truly reusable outside of Mesa.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include <X11/Xfuncproto.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "glthread.h"
-
-/*
- * This file should still compile even when THREADS is not defined.
- * This is to make things easier to deal with on the makefile scene..
- */
-#ifdef THREADS
-#include <errno.h>
-
-/*
- * Error messages
- */
-#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data"
-#define GET_TSD_ERROR "_glthread_: failed to get thread specific data"
-#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data"
-
-/*
- * Magic number to determine if a TSD object has been initialized.
- * Kind of a hack but there doesn't appear to be a better cross-platform
- * solution.
- */
-#define INIT_MAGIC 0xff8adc98
-
-/*
- * POSIX Threads -- The best way to go if your platform supports them.
- * Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly
- * has them, and many of the free Unixes now have them.
- * Be sure to use appropriate -mt or -D_REENTRANT type
- * compile flags when building.
- */
-#ifdef PTHREADS
-
-_X_EXPORT unsigned long
-_glthread_GetID(void)
-{
- return (unsigned long) pthread_self();
-}
-
-void
-_glthread_InitTSD(_glthread_TSD * tsd)
-{
- if (pthread_key_create(&tsd->key, NULL /*free */ ) != 0) {
- perror(INIT_TSD_ERROR);
- exit(-1);
- }
- tsd->initMagic = INIT_MAGIC;
-}
-
-void *
-_glthread_GetTSD(_glthread_TSD * tsd)
-{
- if (tsd->initMagic != (int) INIT_MAGIC) {
- _glthread_InitTSD(tsd);
- }
- return pthread_getspecific(tsd->key);
-}
-
-void
-_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
-{
- if (tsd->initMagic != (int) INIT_MAGIC) {
- _glthread_InitTSD(tsd);
- }
- if (pthread_setspecific(tsd->key, ptr) != 0) {
- perror(SET_TSD_ERROR);
- exit(-1);
- }
-}
-
-#endif /* PTHREADS */
-
-/*
- * Win32 Threads. The only available option for Windows 95/NT.
- * Be sure that you compile using the Multithreaded runtime, otherwise
- * bad things will happen.
- */
-#ifdef WIN32_THREADS
-
-void
-FreeTSD(_glthread_TSD * p)
-{
- if (p->initMagic == INIT_MAGIC) {
- TlsFree(p->key);
- p->initMagic = 0;
- }
-}
-
-void
-InsteadOf_exit(int nCode)
-{
- DWORD dwErr = GetLastError();
-}
-
-unsigned long
-_glthread_GetID(void)
-{
- return GetCurrentThreadId();
-}
-
-void
-_glthread_InitTSD(_glthread_TSD * tsd)
-{
- tsd->key = TlsAlloc();
- if (tsd->key == TLS_OUT_OF_INDEXES) {
- perror("Mesa:_glthread_InitTSD");
- InsteadOf_exit(-1);
- }
- tsd->initMagic = INIT_MAGIC;
-}
-
-void *
-_glthread_GetTSD(_glthread_TSD * tsd)
-{
- if (tsd->initMagic != INIT_MAGIC) {
- _glthread_InitTSD(tsd);
- }
- return TlsGetValue(tsd->key);
-}
-
-void
-_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
-{
- /* the following code assumes that the _glthread_TSD has been initialized
- to zero at creation */
- if (tsd->initMagic != INIT_MAGIC) {
- _glthread_InitTSD(tsd);
- }
- if (TlsSetValue(tsd->key, ptr) == 0) {
- perror("Mesa:_glthread_SetTSD");
- InsteadOf_exit(-1);
- }
-}
-
-#endif /* WIN32_THREADS */
-
-#else /* THREADS */
-
-/*
- * no-op functions
- */
-
-_X_EXPORT unsigned long
-_glthread_GetID(void)
-{
- return 0;
-}
-
-void
-_glthread_InitTSD(_glthread_TSD * tsd)
-{
- (void) tsd;
-}
-
-void *
-_glthread_GetTSD(_glthread_TSD * tsd)
-{
- (void) tsd;
- return NULL;
-}
-
-void
-_glthread_SetTSD(_glthread_TSD * tsd, void *ptr)
-{
- (void) tsd;
- (void) ptr;
-}
-
-#endif /* THREADS */
diff --git a/xorg-server/glx/glxext.c b/xorg-server/glx/glxext.c
index 31cdfb3c9..7c1c564ca 100644
--- a/xorg-server/glx/glxext.c
+++ b/xorg-server/glx/glxext.c
@@ -559,9 +559,9 @@ __glXsetGetProcAddress(glx_gpa_proc get_proc_address)
void *__glGetProcAddress(const char *proc)
{
- void *ret = _get_proc_address(proc);
+ void *ret = (void *) _get_proc_address(proc);
- return ret ? ret : NoopDDA;
+ return ret ? ret : (void *) NoopDDA;
}
/*
diff --git a/xorg-server/glx/glxserver.h b/xorg-server/glx/glxserver.h
index 7f36e5f5e..3f2ae3593 100644
--- a/xorg-server/glx/glxserver.h
+++ b/xorg-server/glx/glxserver.h
@@ -46,7 +46,6 @@
#include <resource.h>
#include <scrnintstr.h>
-#define GL_GLEXT_PROTOTYPES /* we want prototypes */
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glxproto.h>
diff --git a/xorg-server/glx/indirect_dispatch.c b/xorg-server/glx/indirect_dispatch.c
index 9fb5cc1f5..67e5280c3 100644
--- a/xorg-server/glx/indirect_dispatch.c
+++ b/xorg-server/glx/indirect_dispatch.c
@@ -43,7 +43,6 @@
#include "singlesize.h"
#include "glapi.h"
#include "glapitable.h"
-#include "glthread.h"
#include "dispatch.h"
#define __GLX_PAD(x) (((x) + 3) & ~3)
diff --git a/xorg-server/glx/indirect_dispatch.h b/xorg-server/glx/indirect_dispatch.h
index 432fb9704..103914c97 100644
--- a/xorg-server/glx/indirect_dispatch.h
+++ b/xorg-server/glx/indirect_dispatch.h
@@ -516,6 +516,8 @@ extern _X_HIDDEN void __glXDisp_FramebufferTexture3D(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_FramebufferTexture3D(GLbyte * pc);
extern _X_HIDDEN int __glXDisp_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *);
extern _X_HIDDEN int __glXDispSwap_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *);
+extern _X_HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc);
extern _X_HIDDEN int __glXDisp_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *);
extern _X_HIDDEN int __glXDispSwap_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *);
extern _X_HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc);
@@ -540,8 +542,6 @@ extern _X_HIDDEN void __glXDisp_Lightiv(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_Lightiv(GLbyte * pc);
extern _X_HIDDEN int __glXDisp_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *);
extern _X_HIDDEN int __glXDispSwap_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *);
-extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_VertexAttrib3sv(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_VertexAttrib3sv(GLbyte * pc);
extern _X_HIDDEN int __glXDisp_IsQuery(struct __GLXclientStateRec *, GLbyte *);
@@ -792,8 +792,6 @@ extern _X_HIDDEN void __glXDisp_MultiTexCoord1iv(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1iv(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_Vertex2fv(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_Vertex2fv(GLbyte * pc);
-extern _X_HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc);
-extern _X_HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_BindRenderbufferEXT(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_Vertex3sv(GLbyte * pc);
@@ -818,6 +816,8 @@ extern _X_HIDDEN void __glXDisp_VertexAttribs4fvNV(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_TexGendv(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_TexGendv(GLbyte * pc);
+extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc);
+extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc);
extern _X_HIDDEN void __glXDisp_ResetMinmax(GLbyte * pc);
extern _X_HIDDEN void __glXDispSwap_ResetMinmax(GLbyte * pc);
extern _X_HIDDEN int __glXDisp_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *);
diff --git a/xorg-server/glx/indirect_dispatch_swap.c b/xorg-server/glx/indirect_dispatch_swap.c
index 7b493814b..4096023a7 100644
--- a/xorg-server/glx/indirect_dispatch_swap.c
+++ b/xorg-server/glx/indirect_dispatch_swap.c
@@ -43,7 +43,6 @@
#include "singlesize.h"
#include "glapi.h"
#include "glapitable.h"
-#include "glthread.h"
#include "dispatch.h"
#define __GLX_PAD(x) (((x) + 3) & ~3)
diff --git a/xorg-server/glx/indirect_texture_compression.c b/xorg-server/glx/indirect_texture_compression.c
index 551250dc5..112811e50 100644
--- a/xorg-server/glx/indirect_texture_compression.c
+++ b/xorg-server/glx/indirect_texture_compression.c
@@ -37,9 +37,6 @@
#include "indirect_dispatch.h"
#include "glfunctions.h"
-#define glGetCompressedTexImageARB glGetCompressedTexImage
-
-
int
__glXDisp_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc)
{
@@ -59,9 +56,11 @@ __glXDisp_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc)
&compsize);
if (compsize != 0) {
+ PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB =
+ __glGetProcAddress("glGetCompressedTexImageARB");
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
__glXClearErrorOccured();
- glGetCompressedTexImageARB(target, level, answer);
+ GetCompressedTexImageARB(target, level, answer);
}
if (__glXErrorOccured()) {
@@ -101,9 +100,11 @@ __glXDispSwap_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc)
&compsize);
if (compsize != 0) {
+ PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB =
+ __glGetProcAddress("glGetCompressedTexImageARB");
__GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1);
__glXClearErrorOccured();
- glGetCompressedTexImageARB(target, level, answer);
+ GetCompressedTexImageARB(target, level, answer);
}
if (__glXErrorOccured()) {
diff --git a/xorg-server/glx/remap_helper.h b/xorg-server/glx/remap_helper.h
index 9c2c68cc8..eac065709 100644
--- a/xorg-server/glx/remap_helper.h
+++ b/xorg-server/glx/remap_helper.h
@@ -43,5767 +43,5943 @@ static const char _mesa_function_pool[] =
"iff\0"
"glMapGrid1f\0"
"\0"
- /* _mesa_function_pool[34]: VertexAttribI4uivEXT (will be remapped) */
- "ip\0"
- "glVertexAttribI4uivEXT\0"
- "glVertexAttribI4uiv\0"
- "\0"
- /* _mesa_function_pool[81]: RasterPos4i (offset 82) */
- "iiii\0"
- "glRasterPos4i\0"
- "\0"
- /* _mesa_function_pool[101]: VertexAttribI4uiEXT (will be remapped) */
- "iiiii\0"
- "glVertexAttribI4uiEXT\0"
- "glVertexAttribI4ui\0"
- "\0"
- /* _mesa_function_pool[149]: RasterPos4d (offset 78) */
- "dddd\0"
- "glRasterPos4d\0"
+ /* _mesa_function_pool[34]: ReplacementCodeuiVertex3fvSUN (dynamic) */
+ "pp\0"
+ "glReplacementCodeuiVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[169]: NewList (dynamic) */
+ /* _mesa_function_pool[70]: PolygonOffsetx (will be remapped) */
"ii\0"
- "glNewList\0"
- "\0"
- /* _mesa_function_pool[183]: RasterPos4f (offset 80) */
- "ffff\0"
- "glRasterPos4f\0"
- "\0"
- /* _mesa_function_pool[203]: LoadIdentity (offset 290) */
- "\0"
- "glLoadIdentity\0"
- "\0"
- /* _mesa_function_pool[220]: VertexAttribI4iEXT (will be remapped) */
- "iiiii\0"
- "glVertexAttribI4iEXT\0"
- "glVertexAttribI4i\0"
- "\0"
- /* _mesa_function_pool[266]: ConvolutionFilter1D (offset 348) */
- "iiiiip\0"
- "glConvolutionFilter1D\0"
- "glConvolutionFilter1DEXT\0"
- "\0"
- /* _mesa_function_pool[321]: GetQueryIndexediv (will be remapped) */
- "iiip\0"
- "glGetQueryIndexediv\0"
- "\0"
- /* _mesa_function_pool[347]: RasterPos3dv (offset 71) */
- "p\0"
- "glRasterPos3dv\0"
- "\0"
- /* _mesa_function_pool[365]: GetProgramiv (will be remapped) */
- "iip\0"
- "glGetProgramiv\0"
- "\0"
- /* _mesa_function_pool[385]: GetQueryObjectui64v (will be remapped) */
- "iip\0"
- "glGetQueryObjectui64v\0"
- "glGetQueryObjectui64vEXT\0"
- "\0"
- /* _mesa_function_pool[437]: TexBuffer (will be remapped) */
- "iii\0"
- "glTexBufferARB\0"
- "glTexBuffer\0"
- "\0"
- /* _mesa_function_pool[469]: TexCoord1iv (offset 99) */
- "p\0"
- "glTexCoord1iv\0"
- "\0"
- /* _mesa_function_pool[486]: TexCoord4sv (offset 125) */
- "p\0"
- "glTexCoord4sv\0"
- "\0"
- /* _mesa_function_pool[503]: RasterPos4s (offset 84) */
- "iiii\0"
- "glRasterPos4s\0"
- "\0"
- /* _mesa_function_pool[523]: PixelTexGenParameterfvSGIS (dynamic) */
- "ip\0"
- "glPixelTexGenParameterfvSGIS\0"
- "\0"
- /* _mesa_function_pool[556]: TrackMatrixNV (will be remapped) */
- "iiii\0"
- "glTrackMatrixNV\0"
- "\0"
- /* _mesa_function_pool[578]: VertexAttrib3dv (will be remapped) */
- "ip\0"
- "glVertexAttrib3dv\0"
- "glVertexAttrib3dvARB\0"
- "\0"
- /* _mesa_function_pool[621]: TexCoord1f (offset 96) */
- "f\0"
- "glTexCoord1f\0"
- "\0"
- /* _mesa_function_pool[637]: Tangent3bvEXT (dynamic) */
- "p\0"
- "glTangent3bvEXT\0"
- "\0"
- /* _mesa_function_pool[656]: TexCoord1d (offset 94) */
- "d\0"
- "glTexCoord1d\0"
- "\0"
- /* _mesa_function_pool[672]: ViewportArrayv (will be remapped) */
- "iip\0"
- "glViewportArrayv\0"
- "\0"
- /* _mesa_function_pool[694]: VertexAttrib4ubvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib4ubvNV\0"
- "\0"
- /* _mesa_function_pool[719]: TexCoord1i (offset 98) */
- "i\0"
- "glTexCoord1i\0"
- "\0"
- /* _mesa_function_pool[735]: GetProgramNamedParameterdvNV (will be remapped) */
- "iipp\0"
- "glGetProgramNamedParameterdvNV\0"
+ "glPolygonOffsetxOES\0"
+ "glPolygonOffsetx\0"
"\0"
- /* _mesa_function_pool[772]: Histogram (offset 367) */
+ /* _mesa_function_pool[111]: FramebufferTexture (will be remapped) */
"iiii\0"
- "glHistogram\0"
- "glHistogramEXT\0"
- "\0"
- /* _mesa_function_pool[805]: TexCoord1s (offset 100) */
- "i\0"
- "glTexCoord1s\0"
- "\0"
- /* _mesa_function_pool[821]: GetMapfv (offset 267) */
- "iip\0"
- "glGetMapfv\0"
- "\0"
- /* _mesa_function_pool[837]: EvalCoord1f (offset 230) */
- "f\0"
- "glEvalCoord1f\0"
- "\0"
- /* _mesa_function_pool[854]: Uniform2fv (will be remapped) */
- "iip\0"
- "glUniform2fv\0"
- "glUniform2fvARB\0"
+ "glFramebufferTextureARB\0"
+ "glFramebufferTexture\0"
"\0"
- /* _mesa_function_pool[888]: TexCoordP1ui (will be remapped) */
+ /* _mesa_function_pool[162]: TexCoordP1ui (will be remapped) */
"ii\0"
"glTexCoordP1ui\0"
"\0"
- /* _mesa_function_pool[907]: TexImage4DSGIS (dynamic) */
- "iiiiiiiiiip\0"
- "glTexImage4DSGIS\0"
- "\0"
- /* _mesa_function_pool[937]: PolygonStipple (offset 175) */
+ /* _mesa_function_pool[181]: PolygonStipple (offset 175) */
"p\0"
"glPolygonStipple\0"
"\0"
- /* _mesa_function_pool[957]: WeightPointerARB (dynamic) */
- "iiip\0"
- "glWeightPointerARB\0"
- "glWeightPointerOES\0"
- "\0"
- /* _mesa_function_pool[1001]: ListParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[201]: ListParameterfSGIX (dynamic) */
"iif\0"
"glListParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[1027]: MultiTexCoord1dv (offset 377) */
+ /* _mesa_function_pool[227]: MultiTexCoord1dv (offset 377) */
"ip\0"
"glMultiTexCoord1dv\0"
"glMultiTexCoord1dvARB\0"
"\0"
- /* _mesa_function_pool[1072]: TexStorage1D (will be remapped) */
- "iiii\0"
- "glTexStorage1D\0"
- "\0"
- /* _mesa_function_pool[1093]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
- "pppp\0"
- "glTexCoord4fColor4fNormal3fVertex4fvSUN\0"
- "\0"
- /* _mesa_function_pool[1139]: GetnPolygonStippleARB (will be remapped) */
- "ip\0"
- "glGetnPolygonStippleARB\0"
- "\0"
- /* _mesa_function_pool[1167]: GetPixelMapfv (offset 271) */
- "ip\0"
- "glGetPixelMapfv\0"
- "\0"
- /* _mesa_function_pool[1187]: Color3uiv (offset 22) */
- "p\0"
- "glColor3uiv\0"
- "\0"
- /* _mesa_function_pool[1202]: IsEnabled (offset 286) */
+ /* _mesa_function_pool[272]: IsEnabled (offset 286) */
"i\0"
"glIsEnabled\0"
"\0"
- /* _mesa_function_pool[1217]: DebugMessageCallbackARB (will be remapped) */
- "pp\0"
- "glDebugMessageCallbackARB\0"
- "\0"
- /* _mesa_function_pool[1247]: VertexAttrib4svNV (will be remapped) */
- "ip\0"
- "glVertexAttrib4svNV\0"
- "\0"
- /* _mesa_function_pool[1271]: EvalCoord2fv (offset 235) */
- "p\0"
- "glEvalCoord2fv\0"
- "\0"
- /* _mesa_function_pool[1289]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
- "ppp\0"
- "glTexCoord2fColor4ubVertex3fvSUN\0"
- "\0"
- /* _mesa_function_pool[1327]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
- "ffffffffffff\0"
- "glTexCoord2fColor4fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[287]: GetTexFilterFuncSGIS (dynamic) */
+ "iip\0"
+ "glGetTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[1380]: AttachShader (will be remapped) */
+ /* _mesa_function_pool[315]: AttachShader (will be remapped) */
"ii\0"
"glAttachShader\0"
"\0"
- /* _mesa_function_pool[1399]: TextureStorage3DEXT (will be remapped) */
- "iiiiiii\0"
- "glTextureStorage3DEXT\0"
- "\0"
- /* _mesa_function_pool[1430]: FramebufferTexture1D (will be remapped) */
- "iiiii\0"
- "glFramebufferTexture1D\0"
- "glFramebufferTexture1DEXT\0"
- "\0"
- /* _mesa_function_pool[1486]: VertexAttrib2fARB (will be remapped) */
- "iff\0"
- "glVertexAttrib2f\0"
- "glVertexAttrib2fARB\0"
- "\0"
- /* _mesa_function_pool[1528]: DrawTexxOES (will be remapped) */
- "iiiii\0"
- "glDrawTexxOES\0"
- "\0"
- /* _mesa_function_pool[1549]: GetMapiv (offset 268) */
- "iip\0"
- "glGetMapiv\0"
- "\0"
- /* _mesa_function_pool[1565]: VertexAttrib3fARB (will be remapped) */
+ /* _mesa_function_pool[334]: VertexAttrib3fARB (will be remapped) */
"ifff\0"
"glVertexAttrib3f\0"
"glVertexAttrib3fARB\0"
"\0"
- /* _mesa_function_pool[1608]: WindowPos2fv (will be remapped) */
- "p\0"
- "glWindowPos2fv\0"
- "glWindowPos2fvARB\0"
- "glWindowPos2fvMESA\0"
- "\0"
- /* _mesa_function_pool[1663]: Indexubv (offset 316) */
+ /* _mesa_function_pool[377]: Indexubv (offset 316) */
"p\0"
"glIndexubv\0"
"\0"
- /* _mesa_function_pool[1677]: GetShaderiv (will be remapped) */
- "iip\0"
- "glGetShaderiv\0"
- "\0"
- /* _mesa_function_pool[1696]: TexImage3D (offset 371) */
- "iiiiiiiiip\0"
- "glTexImage3D\0"
- "glTexImage3DEXT\0"
- "glTexImage3DOES\0"
- "\0"
- /* _mesa_function_pool[1753]: TexCoordP4ui (will be remapped) */
- "ii\0"
- "glTexCoordP4ui\0"
- "\0"
- /* _mesa_function_pool[1772]: ReplacementCodeuiVertex3fvSUN (dynamic) */
- "pp\0"
- "glReplacementCodeuiVertex3fvSUN\0"
- "\0"
- /* _mesa_function_pool[1808]: VertexAttrib1sv (will be remapped) */
- "ip\0"
- "glVertexAttrib1sv\0"
- "glVertexAttrib1svARB\0"
- "\0"
- /* _mesa_function_pool[1851]: BindFragDataLocation (will be remapped) */
+ /* _mesa_function_pool[391]: MultiTexCoordP3uiv (will be remapped) */
"iip\0"
- "glBindFragDataLocationEXT\0"
- "glBindFragDataLocation\0"
- "\0"
- /* _mesa_function_pool[1905]: VertexAttribI4usv (will be remapped) */
- "ip\0"
- "glVertexAttribI4usvEXT\0"
- "glVertexAttribI4usv\0"
+ "glMultiTexCoordP3uiv\0"
"\0"
- /* _mesa_function_pool[1952]: EdgeFlagPointer (offset 312) */
- "ip\0"
- "glEdgeFlagPointer\0"
+ /* _mesa_function_pool[417]: Color4fNormal3fVertex3fSUN (dynamic) */
+ "ffffffffff\0"
+ "glColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[1974]: Color3ubv (offset 20) */
+ /* _mesa_function_pool[458]: Color3ubv (offset 20) */
"p\0"
"glColor3ubv\0"
"\0"
- /* _mesa_function_pool[1989]: Vertex3dv (offset 135) */
- "p\0"
- "glVertex3dv\0"
- "\0"
- /* _mesa_function_pool[2004]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
- "ppp\0"
- "glReplacementCodeuiTexCoord2fVertex3fvSUN\0"
- "\0"
- /* _mesa_function_pool[2051]: CreateShaderProgramEXT (will be remapped) */
- "ip\0"
- "glCreateShaderProgramEXT\0"
- "\0"
- /* _mesa_function_pool[2080]: GetnMapivARB (will be remapped) */
+ /* _mesa_function_pool[473]: GetCombinerOutputParameterfvNV (dynamic) */
"iiip\0"
- "glGetnMapivARB\0"
+ "glGetCombinerOutputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[2101]: Binormal3ivEXT (dynamic) */
+ /* _mesa_function_pool[512]: Binormal3ivEXT (dynamic) */
"p\0"
"glBinormal3ivEXT\0"
"\0"
- /* _mesa_function_pool[2121]: WindowPos2f (will be remapped) */
- "ff\0"
- "glWindowPos2f\0"
- "glWindowPos2fARB\0"
- "glWindowPos2fMESA\0"
- "\0"
- /* _mesa_function_pool[2174]: LightModeliv (offset 166) */
- "ip\0"
- "glLightModeliv\0"
- "\0"
- /* _mesa_function_pool[2193]: WindowPos2d (will be remapped) */
- "dd\0"
- "glWindowPos2d\0"
- "glWindowPos2dARB\0"
- "glWindowPos2dMESA\0"
- "\0"
- /* _mesa_function_pool[2246]: VertexAttribs1dvNV (will be remapped) */
- "iip\0"
- "glVertexAttribs1dvNV\0"
- "\0"
- /* _mesa_function_pool[2272]: GetVertexAttribfv (will be remapped) */
- "iip\0"
- "glGetVertexAttribfv\0"
- "glGetVertexAttribfvARB\0"
- "\0"
- /* _mesa_function_pool[2320]: GetImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[532]: GetImageTransformParameterfvHP (dynamic) */
"iip\0"
"glGetImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[2358]: Normal3bv (offset 53) */
- "p\0"
- "glNormal3bv\0"
- "\0"
- /* _mesa_function_pool[2373]: PointSizePointerOES (will be remapped) */
- "iip\0"
- "glPointSizePointerOES\0"
- "\0"
- /* _mesa_function_pool[2400]: Color3fVertex3fSUN (dynamic) */
- "ffffff\0"
- "glColor3fVertex3fSUN\0"
- "\0"
- /* _mesa_function_pool[2429]: TexGeniv (offset 193) */
- "iip\0"
- "glTexGeniv\0"
- "glTexGenivOES\0"
- "\0"
- /* _mesa_function_pool[2459]: TexCoordP1uiv (will be remapped) */
+ /* _mesa_function_pool[570]: GetClipPlanex (will be remapped) */
"ip\0"
- "glTexCoordP1uiv\0"
- "\0"
- /* _mesa_function_pool[2479]: BeginQueryIndexed (will be remapped) */
- "iii\0"
- "glBeginQueryIndexed\0"
+ "glGetClipPlanexOES\0"
+ "glGetClipPlanex\0"
"\0"
- /* _mesa_function_pool[2504]: WeightubvARB (dynamic) */
+ /* _mesa_function_pool[609]: TexCoordP1uiv (will be remapped) */
"ip\0"
- "glWeightubvARB\0"
- "\0"
- /* _mesa_function_pool[2523]: WindowPos2s (will be remapped) */
- "ii\0"
- "glWindowPos2s\0"
- "glWindowPos2sARB\0"
- "glWindowPos2sMESA\0"
- "\0"
- /* _mesa_function_pool[2576]: Vertex3iv (offset 139) */
- "p\0"
- "glVertex3iv\0"
+ "glTexCoordP1uiv\0"
"\0"
- /* _mesa_function_pool[2591]: RenderbufferStorage (will be remapped) */
+ /* _mesa_function_pool[629]: RenderbufferStorage (will be remapped) */
"iiii\0"
"glRenderbufferStorage\0"
"glRenderbufferStorageEXT\0"
"glRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[2669]: CopyConvolutionFilter1D (offset 354) */
- "iiiii\0"
- "glCopyConvolutionFilter1D\0"
- "glCopyConvolutionFilter1DEXT\0"
- "\0"
- /* _mesa_function_pool[2731]: VertexAttribI1uiEXT (will be remapped) */
- "ii\0"
- "glVertexAttribI1uiEXT\0"
- "glVertexAttribI1ui\0"
- "\0"
- /* _mesa_function_pool[2776]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
- "iffffff\0"
- "glReplacementCodeuiNormal3fVertex3fSUN\0"
- "\0"
- /* _mesa_function_pool[2824]: DeleteSync (will be remapped) */
- "i\0"
- "glDeleteSync\0"
- "\0"
- /* _mesa_function_pool[2840]: DrawArraysIndirect (will be remapped) */
+ /* _mesa_function_pool[707]: GetClipPlanef (will be remapped) */
"ip\0"
- "glDrawArraysIndirect\0"
+ "glGetClipPlanefOES\0"
+ "glGetClipPlanef\0"
"\0"
- /* _mesa_function_pool[2865]: GenQueries (will be remapped) */
+ /* _mesa_function_pool[746]: DrawArraysIndirect (will be remapped) */
"ip\0"
- "glGenQueries\0"
- "glGenQueriesARB\0"
- "\0"
- /* _mesa_function_pool[2898]: BlendColor (offset 336) */
- "ffff\0"
- "glBlendColor\0"
- "glBlendColorEXT\0"
- "\0"
- /* _mesa_function_pool[2933]: GetVertexAttribIuiv (will be remapped) */
- "iip\0"
- "glGetVertexAttribIuivEXT\0"
- "glGetVertexAttribIuiv\0"
- "\0"
- /* _mesa_function_pool[2985]: TexCoord2fVertex3fvSUN (dynamic) */
- "pp\0"
- "glTexCoord2fVertex3fvSUN\0"
- "\0"
- /* _mesa_function_pool[3014]: CompressedTexImage3D (will be remapped) */
- "iiiiiiiip\0"
- "glCompressedTexImage3D\0"
- "glCompressedTexImage3DARB\0"
- "glCompressedTexImage3DOES\0"
+ "glDrawArraysIndirect\0"
"\0"
- /* _mesa_function_pool[3100]: GetDebugMessageLogARB (will be remapped) */
- "iipppppp\0"
- "glGetDebugMessageLogARB\0"
+ /* _mesa_function_pool[771]: Uniform3i (will be remapped) */
+ "iiii\0"
+ "glUniform3i\0"
+ "glUniform3iARB\0"
"\0"
- /* _mesa_function_pool[3134]: VDPAUGetSurfaceivNV (will be remapped) */
+ /* _mesa_function_pool[804]: VDPAUGetSurfaceivNV (will be remapped) */
"iiipp\0"
"glVDPAUGetSurfaceivNV\0"
"\0"
- /* _mesa_function_pool[3163]: ReadInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[833]: ReadInstrumentsSGIX (dynamic) */
"i\0"
"glReadInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[3188]: CallLists (offset 3) */
- "iip\0"
- "glCallLists\0"
- "\0"
- /* _mesa_function_pool[3205]: Uniform3f (will be remapped) */
+ /* _mesa_function_pool[858]: Uniform3f (will be remapped) */
"ifff\0"
"glUniform3f\0"
"glUniform3fARB\0"
"\0"
- /* _mesa_function_pool[3238]: UniformMatrix2fv (will be remapped) */
+ /* _mesa_function_pool[891]: UniformMatrix2x4fv (will be remapped) */
"iiip\0"
- "glUniformMatrix2fv\0"
- "glUniformMatrix2fvARB\0"
- "\0"
- /* _mesa_function_pool[3285]: ReadnPixelsARB (will be remapped) */
- "iiiiiiip\0"
- "glReadnPixelsARB\0"
+ "glUniformMatrix2x4fv\0"
"\0"
- /* _mesa_function_pool[3312]: Color4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[918]: QueryMatrixxOES (will be remapped) */
"pp\0"
- "glColor4ubVertex3fvSUN\0"
+ "glQueryMatrixxOES\0"
"\0"
- /* _mesa_function_pool[3339]: Normal3iv (offset 59) */
+ /* _mesa_function_pool[940]: Normal3iv (offset 59) */
"p\0"
"glNormal3iv\0"
"\0"
- /* _mesa_function_pool[3354]: SecondaryColor3dv (will be remapped) */
- "p\0"
- "glSecondaryColor3dv\0"
- "glSecondaryColor3dvEXT\0"
- "\0"
- /* _mesa_function_pool[3400]: DrawTexiOES (will be remapped) */
+ /* _mesa_function_pool[955]: DrawTexiOES (will be remapped) */
"iiiii\0"
"glDrawTexiOES\0"
"\0"
- /* _mesa_function_pool[3421]: PassThrough (offset 199) */
- "f\0"
- "glPassThrough\0"
- "\0"
- /* _mesa_function_pool[3438]: VertexP3ui (will be remapped) */
- "ii\0"
- "glVertexP3ui\0"
- "\0"
- /* _mesa_function_pool[3455]: TransformFeedbackVaryings (will be remapped) */
- "iipi\0"
- "glTransformFeedbackVaryings\0"
- "glTransformFeedbackVaryingsEXT\0"
- "\0"
- /* _mesa_function_pool[3520]: GetListParameterfvSGIX (dynamic) */
- "iip\0"
- "glGetListParameterfvSGIX\0"
- "\0"
- /* _mesa_function_pool[3550]: Viewport (offset 305) */
+ /* _mesa_function_pool[976]: Viewport (offset 305) */
"iiii\0"
"glViewport\0"
"\0"
- /* _mesa_function_pool[3567]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[993]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[3623]: WindowPos4svMESA (will be remapped) */
+ /* _mesa_function_pool[1049]: WindowPos4svMESA (will be remapped) */
"p\0"
"glWindowPos4svMESA\0"
"\0"
- /* _mesa_function_pool[3645]: CreateProgramObjectARB (will be remapped) */
- "\0"
- "glCreateProgramObjectARB\0"
- "\0"
- /* _mesa_function_pool[3672]: UniformMatrix3fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix3fv\0"
- "glUniformMatrix3fvARB\0"
- "\0"
- /* _mesa_function_pool[3719]: FragmentLightModelivSGIX (dynamic) */
+ /* _mesa_function_pool[1071]: FragmentLightModelivSGIX (dynamic) */
"ip\0"
"glFragmentLightModelivSGIX\0"
"\0"
- /* _mesa_function_pool[3750]: UniformMatrix4x3fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix4x3fv\0"
- "\0"
- /* _mesa_function_pool[3777]: PrioritizeTextures (offset 331) */
- "ipp\0"
- "glPrioritizeTextures\0"
- "glPrioritizeTexturesEXT\0"
- "\0"
- /* _mesa_function_pool[3827]: VertexAttribI3uiEXT (will be remapped) */
- "iiii\0"
- "glVertexAttribI3uiEXT\0"
- "glVertexAttribI3ui\0"
- "\0"
- /* _mesa_function_pool[3874]: VertexAttribDivisor (will be remapped) */
- "ii\0"
- "glVertexAttribDivisorARB\0"
- "glVertexAttribDivisor\0"
- "\0"
- /* _mesa_function_pool[3925]: AsyncMarkerSGIX (dynamic) */
- "i\0"
- "glAsyncMarkerSGIX\0"
- "\0"
- /* _mesa_function_pool[3946]: GetQueryiv (will be remapped) */
- "iip\0"
- "glGetQueryiv\0"
- "glGetQueryivARB\0"
+ /* _mesa_function_pool[1102]: DeleteVertexArrays (will be remapped) */
+ "ip\0"
+ "glDeleteVertexArrays\0"
+ "glDeleteVertexArraysAPPLE\0"
+ "glDeleteVertexArraysOES\0"
"\0"
- /* _mesa_function_pool[3980]: ClearColorIuiEXT (will be remapped) */
+ /* _mesa_function_pool[1177]: ClearColorIuiEXT (will be remapped) */
"iiii\0"
"glClearColorIuiEXT\0"
"\0"
- /* _mesa_function_pool[4005]: VertexAttrib3d (will be remapped) */
- "iddd\0"
- "glVertexAttrib3d\0"
- "glVertexAttrib3dARB\0"
- "\0"
- /* _mesa_function_pool[4048]: Frustumx (will be remapped) */
- "iiiiii\0"
- "glFrustumxOES\0"
- "glFrustumx\0"
- "\0"
- /* _mesa_function_pool[4081]: ResetHistogram (offset 369) */
- "i\0"
- "glResetHistogram\0"
- "glResetHistogramEXT\0"
- "\0"
- /* _mesa_function_pool[4121]: GetProgramNamedParameterfvNV (will be remapped) */
- "iipp\0"
- "glGetProgramNamedParameterfvNV\0"
+ /* _mesa_function_pool[1202]: GetnConvolutionFilterARB (will be remapped) */
+ "iiiip\0"
+ "glGetnConvolutionFilterARB\0"
"\0"
- /* _mesa_function_pool[4158]: GetLightxv (will be remapped) */
+ /* _mesa_function_pool[1236]: GetLightxv (will be remapped) */
"iip\0"
"glGetLightxvOES\0"
"glGetLightxv\0"
"\0"
- /* _mesa_function_pool[4192]: CompressedTexSubImage2D (will be remapped) */
- "iiiiiiiip\0"
- "glCompressedTexSubImage2D\0"
- "glCompressedTexSubImage2DARB\0"
+ /* _mesa_function_pool[1270]: GetConvolutionParameteriv (offset 358) */
+ "iip\0"
+ "glGetConvolutionParameteriv\0"
+ "glGetConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[4258]: GenFencesNV (dynamic) */
+ /* _mesa_function_pool[1334]: VertexAttrib4usv (will be remapped) */
"ip\0"
- "glGenFencesNV\0"
+ "glVertexAttrib4usv\0"
+ "glVertexAttrib4usvARB\0"
"\0"
- /* _mesa_function_pool[4276]: GetMaterialxv (will be remapped) */
- "iip\0"
- "glGetMaterialxvOES\0"
- "glGetMaterialxv\0"
+ /* _mesa_function_pool[1379]: TextureStorage1DEXT (will be remapped) */
+ "iiiii\0"
+ "glTextureStorage1DEXT\0"
"\0"
- /* _mesa_function_pool[4316]: ImageTransformParameterfHP (dynamic) */
- "iif\0"
- "glImageTransformParameterfHP\0"
+ /* _mesa_function_pool[1408]: VertexAttrib4Nub (will be remapped) */
+ "iiiii\0"
+ "glVertexAttrib4Nub\0"
+ "glVertexAttrib4NubARB\0"
"\0"
- /* _mesa_function_pool[4350]: MatrixIndexusvARB (dynamic) */
- "ip\0"
- "glMatrixIndexusvARB\0"
+ /* _mesa_function_pool[1456]: VertexAttribP3ui (will be remapped) */
+ "iiii\0"
+ "glVertexAttribP3ui\0"
"\0"
- /* _mesa_function_pool[4374]: SecondaryColor3uiv (will be remapped) */
- "p\0"
- "glSecondaryColor3uiv\0"
- "glSecondaryColor3uivEXT\0"
+ /* _mesa_function_pool[1481]: Color4ubVertex3fSUN (dynamic) */
+ "iiiifff\0"
+ "glColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4422]: GetnConvolutionFilterARB (will be remapped) */
- "iiiip\0"
- "glGetnConvolutionFilterARB\0"
+ /* _mesa_function_pool[1512]: PointSize (offset 173) */
+ "f\0"
+ "glPointSize\0"
"\0"
- /* _mesa_function_pool[4456]: TexCoord2sv (offset 109) */
- "p\0"
- "glTexCoord2sv\0"
+ /* _mesa_function_pool[1527]: TexCoord2fVertex3fSUN (dynamic) */
+ "fffff\0"
+ "glTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4473]: GetClipPlanex (will be remapped) */
- "ip\0"
- "glGetClipPlanexOES\0"
- "glGetClipPlanex\0"
+ /* _mesa_function_pool[1558]: PopName (offset 200) */
"\0"
- /* _mesa_function_pool[4512]: Vertex4dv (offset 143) */
- "p\0"
- "glVertex4dv\0"
+ "glPopName\0"
"\0"
- /* _mesa_function_pool[4527]: StencilMaskSeparate (will be remapped) */
- "ii\0"
- "glStencilMaskSeparate\0"
+ /* _mesa_function_pool[1570]: VertexAttrib4ubNV (will be remapped) */
+ "iiiii\0"
+ "glVertexAttrib4ubNV\0"
"\0"
- /* _mesa_function_pool[4553]: MapBuffer (will be remapped) */
- "ii\0"
- "glMapBuffer\0"
- "glMapBufferARB\0"
- "glMapBufferOES\0"
+ /* _mesa_function_pool[1597]: ValidateProgramPipeline (will be remapped) */
+ "i\0"
+ "glValidateProgramPipeline\0"
"\0"
- /* _mesa_function_pool[4599]: PolygonOffsetx (will be remapped) */
- "ii\0"
- "glPolygonOffsetxOES\0"
- "glPolygonOffsetx\0"
+ /* _mesa_function_pool[1626]: BindFragDataLocationIndexed (will be remapped) */
+ "iiip\0"
+ "glBindFragDataLocationIndexed\0"
"\0"
- /* _mesa_function_pool[4640]: VertexAttrib4Nbv (will be remapped) */
+ /* _mesa_function_pool[1662]: GetClipPlane (offset 259) */
"ip\0"
- "glVertexAttrib4Nbv\0"
- "glVertexAttrib4NbvARB\0"
+ "glGetClipPlane\0"
"\0"
- /* _mesa_function_pool[4685]: ProgramLocalParameter4dARB (will be remapped) */
- "iidddd\0"
- "glProgramLocalParameter4dARB\0"
+ /* _mesa_function_pool[1681]: CombinerParameterfvNV (dynamic) */
+ "ip\0"
+ "glCombinerParameterfvNV\0"
"\0"
- /* _mesa_function_pool[4722]: ProgramBinary (will be remapped) */
- "iipi\0"
- "glProgramBinary\0"
- "glProgramBinaryOES\0"
+ /* _mesa_function_pool[1709]: TexCoordP4uiv (will be remapped) */
+ "ip\0"
+ "glTexCoordP4uiv\0"
"\0"
- /* _mesa_function_pool[4763]: InvalidateTexImage (will be remapped) */
- "ii\0"
- "glInvalidateTexImage\0"
+ /* _mesa_function_pool[1729]: VertexAttribs3dvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs3dvNV\0"
"\0"
- /* _mesa_function_pool[4788]: Uniform4ui (will be remapped) */
- "iiiii\0"
- "glUniform4uiEXT\0"
- "glUniform4ui\0"
+ /* _mesa_function_pool[1755]: GenQueries (will be remapped) */
+ "ip\0"
+ "glGenQueries\0"
+ "glGenQueriesARB\0"
"\0"
- /* _mesa_function_pool[4824]: VertexAttribs2svNV (will be remapped) */
- "iip\0"
- "glVertexAttribs2svNV\0"
+ /* _mesa_function_pool[1788]: ProgramUniform4iv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform4iv\0"
"\0"
- /* _mesa_function_pool[4850]: Color3sv (offset 18) */
- "p\0"
- "glColor3sv\0"
+ /* _mesa_function_pool[1814]: ObjectUnpurgeableAPPLE (will be remapped) */
+ "iii\0"
+ "glObjectUnpurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[4864]: LoadMatrixx (will be remapped) */
+ /* _mesa_function_pool[1844]: TexCoord2iv (offset 107) */
"p\0"
- "glLoadMatrixxOES\0"
- "glLoadMatrixx\0"
+ "glTexCoord2iv\0"
"\0"
- /* _mesa_function_pool[4898]: GetConvolutionParameteriv (offset 358) */
- "iip\0"
- "glGetConvolutionParameteriv\0"
- "glGetConvolutionParameterivEXT\0"
+ /* _mesa_function_pool[1861]: TexImage2DMultisample (will be remapped) */
+ "iiiiii\0"
+ "glTexImage2DMultisample\0"
"\0"
- /* _mesa_function_pool[4962]: DeleteSamplers (will be remapped) */
- "ip\0"
- "glDeleteSamplers\0"
+ /* _mesa_function_pool[1893]: TexParameterx (will be remapped) */
+ "iii\0"
+ "glTexParameterxOES\0"
+ "glTexParameterx\0"
"\0"
- /* _mesa_function_pool[4983]: VertexAttrib1fARB (will be remapped) */
- "if\0"
- "glVertexAttrib1f\0"
- "glVertexAttrib1fARB\0"
+ /* _mesa_function_pool[1933]: Rotatef (offset 300) */
+ "ffff\0"
+ "glRotatef\0"
"\0"
- /* _mesa_function_pool[5024]: Vertex2dv (offset 127) */
- "p\0"
- "glVertex2dv\0"
+ /* _mesa_function_pool[1949]: TexParameterf (offset 178) */
+ "iif\0"
+ "glTexParameterf\0"
"\0"
- /* _mesa_function_pool[5039]: TestFenceNV (dynamic) */
- "i\0"
- "glTestFenceNV\0"
+ /* _mesa_function_pool[1970]: TexParameteri (offset 180) */
+ "iii\0"
+ "glTexParameteri\0"
"\0"
- /* _mesa_function_pool[5056]: DeleteRenderbuffers (will be remapped) */
- "ip\0"
- "glDeleteRenderbuffers\0"
- "glDeleteRenderbuffersEXT\0"
- "glDeleteRenderbuffersOES\0"
+ /* _mesa_function_pool[1991]: GetUniformiv (will be remapped) */
+ "iip\0"
+ "glGetUniformiv\0"
+ "glGetUniformivARB\0"
"\0"
- /* _mesa_function_pool[5132]: MultiTexCoord1fvARB (offset 379) */
- "ip\0"
- "glMultiTexCoord1fv\0"
- "glMultiTexCoord1fvARB\0"
+ /* _mesa_function_pool[2029]: ClearBufferSubData (will be remapped) */
+ "iiiiiip\0"
+ "glClearBufferSubData\0"
"\0"
- /* _mesa_function_pool[5177]: VertexAttribI4bv (will be remapped) */
- "ip\0"
- "glVertexAttribI4bvEXT\0"
- "glVertexAttribI4bv\0"
+ /* _mesa_function_pool[2059]: VDPAUFiniNV (will be remapped) */
"\0"
- /* _mesa_function_pool[5222]: TexCoord3iv (offset 115) */
- "p\0"
- "glTexCoord3iv\0"
+ "glVDPAUFiniNV\0"
"\0"
- /* _mesa_function_pool[5239]: GetObjectPtrLabel (will be remapped) */
- "pipp\0"
- "glGetObjectPtrLabel\0"
+ /* _mesa_function_pool[2075]: GlobalAlphaFactordSUN (dynamic) */
+ "d\0"
+ "glGlobalAlphaFactordSUN\0"
"\0"
- /* _mesa_function_pool[5265]: TexStorage2D (will be remapped) */
- "iiiii\0"
- "glTexStorage2D\0"
+ /* _mesa_function_pool[2102]: ProgramUniformMatrix4x2fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix4x2fv\0"
"\0"
- /* _mesa_function_pool[5287]: LoadPaletteFromModelViewMatrixOES (dynamic) */
+ /* _mesa_function_pool[2137]: ProgramUniform2f (will be remapped) */
+ "iiff\0"
+ "glProgramUniform2f\0"
"\0"
- "glLoadPaletteFromModelViewMatrixOES\0"
+ /* _mesa_function_pool[2162]: PixelTransformParameterfvEXT (dynamic) */
+ "iip\0"
+ "glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[5325]: ProgramParameteri (will be remapped) */
- "iii\0"
- "glProgramParameteriARB\0"
- "glProgramParameteri\0"
+ /* _mesa_function_pool[2198]: ProgramUniform2i (will be remapped) */
+ "iiii\0"
+ "glProgramUniform2i\0"
"\0"
- /* _mesa_function_pool[5373]: VertexAttrib4usv (will be remapped) */
- "ip\0"
- "glVertexAttrib4usv\0"
- "glVertexAttrib4usvARB\0"
+ /* _mesa_function_pool[2223]: Fogx (will be remapped) */
+ "ii\0"
+ "glFogxOES\0"
+ "glFogx\0"
"\0"
- /* _mesa_function_pool[5418]: FragmentLightfvSGIX (dynamic) */
- "iip\0"
- "glFragmentLightfvSGIX\0"
+ /* _mesa_function_pool[2244]: Fogf (offset 153) */
+ "if\0"
+ "glFogf\0"
"\0"
- /* _mesa_function_pool[5445]: GetPixelTexGenParameterivSGIS (dynamic) */
- "ip\0"
- "glGetPixelTexGenParameterivSGIS\0"
+ /* _mesa_function_pool[2255]: TexSubImage1D (offset 332) */
+ "iiiiiip\0"
+ "glTexSubImage1D\0"
+ "glTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[5481]: Color3fv (offset 14) */
+ /* _mesa_function_pool[2299]: Color4usv (offset 40) */
"p\0"
- "glColor3fv\0"
- "\0"
- /* _mesa_function_pool[5495]: VertexAttrib4fNV (will be remapped) */
- "iffff\0"
- "glVertexAttrib4fNV\0"
+ "glColor4usv\0"
"\0"
- /* _mesa_function_pool[5521]: MultiTexCoord4sv (offset 407) */
- "ip\0"
- "glMultiTexCoord4sv\0"
- "glMultiTexCoord4svARB\0"
+ /* _mesa_function_pool[2314]: Fogi (offset 155) */
+ "ii\0"
+ "glFogi\0"
"\0"
- /* _mesa_function_pool[5566]: TextureStorage1DEXT (will be remapped) */
- "iiiii\0"
- "glTextureStorage1DEXT\0"
+ /* _mesa_function_pool[2325]: FinalCombinerInputNV (dynamic) */
+ "iiii\0"
+ "glFinalCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[5595]: ReplacementCodeubSUN (dynamic) */
+ /* _mesa_function_pool[2354]: DepthFunc (offset 245) */
"i\0"
- "glReplacementCodeubSUN\0"
+ "glDepthFunc\0"
"\0"
- /* _mesa_function_pool[5621]: VertexAttrib4Nub (will be remapped) */
+ /* _mesa_function_pool[2369]: GetSamplerParameterIiv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameterIiv\0"
+ "\0"
+ /* _mesa_function_pool[2399]: VertexAttribI4uiEXT (will be remapped) */
"iiiii\0"
- "glVertexAttrib4Nub\0"
- "glVertexAttrib4NubARB\0"
+ "glVertexAttribI4uiEXT\0"
+ "glVertexAttribI4ui\0"
"\0"
- /* _mesa_function_pool[5669]: PointParameterx (will be remapped) */
- "ii\0"
- "glPointParameterxOES\0"
- "glPointParameterx\0"
+ /* _mesa_function_pool[2447]: DrawElementsInstancedBaseVertexBaseInstance (will be remapped) */
+ "iiipiii\0"
+ "glDrawElementsInstancedBaseVertexBaseInstance\0"
"\0"
- /* _mesa_function_pool[5712]: VertexAttribP3ui (will be remapped) */
- "iiii\0"
- "glVertexAttribP3ui\0"
+ /* _mesa_function_pool[2502]: ProgramEnvParameter4dvARB (will be remapped) */
+ "iip\0"
+ "glProgramEnvParameter4dvARB\0"
+ "glProgramParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[5737]: Uniform4fv (will be remapped) */
+ /* _mesa_function_pool[2559]: ColorTableParameteriv (offset 341) */
"iip\0"
- "glUniform4fv\0"
- "glUniform4fvARB\0"
+ "glColorTableParameteriv\0"
+ "glColorTableParameterivSGI\0"
"\0"
- /* _mesa_function_pool[5771]: TextureView (will be remapped) */
- "iiiiiiii\0"
- "glTextureView\0"
+ /* _mesa_function_pool[2615]: GetnCompressedTexImageARB (will be remapped) */
+ "iiip\0"
+ "glGetnCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[5795]: Color4ubVertex3fSUN (dynamic) */
- "iiiifff\0"
- "glColor4ubVertex3fSUN\0"
+ /* _mesa_function_pool[2649]: BindSampler (will be remapped) */
+ "ii\0"
+ "glBindSampler\0"
"\0"
- /* _mesa_function_pool[5826]: FogCoordfEXT (will be remapped) */
- "f\0"
- "glFogCoordf\0"
- "glFogCoordfEXT\0"
+ /* _mesa_function_pool[2667]: MultiTexCoord2fARB (offset 386) */
+ "iff\0"
+ "glMultiTexCoord2f\0"
+ "glMultiTexCoord2fARB\0"
"\0"
- /* _mesa_function_pool[5856]: PointSize (offset 173) */
- "f\0"
- "glPointSize\0"
+ /* _mesa_function_pool[2711]: IndexPointer (offset 314) */
+ "iip\0"
+ "glIndexPointer\0"
"\0"
- /* _mesa_function_pool[5871]: MultiTexCoord2i (offset 388) */
- "iii\0"
- "glMultiTexCoord2i\0"
- "glMultiTexCoord2iARB\0"
+ /* _mesa_function_pool[2731]: MultiTexCoord3iv (offset 397) */
+ "ip\0"
+ "glMultiTexCoord3iv\0"
+ "glMultiTexCoord3ivARB\0"
"\0"
- /* _mesa_function_pool[5915]: TexCoord2fVertex3fSUN (dynamic) */
- "fffff\0"
- "glTexCoord2fVertex3fSUN\0"
+ /* _mesa_function_pool[2776]: Finish (offset 216) */
"\0"
- /* _mesa_function_pool[5946]: GetPerfMonitorCounterInfoAMD (will be remapped) */
- "iiip\0"
- "glGetPerfMonitorCounterInfoAMD\0"
+ "glFinish\0"
"\0"
- /* _mesa_function_pool[5983]: MultiTexCoord2d (offset 384) */
- "idd\0"
- "glMultiTexCoord2d\0"
- "glMultiTexCoord2dARB\0"
+ /* _mesa_function_pool[2787]: ClearStencil (offset 207) */
+ "i\0"
+ "glClearStencil\0"
"\0"
- /* _mesa_function_pool[6027]: UniformBlockBinding (will be remapped) */
- "iii\0"
- "glUniformBlockBinding\0"
+ /* _mesa_function_pool[2805]: ClearColorIiEXT (will be remapped) */
+ "iiii\0"
+ "glClearColorIiEXT\0"
"\0"
- /* _mesa_function_pool[6054]: PopName (offset 200) */
+ /* _mesa_function_pool[2829]: LoadMatrixd (offset 292) */
+ "p\0"
+ "glLoadMatrixd\0"
"\0"
- "glPopName\0"
+ /* _mesa_function_pool[2846]: VDPAURegisterOutputSurfaceNV (will be remapped) */
+ "piip\0"
+ "glVDPAURegisterOutputSurfaceNV\0"
"\0"
- /* _mesa_function_pool[6066]: GetSamplerParameterfv (will be remapped) */
- "iip\0"
- "glGetSamplerParameterfv\0"
+ /* _mesa_function_pool[2883]: VertexP4ui (will be remapped) */
+ "ii\0"
+ "glVertexP4ui\0"
"\0"
- /* _mesa_function_pool[6095]: VertexAttrib2dv (will be remapped) */
+ /* _mesa_function_pool[2900]: SpriteParameterfvSGIX (dynamic) */
"ip\0"
- "glVertexAttrib2dv\0"
- "glVertexAttrib2dvARB\0"
+ "glSpriteParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[6138]: VertexAttrib4Nusv (will be remapped) */
- "ip\0"
- "glVertexAttrib4Nusv\0"
- "glVertexAttrib4NusvARB\0"
+ /* _mesa_function_pool[2928]: GetActiveUniformName (will be remapped) */
+ "iiipp\0"
+ "glGetActiveUniformName\0"
"\0"
- /* _mesa_function_pool[6185]: SampleMaski (will be remapped) */
- "ii\0"
- "glSampleMaski\0"
+ /* _mesa_function_pool[2958]: DebugMessageControlARB (will be remapped) */
+ "iiiipi\0"
+ "glDebugMessageControlARB\0"
"\0"
- /* _mesa_function_pool[6203]: GetProgramInfoLog (will be remapped) */
- "iipp\0"
- "glGetProgramInfoLog\0"
+ /* _mesa_function_pool[2991]: GetnUniformivARB (will be remapped) */
+ "iiip\0"
+ "glGetnUniformivARB\0"
"\0"
- /* _mesa_function_pool[6229]: VertexP2ui (will be remapped) */
- "ii\0"
- "glVertexP2ui\0"
+ /* _mesa_function_pool[3016]: ReleaseShaderCompiler (will be remapped) */
"\0"
- /* _mesa_function_pool[6246]: SamplerParameterIuiv (will be remapped) */
- "iip\0"
- "glSamplerParameterIuiv\0"
+ "glReleaseShaderCompiler\0"
"\0"
- /* _mesa_function_pool[6274]: TexParameterx (will be remapped) */
+ /* _mesa_function_pool[3042]: BlendFuncSeparate (will be remapped) */
+ "iiii\0"
+ "glBlendFuncSeparate\0"
+ "glBlendFuncSeparateEXT\0"
+ "glBlendFuncSeparateINGR\0"
+ "glBlendFuncSeparateOES\0"
+ "\0"
+ /* _mesa_function_pool[3138]: Color3us (offset 23) */
"iii\0"
- "glTexParameterxOES\0"
- "glTexParameterx\0"
+ "glColor3us\0"
"\0"
- /* _mesa_function_pool[6314]: Vertex4sv (offset 149) */
- "p\0"
- "glVertex4sv\0"
+ /* _mesa_function_pool[3154]: MultiDrawArraysIndirect (will be remapped) */
+ "ipii\0"
+ "glMultiDrawArraysIndirect\0"
"\0"
- /* _mesa_function_pool[6329]: FramebufferTexture (will be remapped) */
- "iiii\0"
- "glFramebufferTextureARB\0"
- "glFramebufferTexture\0"
+ /* _mesa_function_pool[3186]: BufferStorage (will be remapped) */
+ "iipi\0"
+ "glBufferStorage\0"
"\0"
- /* _mesa_function_pool[6380]: GetQueryObjecti64v (will be remapped) */
- "iip\0"
- "glGetQueryObjecti64v\0"
- "glGetQueryObjecti64vEXT\0"
+ /* _mesa_function_pool[3208]: Color3ub (offset 19) */
+ "iii\0"
+ "glColor3ub\0"
"\0"
- /* _mesa_function_pool[6430]: GetActiveUniformBlockiv (will be remapped) */
- "iiip\0"
- "glGetActiveUniformBlockiv\0"
+ /* _mesa_function_pool[3224]: GetInstrumentsSGIX (dynamic) */
"\0"
- /* _mesa_function_pool[6462]: VertexAttrib4ubNV (will be remapped) */
- "iiiii\0"
- "glVertexAttrib4ubNV\0"
+ "glGetInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[6489]: MultiTexCoord2s (offset 390) */
+ /* _mesa_function_pool[3247]: Color3ui (offset 21) */
"iii\0"
- "glMultiTexCoord2s\0"
- "glMultiTexCoord2sARB\0"
+ "glColor3ui\0"
"\0"
- /* _mesa_function_pool[6533]: ClampColor (will be remapped) */
- "ii\0"
- "glClampColorARB\0"
- "glClampColor\0"
+ /* _mesa_function_pool[3263]: VertexAttrib4dvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[6566]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
- "ppp\0"
- "glTexCoord2fNormal3fVertex3fvSUN\0"
+ /* _mesa_function_pool[3287]: AlphaFragmentOp2ATI (will be remapped) */
+ "iiiiiiiii\0"
+ "glAlphaFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[6604]: GetTexEnvfv (offset 276) */
- "iip\0"
- "glGetTexEnvfv\0"
+ /* _mesa_function_pool[3320]: RasterPos4dv (offset 79) */
+ "p\0"
+ "glRasterPos4dv\0"
"\0"
- /* _mesa_function_pool[6623]: BindAttribLocation (will be remapped) */
- "iip\0"
- "glBindAttribLocation\0"
- "glBindAttribLocationARB\0"
+ /* _mesa_function_pool[3338]: DeleteProgramPipelines (will be remapped) */
+ "ip\0"
+ "glDeleteProgramPipelines\0"
"\0"
- /* _mesa_function_pool[6673]: BindFragDataLocationIndexed (will be remapped) */
- "iiip\0"
- "glBindFragDataLocationIndexed\0"
+ /* _mesa_function_pool[3367]: LineWidthx (will be remapped) */
+ "i\0"
+ "glLineWidthxOES\0"
+ "glLineWidthx\0"
+ "\0"
+ /* _mesa_function_pool[3399]: Indexdv (offset 45) */
+ "p\0"
+ "glIndexdv\0"
"\0"
- /* _mesa_function_pool[6709]: DiscardFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[3412]: GetnPixelMapfvARB (will be remapped) */
"iip\0"
- "glDiscardFramebufferEXT\0"
+ "glGetnPixelMapfvARB\0"
"\0"
- /* _mesa_function_pool[6738]: VDPAURegisterVideoSurfaceNV (will be remapped) */
- "piip\0"
- "glVDPAURegisterVideoSurfaceNV\0"
+ /* _mesa_function_pool[3437]: EGLImageTargetTexture2DOES (will be remapped) */
+ "ip\0"
+ "glEGLImageTargetTexture2DOES\0"
"\0"
- /* _mesa_function_pool[6774]: BindTransformFeedback (will be remapped) */
- "ii\0"
- "glBindTransformFeedback\0"
+ /* _mesa_function_pool[3470]: DepthMask (offset 211) */
+ "i\0"
+ "glDepthMask\0"
"\0"
- /* _mesa_function_pool[6802]: TextureStorage2DEXT (will be remapped) */
- "iiiiii\0"
- "glTextureStorage2DEXT\0"
+ /* _mesa_function_pool[3485]: WindowPos4ivMESA (will be remapped) */
+ "p\0"
+ "glWindowPos4ivMESA\0"
"\0"
- /* _mesa_function_pool[6832]: BindBufferBase (will be remapped) */
- "iii\0"
- "glBindBufferBase\0"
- "glBindBufferBaseEXT\0"
+ /* _mesa_function_pool[3507]: GetShaderInfoLog (will be remapped) */
+ "iipp\0"
+ "glGetShaderInfoLog\0"
"\0"
- /* _mesa_function_pool[6874]: Indexub (offset 315) */
+ /* _mesa_function_pool[3532]: BindFragmentShaderATI (will be remapped) */
"i\0"
- "glIndexub\0"
+ "glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[6887]: GetPerfMonitorCounterDataAMD (will be remapped) */
- "iiipp\0"
- "glGetPerfMonitorCounterDataAMD\0"
+ /* _mesa_function_pool[3559]: BlendFuncSeparateiARB (will be remapped) */
+ "iiiii\0"
+ "glBlendFuncSeparateiARB\0"
+ "glBlendFuncSeparateIndexedAMD\0"
"\0"
- /* _mesa_function_pool[6925]: TexEnvi (offset 186) */
- "iii\0"
- "glTexEnvi\0"
+ /* _mesa_function_pool[3620]: PixelTexGenParameteriSGIS (dynamic) */
+ "ii\0"
+ "glPixelTexGenParameteriSGIS\0"
"\0"
- /* _mesa_function_pool[6940]: GetClipPlane (offset 259) */
+ /* _mesa_function_pool[3652]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
"ip\0"
- "glGetClipPlane\0"
+ "glEGLImageTargetRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[6959]: CombinerParameterfvNV (dynamic) */
+ /* _mesa_function_pool[3695]: GenTransformFeedbacks (will be remapped) */
"ip\0"
- "glCombinerParameterfvNV\0"
+ "glGenTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[6987]: TexCoordP4uiv (will be remapped) */
- "ip\0"
- "glTexCoordP4uiv\0"
+ /* _mesa_function_pool[3723]: DrawTexfvOES (will be remapped) */
+ "p\0"
+ "glDrawTexfvOES\0"
"\0"
- /* _mesa_function_pool[7007]: VertexAttribs3dvNV (will be remapped) */
+ /* _mesa_function_pool[3741]: GetCompressedTexImage (will be remapped) */
"iip\0"
- "glVertexAttribs3dvNV\0"
+ "glGetCompressedTexImage\0"
+ "glGetCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[7033]: VertexAttribs4fvNV (will be remapped) */
+ /* _mesa_function_pool[3797]: ProgramLocalParameter4dvARB (will be remapped) */
"iip\0"
- "glVertexAttribs4fvNV\0"
- "\0"
- /* _mesa_function_pool[7059]: VertexArrayRangeNV (dynamic) */
- "ip\0"
- "glVertexArrayRangeNV\0"
- "\0"
- /* _mesa_function_pool[7084]: FragmentLightiSGIX (dynamic) */
- "iii\0"
- "glFragmentLightiSGIX\0"
- "\0"
- /* _mesa_function_pool[7110]: ClearBufferfi (will be remapped) */
- "iifi\0"
- "glClearBufferfi\0"
- "\0"
- /* _mesa_function_pool[7132]: DrawTransformFeedbackInstanced (will be remapped) */
- "iii\0"
- "glDrawTransformFeedbackInstanced\0"
+ "glProgramLocalParameter4dvARB\0"
"\0"
- /* _mesa_function_pool[7170]: VDPAUInitNV (will be remapped) */
- "pp\0"
- "glVDPAUInitNV\0"
+ /* _mesa_function_pool[3832]: TexCoord4fv (offset 121) */
+ "p\0"
+ "glTexCoord4fv\0"
"\0"
- /* _mesa_function_pool[7188]: DrawElementsIndirect (will be remapped) */
+ /* _mesa_function_pool[3849]: GetQueryObjectui64v (will be remapped) */
"iip\0"
- "glDrawElementsIndirect\0"
+ "glGetQueryObjectui64v\0"
+ "glGetQueryObjectui64vEXT\0"
"\0"
- /* _mesa_function_pool[7216]: PolygonOffsetEXT (will be remapped) */
- "ff\0"
- "glPolygonOffsetEXT\0"
+ /* _mesa_function_pool[3901]: VertexAttribP1uiv (will be remapped) */
+ "iiip\0"
+ "glVertexAttribP1uiv\0"
"\0"
- /* _mesa_function_pool[7239]: WindowPos4dvMESA (will be remapped) */
- "p\0"
- "glWindowPos4dvMESA\0"
+ /* _mesa_function_pool[3927]: IsProgram (will be remapped) */
+ "i\0"
+ "glIsProgram\0"
"\0"
- /* _mesa_function_pool[7261]: Scalex (will be remapped) */
- "iii\0"
- "glScalexOES\0"
- "glScalex\0"
+ /* _mesa_function_pool[3942]: TexCoordPointerListIBM (dynamic) */
+ "iiipi\0"
+ "glTexCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[7287]: PollAsyncSGIX (dynamic) */
- "p\0"
- "glPollAsyncSGIX\0"
+ /* _mesa_function_pool[3974]: ResizeBuffersMESA (will be remapped) */
"\0"
- /* _mesa_function_pool[7306]: WindowPos3sv (will be remapped) */
- "p\0"
- "glWindowPos3sv\0"
- "glWindowPos3svARB\0"
- "glWindowPos3svMESA\0"
+ "glResizeBuffersMESA\0"
"\0"
- /* _mesa_function_pool[7361]: DeleteFragmentShaderATI (will be remapped) */
- "i\0"
- "glDeleteFragmentShaderATI\0"
+ /* _mesa_function_pool[3996]: GenTextures (offset 328) */
+ "ip\0"
+ "glGenTextures\0"
+ "glGenTexturesEXT\0"
"\0"
- /* _mesa_function_pool[7390]: Scaled (offset 301) */
- "ddd\0"
- "glScaled\0"
+ /* _mesa_function_pool[4031]: IndexPointerListIBM (dynamic) */
+ "iipi\0"
+ "glIndexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[7404]: TangentPointerEXT (dynamic) */
- "iip\0"
- "glTangentPointerEXT\0"
+ /* _mesa_function_pool[4059]: WindowPos4fMESA (will be remapped) */
+ "ffff\0"
+ "glWindowPos4fMESA\0"
"\0"
- /* _mesa_function_pool[7429]: Scalef (offset 302) */
- "fff\0"
- "glScalef\0"
+ /* _mesa_function_pool[4083]: VertexAttribs2fvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs2fvNV\0"
"\0"
- /* _mesa_function_pool[7443]: IndexPointerEXT (will be remapped) */
- "iiip\0"
- "glIndexPointerEXT\0"
+ /* _mesa_function_pool[4109]: VertexAttribP4ui (will be remapped) */
+ "iiii\0"
+ "glVertexAttribP4ui\0"
"\0"
- /* _mesa_function_pool[7467]: VertexAttribI1iv (will be remapped) */
- "ip\0"
- "glVertexAttribI1ivEXT\0"
- "glVertexAttribI1iv\0"
+ /* _mesa_function_pool[4134]: Uniform4i (will be remapped) */
+ "iiiii\0"
+ "glUniform4i\0"
+ "glUniform4iARB\0"
"\0"
- /* _mesa_function_pool[7512]: ListParameterfvSGIX (dynamic) */
- "iip\0"
- "glListParameterfvSGIX\0"
+ /* _mesa_function_pool[4168]: BufferParameteriAPPLE (will be remapped) */
+ "iii\0"
+ "glBufferParameteriAPPLE\0"
"\0"
- /* _mesa_function_pool[7539]: ViewportIndexedf (will be remapped) */
+ /* _mesa_function_pool[4197]: Uniform4f (will be remapped) */
"iffff\0"
- "glViewportIndexedf\0"
- "\0"
- /* _mesa_function_pool[7565]: GetUniformfv (will be remapped) */
- "iip\0"
- "glGetUniformfv\0"
- "glGetUniformfvARB\0"
+ "glUniform4f\0"
+ "glUniform4fARB\0"
"\0"
- /* _mesa_function_pool[7603]: ObjectUnpurgeableAPPLE (will be remapped) */
- "iii\0"
- "glObjectUnpurgeableAPPLE\0"
+ /* _mesa_function_pool[4231]: ProgramUniform3f (will be remapped) */
+ "iifff\0"
+ "glProgramUniform3f\0"
"\0"
- /* _mesa_function_pool[7633]: AlphaFunc (offset 240) */
- "if\0"
- "glAlphaFunc\0"
+ /* _mesa_function_pool[4257]: ProgramUniform3i (will be remapped) */
+ "iiiii\0"
+ "glProgramUniform3i\0"
"\0"
- /* _mesa_function_pool[7649]: ColorFragmentOp2ATI (will be remapped) */
- "iiiiiiiiii\0"
- "glColorFragmentOp2ATI\0"
+ /* _mesa_function_pool[4283]: PointParameterfv (will be remapped) */
+ "ip\0"
+ "glPointParameterfv\0"
+ "glPointParameterfvARB\0"
+ "glPointParameterfvEXT\0"
+ "glPointParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[7683]: IsShader (will be remapped) */
- "i\0"
- "glIsShader\0"
+ /* _mesa_function_pool[4373]: GetHistogramParameterfv (offset 362) */
+ "iip\0"
+ "glGetHistogramParameterfv\0"
+ "glGetHistogramParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[7697]: EdgeFlag (offset 41) */
+ /* _mesa_function_pool[4433]: GetString (offset 275) */
"i\0"
- "glEdgeFlag\0"
+ "glGetString\0"
"\0"
- /* _mesa_function_pool[7711]: TexCoord2iv (offset 107) */
- "p\0"
- "glTexCoord2iv\0"
+ /* _mesa_function_pool[4448]: ColorPointervINTEL (dynamic) */
+ "iip\0"
+ "glColorPointervINTEL\0"
"\0"
- /* _mesa_function_pool[7728]: TexImage2DMultisample (will be remapped) */
- "iiiiii\0"
- "glTexImage2DMultisample\0"
+ /* _mesa_function_pool[4474]: VDPAUUnmapSurfacesNV (will be remapped) */
+ "ip\0"
+ "glVDPAUUnmapSurfacesNV\0"
"\0"
- /* _mesa_function_pool[7760]: Rotated (offset 299) */
- "dddd\0"
- "glRotated\0"
+ /* _mesa_function_pool[4501]: GetnHistogramARB (will be remapped) */
+ "iiiiip\0"
+ "glGetnHistogramARB\0"
"\0"
- /* _mesa_function_pool[7776]: ColorFragmentOp1ATI (will be remapped) */
- "iiiiiii\0"
- "glColorFragmentOp1ATI\0"
+ /* _mesa_function_pool[4528]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
+ "pppp\0"
+ "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[7807]: VertexAttrib2sNV (will be remapped) */
+ /* _mesa_function_pool[4581]: SecondaryColor3s (will be remapped) */
"iii\0"
- "glVertexAttrib2sNV\0"
- "\0"
- /* _mesa_function_pool[7831]: ReadPixels (offset 256) */
- "iiiiiip\0"
- "glReadPixels\0"
+ "glSecondaryColor3s\0"
+ "glSecondaryColor3sEXT\0"
"\0"
- /* _mesa_function_pool[7853]: EdgeFlagv (offset 42) */
- "p\0"
- "glEdgeFlagv\0"
+ /* _mesa_function_pool[4627]: VertexAttribP2uiv (will be remapped) */
+ "iiip\0"
+ "glVertexAttribP2uiv\0"
"\0"
- /* _mesa_function_pool[7868]: NormalPointerListIBM (dynamic) */
- "iipi\0"
- "glNormalPointerListIBM\0"
+ /* _mesa_function_pool[4653]: GetDetailTexFuncSGIS (dynamic) */
+ "ip\0"
+ "glGetDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7897]: CompressedTexSubImage1D (will be remapped) */
- "iiiiiip\0"
- "glCompressedTexSubImage1D\0"
- "glCompressedTexSubImage1DARB\0"
+ /* _mesa_function_pool[4680]: VertexAttrib3fNV (will be remapped) */
+ "ifff\0"
+ "glVertexAttrib3fNV\0"
"\0"
- /* _mesa_function_pool[7961]: QueryCounter (will be remapped) */
- "ii\0"
- "glQueryCounter\0"
+ /* _mesa_function_pool[4705]: SecondaryColor3b (will be remapped) */
+ "iii\0"
+ "glSecondaryColor3b\0"
+ "glSecondaryColor3bEXT\0"
"\0"
- /* _mesa_function_pool[7980]: Color4iv (offset 32) */
- "p\0"
- "glColor4iv\0"
+ /* _mesa_function_pool[4751]: EnableClientState (offset 313) */
+ "i\0"
+ "glEnableClientState\0"
"\0"
- /* _mesa_function_pool[7994]: DebugMessageCallback (will be remapped) */
+ /* _mesa_function_pool[4774]: Color4ubVertex2fvSUN (dynamic) */
"pp\0"
- "glDebugMessageCallback\0"
- "\0"
- /* _mesa_function_pool[8021]: TexParameterf (offset 178) */
- "iif\0"
- "glTexParameterf\0"
+ "glColor4ubVertex2fvSUN\0"
"\0"
- /* _mesa_function_pool[8042]: TexParameteri (offset 180) */
+ /* _mesa_function_pool[4801]: SecondaryColor3i (will be remapped) */
"iii\0"
- "glTexParameteri\0"
+ "glSecondaryColor3i\0"
+ "glSecondaryColor3iEXT\0"
"\0"
- /* _mesa_function_pool[8063]: NormalPointerEXT (will be remapped) */
+ /* _mesa_function_pool[4847]: TexFilterFuncSGIS (dynamic) */
"iiip\0"
- "glNormalPointerEXT\0"
+ "glTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[8088]: GetUniformiv (will be remapped) */
+ /* _mesa_function_pool[4873]: GetFragmentMaterialfvSGIX (dynamic) */
"iip\0"
- "glGetUniformiv\0"
- "glGetUniformivARB\0"
- "\0"
- /* _mesa_function_pool[8126]: DrawPixels (offset 257) */
- "iiiip\0"
- "glDrawPixels\0"
+ "glGetFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[8146]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
- "iffffffff\0"
- "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[4906]: DetailTexFuncSGIS (dynamic) */
+ "iip\0"
+ "glDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[8206]: DepthRangex (will be remapped) */
- "ii\0"
- "glDepthRangexOES\0"
- "glDepthRangex\0"
+ /* _mesa_function_pool[4931]: FlushMappedBufferRange (will be remapped) */
+ "iii\0"
+ "glFlushMappedBufferRange\0"
+ "glFlushMappedBufferRangeEXT\0"
"\0"
- /* _mesa_function_pool[8241]: ImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[4989]: Lightfv (offset 160) */
"iip\0"
- "glImageTransformParameterivHP\0"
- "\0"
- /* _mesa_function_pool[8276]: ClearBufferSubData (will be remapped) */
- "iiiiiip\0"
- "glClearBufferSubData\0"
+ "glLightfv\0"
"\0"
- /* _mesa_function_pool[8306]: GetnUniformuivARB (will be remapped) */
+ /* _mesa_function_pool[5004]: GetFramebufferAttachmentParameteriv (will be remapped) */
"iiip\0"
- "glGetnUniformuivARB\0"
- "\0"
- /* _mesa_function_pool[8332]: DrawTransformFeedback (will be remapped) */
- "ii\0"
- "glDrawTransformFeedback\0"
+ "glGetFramebufferAttachmentParameteriv\0"
+ "glGetFramebufferAttachmentParameterivEXT\0"
+ "glGetFramebufferAttachmentParameterivOES\0"
"\0"
- /* _mesa_function_pool[8360]: DrawElementsInstancedARB (will be remapped) */
- "iiipi\0"
- "glDrawElementsInstancedARB\0"
- "glDrawElementsInstancedEXT\0"
- "glDrawElementsInstanced\0"
+ /* _mesa_function_pool[5130]: ColorSubTable (offset 346) */
+ "iiiiip\0"
+ "glColorSubTable\0"
+ "glColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[8445]: MultiTexCoord3sv (offset 399) */
- "ip\0"
- "glMultiTexCoord3sv\0"
- "glMultiTexCoord3svARB\0"
+ /* _mesa_function_pool[5173]: EndPerfMonitorAMD (will be remapped) */
+ "i\0"
+ "glEndPerfMonitorAMD\0"
"\0"
- /* _mesa_function_pool[8490]: VertexAttribBinding (will be remapped) */
+ /* _mesa_function_pool[5196]: Uniform1ui (will be remapped) */
"ii\0"
- "glVertexAttribBinding\0"
- "\0"
- /* _mesa_function_pool[8516]: WeightivARB (dynamic) */
- "ip\0"
- "glWeightivARB\0"
- "\0"
- /* _mesa_function_pool[8534]: GlobalAlphaFactordSUN (dynamic) */
- "d\0"
- "glGlobalAlphaFactordSUN\0"
+ "glUniform1uiEXT\0"
+ "glUniform1ui\0"
"\0"
- /* _mesa_function_pool[8561]: GetFinalCombinerInputParameterfvNV (dynamic) */
+ /* _mesa_function_pool[5229]: MapParameterivNV (dynamic) */
"iip\0"
- "glGetFinalCombinerInputParameterfvNV\0"
+ "glMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[8603]: GenLists (offset 5) */
- "i\0"
- "glGenLists\0"
+ /* _mesa_function_pool[5253]: GetMultisamplefv (will be remapped) */
+ "iip\0"
+ "glGetMultisamplefv\0"
"\0"
- /* _mesa_function_pool[8617]: DepthRangef (will be remapped) */
- "ff\0"
- "glDepthRangef\0"
- "glDepthRangefOES\0"
+ /* _mesa_function_pool[5277]: WeightbvARB (dynamic) */
+ "ip\0"
+ "glWeightbvARB\0"
"\0"
- /* _mesa_function_pool[8652]: Color3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[5295]: Rectdv (offset 87) */
"pp\0"
- "glColor3fVertex3fvSUN\0"
+ "glRectdv\0"
"\0"
- /* _mesa_function_pool[8678]: SampleCoveragex (will be remapped) */
- "ii\0"
- "glSampleCoveragexOES\0"
- "glSampleCoveragex\0"
+ /* _mesa_function_pool[5308]: DrawArraysInstancedARB (will be remapped) */
+ "iiii\0"
+ "glDrawArraysInstancedARB\0"
+ "glDrawArraysInstancedEXT\0"
+ "glDrawArraysInstanced\0"
"\0"
- /* _mesa_function_pool[8721]: GetMapAttribParameterivNV (dynamic) */
+ /* _mesa_function_pool[5386]: ProgramEnvParameters4fvEXT (will be remapped) */
"iiip\0"
- "glGetMapAttribParameterivNV\0"
+ "glProgramEnvParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[8755]: GetCombinerInputParameterfvNV (dynamic) */
- "iiiip\0"
- "glGetCombinerInputParameterfvNV\0"
+ /* _mesa_function_pool[5421]: VertexAttrib2svNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib2svNV\0"
"\0"
- /* _mesa_function_pool[8794]: GetSharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[5445]: SecondaryColorP3uiv (will be remapped) */
"ip\0"
- "glGetSharpenTexFuncSGIS\0"
+ "glSecondaryColorP3uiv\0"
"\0"
- /* _mesa_function_pool[8822]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[5471]: GetnPixelMapuivARB (will be remapped) */
"iip\0"
- "glPixelTransformParameterfvEXT\0"
- "\0"
- /* _mesa_function_pool[8858]: MapGrid2d (offset 226) */
- "iddidd\0"
- "glMapGrid2d\0"
- "\0"
- /* _mesa_function_pool[8878]: MapGrid2f (offset 227) */
- "iffiff\0"
- "glMapGrid2f\0"
- "\0"
- /* _mesa_function_pool[8898]: SampleMapATI (will be remapped) */
- "iii\0"
- "glSampleMapATI\0"
- "\0"
- /* _mesa_function_pool[8918]: ValidateProgram (will be remapped) */
- "i\0"
- "glValidateProgram\0"
- "glValidateProgramARB\0"
- "\0"
- /* _mesa_function_pool[8960]: VertexPointerEXT (will be remapped) */
- "iiiip\0"
- "glVertexPointerEXT\0"
+ "glGetnPixelMapuivARB\0"
"\0"
- /* _mesa_function_pool[8986]: GetTexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[5497]: GetSamplerParameterIuiv (will be remapped) */
"iip\0"
- "glGetTexFilterFuncSGIS\0"
+ "glGetSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[9014]: VertexAttribI4sv (will be remapped) */
+ /* _mesa_function_pool[5528]: PointParameterxv (will be remapped) */
"ip\0"
- "glVertexAttribI4svEXT\0"
- "glVertexAttribI4sv\0"
+ "glPointParameterxvOES\0"
+ "glPointParameterxv\0"
"\0"
- /* _mesa_function_pool[9059]: Scissor (offset 176) */
- "iiii\0"
- "glScissor\0"
+ /* _mesa_function_pool[5573]: CompressedTexSubImage3D (will be remapped) */
+ "iiiiiiiiiip\0"
+ "glCompressedTexSubImage3D\0"
+ "glCompressedTexSubImage3DARB\0"
+ "glCompressedTexSubImage3DOES\0"
"\0"
- /* _mesa_function_pool[9075]: Fogf (offset 153) */
- "if\0"
- "glFogf\0"
+ /* _mesa_function_pool[5670]: BindFramebufferEXT (will be remapped) */
+ "ii\0"
+ "glBindFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[9086]: ReplacementCodeubvSUN (dynamic) */
+ /* _mesa_function_pool[5695]: Color3dv (offset 12) */
"p\0"
- "glReplacementCodeubvSUN\0"
+ "glColor3dv\0"
"\0"
- /* _mesa_function_pool[9113]: TexSubImage1D (offset 332) */
- "iiiiiip\0"
- "glTexSubImage1D\0"
- "glTexSubImage1DEXT\0"
+ /* _mesa_function_pool[5709]: BeginQuery (will be remapped) */
+ "ii\0"
+ "glBeginQuery\0"
+ "glBeginQueryARB\0"
"\0"
- /* _mesa_function_pool[9157]: BeginTransformFeedback (will be remapped) */
- "i\0"
- "glBeginTransformFeedback\0"
- "glBeginTransformFeedbackEXT\0"
+ /* _mesa_function_pool[5742]: VertexP3uiv (will be remapped) */
+ "ip\0"
+ "glVertexP3uiv\0"
"\0"
- /* _mesa_function_pool[9213]: FenceSync (will be remapped) */
- "ii\0"
- "glFenceSync\0"
+ /* _mesa_function_pool[5760]: GetUniformLocation (will be remapped) */
+ "ip\0"
+ "glGetUniformLocation\0"
+ "glGetUniformLocationARB\0"
"\0"
- /* _mesa_function_pool[9229]: Color4usv (offset 40) */
- "p\0"
- "glColor4usv\0"
+ /* _mesa_function_pool[5809]: PixelStoref (offset 249) */
+ "if\0"
+ "glPixelStoref\0"
"\0"
- /* _mesa_function_pool[9244]: GetnUniformfvARB (will be remapped) */
- "iiip\0"
- "glGetnUniformfvARB\0"
+ /* _mesa_function_pool[5827]: WindowPos2iv (will be remapped) */
+ "p\0"
+ "glWindowPos2iv\0"
+ "glWindowPos2ivARB\0"
+ "glWindowPos2ivMESA\0"
"\0"
- /* _mesa_function_pool[9269]: Fogi (offset 155) */
+ /* _mesa_function_pool[5882]: PixelStorei (offset 250) */
"ii\0"
- "glFogi\0"
+ "glPixelStorei\0"
"\0"
- /* _mesa_function_pool[9280]: DepthRange (offset 288) */
- "dd\0"
- "glDepthRange\0"
+ /* _mesa_function_pool[5900]: VertexAttribs1svNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[9297]: RasterPos3iv (offset 75) */
- "p\0"
- "glRasterPos3iv\0"
+ /* _mesa_function_pool[5926]: RequestResidentProgramsNV (will be remapped) */
+ "ip\0"
+ "glRequestResidentProgramsNV\0"
"\0"
- /* _mesa_function_pool[9315]: ColorMaski (will be remapped) */
- "iiiii\0"
- "glColorMaskIndexedEXT\0"
- "glColorMaski\0"
+ /* _mesa_function_pool[5958]: ListParameterivSGIX (dynamic) */
+ "iip\0"
+ "glListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[9357]: GetActiveAttrib (will be remapped) */
- "iiipppp\0"
- "glGetActiveAttrib\0"
- "glGetActiveAttribARB\0"
+ /* _mesa_function_pool[5985]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ "pppp\0"
+ "glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[9405]: TexCoord2i (offset 106) */
- "ii\0"
- "glTexCoord2i\0"
+ /* _mesa_function_pool[6031]: CheckFramebufferStatus (will be remapped) */
+ "i\0"
+ "glCheckFramebufferStatus\0"
+ "glCheckFramebufferStatusEXT\0"
+ "glCheckFramebufferStatusOES\0"
"\0"
- /* _mesa_function_pool[9422]: PixelMapfv (offset 251) */
- "iip\0"
- "glPixelMapfv\0"
+ /* _mesa_function_pool[6115]: DispatchComputeIndirect (will be remapped) */
+ "i\0"
+ "glDispatchComputeIndirect\0"
"\0"
- /* _mesa_function_pool[9440]: Color4ui (offset 37) */
- "iiii\0"
- "glColor4ui\0"
+ /* _mesa_function_pool[6144]: InvalidateBufferData (will be remapped) */
+ "i\0"
+ "glInvalidateBufferData\0"
"\0"
- /* _mesa_function_pool[9457]: RasterPos3s (offset 76) */
- "iii\0"
- "glRasterPos3s\0"
+ /* _mesa_function_pool[6170]: VDPAUMapSurfacesNV (will be remapped) */
+ "ip\0"
+ "glVDPAUMapSurfacesNV\0"
"\0"
- /* _mesa_function_pool[9476]: Color3usv (offset 24) */
- "p\0"
- "glColor3usv\0"
+ /* _mesa_function_pool[6195]: IsFramebuffer (will be remapped) */
+ "i\0"
+ "glIsFramebuffer\0"
+ "glIsFramebufferEXT\0"
+ "glIsFramebufferOES\0"
"\0"
- /* _mesa_function_pool[9491]: MultiTexCoord2iv (offset 389) */
+ /* _mesa_function_pool[6252]: GetPixelTexGenParameterfvSGIS (dynamic) */
"ip\0"
- "glMultiTexCoord2iv\0"
- "glMultiTexCoord2ivARB\0"
+ "glGetPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[9536]: TexCoord2f (offset 104) */
- "ff\0"
- "glTexCoord2f\0"
+ /* _mesa_function_pool[6288]: GetDoublev (offset 260) */
+ "ip\0"
+ "glGetDoublev\0"
"\0"
- /* _mesa_function_pool[9553]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
- "ifffff\0"
- "glReplacementCodeuiTexCoord2fVertex3fSUN\0"
+ /* _mesa_function_pool[6305]: GetObjectLabel (will be remapped) */
+ "iiipp\0"
+ "glGetObjectLabel\0"
"\0"
- /* _mesa_function_pool[9602]: TexCoord2d (offset 102) */
- "dd\0"
- "glTexCoord2d\0"
+ /* _mesa_function_pool[6329]: TextureLightEXT (dynamic) */
+ "i\0"
+ "glTextureLightEXT\0"
"\0"
- /* _mesa_function_pool[9619]: RasterPos3d (offset 70) */
- "ddd\0"
- "glRasterPos3d\0"
+ /* _mesa_function_pool[6350]: ColorP3uiv (will be remapped) */
+ "ip\0"
+ "glColorP3uiv\0"
"\0"
- /* _mesa_function_pool[9638]: RasterPos3f (offset 72) */
- "fff\0"
- "glRasterPos3f\0"
+ /* _mesa_function_pool[6367]: CombinerParameteriNV (dynamic) */
+ "ii\0"
+ "glCombinerParameteriNV\0"
"\0"
- /* _mesa_function_pool[9657]: AreTexturesResident (offset 322) */
- "ipp\0"
- "glAreTexturesResident\0"
- "glAreTexturesResidentEXT\0"
+ /* _mesa_function_pool[6394]: Normal3fVertex3fvSUN (dynamic) */
+ "pp\0"
+ "glNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[9709]: DrawElementsInstancedBaseVertexBaseInstance (will be remapped) */
- "iiipiii\0"
- "glDrawElementsInstancedBaseVertexBaseInstance\0"
+ /* _mesa_function_pool[6421]: VertexAttribI4ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4ivEXT\0"
+ "glVertexAttribI4iv\0"
"\0"
- /* _mesa_function_pool[9764]: TexCoord2s (offset 108) */
- "ii\0"
- "glTexCoord2s\0"
+ /* _mesa_function_pool[6466]: SecondaryColor3ubv (will be remapped) */
+ "p\0"
+ "glSecondaryColor3ubv\0"
+ "glSecondaryColor3ubvEXT\0"
"\0"
- /* _mesa_function_pool[9781]: StencilOpSeparate (will be remapped) */
- "iiii\0"
- "glStencilOpSeparate\0"
- "glStencilOpSeparateATI\0"
+ /* _mesa_function_pool[6514]: GetDebugMessageLog (will be remapped) */
+ "iipppppp\0"
+ "glGetDebugMessageLog\0"
"\0"
- /* _mesa_function_pool[9830]: ColorTableParameteriv (offset 341) */
- "iip\0"
- "glColorTableParameteriv\0"
- "glColorTableParameterivSGI\0"
+ /* _mesa_function_pool[6545]: DeformationMap3fSGIX (dynamic) */
+ "iffiiffiiffiip\0"
+ "glDeformationMap3fSGIX\0"
"\0"
- /* _mesa_function_pool[9886]: VertexAttribP2ui (will be remapped) */
- "iiii\0"
- "glVertexAttribP2ui\0"
+ /* _mesa_function_pool[6584]: MatrixIndexubvARB (dynamic) */
+ "ip\0"
+ "glMatrixIndexubvARB\0"
"\0"
- /* _mesa_function_pool[9911]: GenSamplers (will be remapped) */
+ /* _mesa_function_pool[6608]: VertexAttribI4usv (will be remapped) */
"ip\0"
- "glGenSamplers\0"
+ "glVertexAttribI4usvEXT\0"
+ "glVertexAttribI4usv\0"
+ "\0"
+ /* _mesa_function_pool[6655]: PixelTexGenParameterfSGIS (dynamic) */
+ "if\0"
+ "glPixelTexGenParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[9929]: Color4us (offset 39) */
+ /* _mesa_function_pool[6687]: ProgramUniform2ui (will be remapped) */
"iiii\0"
- "glColor4us\0"
+ "glProgramUniform2ui\0"
"\0"
- /* _mesa_function_pool[9946]: VDPAUFiniNV (will be remapped) */
+ /* _mesa_function_pool[6713]: TexCoord2fVertex3fvSUN (dynamic) */
+ "pp\0"
+ "glTexCoord2fVertex3fvSUN\0"
"\0"
- "glVDPAUFiniNV\0"
+ /* _mesa_function_pool[6742]: Color4ubVertex3fvSUN (dynamic) */
+ "pp\0"
+ "glColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[9962]: Color3bv (offset 10) */
- "p\0"
- "glColor3bv\0"
+ /* _mesa_function_pool[6769]: GetShaderSource (will be remapped) */
+ "iipp\0"
+ "glGetShaderSource\0"
+ "glGetShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[9976]: GetnCompressedTexImageARB (will be remapped) */
- "iiip\0"
- "glGetnCompressedTexImageARB\0"
+ /* _mesa_function_pool[6814]: BindProgramARB (will be remapped) */
+ "ii\0"
+ "glBindProgramARB\0"
+ "glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[10010]: DrawTransformFeedbackStreamInstanced (will be remapped) */
+ /* _mesa_function_pool[6851]: VertexAttrib3sNV (will be remapped) */
"iiii\0"
- "glDrawTransformFeedbackStreamInstanced\0"
+ "glVertexAttrib3sNV\0"
"\0"
- /* _mesa_function_pool[10055]: VertexAttrib2fvARB (will be remapped) */
- "ip\0"
- "glVertexAttrib2fv\0"
- "glVertexAttrib2fvARB\0"
+ /* _mesa_function_pool[6876]: ColorFragmentOp1ATI (will be remapped) */
+ "iiiiiii\0"
+ "glColorFragmentOp1ATI\0"
+ "\0"
+ /* _mesa_function_pool[6907]: ProgramUniformMatrix4x3fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix4x3fv\0"
+ "\0"
+ /* _mesa_function_pool[6942]: PopClientAttrib (offset 334) */
+ "\0"
+ "glPopClientAttrib\0"
"\0"
- /* _mesa_function_pool[10098]: VertexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[6962]: DrawElementsInstancedARB (will be remapped) */
"iiipi\0"
- "glVertexPointerListIBM\0"
+ "glDrawElementsInstancedARB\0"
+ "glDrawElementsInstancedEXT\0"
+ "glDrawElementsInstanced\0"
"\0"
- /* _mesa_function_pool[10128]: GetProgramLocalParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[7047]: GetQueryObjectuiv (will be remapped) */
"iip\0"
- "glGetProgramLocalParameterfvARB\0"
+ "glGetQueryObjectuiv\0"
+ "glGetQueryObjectuivARB\0"
"\0"
- /* _mesa_function_pool[10165]: FragmentMaterialfSGIX (dynamic) */
- "iif\0"
- "glFragmentMaterialfSGIX\0"
+ /* _mesa_function_pool[7095]: VertexAttribI4bv (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4bvEXT\0"
+ "glVertexAttribI4bv\0"
"\0"
- /* _mesa_function_pool[10194]: BindSampler (will be remapped) */
- "ii\0"
- "glBindSampler\0"
+ /* _mesa_function_pool[7140]: FogCoordPointerListIBM (dynamic) */
+ "iipi\0"
+ "glFogCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[10212]: GetUniformuiv (will be remapped) */
- "iip\0"
- "glGetUniformuivEXT\0"
- "glGetUniformuiv\0"
+ /* _mesa_function_pool[7171]: Binormal3sEXT (dynamic) */
+ "iii\0"
+ "glBinormal3sEXT\0"
"\0"
- /* _mesa_function_pool[10252]: BindBufferOffsetEXT (will be remapped) */
- "iiii\0"
- "glBindBufferOffsetEXT\0"
+ /* _mesa_function_pool[7192]: ListBase (offset 6) */
+ "i\0"
+ "glListBase\0"
"\0"
- /* _mesa_function_pool[10280]: IsFenceNV (dynamic) */
+ /* _mesa_function_pool[7206]: GenerateMipmap (will be remapped) */
"i\0"
- "glIsFenceNV\0"
+ "glGenerateMipmap\0"
+ "glGenerateMipmapEXT\0"
+ "glGenerateMipmapOES\0"
"\0"
- /* _mesa_function_pool[10295]: ColorPointerListIBM (dynamic) */
- "iiipi\0"
- "glColorPointerListIBM\0"
+ /* _mesa_function_pool[7266]: BindBufferRange (will be remapped) */
+ "iiiii\0"
+ "glBindBufferRange\0"
+ "glBindBufferRangeEXT\0"
"\0"
- /* _mesa_function_pool[10324]: AttachObjectARB (will be remapped) */
- "ii\0"
- "glAttachObjectARB\0"
+ /* _mesa_function_pool[7312]: ProgramUniformMatrix2x4fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix2x4fv\0"
"\0"
- /* _mesa_function_pool[10346]: GetFragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[7347]: GetQueryObjectiv (will be remapped) */
"iip\0"
- "glGetFragmentLightivSGIX\0"
+ "glGetQueryObjectiv\0"
+ "glGetQueryObjectivARB\0"
"\0"
- /* _mesa_function_pool[10376]: MultiTexCoord2fARB (offset 386) */
- "iff\0"
- "glMultiTexCoord2f\0"
- "glMultiTexCoord2fARB\0"
+ /* _mesa_function_pool[7393]: VertexAttrib2s (will be remapped) */
+ "iii\0"
+ "glVertexAttrib2s\0"
+ "glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[10420]: ColorTable (offset 339) */
- "iiiiip\0"
- "glColorTable\0"
- "glColorTableSGI\0"
- "glColorTableEXT\0"
+ /* _mesa_function_pool[7435]: SecondaryColor3fvEXT (will be remapped) */
+ "p\0"
+ "glSecondaryColor3fv\0"
+ "glSecondaryColor3fvEXT\0"
"\0"
- /* _mesa_function_pool[10473]: IndexPointer (offset 314) */
- "iip\0"
- "glIndexPointer\0"
+ /* _mesa_function_pool[7481]: VertexAttrib2d (will be remapped) */
+ "idd\0"
+ "glVertexAttrib2d\0"
+ "glVertexAttrib2dARB\0"
"\0"
- /* _mesa_function_pool[10493]: Accum (offset 213) */
- "if\0"
- "glAccum\0"
+ /* _mesa_function_pool[7523]: Uniform1fv (will be remapped) */
+ "iip\0"
+ "glUniform1fv\0"
+ "glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[10505]: GetTexImage (offset 281) */
- "iiiip\0"
- "glGetTexImage\0"
+ /* _mesa_function_pool[7557]: GetProgramPipelineInfoLog (will be remapped) */
+ "iipp\0"
+ "glGetProgramPipelineInfoLog\0"
"\0"
- /* _mesa_function_pool[10526]: MapControlPointsNV (dynamic) */
- "iiiiiiiip\0"
- "glMapControlPointsNV\0"
+ /* _mesa_function_pool[7591]: TextureMaterialEXT (dynamic) */
+ "ii\0"
+ "glTextureMaterialEXT\0"
"\0"
- /* _mesa_function_pool[10558]: ConvolutionFilter2D (offset 349) */
- "iiiiiip\0"
- "glConvolutionFilter2D\0"
- "glConvolutionFilter2DEXT\0"
+ /* _mesa_function_pool[7616]: DepthBoundsEXT (will be remapped) */
+ "dd\0"
+ "glDepthBoundsEXT\0"
"\0"
- /* _mesa_function_pool[10614]: MultMatrixx (will be remapped) */
+ /* _mesa_function_pool[7637]: WindowPos3fv (will be remapped) */
"p\0"
- "glMultMatrixxOES\0"
- "glMultMatrixx\0"
+ "glWindowPos3fv\0"
+ "glWindowPos3fvARB\0"
+ "glWindowPos3fvMESA\0"
"\0"
- /* _mesa_function_pool[10648]: TexParameterIiv (will be remapped) */
- "iip\0"
- "glTexParameterIivEXT\0"
- "glTexParameterIiv\0"
+ /* _mesa_function_pool[7692]: BindVertexArrayAPPLE (will be remapped) */
+ "i\0"
+ "glBindVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[10692]: Finish (offset 216) */
+ /* _mesa_function_pool[7718]: GetHistogramParameteriv (offset 363) */
+ "iip\0"
+ "glGetHistogramParameteriv\0"
+ "glGetHistogramParameterivEXT\0"
"\0"
- "glFinish\0"
+ /* _mesa_function_pool[7778]: PointParameteriv (will be remapped) */
+ "ip\0"
+ "glPointParameteriv\0"
+ "glPointParameterivNV\0"
"\0"
- /* _mesa_function_pool[10703]: MapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[7822]: GetProgramivARB (will be remapped) */
"iip\0"
- "glMapParameterfvNV\0"
+ "glGetProgramivARB\0"
"\0"
- /* _mesa_function_pool[10727]: ClearStencil (offset 207) */
- "i\0"
- "glClearStencil\0"
+ /* _mesa_function_pool[7845]: BindRenderbuffer (will be remapped) */
+ "ii\0"
+ "glBindRenderbuffer\0"
+ "glBindRenderbufferOES\0"
"\0"
- /* _mesa_function_pool[10745]: Color4x (will be remapped) */
- "iiii\0"
- "glColor4xOES\0"
- "glColor4x\0"
+ /* _mesa_function_pool[7890]: SecondaryColor3fEXT (will be remapped) */
+ "fff\0"
+ "glSecondaryColor3f\0"
+ "glSecondaryColor3fEXT\0"
"\0"
- /* _mesa_function_pool[10774]: HintPGI (dynamic) */
- "ii\0"
- "glHintPGI\0"
+ /* _mesa_function_pool[7936]: PrimitiveRestartIndex (will be remapped) */
+ "i\0"
+ "glPrimitiveRestartIndex\0"
+ "glPrimitiveRestartIndexNV\0"
"\0"
- /* _mesa_function_pool[10788]: ConvolutionParameteriv (offset 353) */
- "iip\0"
- "glConvolutionParameteriv\0"
- "glConvolutionParameterivEXT\0"
+ /* _mesa_function_pool[7989]: VertexAttribI4ubv (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4ubvEXT\0"
+ "glVertexAttribI4ubv\0"
"\0"
- /* _mesa_function_pool[10846]: Color4s (offset 33) */
- "iiii\0"
- "glColor4s\0"
+ /* _mesa_function_pool[8036]: GetGraphicsResetStatusARB (will be remapped) */
"\0"
- /* _mesa_function_pool[10862]: InterleavedArrays (offset 317) */
- "iip\0"
- "glInterleavedArrays\0"
+ "glGetGraphicsResetStatusARB\0"
"\0"
- /* _mesa_function_pool[10887]: RasterPos2fv (offset 65) */
- "p\0"
- "glRasterPos2fv\0"
+ /* _mesa_function_pool[8066]: ActiveStencilFaceEXT (will be remapped) */
+ "i\0"
+ "glActiveStencilFaceEXT\0"
"\0"
- /* _mesa_function_pool[10905]: TexCoord1fv (offset 97) */
- "p\0"
- "glTexCoord1fv\0"
+ /* _mesa_function_pool[8092]: VertexAttrib4dNV (will be remapped) */
+ "idddd\0"
+ "glVertexAttrib4dNV\0"
"\0"
- /* _mesa_function_pool[10922]: Vertex2d (offset 126) */
+ /* _mesa_function_pool[8118]: DepthRange (offset 288) */
"dd\0"
- "glVertex2d\0"
+ "glDepthRange\0"
"\0"
- /* _mesa_function_pool[10937]: CullParameterdvEXT (dynamic) */
+ /* _mesa_function_pool[8135]: TexBumpParameterivATI (will be remapped) */
"ip\0"
- "glCullParameterdvEXT\0"
- "\0"
- /* _mesa_function_pool[10962]: ProgramNamedParameter4fNV (will be remapped) */
- "iipffff\0"
- "glProgramNamedParameter4fNV\0"
- "\0"
- /* _mesa_function_pool[10999]: Orthof (will be remapped) */
- "ffffff\0"
- "glOrthofOES\0"
- "glOrthof\0"
+ "glTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[11028]: MultiTexCoord4dv (offset 401) */
- "ip\0"
- "glMultiTexCoord4dv\0"
- "glMultiTexCoord4dvARB\0"
+ /* _mesa_function_pool[8163]: VertexAttrib4fNV (will be remapped) */
+ "iffff\0"
+ "glVertexAttrib4fNV\0"
"\0"
- /* _mesa_function_pool[11073]: ProgramEnvParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[8189]: Uniform4fv (will be remapped) */
"iip\0"
- "glProgramEnvParameter4fvARB\0"
- "glProgramParameter4fvNV\0"
+ "glUniform4fv\0"
+ "glUniform4fvARB\0"
"\0"
- /* _mesa_function_pool[11130]: Color4i (offset 31) */
+ /* _mesa_function_pool[8223]: DrawMeshArraysSUN (dynamic) */
"iiii\0"
- "glColor4i\0"
+ "glDrawMeshArraysSUN\0"
"\0"
- /* _mesa_function_pool[11146]: Color4f (offset 29) */
- "ffff\0"
- "glColor4f\0"
+ /* _mesa_function_pool[8249]: GetMapControlPointsNV (dynamic) */
+ "iiiiiip\0"
+ "glGetMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[11162]: RasterPos4fv (offset 81) */
- "p\0"
- "glRasterPos4fv\0"
+ /* _mesa_function_pool[8282]: SpriteParameterivSGIX (dynamic) */
+ "ip\0"
+ "glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[11180]: Color4d (offset 27) */
- "dddd\0"
- "glColor4d\0"
+ /* _mesa_function_pool[8310]: Frustumf (will be remapped) */
+ "ffffff\0"
+ "glFrustumfOES\0"
+ "glFrustumf\0"
"\0"
- /* _mesa_function_pool[11196]: ClearIndex (offset 205) */
- "f\0"
- "glClearIndex\0"
+ /* _mesa_function_pool[8343]: ProgramUniform2uiv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform2uiv\0"
"\0"
- /* _mesa_function_pool[11212]: Color4b (offset 25) */
- "iiii\0"
- "glColor4b\0"
+ /* _mesa_function_pool[8370]: Rectsv (offset 93) */
+ "pp\0"
+ "glRectsv\0"
"\0"
- /* _mesa_function_pool[11228]: LoadMatrixd (offset 292) */
- "p\0"
- "glLoadMatrixd\0"
+ /* _mesa_function_pool[8383]: Frustumx (will be remapped) */
+ "iiiiii\0"
+ "glFrustumxOES\0"
+ "glFrustumx\0"
"\0"
- /* _mesa_function_pool[11245]: FragmentLightModeliSGIX (dynamic) */
+ /* _mesa_function_pool[8416]: CullFace (offset 152) */
+ "i\0"
+ "glCullFace\0"
+ "\0"
+ /* _mesa_function_pool[8430]: BindTexture (offset 307) */
"ii\0"
- "glFragmentLightModeliSGIX\0"
+ "glBindTexture\0"
+ "glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[11275]: RasterPos2dv (offset 63) */
- "p\0"
- "glRasterPos2dv\0"
+ /* _mesa_function_pool[8465]: MultiTexCoord4fARB (offset 402) */
+ "iffff\0"
+ "glMultiTexCoord4f\0"
+ "glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[11293]: ConvolutionParameterfv (offset 351) */
+ /* _mesa_function_pool[8511]: MultiTexCoordP2uiv (will be remapped) */
"iip\0"
- "glConvolutionParameterfv\0"
- "glConvolutionParameterfvEXT\0"
- "\0"
- /* _mesa_function_pool[11351]: TbufferMask3DFX (dynamic) */
- "i\0"
- "glTbufferMask3DFX\0"
- "\0"
- /* _mesa_function_pool[11372]: VDPAURegisterOutputSurfaceNV (will be remapped) */
- "piip\0"
- "glVDPAURegisterOutputSurfaceNV\0"
+ "glMultiTexCoordP2uiv\0"
"\0"
- /* _mesa_function_pool[11409]: GetTexGendv (offset 278) */
+ /* _mesa_function_pool[8537]: NormalPointer (offset 318) */
"iip\0"
- "glGetTexGendv\0"
+ "glNormalPointer\0"
"\0"
- /* _mesa_function_pool[11428]: FragmentLightModelfSGIX (dynamic) */
- "if\0"
- "glFragmentLightModelfSGIX\0"
+ /* _mesa_function_pool[8558]: TangentPointerEXT (dynamic) */
+ "iip\0"
+ "glTangentPointerEXT\0"
"\0"
- /* _mesa_function_pool[11458]: LoadProgramNV (will be remapped) */
- "iiip\0"
- "glLoadProgramNV\0"
+ /* _mesa_function_pool[8583]: WindowPos4iMESA (will be remapped) */
+ "iiii\0"
+ "glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[11480]: EndList (offset 1) */
+ /* _mesa_function_pool[8607]: ReferencePlaneSGIX (dynamic) */
+ "p\0"
+ "glReferencePlaneSGIX\0"
"\0"
- "glEndList\0"
+ /* _mesa_function_pool[8631]: VertexAttrib4bv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4bv\0"
+ "glVertexAttrib4bvARB\0"
"\0"
- /* _mesa_function_pool[11492]: VertexP4ui (will be remapped) */
- "ii\0"
- "glVertexP4ui\0"
+ /* _mesa_function_pool[8674]: ReplacementCodeuivSUN (dynamic) */
+ "p\0"
+ "glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[11509]: MultiTexCoordP1ui (will be remapped) */
- "iii\0"
- "glMultiTexCoordP1ui\0"
+ /* _mesa_function_pool[8701]: SecondaryColor3usv (will be remapped) */
+ "p\0"
+ "glSecondaryColor3usv\0"
+ "glSecondaryColor3usvEXT\0"
"\0"
- /* _mesa_function_pool[11534]: GetAttachedObjectsARB (will be remapped) */
- "iipp\0"
- "glGetAttachedObjectsARB\0"
+ /* _mesa_function_pool[8749]: GetPixelMapuiv (offset 272) */
+ "ip\0"
+ "glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[11564]: EvalCoord1fv (offset 231) */
+ /* _mesa_function_pool[8770]: Indexfv (offset 47) */
"p\0"
- "glEvalCoord1fv\0"
+ "glIndexfv\0"
"\0"
- /* _mesa_function_pool[11582]: DrawRangeElements (offset 338) */
- "iiiiip\0"
- "glDrawRangeElements\0"
- "glDrawRangeElementsEXT\0"
+ /* _mesa_function_pool[8783]: AlphaFragmentOp1ATI (will be remapped) */
+ "iiiiii\0"
+ "glAlphaFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[11633]: EvalMesh2 (offset 238) */
- "iiiii\0"
- "glEvalMesh2\0"
+ /* _mesa_function_pool[8813]: ListParameteriSGIX (dynamic) */
+ "iii\0"
+ "glListParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[11652]: TexCoordPointerListIBM (dynamic) */
- "iiipi\0"
- "glTexCoordPointerListIBM\0"
+ /* _mesa_function_pool[8839]: GetFloatv (offset 262) */
+ "ip\0"
+ "glGetFloatv\0"
+ "\0"
+ /* _mesa_function_pool[8855]: MultiTexCoord3i (offset 396) */
+ "iiii\0"
+ "glMultiTexCoord3i\0"
+ "glMultiTexCoord3iARB\0"
+ "\0"
+ /* _mesa_function_pool[8900]: ProgramUniform1fv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform1fv\0"
+ "\0"
+ /* _mesa_function_pool[8926]: MultiTexCoord3d (offset 392) */
+ "iddd\0"
+ "glMultiTexCoord3d\0"
+ "glMultiTexCoord3dARB\0"
"\0"
- /* _mesa_function_pool[11684]: Vertex4fv (offset 145) */
+ /* _mesa_function_pool[8971]: TexCoord3sv (offset 117) */
"p\0"
- "glVertex4fv\0"
+ "glTexCoord3sv\0"
+ "\0"
+ /* _mesa_function_pool[8988]: Fogfv (offset 154) */
+ "ip\0"
+ "glFogfv\0"
"\0"
- /* _mesa_function_pool[11699]: VertexAttribLFormat (will be remapped) */
+ /* _mesa_function_pool[9000]: Minmax (offset 368) */
+ "iii\0"
+ "glMinmax\0"
+ "glMinmaxEXT\0"
+ "\0"
+ /* _mesa_function_pool[9026]: MultiTexCoord3s (offset 398) */
"iiii\0"
- "glVertexAttribLFormat\0"
+ "glMultiTexCoord3s\0"
+ "glMultiTexCoord3sARB\0"
"\0"
- /* _mesa_function_pool[11727]: GenTransformFeedbacks (will be remapped) */
- "ip\0"
- "glGenTransformFeedbacks\0"
+ /* _mesa_function_pool[9071]: FinishTextureSUNX (dynamic) */
"\0"
- /* _mesa_function_pool[11755]: SpriteParameterfvSGIX (dynamic) */
- "ip\0"
- "glSpriteParameterfvSGIX\0"
+ "glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[11783]: VertexAttribs3fvNV (will be remapped) */
+ /* _mesa_function_pool[9093]: GetFinalCombinerInputParameterfvNV (dynamic) */
"iip\0"
- "glVertexAttribs3fvNV\0"
+ "glGetFinalCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[11809]: GlobalAlphaFactoruiSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactoruiSUN\0"
+ /* _mesa_function_pool[9135]: PollInstrumentsSGIX (dynamic) */
+ "p\0"
+ "glPollInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[11837]: GetHandleARB (will be remapped) */
- "i\0"
- "glGetHandleARB\0"
+ /* _mesa_function_pool[9160]: Vertex4iv (offset 147) */
+ "p\0"
+ "glVertex4iv\0"
"\0"
- /* _mesa_function_pool[11855]: DebugMessageControlARB (will be remapped) */
- "iiiipi\0"
- "glDebugMessageControlARB\0"
+ /* _mesa_function_pool[9175]: BufferSubData (will be remapped) */
+ "iiip\0"
+ "glBufferSubData\0"
+ "glBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[11888]: DrawTexfvOES (will be remapped) */
- "p\0"
- "glDrawTexfvOES\0"
+ /* _mesa_function_pool[9216]: AlphaFragmentOp3ATI (will be remapped) */
+ "iiiiiiiiiiii\0"
+ "glAlphaFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[11906]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[9252]: Begin (offset 7) */
"i\0"
- "glBindFragmentShaderATI\0"
+ "glBegin\0"
"\0"
- /* _mesa_function_pool[11933]: BlendFunciARB (will be remapped) */
- "iii\0"
- "glBlendFunciARB\0"
- "glBlendFuncIndexedAMD\0"
+ /* _mesa_function_pool[9263]: LightModeli (offset 165) */
+ "ii\0"
+ "glLightModeli\0"
"\0"
- /* _mesa_function_pool[11976]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[9281]: UniformMatrix2fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix2fv\0"
+ "glUniformMatrix2fvARB\0"
+ "\0"
+ /* _mesa_function_pool[9328]: LightModelf (offset 163) */
+ "if\0"
+ "glLightModelf\0"
+ "\0"
+ /* _mesa_function_pool[9346]: GetTexParameterfv (offset 282) */
"iip\0"
- "glGetProgramEnvParameterdvARB\0"
+ "glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[12011]: GetnUniformivARB (will be remapped) */
- "iiip\0"
- "glGetnUniformivARB\0"
+ /* _mesa_function_pool[9371]: BinormalPointerEXT (dynamic) */
+ "iip\0"
+ "glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[12036]: ClearColorIiEXT (will be remapped) */
- "iiii\0"
- "glClearColorIiEXT\0"
+ /* _mesa_function_pool[9397]: GetCombinerInputParameterivNV (dynamic) */
+ "iiiip\0"
+ "glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[12060]: BindFramebuffer (will be remapped) */
+ /* _mesa_function_pool[9436]: DeleteAsyncMarkersSGIX (dynamic) */
"ii\0"
- "glBindFramebuffer\0"
- "glBindFramebufferOES\0"
+ "glDeleteAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[12103]: CreateProgram (will be remapped) */
+ /* _mesa_function_pool[9465]: MultiTexCoord2fvARB (offset 387) */
+ "ip\0"
+ "glMultiTexCoord2fv\0"
+ "glMultiTexCoord2fvARB\0"
"\0"
- "glCreateProgram\0"
+ /* _mesa_function_pool[9510]: VertexAttrib4ubv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4ubv\0"
+ "glVertexAttrib4ubvARB\0"
"\0"
- /* _mesa_function_pool[12121]: ReleaseShaderCompiler (will be remapped) */
+ /* _mesa_function_pool[9555]: GetnTexImageARB (will be remapped) */
+ "iiiiip\0"
+ "glGetnTexImageARB\0"
"\0"
- "glReleaseShaderCompiler\0"
+ /* _mesa_function_pool[9581]: ColorMask (offset 210) */
+ "iiii\0"
+ "glColorMask\0"
"\0"
- /* _mesa_function_pool[12147]: GetMinmax (offset 364) */
- "iiiip\0"
- "glGetMinmax\0"
- "glGetMinmaxEXT\0"
+ /* _mesa_function_pool[9599]: GenAsyncMarkersSGIX (dynamic) */
+ "i\0"
+ "glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[12181]: BlendFuncSeparate (will be remapped) */
- "iiii\0"
- "glBlendFuncSeparate\0"
- "glBlendFuncSeparateEXT\0"
- "glBlendFuncSeparateINGR\0"
- "glBlendFuncSeparateOES\0"
+ /* _mesa_function_pool[9624]: ReplacementCodeuiVertex3fSUN (dynamic) */
+ "ifff\0"
+ "glReplacementCodeuiVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[12277]: StencilFuncSeparate (will be remapped) */
- "iiii\0"
- "glStencilFuncSeparate\0"
+ /* _mesa_function_pool[9661]: VertexAttribI4sv (will be remapped) */
+ "ip\0"
+ "glVertexAttribI4svEXT\0"
+ "glVertexAttribI4sv\0"
"\0"
- /* _mesa_function_pool[12305]: ShaderSource (will be remapped) */
- "iipp\0"
- "glShaderSource\0"
- "glShaderSourceARB\0"
+ /* _mesa_function_pool[9706]: DrawElementsInstancedBaseInstance (will be remapped) */
+ "iiipii\0"
+ "glDrawElementsInstancedBaseInstance\0"
"\0"
- /* _mesa_function_pool[12344]: GetInteger64i_v (will be remapped) */
- "iip\0"
- "glGetInteger64i_v\0"
+ /* _mesa_function_pool[9750]: UniformMatrix4fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix4fv\0"
+ "glUniformMatrix4fvARB\0"
"\0"
- /* _mesa_function_pool[12367]: GetVertexAttribdvNV (will be remapped) */
- "iip\0"
- "glGetVertexAttribdvNV\0"
+ /* _mesa_function_pool[9797]: UniformMatrix3x2fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[12394]: DeleteTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[9824]: VertexAttrib4Nuiv (will be remapped) */
"ip\0"
- "glDeleteTransformFeedbacks\0"
+ "glVertexAttrib4Nuiv\0"
+ "glVertexAttrib4NuivARB\0"
"\0"
- /* _mesa_function_pool[12425]: Normal3fv (offset 57) */
- "p\0"
- "glNormal3fv\0"
+ /* _mesa_function_pool[9871]: ClientActiveTexture (offset 375) */
+ "i\0"
+ "glClientActiveTexture\0"
+ "glClientActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[12440]: TexGenxOES (will be remapped) */
- "iii\0"
- "glTexGenxOES\0"
+ /* _mesa_function_pool[9921]: GetUniformIndices (will be remapped) */
+ "iipp\0"
+ "glGetUniformIndices\0"
"\0"
- /* _mesa_function_pool[12458]: GlobalAlphaFactorbSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactorbSUN\0"
+ /* _mesa_function_pool[9947]: GetTexBumpParameterivATI (will be remapped) */
+ "ip\0"
+ "glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[12485]: Color3us (offset 23) */
+ /* _mesa_function_pool[9978]: Binormal3bEXT (dynamic) */
"iii\0"
- "glColor3us\0"
+ "glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[12501]: ImageTransformParameterfvHP (dynamic) */
- "iip\0"
- "glImageTransformParameterfvHP\0"
+ /* _mesa_function_pool[9999]: CombinerParameterivNV (dynamic) */
+ "ip\0"
+ "glCombinerParameterivNV\0"
+ "\0"
+ /* _mesa_function_pool[10027]: MultiTexCoord2sv (offset 391) */
+ "ip\0"
+ "glMultiTexCoord2sv\0"
+ "glMultiTexCoord2svARB\0"
+ "\0"
+ /* _mesa_function_pool[10072]: LoadIdentity (offset 290) */
"\0"
- /* _mesa_function_pool[12536]: NormalP3ui (will be remapped) */
+ "glLoadIdentity\0"
+ "\0"
+ /* _mesa_function_pool[10089]: ActiveShaderProgram (will be remapped) */
"ii\0"
- "glNormalP3ui\0"
+ "glActiveShaderProgram\0"
"\0"
- /* _mesa_function_pool[12553]: ScissorIndexed (will be remapped) */
- "iiiii\0"
- "glScissorIndexed\0"
+ /* _mesa_function_pool[10115]: DeleteTransformFeedbacks (will be remapped) */
+ "ip\0"
+ "glDeleteTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[12577]: End (offset 43) */
+ /* _mesa_function_pool[10146]: VertexAttrib4ubvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4ubvNV\0"
"\0"
- "glEnd\0"
+ /* _mesa_function_pool[10171]: FogCoordfEXT (will be remapped) */
+ "f\0"
+ "glFogCoordf\0"
+ "glFogCoordfEXT\0"
"\0"
- /* _mesa_function_pool[12585]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[10201]: GetMapfv (offset 267) */
"iip\0"
- "glVertexAttribs3svNV\0"
+ "glGetMapfv\0"
"\0"
- /* _mesa_function_pool[12611]: VertexAttribFormat (will be remapped) */
- "iiiii\0"
- "glVertexAttribFormat\0"
+ /* _mesa_function_pool[10217]: GetProgramInfoLog (will be remapped) */
+ "iipp\0"
+ "glGetProgramInfoLog\0"
"\0"
- /* _mesa_function_pool[12639]: MultiTexCoordP3uiv (will be remapped) */
- "iip\0"
- "glMultiTexCoordP3uiv\0"
+ /* _mesa_function_pool[10243]: BindTransformFeedback (will be remapped) */
+ "ii\0"
+ "glBindTransformFeedback\0"
"\0"
- /* _mesa_function_pool[12665]: VertexAttribs2dvNV (will be remapped) */
- "iip\0"
- "glVertexAttribs2dvNV\0"
+ /* _mesa_function_pool[10271]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */
+ "pppp\0"
+ "glTexCoord4fColor4fNormal3fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[12691]: VertexAttribI4ivEXT (will be remapped) */
+ /* _mesa_function_pool[10317]: GetPixelMapfv (offset 271) */
"ip\0"
- "glVertexAttribI4ivEXT\0"
- "glVertexAttribI4iv\0"
+ "glGetPixelMapfv\0"
"\0"
- /* _mesa_function_pool[12736]: MultiTexCoord3fvARB (offset 395) */
+ /* _mesa_function_pool[10337]: WeightivARB (dynamic) */
"ip\0"
- "glMultiTexCoord3fv\0"
- "glMultiTexCoord3fvARB\0"
+ "glWeightivARB\0"
"\0"
- /* _mesa_function_pool[12781]: Color3ub (offset 19) */
- "iii\0"
- "glColor3ub\0"
+ /* _mesa_function_pool[10355]: DebugMessageCallbackARB (will be remapped) */
+ "pp\0"
+ "glDebugMessageCallbackARB\0"
"\0"
- /* _mesa_function_pool[12797]: GetProgramParameterfvNV (will be remapped) */
- "iiip\0"
- "glGetProgramParameterfvNV\0"
+ /* _mesa_function_pool[10385]: VertexAttrib4svNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4svNV\0"
"\0"
- /* _mesa_function_pool[12829]: GetActiveUniformsiv (will be remapped) */
- "iipip\0"
- "glGetActiveUniformsiv\0"
+ /* _mesa_function_pool[10409]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
+ "ifffff\0"
+ "glReplacementCodeuiTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[12858]: BindBuffer (will be remapped) */
+ /* _mesa_function_pool[10458]: VDPAUSurfaceAccessNV (will be remapped) */
"ii\0"
- "glBindBuffer\0"
- "glBindBufferARB\0"
+ "glVDPAUSurfaceAccessNV\0"
"\0"
- /* _mesa_function_pool[12891]: GetInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[10485]: EdgeFlagPointer (offset 312) */
+ "ip\0"
+ "glEdgeFlagPointer\0"
"\0"
- "glGetInstrumentsSGIX\0"
+ /* _mesa_function_pool[10507]: WindowPos2f (will be remapped) */
+ "ff\0"
+ "glWindowPos2f\0"
+ "glWindowPos2fARB\0"
+ "glWindowPos2fMESA\0"
"\0"
- /* _mesa_function_pool[12914]: VertexAttrib2sv (will be remapped) */
- "ip\0"
- "glVertexAttrib2sv\0"
- "glVertexAttrib2svARB\0"
+ /* _mesa_function_pool[10560]: WindowPos2d (will be remapped) */
+ "dd\0"
+ "glWindowPos2d\0"
+ "glWindowPos2dARB\0"
+ "glWindowPos2dMESA\0"
"\0"
- /* _mesa_function_pool[12957]: Color3ui (offset 21) */
- "iii\0"
- "glColor3ui\0"
+ /* _mesa_function_pool[10613]: WindowPos2i (will be remapped) */
+ "ii\0"
+ "glWindowPos2i\0"
+ "glWindowPos2iARB\0"
+ "glWindowPos2iMESA\0"
"\0"
- /* _mesa_function_pool[12973]: EvalMapsNV (dynamic) */
+ /* _mesa_function_pool[10666]: WindowPos2s (will be remapped) */
"ii\0"
- "glEvalMapsNV\0"
+ "glWindowPos2s\0"
+ "glWindowPos2sARB\0"
+ "glWindowPos2sMESA\0"
"\0"
- /* _mesa_function_pool[12990]: DrawTexxvOES (will be remapped) */
+ /* _mesa_function_pool[10719]: VertexAttribI1uiEXT (will be remapped) */
+ "ii\0"
+ "glVertexAttribI1uiEXT\0"
+ "glVertexAttribI1ui\0"
+ "\0"
+ /* _mesa_function_pool[10764]: DeleteSync (will be remapped) */
+ "i\0"
+ "glDeleteSync\0"
+ "\0"
+ /* _mesa_function_pool[10780]: WindowPos4fvMESA (will be remapped) */
"p\0"
- "glDrawTexxvOES\0"
+ "glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[13008]: TexSubImage2D (offset 333) */
+ /* _mesa_function_pool[10802]: CompressedTexImage3D (will be remapped) */
"iiiiiiiip\0"
- "glTexSubImage2D\0"
- "glTexSubImage2DEXT\0"
+ "glCompressedTexImage3D\0"
+ "glCompressedTexImage3DARB\0"
+ "glCompressedTexImage3DOES\0"
"\0"
- /* _mesa_function_pool[13054]: FragmentLightivSGIX (dynamic) */
- "iip\0"
- "glFragmentLightivSGIX\0"
+ /* _mesa_function_pool[10888]: VertexAttribI1uiv (will be remapped) */
+ "ip\0"
+ "glVertexAttribI1uivEXT\0"
+ "glVertexAttribI1uiv\0"
"\0"
- /* _mesa_function_pool[13081]: IndexPointerListIBM (dynamic) */
- "iipi\0"
- "glIndexPointerListIBM\0"
+ /* _mesa_function_pool[10935]: SecondaryColor3dv (will be remapped) */
+ "p\0"
+ "glSecondaryColor3dv\0"
+ "glSecondaryColor3dvEXT\0"
"\0"
- /* _mesa_function_pool[13109]: GetTexParameterPointervAPPLE (dynamic) */
+ /* _mesa_function_pool[10981]: GetListParameterivSGIX (dynamic) */
"iip\0"
- "glGetTexParameterPointervAPPLE\0"
+ "glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[13145]: TexGenfv (offset 191) */
+ /* _mesa_function_pool[11011]: GetnPixelMapusvARB (will be remapped) */
"iip\0"
- "glTexGenfv\0"
- "glTexGenfvOES\0"
+ "glGetnPixelMapusvARB\0"
"\0"
- /* _mesa_function_pool[13175]: VertexAttrib1dNV (will be remapped) */
- "id\0"
- "glVertexAttrib1dNV\0"
+ /* _mesa_function_pool[11037]: VertexAttrib3s (will be remapped) */
+ "iiii\0"
+ "glVertexAttrib3s\0"
+ "glVertexAttrib3sARB\0"
"\0"
- /* _mesa_function_pool[13198]: VertexAttrib4dvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib4dvNV\0"
+ /* _mesa_function_pool[11080]: UniformMatrix4x3fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix4x3fv\0"
"\0"
- /* _mesa_function_pool[13222]: GetVertexAttribiv (will be remapped) */
+ /* _mesa_function_pool[11107]: Binormal3dEXT (dynamic) */
+ "ddd\0"
+ "glBinormal3dEXT\0"
+ "\0"
+ /* _mesa_function_pool[11128]: GetQueryiv (will be remapped) */
"iip\0"
- "glGetVertexAttribiv\0"
- "glGetVertexAttribivARB\0"
+ "glGetQueryiv\0"
+ "glGetQueryivARB\0"
"\0"
- /* _mesa_function_pool[13270]: QueryMatrixxOES (will be remapped) */
- "pp\0"
- "glQueryMatrixxOES\0"
+ /* _mesa_function_pool[11162]: VertexAttrib3d (will be remapped) */
+ "iddd\0"
+ "glVertexAttrib3d\0"
+ "glVertexAttrib3dARB\0"
"\0"
- /* _mesa_function_pool[13292]: ShaderBinary (will be remapped) */
- "ipipi\0"
- "glShaderBinary\0"
+ /* _mesa_function_pool[11205]: ImageTransformParameterfHP (dynamic) */
+ "iif\0"
+ "glImageTransformParameterfHP\0"
"\0"
- /* _mesa_function_pool[13314]: TexCoordP2uiv (will be remapped) */
+ /* _mesa_function_pool[11239]: MapBuffer (will be remapped) */
+ "ii\0"
+ "glMapBuffer\0"
+ "glMapBufferARB\0"
+ "glMapBufferOES\0"
+ "\0"
+ /* _mesa_function_pool[11285]: VertexAttrib4Nbv (will be remapped) */
"ip\0"
- "glTexCoordP2uiv\0"
+ "glVertexAttrib4Nbv\0"
+ "glVertexAttrib4NbvARB\0"
"\0"
- /* _mesa_function_pool[13334]: FragmentMaterialfvSGIX (dynamic) */
- "iip\0"
- "glFragmentMaterialfvSGIX\0"
+ /* _mesa_function_pool[11330]: ProgramBinary (will be remapped) */
+ "iipi\0"
+ "glProgramBinary\0"
+ "glProgramBinaryOES\0"
"\0"
- /* _mesa_function_pool[13364]: GetFragmentMaterialivSGIX (dynamic) */
- "iip\0"
- "glGetFragmentMaterialivSGIX\0"
+ /* _mesa_function_pool[11371]: InvalidateTexImage (will be remapped) */
+ "ii\0"
+ "glInvalidateTexImage\0"
"\0"
- /* _mesa_function_pool[13397]: WindowPos4dMESA (will be remapped) */
- "dddd\0"
- "glWindowPos4dMESA\0"
+ /* _mesa_function_pool[11396]: Uniform4ui (will be remapped) */
+ "iiiii\0"
+ "glUniform4uiEXT\0"
+ "glUniform4ui\0"
"\0"
- /* _mesa_function_pool[13421]: DrawBuffers (will be remapped) */
- "ip\0"
- "glDrawBuffers\0"
- "glDrawBuffersARB\0"
- "glDrawBuffersATI\0"
- "glDrawBuffersNV\0"
+ /* _mesa_function_pool[11432]: VertexAttrib1fARB (will be remapped) */
+ "if\0"
+ "glVertexAttrib1f\0"
+ "glVertexAttrib1fARB\0"
"\0"
- /* _mesa_function_pool[13489]: Lightxv (will be remapped) */
+ /* _mesa_function_pool[11473]: GetBooleani_v (will be remapped) */
"iip\0"
- "glLightxvOES\0"
- "glLightxv\0"
+ "glGetBooleanIndexedvEXT\0"
+ "glGetBooleani_v\0"
"\0"
- /* _mesa_function_pool[13517]: Uniform3fv (will be remapped) */
- "iip\0"
- "glUniform3fv\0"
- "glUniform3fvARB\0"
+ /* _mesa_function_pool[11518]: DrawTexsOES (will be remapped) */
+ "iiiii\0"
+ "glDrawTexsOES\0"
+ "\0"
+ /* _mesa_function_pool[11539]: GetObjectPtrLabel (will be remapped) */
+ "pipp\0"
+ "glGetObjectPtrLabel\0"
+ "\0"
+ /* _mesa_function_pool[11565]: ProgramParameteri (will be remapped) */
+ "iii\0"
+ "glProgramParameteriARB\0"
+ "glProgramParameteri\0"
+ "\0"
+ /* _mesa_function_pool[11613]: SecondaryColorPointerListIBM (dynamic) */
+ "iiipi\0"
+ "glSecondaryColorPointerListIBM\0"
+ "\0"
+ /* _mesa_function_pool[11651]: Color3fv (offset 14) */
+ "p\0"
+ "glColor3fv\0"
"\0"
- /* _mesa_function_pool[13551]: BlendEquation (offset 337) */
+ /* _mesa_function_pool[11665]: ReplacementCodeubSUN (dynamic) */
"i\0"
- "glBlendEquation\0"
- "glBlendEquationEXT\0"
- "glBlendEquationOES\0"
+ "glReplacementCodeubSUN\0"
"\0"
- /* _mesa_function_pool[13608]: VertexAttrib3dNV (will be remapped) */
- "iddd\0"
- "glVertexAttrib3dNV\0"
+ /* _mesa_function_pool[11691]: GetnMapfvARB (will be remapped) */
+ "iiip\0"
+ "glGetnMapfvARB\0"
"\0"
- /* _mesa_function_pool[13633]: Normal3x (will be remapped) */
+ /* _mesa_function_pool[11712]: MultiTexCoord2i (offset 388) */
"iii\0"
- "glNormal3xOES\0"
- "glNormal3x\0"
+ "glMultiTexCoord2i\0"
+ "glMultiTexCoord2iARB\0"
"\0"
- /* _mesa_function_pool[13663]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
- "ppppp\0"
- "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
+ /* _mesa_function_pool[11756]: MultiTexCoord2d (offset 384) */
+ "idd\0"
+ "glMultiTexCoord2d\0"
+ "glMultiTexCoord2dARB\0"
"\0"
- /* _mesa_function_pool[13727]: VertexAttrib4fARB (will be remapped) */
- "iffff\0"
- "glVertexAttrib4f\0"
- "glVertexAttrib4fARB\0"
+ /* _mesa_function_pool[11800]: SamplerParameterIuiv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[13771]: GetPerfMonitorGroupStringAMD (will be remapped) */
- "iipp\0"
- "glGetPerfMonitorGroupStringAMD\0"
+ /* _mesa_function_pool[11828]: MultiTexCoord2s (offset 390) */
+ "iii\0"
+ "glMultiTexCoord2s\0"
+ "glMultiTexCoord2sARB\0"
"\0"
- /* _mesa_function_pool[13808]: GetError (offset 261) */
+ /* _mesa_function_pool[11872]: VDPAURegisterVideoSurfaceNV (will be remapped) */
+ "piip\0"
+ "glVDPAURegisterVideoSurfaceNV\0"
"\0"
- "glGetError\0"
+ /* _mesa_function_pool[11908]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ "ffffffffffff\0"
+ "glTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[13821]: IndexFuncEXT (dynamic) */
- "if\0"
- "glIndexFuncEXT\0"
+ /* _mesa_function_pool[11961]: BindBufferBase (will be remapped) */
+ "iii\0"
+ "glBindBufferBase\0"
+ "glBindBufferBaseEXT\0"
"\0"
- /* _mesa_function_pool[13840]: TexCoord3dv (offset 111) */
- "p\0"
- "glTexCoord3dv\0"
+ /* _mesa_function_pool[12003]: GetPerfMonitorCounterDataAMD (will be remapped) */
+ "iiipp\0"
+ "glGetPerfMonitorCounterDataAMD\0"
+ "\0"
+ /* _mesa_function_pool[12041]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glReplacementCodeuiNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[13857]: Indexdv (offset 45) */
+ /* _mesa_function_pool[12086]: MultTransposeMatrixf (will be remapped) */
"p\0"
- "glIndexdv\0"
+ "glMultTransposeMatrixf\0"
+ "glMultTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[13870]: InvalidateTexSubImage (will be remapped) */
- "iiiiiiii\0"
- "glInvalidateTexSubImage\0"
+ /* _mesa_function_pool[12138]: PolygonOffsetEXT (will be remapped) */
+ "ff\0"
+ "glPolygonOffsetEXT\0"
"\0"
- /* _mesa_function_pool[13904]: Normal3s (offset 60) */
+ /* _mesa_function_pool[12161]: Scalex (will be remapped) */
"iii\0"
- "glNormal3s\0"
+ "glScalexOES\0"
+ "glScalex\0"
"\0"
- /* _mesa_function_pool[13920]: GetObjectParameterivAPPLE (will be remapped) */
- "iiip\0"
- "glGetObjectParameterivAPPLE\0"
+ /* _mesa_function_pool[12187]: Scaled (offset 301) */
+ "ddd\0"
+ "glScaled\0"
"\0"
- /* _mesa_function_pool[13954]: PushName (offset 201) */
- "i\0"
- "glPushName\0"
+ /* _mesa_function_pool[12201]: Scalef (offset 302) */
+ "fff\0"
+ "glScalef\0"
"\0"
- /* _mesa_function_pool[13968]: GetTexParameterIuiv (will be remapped) */
- "iip\0"
- "glGetTexParameterIuivEXT\0"
- "glGetTexParameterIuiv\0"
+ /* _mesa_function_pool[12215]: IndexPointerEXT (will be remapped) */
+ "iiip\0"
+ "glIndexPointerEXT\0"
"\0"
- /* _mesa_function_pool[14020]: GetActiveUniformBlockName (will be remapped) */
- "iiipp\0"
- "glGetActiveUniformBlockName\0"
+ /* _mesa_function_pool[12239]: GetUniformfv (will be remapped) */
+ "iip\0"
+ "glGetUniformfv\0"
+ "glGetUniformfvARB\0"
"\0"
- /* _mesa_function_pool[14055]: CullParameterfvEXT (dynamic) */
- "ip\0"
- "glCullParameterfvEXT\0"
+ /* _mesa_function_pool[12277]: ColorFragmentOp2ATI (will be remapped) */
+ "iiiiiiiiii\0"
+ "glColorFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[14080]: Normal3i (offset 58) */
+ /* _mesa_function_pool[12311]: VertexAttrib2sNV (will be remapped) */
"iii\0"
- "glNormal3i\0"
+ "glVertexAttrib2sNV\0"
"\0"
- /* _mesa_function_pool[14096]: ProgramNamedParameter4fvNV (will be remapped) */
- "iipp\0"
- "glProgramNamedParameter4fvNV\0"
+ /* _mesa_function_pool[12335]: ReadPixels (offset 256) */
+ "iiiiiip\0"
+ "glReadPixels\0"
"\0"
- /* _mesa_function_pool[14131]: VertexAttrib4fvARB (will be remapped) */
- "ip\0"
- "glVertexAttrib4fv\0"
- "glVertexAttrib4fvARB\0"
+ /* _mesa_function_pool[12357]: NormalPointerListIBM (dynamic) */
+ "iipi\0"
+ "glNormalPointerListIBM\0"
"\0"
- /* _mesa_function_pool[14174]: VertexAttrib1dv (will be remapped) */
- "ip\0"
- "glVertexAttrib1dv\0"
- "glVertexAttrib1dvARB\0"
+ /* _mesa_function_pool[12386]: QueryCounter (will be remapped) */
+ "ii\0"
+ "glQueryCounter\0"
"\0"
- /* _mesa_function_pool[14217]: PixelTexGenSGIX (dynamic) */
- "i\0"
- "glPixelTexGenSGIX\0"
+ /* _mesa_function_pool[12405]: NormalPointerEXT (will be remapped) */
+ "iiip\0"
+ "glNormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[14238]: GetnPixelMapfvARB (will be remapped) */
- "iip\0"
- "glGetnPixelMapfvARB\0"
+ /* _mesa_function_pool[12430]: ProgramUniform3iv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform3iv\0"
"\0"
- /* _mesa_function_pool[14263]: ImageTransformParameteriHP (dynamic) */
- "iii\0"
- "glImageTransformParameteriHP\0"
+ /* _mesa_function_pool[12456]: GetActiveUniformBlockName (will be remapped) */
+ "iiipp\0"
+ "glGetActiveUniformBlockName\0"
"\0"
- /* _mesa_function_pool[14297]: Normal3b (offset 52) */
- "iii\0"
- "glNormal3b\0"
+ /* _mesa_function_pool[12491]: DrawElementsBaseVertex (will be remapped) */
+ "iiipi\0"
+ "glDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[14313]: WindowPos3dv (will be remapped) */
+ /* _mesa_function_pool[12523]: RasterPos3iv (offset 75) */
"p\0"
- "glWindowPos3dv\0"
- "glWindowPos3dvARB\0"
- "glWindowPos3dvMESA\0"
+ "glRasterPos3iv\0"
"\0"
- /* _mesa_function_pool[14368]: Normal3d (offset 54) */
- "ddd\0"
- "glNormal3d\0"
+ /* _mesa_function_pool[12541]: ColorMaski (will be remapped) */
+ "iiiii\0"
+ "glColorMaskIndexedEXT\0"
+ "glColorMaski\0"
"\0"
- /* _mesa_function_pool[14384]: PointParameterxv (will be remapped) */
- "ip\0"
- "glPointParameterxvOES\0"
- "glPointParameterxv\0"
+ /* _mesa_function_pool[12583]: Uniform2uiv (will be remapped) */
+ "iip\0"
+ "glUniform2uivEXT\0"
+ "glUniform2uiv\0"
"\0"
- /* _mesa_function_pool[14429]: Normal3f (offset 56) */
+ /* _mesa_function_pool[12619]: RasterPos3s (offset 76) */
+ "iii\0"
+ "glRasterPos3s\0"
+ "\0"
+ /* _mesa_function_pool[12638]: RasterPos3d (offset 70) */
+ "ddd\0"
+ "glRasterPos3d\0"
+ "\0"
+ /* _mesa_function_pool[12657]: RasterPos3f (offset 72) */
"fff\0"
- "glNormal3f\0"
+ "glRasterPos3f\0"
+ "\0"
+ /* _mesa_function_pool[12676]: BindVertexArray (will be remapped) */
+ "i\0"
+ "glBindVertexArray\0"
+ "glBindVertexArrayOES\0"
+ "\0"
+ /* _mesa_function_pool[12718]: RasterPos3i (offset 74) */
+ "iii\0"
+ "glRasterPos3i\0"
"\0"
- /* _mesa_function_pool[14445]: FogCoordPointer (will be remapped) */
+ /* _mesa_function_pool[12737]: GetTexParameterIuiv (will be remapped) */
"iip\0"
- "glFogCoordPointer\0"
- "glFogCoordPointerEXT\0"
+ "glGetTexParameterIuivEXT\0"
+ "glGetTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[14489]: Indexi (offset 48) */
- "i\0"
- "glIndexi\0"
+ /* _mesa_function_pool[12789]: DrawTransformFeedbackStreamInstanced (will be remapped) */
+ "iiii\0"
+ "glDrawTransformFeedbackStreamInstanced\0"
"\0"
- /* _mesa_function_pool[14501]: EGLImageTargetTexture2DOES (will be remapped) */
+ /* _mesa_function_pool[12834]: VertexAttrib2fvARB (will be remapped) */
"ip\0"
- "glEGLImageTargetTexture2DOES\0"
+ "glVertexAttrib2fv\0"
+ "glVertexAttrib2fvARB\0"
"\0"
- /* _mesa_function_pool[14534]: VertexAttribI2uiEXT (will be remapped) */
- "iii\0"
- "glVertexAttribI2uiEXT\0"
- "glVertexAttribI2ui\0"
+ /* _mesa_function_pool[12877]: VertexPointerListIBM (dynamic) */
+ "iiipi\0"
+ "glVertexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[14580]: DeleteFencesNV (dynamic) */
- "ip\0"
- "glDeleteFencesNV\0"
+ /* _mesa_function_pool[12907]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
+ "ffffffff\0"
+ "glTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[14601]: IsRenderbuffer (will be remapped) */
+ /* _mesa_function_pool[12949]: IsFenceNV (dynamic) */
"i\0"
- "glIsRenderbuffer\0"
- "glIsRenderbufferEXT\0"
- "glIsRenderbufferOES\0"
+ "glIsFenceNV\0"
"\0"
- /* _mesa_function_pool[14661]: DepthMask (offset 211) */
+ /* _mesa_function_pool[12964]: ColorTable (offset 339) */
+ "iiiiip\0"
+ "glColorTable\0"
+ "glColorTableSGI\0"
+ "glColorTableEXT\0"
+ "\0"
+ /* _mesa_function_pool[13017]: LoadName (offset 198) */
"i\0"
- "glDepthMask\0"
+ "glLoadName\0"
"\0"
- /* _mesa_function_pool[14676]: SecondaryColor3us (will be remapped) */
- "iii\0"
- "glSecondaryColor3us\0"
- "glSecondaryColor3usEXT\0"
+ /* _mesa_function_pool[13031]: Color3fVertex3fSUN (dynamic) */
+ "ffffff\0"
+ "glColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[14724]: Indexf (offset 46) */
+ /* _mesa_function_pool[13060]: GetnUniformuivARB (will be remapped) */
+ "iiip\0"
+ "glGetnUniformuivARB\0"
+ "\0"
+ /* _mesa_function_pool[13086]: ClearIndex (offset 205) */
"f\0"
- "glIndexf\0"
+ "glClearIndex\0"
"\0"
- /* _mesa_function_pool[14736]: GetImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[13102]: ConvolutionParameterfv (offset 351) */
"iip\0"
- "glGetImageTransformParameterivHP\0"
+ "glConvolutionParameterfv\0"
+ "glConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[14774]: Indexd (offset 44) */
- "d\0"
- "glIndexd\0"
+ /* _mesa_function_pool[13160]: TbufferMask3DFX (dynamic) */
+ "i\0"
+ "glTbufferMask3DFX\0"
"\0"
- /* _mesa_function_pool[14786]: GetMaterialiv (offset 270) */
+ /* _mesa_function_pool[13181]: GetTexGendv (offset 278) */
"iip\0"
- "glGetMaterialiv\0"
+ "glGetTexGendv\0"
"\0"
- /* _mesa_function_pool[14807]: StencilOp (offset 244) */
+ /* _mesa_function_pool[13200]: MultiTexCoordP1ui (will be remapped) */
"iii\0"
- "glStencilOp\0"
- "\0"
- /* _mesa_function_pool[14824]: WindowPos4ivMESA (will be remapped) */
- "p\0"
- "glWindowPos4ivMESA\0"
+ "glMultiTexCoordP1ui\0"
"\0"
- /* _mesa_function_pool[14846]: FramebufferTextureLayer (will be remapped) */
+ /* _mesa_function_pool[13225]: EvalMesh2 (offset 238) */
"iiiii\0"
- "glFramebufferTextureLayer\0"
- "glFramebufferTextureLayerARB\0"
- "glFramebufferTextureLayerEXT\0"
+ "glEvalMesh2\0"
"\0"
- /* _mesa_function_pool[14937]: GetShaderInfoLog (will be remapped) */
- "iipp\0"
- "glGetShaderInfoLog\0"
+ /* _mesa_function_pool[13244]: Vertex4fv (offset 145) */
+ "p\0"
+ "glVertex4fv\0"
"\0"
- /* _mesa_function_pool[14962]: TexEnvfv (offset 185) */
- "iip\0"
- "glTexEnvfv\0"
+ /* _mesa_function_pool[13259]: SelectPerfMonitorCountersAMD (will be remapped) */
+ "iiiip\0"
+ "glSelectPerfMonitorCountersAMD\0"
"\0"
- /* _mesa_function_pool[14978]: DrawTexfOES (will be remapped) */
- "fffff\0"
- "glDrawTexfOES\0"
+ /* _mesa_function_pool[13297]: BindFramebuffer (will be remapped) */
+ "ii\0"
+ "glBindFramebuffer\0"
+ "glBindFramebufferOES\0"
"\0"
- /* _mesa_function_pool[14999]: Indexs (offset 50) */
+ /* _mesa_function_pool[13340]: LoadIdentityDeformationMapSGIX (dynamic) */
"i\0"
- "glIndexs\0"
- "\0"
- /* _mesa_function_pool[15011]: TexCoordP3ui (will be remapped) */
- "ii\0"
- "glTexCoordP3ui\0"
+ "glLoadIdentityDeformationMapSGIX\0"
"\0"
- /* _mesa_function_pool[15030]: ResizeBuffersMESA (will be remapped) */
+ /* _mesa_function_pool[13376]: GetMinmax (offset 364) */
+ "iiiip\0"
+ "glGetMinmax\0"
+ "glGetMinmaxEXT\0"
"\0"
- "glResizeBuffersMESA\0"
+ /* _mesa_function_pool[13410]: Color3fVertex3fvSUN (dynamic) */
+ "pp\0"
+ "glColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[15052]: MultiTexCoordP1uiv (will be remapped) */
+ /* _mesa_function_pool[13436]: VertexAttribs3svNV (will be remapped) */
"iip\0"
- "glMultiTexCoordP1uiv\0"
- "\0"
- /* _mesa_function_pool[15078]: BlendFuncSeparateiARB (will be remapped) */
- "iiiii\0"
- "glBlendFuncSeparateiARB\0"
- "glBlendFuncSeparateIndexedAMD\0"
+ "glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[15139]: PixelTexGenParameteriSGIS (dynamic) */
- "ii\0"
- "glPixelTexGenParameteriSGIS\0"
+ /* _mesa_function_pool[13462]: GetActiveUniformsiv (will be remapped) */
+ "iipip\0"
+ "glGetActiveUniformsiv\0"
"\0"
- /* _mesa_function_pool[15171]: MultiTexCoordP2uiv (will be remapped) */
- "iip\0"
- "glMultiTexCoordP2uiv\0"
+ /* _mesa_function_pool[13491]: VertexAttrib2sv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib2sv\0"
+ "glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[15197]: VertexPointervINTEL (dynamic) */
+ /* _mesa_function_pool[13534]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
- "glVertexPointervINTEL\0"
- "\0"
- /* _mesa_function_pool[15224]: Vertex2i (offset 130) */
- "ii\0"
- "glVertex2i\0"
- "\0"
- /* _mesa_function_pool[15239]: GetFragDataIndex (will be remapped) */
- "ip\0"
- "glGetFragDataIndex\0"
+ "glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[15262]: LoadMatrixf (offset 291) */
- "p\0"
- "glLoadMatrixf\0"
+ /* _mesa_function_pool[13569]: VertexAttrib1dNV (will be remapped) */
+ "id\0"
+ "glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[15279]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[13592]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */
"iffffff\0"
- "glReplacementCodeuiColor3fVertex3fSUN\0"
- "\0"
- /* _mesa_function_pool[15326]: Vertex2f (offset 128) */
- "ff\0"
- "glVertex2f\0"
- "\0"
- /* _mesa_function_pool[15341]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
- "pppp\0"
- "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
- "\0"
- /* _mesa_function_pool[15394]: Color4bv (offset 26) */
- "p\0"
- "glColor4bv\0"
- "\0"
- /* _mesa_function_pool[15408]: VertexPointer (offset 321) */
- "iiip\0"
- "glVertexPointer\0"
- "\0"
- /* _mesa_function_pool[15430]: VertexAttribP1ui (will be remapped) */
- "iiii\0"
- "glVertexAttribP1ui\0"
- "\0"
- /* _mesa_function_pool[15455]: StartInstrumentsSGIX (dynamic) */
+ "glReplacementCodeuiNormal3fVertex3fSUN\0"
"\0"
- "glStartInstrumentsSGIX\0"
+ /* _mesa_function_pool[13640]: GetPerfMonitorGroupStringAMD (will be remapped) */
+ "iipp\0"
+ "glGetPerfMonitorGroupStringAMD\0"
"\0"
- /* _mesa_function_pool[15480]: MultiDrawArraysIndirect (will be remapped) */
- "ipii\0"
- "glMultiDrawArraysIndirect\0"
+ /* _mesa_function_pool[13677]: GetError (offset 261) */
"\0"
- /* _mesa_function_pool[15512]: GetCompressedTexImage (will be remapped) */
- "iip\0"
- "glGetCompressedTexImage\0"
- "glGetCompressedTexImageARB\0"
+ "glGetError\0"
"\0"
- /* _mesa_function_pool[15568]: VertexAttrib2fvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib2fvNV\0"
+ /* _mesa_function_pool[13690]: PassThrough (offset 199) */
+ "f\0"
+ "glPassThrough\0"
"\0"
- /* _mesa_function_pool[15592]: ProgramLocalParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[13707]: GetListParameterfvSGIX (dynamic) */
"iip\0"
- "glProgramLocalParameter4dvARB\0"
+ "glGetListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[15627]: DeleteLists (offset 4) */
- "ii\0"
- "glDeleteLists\0"
+ /* _mesa_function_pool[13737]: GetObjectParameterivAPPLE (will be remapped) */
+ "iiip\0"
+ "glGetObjectParameterivAPPLE\0"
"\0"
- /* _mesa_function_pool[15645]: LogicOp (offset 242) */
+ /* _mesa_function_pool[13771]: GlobalAlphaFactorubSUN (dynamic) */
"i\0"
- "glLogicOp\0"
+ "glGlobalAlphaFactorubSUN\0"
"\0"
- /* _mesa_function_pool[15658]: MatrixIndexuivARB (dynamic) */
+ /* _mesa_function_pool[13799]: VertexAttrib4fvARB (will be remapped) */
"ip\0"
- "glMatrixIndexuivARB\0"
- "\0"
- /* _mesa_function_pool[15682]: Vertex2s (offset 132) */
- "ii\0"
- "glVertex2s\0"
- "\0"
- /* _mesa_function_pool[15697]: RenderbufferStorageMultisample (will be remapped) */
- "iiiii\0"
- "glRenderbufferStorageMultisample\0"
- "glRenderbufferStorageMultisampleEXT\0"
+ "glVertexAttrib4fv\0"
+ "glVertexAttrib4fvARB\0"
"\0"
- /* _mesa_function_pool[15773]: TexCoord4fv (offset 121) */
+ /* _mesa_function_pool[13842]: WindowPos3dv (will be remapped) */
"p\0"
- "glTexCoord4fv\0"
- "\0"
- /* _mesa_function_pool[15790]: ActiveTexture (offset 374) */
- "i\0"
- "glActiveTexture\0"
- "glActiveTextureARB\0"
- "\0"
- /* _mesa_function_pool[15828]: GlobalAlphaFactorfSUN (dynamic) */
- "f\0"
- "glGlobalAlphaFactorfSUN\0"
- "\0"
- /* _mesa_function_pool[15855]: VertexAttribP1uiv (will be remapped) */
- "iiip\0"
- "glVertexAttribP1uiv\0"
- "\0"
- /* _mesa_function_pool[15881]: IsProgram (will be remapped) */
- "i\0"
- "glIsProgram\0"
+ "glWindowPos3dv\0"
+ "glWindowPos3dvARB\0"
+ "glWindowPos3dvMESA\0"
"\0"
- /* _mesa_function_pool[15896]: SecondaryColor3bv (will be remapped) */
+ /* _mesa_function_pool[13897]: ReplacementCodeusvSUN (dynamic) */
"p\0"
- "glSecondaryColor3bv\0"
- "glSecondaryColor3bvEXT\0"
+ "glReplacementCodeusvSUN\0"
"\0"
- /* _mesa_function_pool[15942]: GlobalAlphaFactorusSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactorusSUN\0"
+ /* _mesa_function_pool[13924]: DeleteFencesNV (dynamic) */
+ "ip\0"
+ "glDeleteFencesNV\0"
"\0"
- /* _mesa_function_pool[15970]: Uniform2uiv (will be remapped) */
+ /* _mesa_function_pool[13945]: GetImageTransformParameterivHP (dynamic) */
"iip\0"
- "glUniform2uivEXT\0"
- "glUniform2uiv\0"
+ "glGetImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[16006]: ColorP4uiv (will be remapped) */
- "ip\0"
- "glColorP4uiv\0"
+ /* _mesa_function_pool[13983]: StencilOp (offset 244) */
+ "iii\0"
+ "glStencilOp\0"
"\0"
- /* _mesa_function_pool[16023]: TextureRangeAPPLE (dynamic) */
- "iip\0"
- "glTextureRangeAPPLE\0"
+ /* _mesa_function_pool[14000]: Binormal3fEXT (dynamic) */
+ "fff\0"
+ "glBinormal3fEXT\0"
"\0"
- /* _mesa_function_pool[16048]: ClearBufferuiv (will be remapped) */
- "iip\0"
- "glClearBufferuiv\0"
+ /* _mesa_function_pool[14021]: ProgramUniform1iv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform1iv\0"
"\0"
- /* _mesa_function_pool[16070]: VertexAttrib1dvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib1dvNV\0"
+ /* _mesa_function_pool[14047]: ProgramUniform3ui (will be remapped) */
+ "iiiii\0"
+ "glProgramUniform3ui\0"
"\0"
- /* _mesa_function_pool[16094]: Uniform1ui (will be remapped) */
+ /* _mesa_function_pool[14074]: SecondaryColor3sv (will be remapped) */
+ "p\0"
+ "glSecondaryColor3sv\0"
+ "glSecondaryColor3svEXT\0"
+ "\0"
+ /* _mesa_function_pool[14120]: TexCoordP3ui (will be remapped) */
"ii\0"
- "glUniform1uiEXT\0"
- "glUniform1ui\0"
+ "glTexCoordP3ui\0"
"\0"
- /* _mesa_function_pool[16127]: GenTextures (offset 328) */
+ /* _mesa_function_pool[14139]: Fogxv (will be remapped) */
"ip\0"
- "glGenTextures\0"
- "glGenTexturesEXT\0"
+ "glFogxvOES\0"
+ "glFogxv\0"
"\0"
- /* _mesa_function_pool[16162]: MultiTexCoordP4uiv (will be remapped) */
+ /* _mesa_function_pool[14162]: VertexPointervINTEL (dynamic) */
"iip\0"
- "glMultiTexCoordP4uiv\0"
+ "glVertexPointervINTEL\0"
"\0"
- /* _mesa_function_pool[16188]: GetCombinerOutputParameterivNV (dynamic) */
- "iiip\0"
- "glGetCombinerOutputParameterivNV\0"
+ /* _mesa_function_pool[14189]: VertexAttribP1ui (will be remapped) */
+ "iiii\0"
+ "glVertexAttribP1ui\0"
"\0"
- /* _mesa_function_pool[16227]: PixelTexGenParameterivSGIS (dynamic) */
- "ip\0"
- "glPixelTexGenParameterivSGIS\0"
+ /* _mesa_function_pool[14214]: DeleteLists (offset 4) */
+ "ii\0"
+ "glDeleteLists\0"
"\0"
- /* _mesa_function_pool[16260]: TextureNormalEXT (dynamic) */
+ /* _mesa_function_pool[14232]: LogicOp (offset 242) */
"i\0"
- "glTextureNormalEXT\0"
+ "glLogicOp\0"
"\0"
- /* _mesa_function_pool[16282]: WindowPos3d (will be remapped) */
+ /* _mesa_function_pool[14245]: RenderbufferStorageMultisample (will be remapped) */
+ "iiiii\0"
+ "glRenderbufferStorageMultisample\0"
+ "glRenderbufferStorageMultisampleEXT\0"
+ "\0"
+ /* _mesa_function_pool[14321]: WindowPos3d (will be remapped) */
"ddd\0"
"glWindowPos3d\0"
"glWindowPos3dARB\0"
"glWindowPos3dMESA\0"
"\0"
- /* _mesa_function_pool[16336]: Enablei (will be remapped) */
+ /* _mesa_function_pool[14375]: Enablei (will be remapped) */
"ii\0"
"glEnableIndexedEXT\0"
"glEnablei\0"
"\0"
- /* _mesa_function_pool[16369]: WindowPos3f (will be remapped) */
+ /* _mesa_function_pool[14408]: WindowPos3f (will be remapped) */
"fff\0"
"glWindowPos3f\0"
"glWindowPos3fARB\0"
"glWindowPos3fMESA\0"
"\0"
- /* _mesa_function_pool[16423]: SecondaryColor3ub (will be remapped) */
- "iii\0"
- "glSecondaryColor3ub\0"
- "glSecondaryColor3ubEXT\0"
- "\0"
- /* _mesa_function_pool[16471]: FinalCombinerInputNV (dynamic) */
- "iiii\0"
- "glFinalCombinerInputNV\0"
- "\0"
- /* _mesa_function_pool[16500]: GenProgramsARB (will be remapped) */
+ /* _mesa_function_pool[14462]: GenProgramsARB (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[16537]: MultiTexCoordP3ui (will be remapped) */
- "iii\0"
- "glMultiTexCoordP3ui\0"
- "\0"
- /* _mesa_function_pool[16562]: RasterPos2sv (offset 69) */
+ /* _mesa_function_pool[14499]: RasterPos2sv (offset 69) */
"p\0"
"glRasterPos2sv\0"
"\0"
- /* _mesa_function_pool[16580]: Color4ubv (offset 36) */
- "p\0"
- "glColor4ubv\0"
- "\0"
- /* _mesa_function_pool[16595]: DrawBuffer (offset 202) */
- "i\0"
- "glDrawBuffer\0"
- "\0"
- /* _mesa_function_pool[16611]: TexCoord2fv (offset 105) */
- "p\0"
- "glTexCoord2fv\0"
- "\0"
- /* _mesa_function_pool[16628]: BeginFragmentShaderATI (will be remapped) */
- "\0"
- "glBeginFragmentShaderATI\0"
- "\0"
- /* _mesa_function_pool[16655]: WindowPos4fMESA (will be remapped) */
- "ffff\0"
- "glWindowPos4fMESA\0"
+ /* _mesa_function_pool[14517]: WindowPos3i (will be remapped) */
+ "iii\0"
+ "glWindowPos3i\0"
+ "glWindowPos3iARB\0"
+ "glWindowPos3iMESA\0"
"\0"
- /* _mesa_function_pool[16679]: MultiTexCoord4iv (offset 405) */
+ /* _mesa_function_pool[14571]: MultiTexCoord4iv (offset 405) */
"ip\0"
"glMultiTexCoord4iv\0"
"glMultiTexCoord4ivARB\0"
"\0"
- /* _mesa_function_pool[16724]: TexCoord1sv (offset 101) */
+ /* _mesa_function_pool[14616]: TexCoord1sv (offset 101) */
"p\0"
"glTexCoord1sv\0"
"\0"
- /* _mesa_function_pool[16741]: WindowPos2i (will be remapped) */
- "ii\0"
- "glWindowPos2i\0"
- "glWindowPos2iARB\0"
- "glWindowPos2iMESA\0"
- "\0"
- /* _mesa_function_pool[16794]: WindowPos3s (will be remapped) */
+ /* _mesa_function_pool[14633]: WindowPos3s (will be remapped) */
"iii\0"
"glWindowPos3s\0"
"glWindowPos3sARB\0"
"glWindowPos3sMESA\0"
"\0"
- /* _mesa_function_pool[16848]: VertexAttribP4ui (will be remapped) */
- "iiii\0"
- "glVertexAttribP4ui\0"
- "\0"
- /* _mesa_function_pool[16873]: DepthFunc (offset 245) */
- "i\0"
- "glDepthFunc\0"
- "\0"
- /* _mesa_function_pool[16888]: PixelMapusv (offset 253) */
+ /* _mesa_function_pool[14687]: PixelMapusv (offset 253) */
"iip\0"
"glPixelMapusv\0"
"\0"
- /* _mesa_function_pool[16907]: GetSamplerParameterIiv (will be remapped) */
- "iip\0"
- "glGetSamplerParameterIiv\0"
- "\0"
- /* _mesa_function_pool[16937]: IsSampler (will be remapped) */
- "i\0"
- "glIsSampler\0"
- "\0"
- /* _mesa_function_pool[16952]: BlendFunc (offset 241) */
- "ii\0"
- "glBlendFunc\0"
- "\0"
- /* _mesa_function_pool[16968]: Uniform4i (will be remapped) */
- "iiiii\0"
- "glUniform4i\0"
- "glUniform4iARB\0"
- "\0"
- /* _mesa_function_pool[17002]: ColorP3ui (will be remapped) */
- "ii\0"
- "glColorP3ui\0"
+ /* _mesa_function_pool[14706]: DebugMessageInsert (will be remapped) */
+ "iiiiip\0"
+ "glDebugMessageInsert\0"
"\0"
- /* _mesa_function_pool[17018]: BufferParameteriAPPLE (will be remapped) */
- "iii\0"
- "glBufferParameteriAPPLE\0"
+ /* _mesa_function_pool[14735]: Orthof (will be remapped) */
+ "ffffff\0"
+ "glOrthofOES\0"
+ "glOrthof\0"
"\0"
- /* _mesa_function_pool[17047]: CompressedTexImage2D (will be remapped) */
+ /* _mesa_function_pool[14764]: CompressedTexImage2D (will be remapped) */
"iiiiiiip\0"
"glCompressedTexImage2D\0"
"glCompressedTexImage2DARB\0"
"\0"
- /* _mesa_function_pool[17106]: DeleteObjectARB (will be remapped) */
+ /* _mesa_function_pool[14823]: DeleteObjectARB (will be remapped) */
"i\0"
"glDeleteObjectARB\0"
"\0"
- /* _mesa_function_pool[17127]: GetShaderPrecisionFormat (will be remapped) */
- "iipp\0"
- "glGetShaderPrecisionFormat\0"
- "\0"
- /* _mesa_function_pool[17160]: TextureBarrierNV (will be remapped) */
- "\0"
- "glTextureBarrierNV\0"
- "\0"
- /* _mesa_function_pool[17181]: GetBooleani_v (will be remapped) */
- "iip\0"
- "glGetBooleanIndexedvEXT\0"
- "glGetBooleani_v\0"
- "\0"
- /* _mesa_function_pool[17226]: ProgramNamedParameter4dvNV (will be remapped) */
- "iipp\0"
- "glProgramNamedParameter4dvNV\0"
- "\0"
- /* _mesa_function_pool[17261]: Tangent3fvEXT (dynamic) */
- "p\0"
- "glTangent3fvEXT\0"
- "\0"
- /* _mesa_function_pool[17280]: Flush (offset 217) */
- "\0"
- "glFlush\0"
+ /* _mesa_function_pool[14844]: IsSync (will be remapped) */
+ "i\0"
+ "glIsSync\0"
"\0"
- /* _mesa_function_pool[17290]: Color4uiv (offset 38) */
+ /* _mesa_function_pool[14856]: Color4uiv (offset 38) */
"p\0"
"glColor4uiv\0"
"\0"
- /* _mesa_function_pool[17305]: MultiTexCoord1sv (offset 383) */
+ /* _mesa_function_pool[14871]: MultiTexCoord1sv (offset 383) */
"ip\0"
"glMultiTexCoord1sv\0"
"glMultiTexCoord1svARB\0"
"\0"
- /* _mesa_function_pool[17350]: VDPAUIsSurfaceNV (will be remapped) */
- "i\0"
- "glVDPAUIsSurfaceNV\0"
- "\0"
- /* _mesa_function_pool[17372]: FogCoordd (will be remapped) */
- "d\0"
- "glFogCoordd\0"
- "glFogCoorddEXT\0"
- "\0"
- /* _mesa_function_pool[17402]: RasterPos3sv (offset 77) */
- "p\0"
- "glRasterPos3sv\0"
- "\0"
- /* _mesa_function_pool[17420]: TexCoordP2ui (will be remapped) */
- "ii\0"
- "glTexCoordP2ui\0"
- "\0"
- /* _mesa_function_pool[17439]: BindFramebufferEXT (will be remapped) */
- "ii\0"
- "glBindFramebufferEXT\0"
- "\0"
- /* _mesa_function_pool[17464]: Uniform1uiv (will be remapped) */
- "iip\0"
- "glUniform1uivEXT\0"
- "glUniform1uiv\0"
- "\0"
- /* _mesa_function_pool[17500]: ReferencePlaneSGIX (dynamic) */
- "p\0"
- "glReferencePlaneSGIX\0"
+ /* _mesa_function_pool[14916]: Orthox (will be remapped) */
+ "iiiiii\0"
+ "glOrthoxOES\0"
+ "glOrthox\0"
"\0"
- /* _mesa_function_pool[17524]: PushAttrib (offset 219) */
+ /* _mesa_function_pool[14945]: PushAttrib (offset 219) */
"i\0"
"glPushAttrib\0"
"\0"
- /* _mesa_function_pool[17540]: RasterPos2i (offset 66) */
+ /* _mesa_function_pool[14961]: RasterPos2i (offset 66) */
"ii\0"
"glRasterPos2i\0"
"\0"
- /* _mesa_function_pool[17558]: Uniform3iv (will be remapped) */
- "iip\0"
- "glUniform3iv\0"
- "glUniform3ivARB\0"
- "\0"
- /* _mesa_function_pool[17592]: SamplerParameteriv (will be remapped) */
- "iip\0"
- "glSamplerParameteriv\0"
- "\0"
- /* _mesa_function_pool[17618]: TexParameteriv (offset 181) */
- "iip\0"
- "glTexParameteriv\0"
- "\0"
- /* _mesa_function_pool[17640]: GetAttribLocation (will be remapped) */
+ /* _mesa_function_pool[14979]: ClipPlane (offset 150) */
"ip\0"
- "glGetAttribLocation\0"
- "glGetAttribLocationARB\0"
+ "glClipPlane\0"
"\0"
- /* _mesa_function_pool[17687]: TexCoord2fColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[14995]: TexCoord2fColor3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[17728]: DeleteAsyncMarkersSGIX (dynamic) */
- "ii\0"
- "glDeleteAsyncMarkersSGIX\0"
+ /* _mesa_function_pool[15036]: GetProgramivNV (will be remapped) */
+ "iip\0"
+ "glGetProgramivNV\0"
"\0"
- /* _mesa_function_pool[17757]: RasterPos2f (offset 64) */
+ /* _mesa_function_pool[15058]: RasterPos2f (offset 64) */
"ff\0"
"glRasterPos2f\0"
"\0"
- /* _mesa_function_pool[17775]: TexCoord4fVertex4fSUN (dynamic) */
- "ffffffff\0"
- "glTexCoord4fVertex4fSUN\0"
- "\0"
- /* _mesa_function_pool[17809]: RasterPos2d (offset 62) */
+ /* _mesa_function_pool[15076]: RasterPos2d (offset 62) */
"dd\0"
"glRasterPos2d\0"
"\0"
- /* _mesa_function_pool[17827]: VertexAttrib4iv (will be remapped) */
- "ip\0"
- "glVertexAttrib4iv\0"
- "glVertexAttrib4ivARB\0"
- "\0"
- /* _mesa_function_pool[17870]: RasterPos3fv (offset 73) */
+ /* _mesa_function_pool[15094]: RasterPos3fv (offset 73) */
"p\0"
"glRasterPos3fv\0"
"\0"
- /* _mesa_function_pool[17888]: CopyTexSubImage3D (offset 373) */
- "iiiiiiiii\0"
- "glCopyTexSubImage3D\0"
- "glCopyTexSubImage3DEXT\0"
- "glCopyTexSubImage3DOES\0"
+ /* _mesa_function_pool[15112]: InvalidateSubFramebuffer (will be remapped) */
+ "iipiiii\0"
+ "glInvalidateSubFramebuffer\0"
"\0"
- /* _mesa_function_pool[17965]: Color4ub (offset 35) */
+ /* _mesa_function_pool[15148]: Color4ub (offset 35) */
"iiii\0"
"glColor4ub\0"
"\0"
- /* _mesa_function_pool[17982]: GetInteger64v (will be remapped) */
- "ip\0"
- "glGetInteger64v\0"
- "\0"
- /* _mesa_function_pool[18002]: TextureColorMaskSGIS (dynamic) */
- "iiii\0"
- "glTextureColorMaskSGIS\0"
- "\0"
- /* _mesa_function_pool[18031]: RasterPos2s (offset 68) */
+ /* _mesa_function_pool[15165]: RasterPos2s (offset 68) */
"ii\0"
"glRasterPos2s\0"
"\0"
- /* _mesa_function_pool[18049]: GetColorTable (offset 343) */
- "iiip\0"
- "glGetColorTable\0"
- "glGetColorTableSGI\0"
- "glGetColorTableEXT\0"
+ /* _mesa_function_pool[15183]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[18109]: EndQueryIndexed (will be remapped) */
- "ii\0"
- "glEndQueryIndexed\0"
+ /* _mesa_function_pool[15218]: GetVertexAttribivNV (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribivNV\0"
"\0"
- /* _mesa_function_pool[18131]: SelectBuffer (offset 195) */
+ /* _mesa_function_pool[15245]: TexSubImage4DSGIS (dynamic) */
+ "iiiiiiiiiiiip\0"
+ "glTexSubImage4DSGIS\0"
+ "\0"
+ /* _mesa_function_pool[15280]: MultiTexCoord3dv (offset 393) */
"ip\0"
- "glSelectBuffer\0"
+ "glMultiTexCoord3dv\0"
+ "glMultiTexCoord3dvARB\0"
"\0"
- /* _mesa_function_pool[18150]: Indexiv (offset 49) */
- "p\0"
- "glIndexiv\0"
+ /* _mesa_function_pool[15325]: BindProgramPipeline (will be remapped) */
+ "i\0"
+ "glBindProgramPipeline\0"
"\0"
- /* _mesa_function_pool[18163]: TexCoord3i (offset 114) */
- "iii\0"
- "glTexCoord3i\0"
+ /* _mesa_function_pool[15350]: VertexAttribP4uiv (will be remapped) */
+ "iiip\0"
+ "glVertexAttribP4uiv\0"
"\0"
- /* _mesa_function_pool[18181]: CopyColorTable (offset 342) */
- "iiiii\0"
- "glCopyColorTable\0"
- "glCopyColorTableSGI\0"
+ /* _mesa_function_pool[15376]: DebugMessageCallback (will be remapped) */
+ "pp\0"
+ "glDebugMessageCallback\0"
"\0"
- /* _mesa_function_pool[18225]: PointParameterfv (will be remapped) */
- "ip\0"
- "glPointParameterfv\0"
- "glPointParameterfvARB\0"
- "glPointParameterfvEXT\0"
- "glPointParameterfvSGIS\0"
+ /* _mesa_function_pool[15403]: MultiTexCoord1i (offset 380) */
+ "ii\0"
+ "glMultiTexCoord1i\0"
+ "glMultiTexCoord1iARB\0"
+ "\0"
+ /* _mesa_function_pool[15446]: WindowPos2dv (will be remapped) */
+ "p\0"
+ "glWindowPos2dv\0"
+ "glWindowPos2dvARB\0"
+ "glWindowPos2dvMESA\0"
"\0"
- /* _mesa_function_pool[18315]: GetHistogramParameterfv (offset 362) */
+ /* _mesa_function_pool[15501]: TexParameterIuiv (will be remapped) */
"iip\0"
- "glGetHistogramParameterfv\0"
- "glGetHistogramParameterfvEXT\0"
+ "glTexParameterIuivEXT\0"
+ "glTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[18375]: Frustum (offset 289) */
- "dddddd\0"
- "glFrustum\0"
+ /* _mesa_function_pool[15547]: MultiTexCoord1d (offset 376) */
+ "id\0"
+ "glMultiTexCoord1d\0"
+ "glMultiTexCoord1dARB\0"
"\0"
- /* _mesa_function_pool[18393]: GetString (offset 275) */
- "i\0"
- "glGetString\0"
+ /* _mesa_function_pool[15590]: GenVertexArraysAPPLE (will be remapped) */
+ "ip\0"
+ "glGenVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[18408]: ColorPointervINTEL (dynamic) */
- "iip\0"
- "glColorPointervINTEL\0"
+ /* _mesa_function_pool[15617]: MultiTexCoord1s (offset 382) */
+ "ii\0"
+ "glMultiTexCoord1s\0"
+ "glMultiTexCoord1sARB\0"
"\0"
- /* _mesa_function_pool[18434]: TexEnvf (offset 184) */
- "iif\0"
- "glTexEnvf\0"
+ /* _mesa_function_pool[15660]: BeginConditionalRender (will be remapped) */
+ "ii\0"
+ "glBeginConditionalRender\0"
+ "glBeginConditionalRenderNV\0"
"\0"
- /* _mesa_function_pool[18449]: GetTexGenxvOES (will be remapped) */
- "iip\0"
- "glGetTexGenxvOES\0"
+ /* _mesa_function_pool[15716]: LoadPaletteFromModelViewMatrixOES (dynamic) */
"\0"
- /* _mesa_function_pool[18471]: TexCoord3d (offset 110) */
- "ddd\0"
- "glTexCoord3d\0"
+ "glLoadPaletteFromModelViewMatrixOES\0"
"\0"
- /* _mesa_function_pool[18489]: AlphaFragmentOp1ATI (will be remapped) */
- "iiiiii\0"
- "glAlphaFragmentOp1ATI\0"
+ /* _mesa_function_pool[15754]: GetShaderiv (will be remapped) */
+ "iip\0"
+ "glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[18519]: TexCoord3f (offset 112) */
- "fff\0"
- "glTexCoord3f\0"
+ /* _mesa_function_pool[15773]: GetMapAttribParameterfvNV (dynamic) */
+ "iiip\0"
+ "glGetMapAttribParameterfvNV\0"
"\0"
- /* _mesa_function_pool[18537]: GetnHistogramARB (will be remapped) */
- "iiiiip\0"
- "glGetnHistogramARB\0"
+ /* _mesa_function_pool[15807]: CopyConvolutionFilter1D (offset 354) */
+ "iiiii\0"
+ "glCopyConvolutionFilter1D\0"
+ "glCopyConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[18564]: DeleteTextures (offset 327) */
+ /* _mesa_function_pool[15869]: ClearBufferfv (will be remapped) */
+ "iip\0"
+ "glClearBufferfv\0"
+ "\0"
+ /* _mesa_function_pool[15890]: InstrumentsBufferSGIX (dynamic) */
"ip\0"
- "glDeleteTextures\0"
- "glDeleteTexturesEXT\0"
+ "glInstrumentsBufferSGIX\0"
"\0"
- /* _mesa_function_pool[18605]: TexCoordPointerEXT (will be remapped) */
- "iiiip\0"
- "glTexCoordPointerEXT\0"
+ /* _mesa_function_pool[15918]: CreateShaderObjectARB (will be remapped) */
+ "i\0"
+ "glCreateShaderObjectARB\0"
"\0"
- /* _mesa_function_pool[18633]: TexSubImage4DSGIS (dynamic) */
- "iiiiiiiiiiiip\0"
- "glTexSubImage4DSGIS\0"
+ /* _mesa_function_pool[15945]: GetTexParameterxv (will be remapped) */
+ "iip\0"
+ "glGetTexParameterxvOES\0"
+ "glGetTexParameterxv\0"
"\0"
- /* _mesa_function_pool[18668]: TexCoord3s (offset 116) */
- "iii\0"
- "glTexCoord3s\0"
+ /* _mesa_function_pool[15993]: GetAttachedShaders (will be remapped) */
+ "iipp\0"
+ "glGetAttachedShaders\0"
"\0"
- /* _mesa_function_pool[18686]: GetTexLevelParameteriv (offset 285) */
- "iiip\0"
- "glGetTexLevelParameteriv\0"
+ /* _mesa_function_pool[16020]: ClearBufferfi (will be remapped) */
+ "iifi\0"
+ "glClearBufferfi\0"
"\0"
- /* _mesa_function_pool[18717]: GetClipPlanef (will be remapped) */
- "ip\0"
- "glGetClipPlanefOES\0"
- "glGetClipPlanef\0"
+ /* _mesa_function_pool[16042]: Materialiv (offset 172) */
+ "iip\0"
+ "glMaterialiv\0"
"\0"
- /* _mesa_function_pool[18756]: VertexAttribPointer (will be remapped) */
- "iiiiip\0"
- "glVertexAttribPointer\0"
- "glVertexAttribPointerARB\0"
+ /* _mesa_function_pool[16060]: DeleteFragmentShaderATI (will be remapped) */
+ "i\0"
+ "glDeleteFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[18811]: TexStorage2DMultisample (will be remapped) */
- "iiiiii\0"
- "glTexStorage2DMultisample\0"
+ /* _mesa_function_pool[16089]: Tangent3dvEXT (dynamic) */
+ "p\0"
+ "glTangent3dvEXT\0"
"\0"
- /* _mesa_function_pool[18845]: VertexAttribP4uiv (will be remapped) */
- "iiip\0"
- "glVertexAttribP4uiv\0"
+ /* _mesa_function_pool[16108]: DrawElementsInstancedBaseVertex (will be remapped) */
+ "iiipii\0"
+ "glDrawElementsInstancedBaseVertex\0"
"\0"
- /* _mesa_function_pool[18871]: StopInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[16150]: DisableClientState (offset 309) */
"i\0"
- "glStopInstrumentsSGIX\0"
+ "glDisableClientState\0"
"\0"
- /* _mesa_function_pool[18896]: SecondaryColor3s (will be remapped) */
+ /* _mesa_function_pool[16174]: TexGeni (offset 192) */
"iii\0"
- "glSecondaryColor3s\0"
- "glSecondaryColor3sEXT\0"
+ "glTexGeni\0"
+ "glTexGeniOES\0"
"\0"
- /* _mesa_function_pool[18942]: ClearAccum (offset 204) */
- "ffff\0"
- "glClearAccum\0"
+ /* _mesa_function_pool[16202]: TexGenf (offset 190) */
+ "iif\0"
+ "glTexGenf\0"
+ "glTexGenfOES\0"
"\0"
- /* _mesa_function_pool[18961]: DeformSGIX (dynamic) */
- "i\0"
- "glDeformSGIX\0"
+ /* _mesa_function_pool[16230]: TexGend (offset 188) */
+ "iid\0"
+ "glTexGend\0"
"\0"
- /* _mesa_function_pool[18977]: InvalidateBufferSubData (will be remapped) */
- "iii\0"
- "glInvalidateBufferSubData\0"
+ /* _mesa_function_pool[16245]: GetVertexAttribfvNV (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribfvNV\0"
"\0"
- /* _mesa_function_pool[19008]: Uniform3i (will be remapped) */
- "iiii\0"
- "glUniform3i\0"
- "glUniform3iARB\0"
+ /* _mesa_function_pool[16272]: ColorPointerListIBM (dynamic) */
+ "iiipi\0"
+ "glColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[19041]: TexCoord4iv (offset 123) */
+ /* _mesa_function_pool[16301]: Color4sv (offset 34) */
"p\0"
- "glTexCoord4iv\0"
- "\0"
- /* _mesa_function_pool[19058]: TexStorage3D (will be remapped) */
- "iiiiii\0"
- "glTexStorage3D\0"
+ "glColor4sv\0"
"\0"
- /* _mesa_function_pool[19081]: UniformMatrix4x2fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix4x2fv\0"
+ /* _mesa_function_pool[16315]: GetCombinerInputParameterfvNV (dynamic) */
+ "iiiip\0"
+ "glGetCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[19108]: GetDetailTexFuncSGIS (dynamic) */
- "ip\0"
- "glGetDetailTexFuncSGIS\0"
+ /* _mesa_function_pool[16354]: LoadTransposeMatrixf (will be remapped) */
+ "p\0"
+ "glLoadTransposeMatrixf\0"
+ "glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[19135]: WindowPos3i (will be remapped) */
- "iii\0"
- "glWindowPos3i\0"
- "glWindowPos3iARB\0"
- "glWindowPos3iMESA\0"
+ /* _mesa_function_pool[16406]: LoadTransposeMatrixd (will be remapped) */
+ "p\0"
+ "glLoadTransposeMatrixd\0"
+ "glLoadTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[19189]: SecondaryColor3b (will be remapped) */
- "iii\0"
- "glSecondaryColor3b\0"
- "glSecondaryColor3bEXT\0"
+ /* _mesa_function_pool[16458]: PixelZoom (offset 246) */
+ "ff\0"
+ "glPixelZoom\0"
"\0"
- /* _mesa_function_pool[19235]: FramebufferTexture3D (will be remapped) */
- "iiiiii\0"
- "glFramebufferTexture3D\0"
- "glFramebufferTexture3DEXT\0"
- "glFramebufferTexture3DOES\0"
+ /* _mesa_function_pool[16474]: ProgramEnvParameter4dARB (will be remapped) */
+ "iidddd\0"
+ "glProgramEnvParameter4dARB\0"
+ "glProgramParameter4dNV\0"
"\0"
- /* _mesa_function_pool[19318]: SamplerParameterIiv (will be remapped) */
+ /* _mesa_function_pool[16532]: ColorTableParameterfv (offset 340) */
"iip\0"
- "glSamplerParameterIiv\0"
- "\0"
- /* _mesa_function_pool[19345]: PolygonOffset (offset 319) */
- "ff\0"
- "glPolygonOffset\0"
+ "glColorTableParameterfv\0"
+ "glColorTableParameterfvSGI\0"
"\0"
- /* _mesa_function_pool[19365]: BindVertexArray (will be remapped) */
+ /* _mesa_function_pool[16588]: IsTexture (offset 330) */
"i\0"
- "glBindVertexArray\0"
- "glBindVertexArrayOES\0"
+ "glIsTexture\0"
+ "glIsTextureEXT\0"
"\0"
- /* _mesa_function_pool[19407]: Color4ubVertex2fvSUN (dynamic) */
- "pp\0"
- "glColor4ubVertex2fvSUN\0"
+ /* _mesa_function_pool[16618]: ProgramUniform3uiv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform3uiv\0"
"\0"
- /* _mesa_function_pool[19434]: GetProgramBinary (will be remapped) */
- "iippp\0"
- "glGetProgramBinary\0"
- "glGetProgramBinaryOES\0"
+ /* _mesa_function_pool[16645]: ProgramUniform2fv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform2fv\0"
"\0"
- /* _mesa_function_pool[19482]: GetBufferParameteriv (will be remapped) */
+ /* _mesa_function_pool[16671]: ImageTransformParameterivHP (dynamic) */
"iip\0"
- "glGetBufferParameteriv\0"
- "glGetBufferParameterivARB\0"
+ "glImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[19536]: Rectd (offset 86) */
- "dddd\0"
- "glRectd\0"
+ /* _mesa_function_pool[16706]: VertexAttrib4sNV (will be remapped) */
+ "iiiii\0"
+ "glVertexAttrib4sNV\0"
"\0"
- /* _mesa_function_pool[19550]: TexFilterFuncSGIS (dynamic) */
- "iiip\0"
- "glTexFilterFuncSGIS\0"
+ /* _mesa_function_pool[16732]: GetMapdv (offset 266) */
+ "iip\0"
+ "glGetMapdv\0"
"\0"
- /* _mesa_function_pool[19576]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[16748]: GenVertexArrays (will be remapped) */
"ip\0"
- "glNormalPointervINTEL\0"
+ "glGenVertexArrays\0"
+ "glGenVertexArraysOES\0"
"\0"
- /* _mesa_function_pool[19602]: ProvokingVertex (will be remapped) */
+ /* _mesa_function_pool[16791]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
+ "iiiiifff\0"
+ "glReplacementCodeuiColor4ubVertex3fSUN\0"
+ "\0"
+ /* _mesa_function_pool[16840]: IsBuffer (will be remapped) */
"i\0"
- "glProvokingVertexEXT\0"
- "glProvokingVertex\0"
+ "glIsBuffer\0"
+ "glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[19644]: SamplerParameterfv (will be remapped) */
- "iip\0"
- "glSamplerParameterfv\0"
+ /* _mesa_function_pool[16868]: ColorP4ui (will be remapped) */
+ "ii\0"
+ "glColorP4ui\0"
"\0"
- /* _mesa_function_pool[19670]: MultiTexCoord1i (offset 380) */
+ /* _mesa_function_pool[16884]: SpriteParameteriSGIX (dynamic) */
"ii\0"
- "glMultiTexCoord1i\0"
- "glMultiTexCoord1iARB\0"
+ "glSpriteParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[19713]: WindowPos2dv (will be remapped) */
- "p\0"
- "glWindowPos2dv\0"
- "glWindowPos2dvARB\0"
- "glWindowPos2dvMESA\0"
+ /* _mesa_function_pool[16911]: TexCoordP3uiv (will be remapped) */
+ "ip\0"
+ "glTexCoordP3uiv\0"
"\0"
- /* _mesa_function_pool[19768]: GetProgramParameterdvNV (will be remapped) */
- "iiip\0"
- "glGetProgramParameterdvNV\0"
+ /* _mesa_function_pool[16931]: WeightusvARB (dynamic) */
+ "ip\0"
+ "glWeightusvARB\0"
"\0"
- /* _mesa_function_pool[19800]: VertexAttrib3fNV (will be remapped) */
- "ifff\0"
- "glVertexAttrib3fNV\0"
+ /* _mesa_function_pool[16950]: EvalMapsNV (dynamic) */
+ "ii\0"
+ "glEvalMapsNV\0"
"\0"
- /* _mesa_function_pool[19825]: RasterPos3i (offset 74) */
- "iii\0"
- "glRasterPos3i\0"
+ /* _mesa_function_pool[16967]: ReplacementCodeuiSUN (dynamic) */
+ "i\0"
+ "glReplacementCodeuiSUN\0"
"\0"
- /* _mesa_function_pool[19844]: GetFragmentLightfvSGIX (dynamic) */
- "iip\0"
- "glGetFragmentLightfvSGIX\0"
+ /* _mesa_function_pool[16993]: GlobalAlphaFactoruiSUN (dynamic) */
+ "i\0"
+ "glGlobalAlphaFactoruiSUN\0"
"\0"
- /* _mesa_function_pool[19874]: MultiTexCoord1d (offset 376) */
- "id\0"
- "glMultiTexCoord1d\0"
- "glMultiTexCoord1dARB\0"
+ /* _mesa_function_pool[17021]: Uniform1iv (will be remapped) */
+ "iip\0"
+ "glUniform1iv\0"
+ "glUniform1ivARB\0"
"\0"
- /* _mesa_function_pool[19917]: DetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[17055]: Uniform4uiv (will be remapped) */
"iip\0"
- "glDetailTexFuncSGIS\0"
+ "glUniform4uivEXT\0"
+ "glUniform4uiv\0"
"\0"
- /* _mesa_function_pool[19942]: Normal3fVertex3fSUN (dynamic) */
- "ffffff\0"
- "glNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[17091]: PopDebugGroup (will be remapped) */
"\0"
- /* _mesa_function_pool[19972]: CopyTexImage2D (offset 324) */
- "iiiiiiii\0"
- "glCopyTexImage2D\0"
- "glCopyTexImage2DEXT\0"
+ "glPopDebugGroup\0"
"\0"
- /* _mesa_function_pool[20019]: FlushMappedBufferRange (will be remapped) */
- "iii\0"
- "glFlushMappedBufferRange\0"
- "glFlushMappedBufferRangeEXT\0"
+ /* _mesa_function_pool[17109]: VertexAttrib1d (will be remapped) */
+ "id\0"
+ "glVertexAttrib1d\0"
+ "glVertexAttrib1dARB\0"
"\0"
- /* _mesa_function_pool[20077]: MultiTexCoord2dv (offset 385) */
- "ip\0"
- "glMultiTexCoord2dv\0"
- "glMultiTexCoord2dvARB\0"
+ /* _mesa_function_pool[17150]: CompressedTexImage1D (will be remapped) */
+ "iiiiiip\0"
+ "glCompressedTexImage1D\0"
+ "glCompressedTexImage1DARB\0"
"\0"
- /* _mesa_function_pool[20122]: SelectPerfMonitorCountersAMD (will be remapped) */
- "iiiip\0"
- "glSelectPerfMonitorCountersAMD\0"
+ /* _mesa_function_pool[17208]: TexBufferRange (will be remapped) */
+ "iiiii\0"
+ "glTexBufferRange\0"
"\0"
- /* _mesa_function_pool[20160]: ProgramEnvParameter4fARB (will be remapped) */
- "iiffff\0"
- "glProgramEnvParameter4fARB\0"
- "glProgramParameter4fNV\0"
+ /* _mesa_function_pool[17232]: VertexAttrib1s (will be remapped) */
+ "ii\0"
+ "glVertexAttrib1s\0"
+ "glVertexAttrib1sARB\0"
"\0"
- /* _mesa_function_pool[20218]: GenVertexArraysAPPLE (will be remapped) */
- "ip\0"
- "glGenVertexArraysAPPLE\0"
+ /* _mesa_function_pool[17273]: MultiDrawElementsIndirect (will be remapped) */
+ "iipii\0"
+ "glMultiDrawElementsIndirect\0"
"\0"
- /* _mesa_function_pool[20245]: Lightfv (offset 160) */
+ /* _mesa_function_pool[17308]: FogCoordfvEXT (will be remapped) */
+ "p\0"
+ "glFogCoordfv\0"
+ "glFogCoordfvEXT\0"
+ "\0"
+ /* _mesa_function_pool[17340]: BeginPerfMonitorAMD (will be remapped) */
+ "i\0"
+ "glBeginPerfMonitorAMD\0"
+ "\0"
+ /* _mesa_function_pool[17365]: GetColorTableParameterfv (offset 344) */
"iip\0"
- "glLightfv\0"
+ "glGetColorTableParameterfv\0"
+ "glGetColorTableParameterfvSGI\0"
+ "glGetColorTableParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[20260]: GetFramebufferAttachmentParameteriv (will be remapped) */
+ /* _mesa_function_pool[17457]: MultiTexCoord3fARB (offset 394) */
+ "ifff\0"
+ "glMultiTexCoord3f\0"
+ "glMultiTexCoord3fARB\0"
+ "\0"
+ /* _mesa_function_pool[17502]: GetTexLevelParameterfv (offset 284) */
"iiip\0"
- "glGetFramebufferAttachmentParameteriv\0"
- "glGetFramebufferAttachmentParameterivEXT\0"
- "glGetFramebufferAttachmentParameterivOES\0"
+ "glGetTexLevelParameterfv\0"
"\0"
- /* _mesa_function_pool[20386]: MultiTexCoord1s (offset 382) */
- "ii\0"
- "glMultiTexCoord1s\0"
- "glMultiTexCoord1sARB\0"
+ /* _mesa_function_pool[17533]: Vertex2sv (offset 133) */
+ "p\0"
+ "glVertex2sv\0"
"\0"
- /* _mesa_function_pool[20429]: ClearDepth (offset 208) */
- "d\0"
- "glClearDepth\0"
+ /* _mesa_function_pool[17548]: GetnMapdvARB (will be remapped) */
+ "iiip\0"
+ "glGetnMapdvARB\0"
"\0"
- /* _mesa_function_pool[20445]: GetFenceivNV (dynamic) */
+ /* _mesa_function_pool[17569]: VertexAttrib2dNV (will be remapped) */
+ "idd\0"
+ "glVertexAttrib2dNV\0"
+ "\0"
+ /* _mesa_function_pool[17593]: GetTrackMatrixivNV (will be remapped) */
+ "iiip\0"
+ "glGetTrackMatrixivNV\0"
+ "\0"
+ /* _mesa_function_pool[17620]: VertexAttrib3svNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib3svNV\0"
+ "\0"
+ /* _mesa_function_pool[17644]: GetTexEnviv (offset 277) */
"iip\0"
- "glGetFenceivNV\0"
+ "glGetTexEnviv\0"
"\0"
- /* _mesa_function_pool[20465]: GetVertexAttribPointerv (will be remapped) */
+ /* _mesa_function_pool[17663]: ViewportArrayv (will be remapped) */
"iip\0"
- "glGetVertexAttribPointerv\0"
- "glGetVertexAttribPointervARB\0"
- "glGetVertexAttribPointervNV\0"
+ "glViewportArrayv\0"
"\0"
- /* _mesa_function_pool[20553]: ColorSubTable (offset 346) */
- "iiiiip\0"
- "glColorSubTable\0"
- "glColorSubTableEXT\0"
+ /* _mesa_function_pool[17685]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ "iffffffffffff\0"
+ "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
+ "\0"
+ /* _mesa_function_pool[17756]: SeparableFilter2D (offset 360) */
+ "iiiiiipp\0"
+ "glSeparableFilter2D\0"
+ "glSeparableFilter2DEXT\0"
+ "\0"
+ /* _mesa_function_pool[17809]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glReplacementCodeuiColor4ubVertex3fvSUN\0"
+ "\0"
+ /* _mesa_function_pool[17854]: ArrayElement (offset 306) */
+ "i\0"
+ "glArrayElement\0"
+ "glArrayElementEXT\0"
+ "\0"
+ /* _mesa_function_pool[17890]: TexImage2D (offset 183) */
+ "iiiiiiiip\0"
+ "glTexImage2D\0"
+ "\0"
+ /* _mesa_function_pool[17914]: FragmentMaterialiSGIX (dynamic) */
+ "iii\0"
+ "glFragmentMaterialiSGIX\0"
"\0"
- /* _mesa_function_pool[20596]: Color4fv (offset 30) */
+ /* _mesa_function_pool[17943]: RasterPos2dv (offset 63) */
"p\0"
- "glColor4fv\0"
+ "glRasterPos2dv\0"
"\0"
- /* _mesa_function_pool[20610]: EndPerfMonitorAMD (will be remapped) */
+ /* _mesa_function_pool[17961]: Fogiv (offset 156) */
+ "ip\0"
+ "glFogiv\0"
+ "\0"
+ /* _mesa_function_pool[17973]: EndQuery (will be remapped) */
"i\0"
- "glEndPerfMonitorAMD\0"
+ "glEndQuery\0"
+ "glEndQueryARB\0"
"\0"
- /* _mesa_function_pool[20633]: GetnMinmaxARB (will be remapped) */
- "iiiiip\0"
- "glGetnMinmaxARB\0"
+ /* _mesa_function_pool[18001]: TexCoord1dv (offset 95) */
+ "p\0"
+ "glTexCoord1dv\0"
"\0"
- /* _mesa_function_pool[20657]: ProgramLocalParameters4fvEXT (will be remapped) */
- "iiip\0"
- "glProgramLocalParameters4fvEXT\0"
+ /* _mesa_function_pool[18018]: TexCoord4dv (offset 119) */
+ "p\0"
+ "glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[20694]: BeginConditionalRender (will be remapped) */
- "ii\0"
- "glBeginConditionalRender\0"
- "glBeginConditionalRenderNV\0"
+ /* _mesa_function_pool[18035]: GetVertexAttribdvNV (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribdvNV\0"
"\0"
- /* _mesa_function_pool[20750]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
- "fffffffffffffff\0"
- "glTexCoord4fColor4fNormal3fVertex4fSUN\0"
+ /* _mesa_function_pool[18062]: Clear (offset 203) */
+ "i\0"
+ "glClear\0"
"\0"
- /* _mesa_function_pool[20806]: VertexAttribI1uiv (will be remapped) */
+ /* _mesa_function_pool[18073]: VertexAttrib4sv (will be remapped) */
"ip\0"
- "glVertexAttribI1uivEXT\0"
- "glVertexAttribI1uiv\0"
+ "glVertexAttrib4sv\0"
+ "glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[20853]: ColorPointer (offset 308) */
- "iiip\0"
- "glColorPointer\0"
+ /* _mesa_function_pool[18116]: Ortho (offset 296) */
+ "dddddd\0"
+ "glOrtho\0"
"\0"
- /* _mesa_function_pool[20874]: Rects (offset 92) */
- "iiii\0"
- "glRects\0"
+ /* _mesa_function_pool[18132]: Uniform3uiv (will be remapped) */
+ "iip\0"
+ "glUniform3uivEXT\0"
+ "glUniform3uiv\0"
"\0"
- /* _mesa_function_pool[20888]: GetMapAttribParameterfvNV (dynamic) */
+ /* _mesa_function_pool[18168]: MatrixIndexPointerARB (dynamic) */
"iiip\0"
- "glGetMapAttribParameterfvNV\0"
+ "glMatrixIndexPointerARB\0"
+ "glMatrixIndexPointerOES\0"
"\0"
- /* _mesa_function_pool[20922]: ClearColorx (will be remapped) */
- "iiii\0"
- "glClearColorxOES\0"
- "glClearColorx\0"
+ /* _mesa_function_pool[18222]: EndQueryIndexed (will be remapped) */
+ "ii\0"
+ "glEndQueryIndexed\0"
"\0"
- /* _mesa_function_pool[20959]: MultiTexCoordP2ui (will be remapped) */
- "iii\0"
- "glMultiTexCoordP2ui\0"
+ /* _mesa_function_pool[18244]: TexParameterxv (will be remapped) */
+ "iip\0"
+ "glTexParameterxvOES\0"
+ "glTexParameterxv\0"
"\0"
- /* _mesa_function_pool[20984]: ActiveProgramEXT (will be remapped) */
- "i\0"
- "glActiveProgramEXT\0"
+ /* _mesa_function_pool[18286]: SampleMaskSGIS (will be remapped) */
+ "fi\0"
+ "glSampleMaskSGIS\0"
+ "glSampleMaskEXT\0"
"\0"
- /* _mesa_function_pool[21006]: Lightiv (offset 162) */
- "iip\0"
- "glLightiv\0"
+ /* _mesa_function_pool[18323]: FramebufferTextureFaceARB (will be remapped) */
+ "iiiii\0"
+ "glFramebufferTextureFaceARB\0"
"\0"
- /* _mesa_function_pool[21021]: Tangent3svEXT (dynamic) */
- "p\0"
- "glTangent3svEXT\0"
+ /* _mesa_function_pool[18358]: ProgramUniformMatrix2fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix2fv\0"
"\0"
- /* _mesa_function_pool[21040]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[18391]: ProgramLocalParameter4fvARB (will be remapped) */
"iip\0"
- "glTexCoordPointervINTEL\0"
+ "glProgramLocalParameter4fvARB\0"
"\0"
- /* _mesa_function_pool[21069]: GetTexParameteriv (offset 283) */
+ /* _mesa_function_pool[18426]: GetProgramStringNV (will be remapped) */
"iip\0"
- "glGetTexParameteriv\0"
+ "glGetProgramStringNV\0"
"\0"
- /* _mesa_function_pool[21094]: MapParameterivNV (dynamic) */
- "iip\0"
- "glMapParameterivNV\0"
+ /* _mesa_function_pool[18452]: Binormal3svEXT (dynamic) */
+ "p\0"
+ "glBinormal3svEXT\0"
+ "\0"
+ /* _mesa_function_pool[18472]: LightModelx (will be remapped) */
+ "ii\0"
+ "glLightModelxOES\0"
+ "glLightModelx\0"
+ "\0"
+ /* _mesa_function_pool[18507]: VertexAttribI3iEXT (will be remapped) */
+ "iiii\0"
+ "glVertexAttribI3iEXT\0"
+ "glVertexAttribI3i\0"
+ "\0"
+ /* _mesa_function_pool[18552]: ClearColorx (will be remapped) */
+ "iiii\0"
+ "glClearColorxOES\0"
+ "glClearColorx\0"
+ "\0"
+ /* _mesa_function_pool[18589]: EndTransformFeedback (will be remapped) */
+ "\0"
+ "glEndTransformFeedback\0"
+ "glEndTransformFeedbackEXT\0"
"\0"
- /* _mesa_function_pool[21118]: VertexAttribs4dvNV (will be remapped) */
+ /* _mesa_function_pool[18640]: VertexAttribs4dvNV (will be remapped) */
"iip\0"
"glVertexAttribs4dvNV\0"
"\0"
- /* _mesa_function_pool[21144]: VertexAttrib3sv (will be remapped) */
- "ip\0"
- "glVertexAttrib3sv\0"
- "glVertexAttrib3svARB\0"
+ /* _mesa_function_pool[18666]: GetProgramBinary (will be remapped) */
+ "iippp\0"
+ "glGetProgramBinary\0"
+ "glGetProgramBinaryOES\0"
"\0"
- /* _mesa_function_pool[21187]: ClearBufferData (will be remapped) */
- "iiiip\0"
- "glClearBufferData\0"
+ /* _mesa_function_pool[18714]: ViewportIndexedfv (will be remapped) */
+ "ip\0"
+ "glViewportIndexedfv\0"
"\0"
- /* _mesa_function_pool[21212]: IsQuery (will be remapped) */
+ /* _mesa_function_pool[18738]: CallList (offset 2) */
"i\0"
- "glIsQuery\0"
- "glIsQueryARB\0"
+ "glCallList\0"
"\0"
- /* _mesa_function_pool[21238]: ClearBufferfv (will be remapped) */
+ /* _mesa_function_pool[18752]: Materialfv (offset 170) */
"iip\0"
- "glClearBufferfv\0"
+ "glMaterialfv\0"
"\0"
- /* _mesa_function_pool[21259]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[18770]: DeleteProgram (will be remapped) */
+ "i\0"
+ "glDeleteProgram\0"
"\0"
- "glPrimitiveRestartNV\0"
+ /* _mesa_function_pool[18789]: GetActiveAtomicCounterBufferiv (will be remapped) */
+ "iiip\0"
+ "glGetActiveAtomicCounterBufferiv\0"
"\0"
- /* _mesa_function_pool[21282]: EdgeFlagPointerEXT (will be remapped) */
+ /* _mesa_function_pool[18828]: TexParameterIiv (will be remapped) */
"iip\0"
- "glEdgeFlagPointerEXT\0"
+ "glTexParameterIivEXT\0"
+ "glTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[21308]: IsVertexArray (will be remapped) */
- "i\0"
- "glIsVertexArray\0"
- "glIsVertexArrayAPPLE\0"
- "glIsVertexArrayOES\0"
+ /* _mesa_function_pool[18872]: VertexWeightfEXT (dynamic) */
+ "f\0"
+ "glVertexWeightfEXT\0"
+ "\0"
+ /* _mesa_function_pool[18894]: FlushVertexArrayRangeNV (dynamic) */
+ "\0"
+ "glFlushVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[21367]: GetMultisamplefv (will be remapped) */
+ /* _mesa_function_pool[18922]: GetConvolutionFilter (offset 356) */
+ "iiip\0"
+ "glGetConvolutionFilter\0"
+ "glGetConvolutionFilterEXT\0"
+ "\0"
+ /* _mesa_function_pool[18977]: MultiModeDrawElementsIBM (will be remapped) */
+ "ppipii\0"
+ "glMultiModeDrawElementsIBM\0"
+ "\0"
+ /* _mesa_function_pool[19012]: Uniform2iv (will be remapped) */
"iip\0"
- "glGetMultisamplefv\0"
+ "glUniform2iv\0"
+ "glUniform2ivARB\0"
"\0"
- /* _mesa_function_pool[21391]: WeightbvARB (dynamic) */
+ /* _mesa_function_pool[19046]: GetFixedv (will be remapped) */
"ip\0"
- "glWeightbvARB\0"
+ "glGetFixedvOES\0"
+ "glGetFixedv\0"
"\0"
- /* _mesa_function_pool[21409]: Rectdv (offset 87) */
- "pp\0"
- "glRectdv\0"
+ /* _mesa_function_pool[19077]: ProgramParameters4dvNV (will be remapped) */
+ "iiip\0"
+ "glProgramParameters4dvNV\0"
"\0"
- /* _mesa_function_pool[21422]: ListParameteriSGIX (dynamic) */
- "iii\0"
- "glListParameteriSGIX\0"
+ /* _mesa_function_pool[19108]: Binormal3dvEXT (dynamic) */
+ "p\0"
+ "glBinormal3dvEXT\0"
"\0"
- /* _mesa_function_pool[21448]: BlendEquationiARB (will be remapped) */
+ /* _mesa_function_pool[19128]: SampleCoveragex (will be remapped) */
"ii\0"
- "glBlendEquationiARB\0"
- "glBlendEquationIndexedAMD\0"
+ "glSampleCoveragexOES\0"
+ "glSampleCoveragex\0"
"\0"
- /* _mesa_function_pool[21498]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
- "iffffffffff\0"
- "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[19171]: DeleteFramebuffers (will be remapped) */
+ "ip\0"
+ "glDeleteFramebuffers\0"
+ "glDeleteFramebuffersEXT\0"
+ "glDeleteFramebuffersOES\0"
+ "\0"
+ /* _mesa_function_pool[19244]: CombinerInputNV (dynamic) */
+ "iiiiii\0"
+ "glCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[21557]: VertexAttrib4dv (will be remapped) */
+ /* _mesa_function_pool[19270]: VertexAttrib4uiv (will be remapped) */
"ip\0"
- "glVertexAttrib4dv\0"
- "glVertexAttrib4dvARB\0"
+ "glVertexAttrib4uiv\0"
+ "glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[21600]: InstrumentsBufferSGIX (dynamic) */
+ /* _mesa_function_pool[19315]: VertexAttrib4Nsv (will be remapped) */
"ip\0"
- "glInstrumentsBufferSGIX\0"
+ "glVertexAttrib4Nsv\0"
+ "glVertexAttrib4NsvARB\0"
+ "\0"
+ /* _mesa_function_pool[19360]: Vertex4s (offset 148) */
+ "iiii\0"
+ "glVertex4s\0"
"\0"
- /* _mesa_function_pool[21628]: SharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[19377]: VertexAttribI2iEXT (will be remapped) */
+ "iii\0"
+ "glVertexAttribI2iEXT\0"
+ "glVertexAttribI2i\0"
+ "\0"
+ /* _mesa_function_pool[19421]: Vertex4f (offset 144) */
+ "ffff\0"
+ "glVertex4f\0"
+ "\0"
+ /* _mesa_function_pool[19438]: Vertex4d (offset 142) */
+ "dddd\0"
+ "glVertex4d\0"
+ "\0"
+ /* _mesa_function_pool[19455]: GetTexGenfv (offset 279) */
"iip\0"
- "glSharpenTexFuncSGIS\0"
+ "glGetTexGenfv\0"
+ "glGetTexGenfvOES\0"
"\0"
- /* _mesa_function_pool[21654]: DrawArraysInstancedARB (will be remapped) */
+ /* _mesa_function_pool[19491]: Vertex4i (offset 146) */
"iiii\0"
- "glDrawArraysInstancedARB\0"
- "glDrawArraysInstancedEXT\0"
- "glDrawArraysInstanced\0"
+ "glVertex4i\0"
"\0"
- /* _mesa_function_pool[21732]: GetTexParameterxv (will be remapped) */
+ /* _mesa_function_pool[19508]: VertexWeightPointerEXT (dynamic) */
+ "iiip\0"
+ "glVertexWeightPointerEXT\0"
+ "\0"
+ /* _mesa_function_pool[19539]: StencilFuncSeparateATI (will be remapped) */
+ "iiii\0"
+ "glStencilFuncSeparateATI\0"
+ "\0"
+ /* _mesa_function_pool[19570]: GetVertexAttribIuiv (will be remapped) */
"iip\0"
- "glGetTexParameterxvOES\0"
- "glGetTexParameterxv\0"
+ "glGetVertexAttribIuivEXT\0"
+ "glGetVertexAttribIuiv\0"
+ "\0"
+ /* _mesa_function_pool[19622]: LightModelfv (offset 164) */
+ "ip\0"
+ "glLightModelfv\0"
+ "\0"
+ /* _mesa_function_pool[19641]: Vertex4dv (offset 143) */
+ "p\0"
+ "glVertex4dv\0"
"\0"
- /* _mesa_function_pool[21780]: GetAttachedShaders (will be remapped) */
+ /* _mesa_function_pool[19656]: ProgramParameters4fvNV (will be remapped) */
+ "iiip\0"
+ "glProgramParameters4fvNV\0"
+ "\0"
+ /* _mesa_function_pool[19687]: GetInfoLogARB (will be remapped) */
"iipp\0"
- "glGetAttachedShaders\0"
+ "glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[21807]: DebugMessageInsert (will be remapped) */
- "iiiiip\0"
- "glDebugMessageInsert\0"
+ /* _mesa_function_pool[19709]: StencilMask (offset 209) */
+ "i\0"
+ "glStencilMask\0"
+ "\0"
+ /* _mesa_function_pool[19726]: IsList (offset 287) */
+ "i\0"
+ "glIsList\0"
"\0"
- /* _mesa_function_pool[21836]: Materialiv (offset 172) */
+ /* _mesa_function_pool[19738]: ClearBufferiv (will be remapped) */
"iip\0"
- "glMaterialiv\0"
+ "glClearBufferiv\0"
"\0"
- /* _mesa_function_pool[21854]: PushClientAttrib (offset 335) */
- "i\0"
- "glPushClientAttrib\0"
+ /* _mesa_function_pool[19759]: GetIntegeri_v (will be remapped) */
+ "iip\0"
+ "glGetIntegerIndexedvEXT\0"
+ "glGetIntegeri_v\0"
"\0"
- /* _mesa_function_pool[21876]: ProgramEnvParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[19804]: ProgramUniform2iv (will be remapped) */
"iiip\0"
- "glProgramEnvParameters4fvEXT\0"
+ "glProgramUniform2iv\0"
"\0"
- /* _mesa_function_pool[21911]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
- "pppp\0"
- "glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
+ /* _mesa_function_pool[19830]: VertexAttribs4svNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs4svNV\0"
+ "\0"
+ /* _mesa_function_pool[19856]: FogCoordPointer (will be remapped) */
+ "iip\0"
+ "glFogCoordPointer\0"
+ "glFogCoordPointerEXT\0"
+ "\0"
+ /* _mesa_function_pool[19900]: SecondaryColor3us (will be remapped) */
+ "iii\0"
+ "glSecondaryColor3us\0"
+ "glSecondaryColor3usEXT\0"
+ "\0"
+ /* _mesa_function_pool[19948]: DeformationMap3dSGIX (dynamic) */
+ "iddiiddiiddiip\0"
+ "glDeformationMap3dSGIX\0"
"\0"
- /* _mesa_function_pool[21957]: LineWidthx (will be remapped) */
+ /* _mesa_function_pool[19987]: TextureNormalEXT (dynamic) */
"i\0"
- "glLineWidthxOES\0"
- "glLineWidthx\0"
+ "glTextureNormalEXT\0"
"\0"
- /* _mesa_function_pool[21989]: SecondaryColor3fvEXT (will be remapped) */
- "p\0"
- "glSecondaryColor3fv\0"
- "glSecondaryColor3fvEXT\0"
+ /* _mesa_function_pool[20009]: SecondaryColor3ub (will be remapped) */
+ "iii\0"
+ "glSecondaryColor3ub\0"
+ "glSecondaryColor3ubEXT\0"
"\0"
- /* _mesa_function_pool[22035]: PolygonMode (offset 174) */
- "ii\0"
- "glPolygonMode\0"
+ /* _mesa_function_pool[20057]: SecondaryColor3ui (will be remapped) */
+ "iii\0"
+ "glSecondaryColor3ui\0"
+ "glSecondaryColor3uiEXT\0"
"\0"
- /* _mesa_function_pool[22053]: SecondaryColor3iv (will be remapped) */
+ /* _mesa_function_pool[20105]: VertexAttribI3uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI3uivEXT\0"
+ "glVertexAttribI3uiv\0"
+ "\0"
+ /* _mesa_function_pool[20152]: Binormal3fvEXT (dynamic) */
"p\0"
- "glSecondaryColor3iv\0"
- "glSecondaryColor3ivEXT\0"
+ "glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[22099]: VertexAttribIFormat (will be remapped) */
- "iiii\0"
- "glVertexAttribIFormat\0"
+ /* _mesa_function_pool[20172]: TexCoordPointervINTEL (dynamic) */
+ "iip\0"
+ "glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[22127]: VertexAttribI1iEXT (will be remapped) */
+ /* _mesa_function_pool[20201]: VertexAttrib1sNV (will be remapped) */
"ii\0"
- "glVertexAttribI1iEXT\0"
- "glVertexAttribI1i\0"
+ "glVertexAttrib1sNV\0"
+ "\0"
+ /* _mesa_function_pool[20224]: Tangent3bEXT (dynamic) */
+ "iii\0"
+ "glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[22170]: VertexAttrib4Niv (will be remapped) */
+ /* _mesa_function_pool[20244]: FragmentLightModelfSGIX (dynamic) */
+ "if\0"
+ "glFragmentLightModelfSGIX\0"
+ "\0"
+ /* _mesa_function_pool[20274]: InitNames (offset 197) */
+ "\0"
+ "glInitNames\0"
+ "\0"
+ /* _mesa_function_pool[20288]: Normal3sv (offset 61) */
+ "p\0"
+ "glNormal3sv\0"
+ "\0"
+ /* _mesa_function_pool[20303]: DeleteQueries (will be remapped) */
"ip\0"
- "glVertexAttrib4Niv\0"
- "glVertexAttrib4NivARB\0"
+ "glDeleteQueries\0"
+ "glDeleteQueriesARB\0"
"\0"
- /* _mesa_function_pool[22215]: GetVertexAttribivNV (will be remapped) */
+ /* _mesa_function_pool[20342]: InvalidateFramebuffer (will be remapped) */
"iip\0"
- "glGetVertexAttribivNV\0"
+ "glInvalidateFramebuffer\0"
"\0"
- /* _mesa_function_pool[22242]: GetProgramStringARB (will be remapped) */
- "iip\0"
- "glGetProgramStringARB\0"
+ /* _mesa_function_pool[20371]: Hint (offset 158) */
+ "ii\0"
+ "glHint\0"
+ "\0"
+ /* _mesa_function_pool[20382]: MemoryBarrier (will be remapped) */
+ "i\0"
+ "glMemoryBarrier\0"
"\0"
- /* _mesa_function_pool[22269]: GetFloati_v (will be remapped) */
+ /* _mesa_function_pool[20401]: CopyColorSubTable (offset 347) */
+ "iiiii\0"
+ "glCopyColorSubTable\0"
+ "glCopyColorSubTableEXT\0"
+ "\0"
+ /* _mesa_function_pool[20451]: WeightdvARB (dynamic) */
+ "ip\0"
+ "glWeightdvARB\0"
+ "\0"
+ /* _mesa_function_pool[20469]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
- "glGetFloati_v\0"
+ "glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[22288]: GetnUniformdvARB (will be remapped) */
- "iiip\0"
- "glGetnUniformdvARB\0"
+ /* _mesa_function_pool[20500]: GetTexEnvxv (will be remapped) */
+ "iip\0"
+ "glGetTexEnvxvOES\0"
+ "glGetTexEnvxv\0"
"\0"
- /* _mesa_function_pool[22313]: DrawElementsInstancedBaseVertex (will be remapped) */
- "iiipii\0"
- "glDrawElementsInstancedBaseVertex\0"
+ /* _mesa_function_pool[20536]: DrawTexsvOES (will be remapped) */
+ "p\0"
+ "glDrawTexsvOES\0"
"\0"
- /* _mesa_function_pool[22355]: LinkProgram (will be remapped) */
+ /* _mesa_function_pool[20554]: Disable (offset 214) */
"i\0"
- "glLinkProgram\0"
- "glLinkProgramARB\0"
+ "glDisable\0"
+ "\0"
+ /* _mesa_function_pool[20567]: ClearColor (offset 206) */
+ "ffff\0"
+ "glClearColor\0"
"\0"
- /* _mesa_function_pool[22389]: TexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[20586]: WeightuivARB (dynamic) */
"ip\0"
- "glTexBumpParameterfvATI\0"
+ "glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[22417]: Tangent3ivEXT (dynamic) */
+ /* _mesa_function_pool[20605]: RasterPos4iv (offset 83) */
"p\0"
- "glTangent3ivEXT\0"
- "\0"
- /* _mesa_function_pool[22436]: Uniform1f (will be remapped) */
- "if\0"
- "glUniform1f\0"
- "glUniform1fARB\0"
+ "glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[22467]: DisableClientState (offset 309) */
+ /* _mesa_function_pool[20623]: VDPAUIsSurfaceNV (will be remapped) */
"i\0"
- "glDisableClientState\0"
+ "glVDPAUIsSurfaceNV\0"
"\0"
- /* _mesa_function_pool[22491]: TexGeni (offset 192) */
- "iii\0"
- "glTexGeni\0"
- "glTexGeniOES\0"
+ /* _mesa_function_pool[20645]: ProgramUniformMatrix2x3fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[22519]: TexGenf (offset 190) */
- "iif\0"
- "glTexGenf\0"
- "glTexGenfOES\0"
+ /* _mesa_function_pool[20680]: BindVertexBuffer (will be remapped) */
+ "iiii\0"
+ "glBindVertexBuffer\0"
"\0"
- /* _mesa_function_pool[22547]: TexEnvx (will be remapped) */
+ /* _mesa_function_pool[20705]: Binormal3iEXT (dynamic) */
"iii\0"
- "glTexEnvxOES\0"
- "glTexEnvx\0"
+ "glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[22575]: TexGend (offset 188) */
- "iid\0"
- "glTexGend\0"
+ /* _mesa_function_pool[20726]: RasterPos4i (offset 82) */
+ "iiii\0"
+ "glRasterPos4i\0"
"\0"
- /* _mesa_function_pool[22590]: Uniform1i (will be remapped) */
- "ii\0"
- "glUniform1i\0"
- "glUniform1iARB\0"
+ /* _mesa_function_pool[20746]: RasterPos4d (offset 78) */
+ "dddd\0"
+ "glRasterPos4d\0"
"\0"
- /* _mesa_function_pool[22621]: GetPolygonStipple (offset 274) */
- "p\0"
- "glGetPolygonStipple\0"
+ /* _mesa_function_pool[20766]: RasterPos4f (offset 80) */
+ "ffff\0"
+ "glRasterPos4f\0"
"\0"
- /* _mesa_function_pool[22644]: Orthox (will be remapped) */
- "iiiiii\0"
- "glOrthoxOES\0"
- "glOrthox\0"
+ /* _mesa_function_pool[20786]: GetQueryIndexediv (will be remapped) */
+ "iiip\0"
+ "glGetQueryIndexediv\0"
"\0"
- /* _mesa_function_pool[22673]: VertexAttrib4d (will be remapped) */
- "idddd\0"
- "glVertexAttrib4d\0"
- "glVertexAttrib4dARB\0"
+ /* _mesa_function_pool[20812]: RasterPos3dv (offset 71) */
+ "p\0"
+ "glRasterPos3dv\0"
"\0"
- /* _mesa_function_pool[22717]: GetVertexAttribfvNV (will be remapped) */
+ /* _mesa_function_pool[20830]: GetProgramiv (will be remapped) */
"iip\0"
- "glGetVertexAttribfvNV\0"
+ "glGetProgramiv\0"
"\0"
- /* _mesa_function_pool[22744]: Tangent3iEXT (dynamic) */
- "iii\0"
- "glTangent3iEXT\0"
+ /* _mesa_function_pool[20850]: GetDebugMessageLogARB (will be remapped) */
+ "iipppppp\0"
+ "glGetDebugMessageLogARB\0"
"\0"
- /* _mesa_function_pool[22764]: DrawArraysInstancedBaseInstance (will be remapped) */
- "iiiii\0"
- "glDrawArraysInstancedBaseInstance\0"
+ /* _mesa_function_pool[20884]: TexCoord1iv (offset 99) */
+ "p\0"
+ "glTexCoord1iv\0"
"\0"
- /* _mesa_function_pool[22805]: VertexAttrib2svNV (will be remapped) */
- "ip\0"
- "glVertexAttrib2svNV\0"
+ /* _mesa_function_pool[20901]: RasterPos4s (offset 84) */
+ "iiii\0"
+ "glRasterPos4s\0"
"\0"
- /* _mesa_function_pool[22829]: NormalP3uiv (will be remapped) */
+ /* _mesa_function_pool[20921]: PixelTexGenParameterfvSGIS (dynamic) */
"ip\0"
- "glNormalP3uiv\0"
+ "glPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[22847]: SecondaryColorP3uiv (will be remapped) */
+ /* _mesa_function_pool[20954]: VertexAttrib3dv (will be remapped) */
"ip\0"
- "glSecondaryColorP3uiv\0"
+ "glVertexAttrib3dv\0"
+ "glVertexAttrib3dvARB\0"
"\0"
- /* _mesa_function_pool[22873]: VertexAttribs1fvNV (will be remapped) */
+ /* _mesa_function_pool[20997]: Histogram (offset 367) */
+ "iiii\0"
+ "glHistogram\0"
+ "glHistogramEXT\0"
+ "\0"
+ /* _mesa_function_pool[21030]: Uniform2fv (will be remapped) */
"iip\0"
- "glVertexAttribs1fvNV\0"
+ "glUniform2fv\0"
+ "glUniform2fvARB\0"
"\0"
- /* _mesa_function_pool[22899]: GetPerfMonitorCountersAMD (will be remapped) */
- "ippip\0"
- "glGetPerfMonitorCountersAMD\0"
+ /* _mesa_function_pool[21064]: TexImage4DSGIS (dynamic) */
+ "iiiiiiiiiip\0"
+ "glTexImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[22934]: DrawTexsvOES (will be remapped) */
- "p\0"
- "glDrawTexsvOES\0"
+ /* _mesa_function_pool[21094]: DrawBuffers (will be remapped) */
+ "ip\0"
+ "glDrawBuffers\0"
+ "glDrawBuffersARB\0"
+ "glDrawBuffersATI\0"
+ "glDrawBuffersNV\0"
"\0"
- /* _mesa_function_pool[22952]: WindowPos4sMESA (will be remapped) */
- "iiii\0"
- "glWindowPos4sMESA\0"
+ /* _mesa_function_pool[21162]: GetnPolygonStippleARB (will be remapped) */
+ "ip\0"
+ "glGetnPolygonStippleARB\0"
"\0"
- /* _mesa_function_pool[22976]: GetnPixelMapuivARB (will be remapped) */
- "iip\0"
- "glGetnPixelMapuivARB\0"
+ /* _mesa_function_pool[21190]: Color3uiv (offset 22) */
+ "p\0"
+ "glColor3uiv\0"
"\0"
- /* _mesa_function_pool[23002]: VertexAttrib4s (will be remapped) */
- "iiiii\0"
- "glVertexAttrib4s\0"
- "glVertexAttrib4sARB\0"
+ /* _mesa_function_pool[21205]: EvalCoord2fv (offset 235) */
+ "p\0"
+ "glEvalCoord2fv\0"
"\0"
- /* _mesa_function_pool[23046]: GetSamplerParameterIuiv (will be remapped) */
- "iip\0"
- "glGetSamplerParameterIuiv\0"
+ /* _mesa_function_pool[21223]: TextureStorage3DEXT (will be remapped) */
+ "iiiiiii\0"
+ "glTextureStorage3DEXT\0"
"\0"
- /* _mesa_function_pool[23077]: ReplacementCodeusvSUN (dynamic) */
+ /* _mesa_function_pool[21254]: VertexAttrib2fARB (will be remapped) */
+ "iff\0"
+ "glVertexAttrib2f\0"
+ "glVertexAttrib2fARB\0"
+ "\0"
+ /* _mesa_function_pool[21296]: WindowPos2fv (will be remapped) */
"p\0"
- "glReplacementCodeusvSUN\0"
+ "glWindowPos2fv\0"
+ "glWindowPos2fvARB\0"
+ "glWindowPos2fvMESA\0"
"\0"
- /* _mesa_function_pool[23104]: VertexAttrib2dvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib2dvNV\0"
+ /* _mesa_function_pool[21351]: Tangent3fEXT (dynamic) */
+ "fff\0"
+ "glTangent3fEXT\0"
"\0"
- /* _mesa_function_pool[23128]: UseProgram (will be remapped) */
- "i\0"
- "glUseProgram\0"
- "glUseProgramObjectARB\0"
+ /* _mesa_function_pool[21371]: TexImage3D (offset 371) */
+ "iiiiiiiiip\0"
+ "glTexImage3D\0"
+ "glTexImage3DEXT\0"
+ "glTexImage3DOES\0"
"\0"
- /* _mesa_function_pool[23166]: GlobalAlphaFactoriSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactoriSUN\0"
+ /* _mesa_function_pool[21428]: BindFragDataLocation (will be remapped) */
+ "iip\0"
+ "glBindFragDataLocationEXT\0"
+ "glBindFragDataLocation\0"
"\0"
- /* _mesa_function_pool[23193]: CompileShader (will be remapped) */
- "i\0"
- "glCompileShader\0"
- "glCompileShaderARB\0"
+ /* _mesa_function_pool[21482]: LightModeliv (offset 166) */
+ "ip\0"
+ "glLightModeliv\0"
"\0"
- /* _mesa_function_pool[23231]: Color4sv (offset 34) */
+ /* _mesa_function_pool[21501]: Normal3bv (offset 53) */
"p\0"
- "glColor4sv\0"
- "\0"
- /* _mesa_function_pool[23245]: MultiModeDrawArraysIBM (will be remapped) */
- "pppii\0"
- "glMultiModeDrawArraysIBM\0"
+ "glNormal3bv\0"
"\0"
- /* _mesa_function_pool[23277]: MultiTexCoord3d (offset 392) */
- "iddd\0"
- "glMultiTexCoord3d\0"
- "glMultiTexCoord3dARB\0"
+ /* _mesa_function_pool[21516]: BeginQueryIndexed (will be remapped) */
+ "iii\0"
+ "glBeginQueryIndexed\0"
"\0"
- /* _mesa_function_pool[23322]: LoadTransposeMatrixf (will be remapped) */
+ /* _mesa_function_pool[21541]: Vertex3iv (offset 139) */
"p\0"
- "glLoadTransposeMatrixf\0"
- "glLoadTransposeMatrixfARB\0"
+ "glVertex3iv\0"
"\0"
- /* _mesa_function_pool[23374]: LoadTransposeMatrixd (will be remapped) */
+ /* _mesa_function_pool[21556]: TexCoord3dv (offset 111) */
"p\0"
- "glLoadTransposeMatrixd\0"
- "glLoadTransposeMatrixdARB\0"
+ "glTexCoord3dv\0"
"\0"
- /* _mesa_function_pool[23426]: FlushMappedBufferRangeAPPLE (will be remapped) */
- "iii\0"
- "glFlushMappedBufferRangeAPPLE\0"
+ /* _mesa_function_pool[21573]: GetProgramStringARB (will be remapped) */
+ "iip\0"
+ "glGetProgramStringARB\0"
"\0"
- /* _mesa_function_pool[23461]: PixelZoom (offset 246) */
- "ff\0"
- "glPixelZoom\0"
+ /* _mesa_function_pool[21600]: VertexP3ui (will be remapped) */
+ "ii\0"
+ "glVertexP3ui\0"
"\0"
- /* _mesa_function_pool[23477]: ReplacementCodePointerSUN (dynamic) */
- "iip\0"
- "glReplacementCodePointerSUN\0"
+ /* _mesa_function_pool[21617]: CreateProgramObjectARB (will be remapped) */
"\0"
- /* _mesa_function_pool[23510]: ProgramEnvParameter4dARB (will be remapped) */
- "iidddd\0"
- "glProgramEnvParameter4dARB\0"
- "glProgramParameter4dNV\0"
+ "glCreateProgramObjectARB\0"
+ "\0"
+ /* _mesa_function_pool[21644]: UniformMatrix3fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix3fv\0"
+ "glUniformMatrix3fvARB\0"
+ "\0"
+ /* _mesa_function_pool[21691]: PrioritizeTextures (offset 331) */
+ "ipp\0"
+ "glPrioritizeTextures\0"
+ "glPrioritizeTexturesEXT\0"
"\0"
- /* _mesa_function_pool[23568]: ColorTableParameterfv (offset 340) */
+ /* _mesa_function_pool[21741]: VertexAttribI3uiEXT (will be remapped) */
+ "iiii\0"
+ "glVertexAttribI3uiEXT\0"
+ "glVertexAttribI3ui\0"
+ "\0"
+ /* _mesa_function_pool[21788]: AsyncMarkerSGIX (dynamic) */
+ "i\0"
+ "glAsyncMarkerSGIX\0"
+ "\0"
+ /* _mesa_function_pool[21809]: GetProgramNamedParameterfvNV (will be remapped) */
+ "iipp\0"
+ "glGetProgramNamedParameterfvNV\0"
+ "\0"
+ /* _mesa_function_pool[21846]: GetMaterialxv (will be remapped) */
"iip\0"
- "glColorTableParameterfv\0"
- "glColorTableParameterfvSGI\0"
+ "glGetMaterialxvOES\0"
+ "glGetMaterialxv\0"
"\0"
- /* _mesa_function_pool[23624]: GetFragDataLocation (will be remapped) */
+ /* _mesa_function_pool[21886]: MatrixIndexusvARB (dynamic) */
"ip\0"
- "glGetFragDataLocationEXT\0"
- "glGetFragDataLocation\0"
- "\0"
- /* _mesa_function_pool[23675]: TexStorage3DMultisample (will be remapped) */
- "iiiiiii\0"
- "glTexStorage3DMultisample\0"
+ "glMatrixIndexusvARB\0"
"\0"
- /* _mesa_function_pool[23710]: Binormal3bvEXT (dynamic) */
+ /* _mesa_function_pool[21910]: SecondaryColor3uiv (will be remapped) */
"p\0"
- "glBinormal3bvEXT\0"
+ "glSecondaryColor3uiv\0"
+ "glSecondaryColor3uivEXT\0"
"\0"
- /* _mesa_function_pool[23730]: LoadIdentityDeformationMapSGIX (dynamic) */
- "i\0"
- "glLoadIdentityDeformationMapSGIX\0"
+ /* _mesa_function_pool[21958]: EndConditionalRender (will be remapped) */
"\0"
- /* _mesa_function_pool[23766]: PixelMapuiv (offset 252) */
- "iip\0"
- "glPixelMapuiv\0"
+ "glEndConditionalRender\0"
+ "glEndConditionalRenderNV\0"
"\0"
- /* _mesa_function_pool[23785]: Color3dv (offset 12) */
+ /* _mesa_function_pool[22008]: ProgramLocalParameter4dARB (will be remapped) */
+ "iidddd\0"
+ "glProgramLocalParameter4dARB\0"
+ "\0"
+ /* _mesa_function_pool[22045]: Color3sv (offset 18) */
"p\0"
- "glColor3dv\0"
+ "glColor3sv\0"
"\0"
- /* _mesa_function_pool[23799]: IsTexture (offset 330) */
+ /* _mesa_function_pool[22059]: GenFragmentShadersATI (will be remapped) */
"i\0"
- "glIsTexture\0"
- "glIsTextureEXT\0"
+ "glGenFragmentShadersATI\0"
+ "\0"
+ /* _mesa_function_pool[22086]: BlendEquationSeparateiARB (will be remapped) */
+ "iii\0"
+ "glBlendEquationSeparateiARB\0"
+ "glBlendEquationSeparateIndexedAMD\0"
+ "\0"
+ /* _mesa_function_pool[22153]: TestFenceNV (dynamic) */
+ "i\0"
+ "glTestFenceNV\0"
"\0"
- /* _mesa_function_pool[23829]: VertexAttrib4fvNV (will be remapped) */
+ /* _mesa_function_pool[22170]: MultiTexCoord1fvARB (offset 379) */
"ip\0"
- "glVertexAttrib4fvNV\0"
+ "glMultiTexCoord1fv\0"
+ "glMultiTexCoord1fvARB\0"
"\0"
- /* _mesa_function_pool[23853]: BeginQuery (will be remapped) */
- "ii\0"
- "glBeginQuery\0"
- "glBeginQueryARB\0"
+ /* _mesa_function_pool[22215]: TexStorage2D (will be remapped) */
+ "iiiii\0"
+ "glTexStorage2D\0"
"\0"
- /* _mesa_function_pool[23886]: ColorPointerEXT (will be remapped) */
- "iiiip\0"
- "glColorPointerEXT\0"
+ /* _mesa_function_pool[22237]: GetPixelTexGenParameterivSGIS (dynamic) */
+ "ip\0"
+ "glGetPixelTexGenParameterivSGIS\0"
+ "\0"
+ /* _mesa_function_pool[22273]: FramebufferTexture2D (will be remapped) */
+ "iiiii\0"
+ "glFramebufferTexture2D\0"
+ "glFramebufferTexture2DEXT\0"
+ "glFramebufferTexture2DOES\0"
"\0"
- /* _mesa_function_pool[23911]: ScissorIndexedv (will be remapped) */
+ /* _mesa_function_pool[22355]: GetSamplerParameterfv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameterfv\0"
+ "\0"
+ /* _mesa_function_pool[22384]: VertexAttrib2dv (will be remapped) */
"ip\0"
- "glScissorIndexedv\0"
+ "glVertexAttrib2dv\0"
+ "glVertexAttrib2dvARB\0"
"\0"
- /* _mesa_function_pool[23933]: VertexWeightfvEXT (dynamic) */
+ /* _mesa_function_pool[22427]: Vertex4sv (offset 149) */
"p\0"
- "glVertexWeightfvEXT\0"
+ "glVertex4sv\0"
"\0"
- /* _mesa_function_pool[23956]: VertexP3uiv (will be remapped) */
- "ip\0"
- "glVertexP3uiv\0"
+ /* _mesa_function_pool[22442]: GetQueryObjecti64v (will be remapped) */
+ "iip\0"
+ "glGetQueryObjecti64v\0"
+ "glGetQueryObjecti64vEXT\0"
"\0"
- /* _mesa_function_pool[23974]: VertexAttrib3s (will be remapped) */
- "iiii\0"
- "glVertexAttrib3s\0"
- "glVertexAttrib3sARB\0"
+ /* _mesa_function_pool[22492]: ClampColor (will be remapped) */
+ "ii\0"
+ "glClampColorARB\0"
+ "glClampColor\0"
"\0"
- /* _mesa_function_pool[24017]: GetCombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[22525]: TextureRangeAPPLE (dynamic) */
"iip\0"
- "glGetCombinerStageParameterfvNV\0"
+ "glTextureRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[24054]: TexCoord4i (offset 122) */
- "iiii\0"
- "glTexCoord4i\0"
+ /* _mesa_function_pool[22550]: ConvolutionFilter1D (offset 348) */
+ "iiiiip\0"
+ "glConvolutionFilter1D\0"
+ "glConvolutionFilter1DEXT\0"
"\0"
- /* _mesa_function_pool[24073]: Color4ubVertex2fSUN (dynamic) */
- "iiiiff\0"
- "glColor4ubVertex2fSUN\0"
+ /* _mesa_function_pool[22605]: DrawElementsIndirect (will be remapped) */
+ "iip\0"
+ "glDrawElementsIndirect\0"
"\0"
- /* _mesa_function_pool[24103]: FragmentColorMaterialSGIX (dynamic) */
- "ii\0"
- "glFragmentColorMaterialSGIX\0"
+ /* _mesa_function_pool[22633]: WindowPos3sv (will be remapped) */
+ "p\0"
+ "glWindowPos3sv\0"
+ "glWindowPos3svARB\0"
+ "glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[24135]: CurrentPaletteMatrixARB (dynamic) */
- "i\0"
- "glCurrentPaletteMatrixARB\0"
- "glCurrentPaletteMatrixOES\0"
+ /* _mesa_function_pool[22688]: FragmentMaterialfvSGIX (dynamic) */
+ "iip\0"
+ "glFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[24190]: GetMapdv (offset 266) */
+ /* _mesa_function_pool[22718]: CallLists (offset 3) */
"iip\0"
- "glGetMapdv\0"
+ "glCallLists\0"
"\0"
- /* _mesa_function_pool[24206]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[22735]: AlphaFunc (offset 240) */
+ "if\0"
+ "glAlphaFunc\0"
+ "\0"
+ /* _mesa_function_pool[22751]: EdgeFlag (offset 41) */
+ "i\0"
+ "glEdgeFlag\0"
+ "\0"
+ /* _mesa_function_pool[22765]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
- "glColor4fNormal3fVertex3fvSUN\0"
+ "glTexCoord2fNormal3fVertex3fvSUN\0"
+ "\0"
+ /* _mesa_function_pool[22803]: EdgeFlagv (offset 42) */
+ "p\0"
+ "glEdgeFlagv\0"
"\0"
- /* _mesa_function_pool[24241]: GetStringi (will be remapped) */
+ /* _mesa_function_pool[22818]: DepthRangex (will be remapped) */
"ii\0"
- "glGetStringi\0"
+ "glDepthRangexOES\0"
+ "glDepthRangex\0"
"\0"
- /* _mesa_function_pool[24258]: MultiTexCoord3iv (offset 397) */
- "ip\0"
- "glMultiTexCoord3iv\0"
- "glMultiTexCoord3ivARB\0"
+ /* _mesa_function_pool[22853]: ReplacementCodeubvSUN (dynamic) */
+ "p\0"
+ "glReplacementCodeubvSUN\0"
+ "\0"
+ /* _mesa_function_pool[22880]: VDPAUInitNV (will be remapped) */
+ "pp\0"
+ "glVDPAUInitNV\0"
+ "\0"
+ /* _mesa_function_pool[22898]: GetBufferParameteri64v (will be remapped) */
+ "iip\0"
+ "glGetBufferParameteri64v\0"
+ "\0"
+ /* _mesa_function_pool[22928]: CreateProgram (will be remapped) */
+ "\0"
+ "glCreateProgram\0"
+ "\0"
+ /* _mesa_function_pool[22946]: DepthRangef (will be remapped) */
+ "ff\0"
+ "glDepthRangef\0"
+ "glDepthRangefOES\0"
"\0"
- /* _mesa_function_pool[24303]: GetUniformLocation (will be remapped) */
+ /* _mesa_function_pool[22981]: GetSharpenTexFuncSGIS (dynamic) */
"ip\0"
- "glGetUniformLocation\0"
- "glGetUniformLocationARB\0"
+ "glGetSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[24352]: PixelStoref (offset 249) */
- "if\0"
- "glPixelStoref\0"
+ /* _mesa_function_pool[23009]: ColorFragmentOp3ATI (will be remapped) */
+ "iiiiiiiiiiiii\0"
+ "glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[24370]: WindowPos2iv (will be remapped) */
- "p\0"
- "glWindowPos2iv\0"
- "glWindowPos2ivARB\0"
- "glWindowPos2ivMESA\0"
+ /* _mesa_function_pool[23046]: ValidateProgram (will be remapped) */
+ "i\0"
+ "glValidateProgram\0"
+ "glValidateProgramARB\0"
"\0"
- /* _mesa_function_pool[24425]: Binormal3dEXT (dynamic) */
- "ddd\0"
- "glBinormal3dEXT\0"
+ /* _mesa_function_pool[23088]: VertexPointerEXT (will be remapped) */
+ "iiiip\0"
+ "glVertexPointerEXT\0"
"\0"
- /* _mesa_function_pool[24446]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
- "iiiiifff\0"
- "glReplacementCodeuiColor4ubVertex3fSUN\0"
+ /* _mesa_function_pool[23114]: Scissor (offset 176) */
+ "iiii\0"
+ "glScissor\0"
+ "\0"
+ /* _mesa_function_pool[23130]: BeginTransformFeedback (will be remapped) */
+ "i\0"
+ "glBeginTransformFeedback\0"
+ "glBeginTransformFeedbackEXT\0"
"\0"
- /* _mesa_function_pool[24495]: PixelStorei (offset 250) */
+ /* _mesa_function_pool[23186]: TexCoord2i (offset 106) */
"ii\0"
- "glPixelStorei\0"
+ "glTexCoord2i\0"
"\0"
- /* _mesa_function_pool[24513]: IsBuffer (will be remapped) */
- "i\0"
- "glIsBuffer\0"
- "glIsBufferARB\0"
+ /* _mesa_function_pool[23203]: Color4ui (offset 37) */
+ "iiii\0"
+ "glColor4ui\0"
"\0"
- /* _mesa_function_pool[24541]: VertexAttrib2fNV (will be remapped) */
- "iff\0"
- "glVertexAttrib2fNV\0"
+ /* _mesa_function_pool[23220]: TexCoord2f (offset 104) */
+ "ff\0"
+ "glTexCoord2f\0"
"\0"
- /* _mesa_function_pool[24565]: FragmentMaterialiSGIX (dynamic) */
- "iii\0"
- "glFragmentMaterialiSGIX\0"
+ /* _mesa_function_pool[23237]: TexCoord2d (offset 102) */
+ "dd\0"
+ "glTexCoord2d\0"
"\0"
- /* _mesa_function_pool[24594]: VertexAttribI4ubv (will be remapped) */
- "ip\0"
- "glVertexAttribI4ubvEXT\0"
- "glVertexAttribI4ubv\0"
+ /* _mesa_function_pool[23254]: TexCoord2s (offset 108) */
+ "ii\0"
+ "glTexCoord2s\0"
"\0"
- /* _mesa_function_pool[24641]: EvalCoord2dv (offset 233) */
+ /* _mesa_function_pool[23271]: PointSizePointerOES (will be remapped) */
+ "iip\0"
+ "glPointSizePointerOES\0"
+ "\0"
+ /* _mesa_function_pool[23298]: Color4us (offset 39) */
+ "iiii\0"
+ "glColor4us\0"
+ "\0"
+ /* _mesa_function_pool[23315]: Color3bv (offset 10) */
"p\0"
- "glEvalCoord2dv\0"
+ "glColor3bv\0"
"\0"
- /* _mesa_function_pool[24659]: GenVertexArrays (will be remapped) */
- "ip\0"
- "glGenVertexArrays\0"
- "glGenVertexArraysOES\0"
+ /* _mesa_function_pool[23329]: PrimitiveRestartNV (will be remapped) */
"\0"
- /* _mesa_function_pool[24702]: ColorMaterial (offset 151) */
- "ii\0"
- "glColorMaterial\0"
+ "glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[24722]: InvalidateSubFramebuffer (will be remapped) */
- "iipiiii\0"
- "glInvalidateSubFramebuffer\0"
+ /* _mesa_function_pool[23352]: BindBufferOffsetEXT (will be remapped) */
+ "iiii\0"
+ "glBindBufferOffsetEXT\0"
"\0"
- /* _mesa_function_pool[24758]: SamplePatternSGIS (will be remapped) */
+ /* _mesa_function_pool[23380]: ProvokingVertex (will be remapped) */
"i\0"
- "glSamplePatternSGIS\0"
- "glSamplePatternEXT\0"
+ "glProvokingVertexEXT\0"
+ "glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[24800]: ColorP4ui (will be remapped) */
+ /* _mesa_function_pool[23422]: VertexAttribs4fvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs4fvNV\0"
+ "\0"
+ /* _mesa_function_pool[23448]: MapControlPointsNV (dynamic) */
+ "iiiiiiiip\0"
+ "glMapControlPointsNV\0"
+ "\0"
+ /* _mesa_function_pool[23480]: Vertex2i (offset 130) */
"ii\0"
- "glColorP4ui\0"
+ "glVertex2i\0"
+ "\0"
+ /* _mesa_function_pool[23495]: HintPGI (dynamic) */
+ "ii\0"
+ "glHintPGI\0"
"\0"
- /* _mesa_function_pool[24816]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[23509]: InterleavedArrays (offset 317) */
"iip\0"
- "glVertexAttribs1svNV\0"
+ "glInterleavedArrays\0"
"\0"
- /* _mesa_function_pool[24842]: DrawTexsOES (will be remapped) */
- "iiiii\0"
- "glDrawTexsOES\0"
+ /* _mesa_function_pool[23534]: RasterPos2fv (offset 65) */
+ "p\0"
+ "glRasterPos2fv\0"
"\0"
- /* _mesa_function_pool[24863]: Uniform2ui (will be remapped) */
- "iii\0"
- "glUniform2uiEXT\0"
- "glUniform2ui\0"
+ /* _mesa_function_pool[23552]: TexCoord1fv (offset 97) */
+ "p\0"
+ "glTexCoord1fv\0"
"\0"
- /* _mesa_function_pool[24897]: VertexAttrib1fvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib1fvNV\0"
+ /* _mesa_function_pool[23569]: PixelTransferf (offset 247) */
+ "if\0"
+ "glPixelTransferf\0"
"\0"
- /* _mesa_function_pool[24921]: TexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[23590]: MultiTexCoord4dv (offset 401) */
"ip\0"
- "glTexBumpParameterivATI\0"
+ "glMultiTexCoord4dv\0"
+ "glMultiTexCoord4dvARB\0"
"\0"
- /* _mesa_function_pool[24949]: GetSeparableFilter (offset 359) */
- "iiippp\0"
- "glGetSeparableFilter\0"
- "glGetSeparableFilterEXT\0"
+ /* _mesa_function_pool[23635]: ProgramEnvParameter4fvARB (will be remapped) */
+ "iip\0"
+ "glProgramEnvParameter4fvARB\0"
+ "glProgramParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[25002]: DeleteVertexArrays (will be remapped) */
- "ip\0"
- "glDeleteVertexArrays\0"
- "glDeleteVertexArraysAPPLE\0"
- "glDeleteVertexArraysOES\0"
+ /* _mesa_function_pool[23692]: RasterPos4fv (offset 81) */
+ "p\0"
+ "glRasterPos4fv\0"
"\0"
- /* _mesa_function_pool[25077]: SpriteParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[23710]: FragmentLightModeliSGIX (dynamic) */
"ii\0"
- "glSpriteParameteriSGIX\0"
+ "glFragmentLightModeliSGIX\0"
"\0"
- /* _mesa_function_pool[25104]: RequestResidentProgramsNV (will be remapped) */
- "ip\0"
- "glRequestResidentProgramsNV\0"
+ /* _mesa_function_pool[23740]: PushMatrix (offset 298) */
"\0"
- /* _mesa_function_pool[25136]: TexCoordP3uiv (will be remapped) */
- "ip\0"
- "glTexCoordP3uiv\0"
+ "glPushMatrix\0"
"\0"
- /* _mesa_function_pool[25156]: ReplacementCodeusSUN (dynamic) */
- "i\0"
- "glReplacementCodeusSUN\0"
+ /* _mesa_function_pool[23755]: EndList (offset 1) */
"\0"
- /* _mesa_function_pool[25182]: FeedbackBuffer (offset 194) */
- "iip\0"
- "glFeedbackBuffer\0"
- "\0"
- /* _mesa_function_pool[25204]: RasterPos2iv (offset 67) */
- "p\0"
- "glRasterPos2iv\0"
+ "glEndList\0"
"\0"
- /* _mesa_function_pool[25222]: TexImage1D (offset 182) */
- "iiiiiiip\0"
- "glTexImage1D\0"
+ /* _mesa_function_pool[23767]: DrawRangeElements (offset 338) */
+ "iiiiip\0"
+ "glDrawRangeElements\0"
+ "glDrawRangeElementsEXT\0"
"\0"
- /* _mesa_function_pool[25245]: TexEnvxv (will be remapped) */
+ /* _mesa_function_pool[23818]: GetTexGenxvOES (will be remapped) */
"iip\0"
- "glTexEnvxvOES\0"
- "glTexEnvxv\0"
+ "glGetTexGenxvOES\0"
"\0"
- /* _mesa_function_pool[25275]: ListParameterivSGIX (dynamic) */
- "iip\0"
- "glListParameterivSGIX\0"
+ /* _mesa_function_pool[23840]: GetHandleARB (will be remapped) */
+ "i\0"
+ "glGetHandleARB\0"
"\0"
- /* _mesa_function_pool[25302]: MultiDrawElementsEXT (will be remapped) */
- "ipipi\0"
- "glMultiDrawElements\0"
- "glMultiDrawElementsEXT\0"
+ /* _mesa_function_pool[23858]: VertexPointer (offset 321) */
+ "iiip\0"
+ "glVertexPointer\0"
"\0"
- /* _mesa_function_pool[25352]: Color3s (offset 17) */
+ /* _mesa_function_pool[23880]: BlendFunciARB (will be remapped) */
"iii\0"
- "glColor3s\0"
+ "glBlendFunciARB\0"
+ "glBlendFuncIndexedAMD\0"
"\0"
- /* _mesa_function_pool[25367]: MultiTexCoord3s (offset 398) */
- "iiii\0"
- "glMultiTexCoord3s\0"
- "glMultiTexCoord3sARB\0"
+ /* _mesa_function_pool[23923]: GlobalAlphaFactorbSUN (dynamic) */
+ "i\0"
+ "glGlobalAlphaFactorbSUN\0"
"\0"
- /* _mesa_function_pool[25412]: WeightusvARB (dynamic) */
- "ip\0"
- "glWeightusvARB\0"
+ /* _mesa_function_pool[23950]: Uniform2ui (will be remapped) */
+ "iii\0"
+ "glUniform2uiEXT\0"
+ "glUniform2ui\0"
"\0"
- /* _mesa_function_pool[25431]: TexCoordPointer (offset 320) */
- "iiip\0"
- "glTexCoordPointer\0"
+ /* _mesa_function_pool[23984]: ScissorIndexed (will be remapped) */
+ "iiiii\0"
+ "glScissorIndexed\0"
"\0"
- /* _mesa_function_pool[25455]: GetnSeparableFilterARB (will be remapped) */
- "iiiipipp\0"
- "glGetnSeparableFilterARB\0"
+ /* _mesa_function_pool[24008]: End (offset 43) */
"\0"
- /* _mesa_function_pool[25490]: InvalidateBufferData (will be remapped) */
- "i\0"
- "glInvalidateBufferData\0"
+ "glEnd\0"
"\0"
- /* _mesa_function_pool[25516]: Color3i (offset 15) */
- "iii\0"
- "glColor3i\0"
+ /* _mesa_function_pool[24016]: GetSamplerParameteriv (will be remapped) */
+ "iip\0"
+ "glGetSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[25531]: FrontFace (offset 157) */
+ /* _mesa_function_pool[24045]: GenProgramPipelines (will be remapped) */
+ "ip\0"
+ "glGenProgramPipelines\0"
+ "\0"
+ /* _mesa_function_pool[24071]: Enable (offset 215) */
"i\0"
- "glFrontFace\0"
+ "glEnable\0"
"\0"
- /* _mesa_function_pool[25546]: EvalCoord2d (offset 232) */
- "dd\0"
- "glEvalCoord2d\0"
+ /* _mesa_function_pool[24083]: IsProgramPipeline (will be remapped) */
+ "i\0"
+ "glIsProgramPipeline\0"
"\0"
- /* _mesa_function_pool[25564]: EvalCoord2f (offset 234) */
- "ff\0"
- "glEvalCoord2f\0"
+ /* _mesa_function_pool[24106]: ShaderBinary (will be remapped) */
+ "ipipi\0"
+ "glShaderBinary\0"
+ "\0"
+ /* _mesa_function_pool[24128]: GetFragmentMaterialivSGIX (dynamic) */
+ "iip\0"
+ "glGetFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[25582]: Color3b (offset 9) */
+ /* _mesa_function_pool[24161]: WeightPointerARB (dynamic) */
+ "iiip\0"
+ "glWeightPointerARB\0"
+ "glWeightPointerOES\0"
+ "\0"
+ /* _mesa_function_pool[24205]: Normal3x (will be remapped) */
"iii\0"
- "glColor3b\0"
+ "glNormal3xOES\0"
+ "glNormal3x\0"
"\0"
- /* _mesa_function_pool[25597]: ExecuteProgramNV (will be remapped) */
- "iip\0"
- "glExecuteProgramNV\0"
+ /* _mesa_function_pool[24235]: VertexAttrib4fARB (will be remapped) */
+ "iffff\0"
+ "glVertexAttrib4f\0"
+ "glVertexAttrib4fARB\0"
"\0"
- /* _mesa_function_pool[25621]: Color3f (offset 13) */
- "fff\0"
- "glColor3f\0"
+ /* _mesa_function_pool[24279]: ReadnPixelsARB (will be remapped) */
+ "iiiiiiip\0"
+ "glReadnPixelsARB\0"
"\0"
- /* _mesa_function_pool[25636]: LightEnviSGIX (dynamic) */
- "ii\0"
- "glLightEnviSGIX\0"
+ /* _mesa_function_pool[24306]: InvalidateTexSubImage (will be remapped) */
+ "iiiiiiii\0"
+ "glInvalidateTexSubImage\0"
"\0"
- /* _mesa_function_pool[25656]: Color3d (offset 11) */
- "ddd\0"
- "glColor3d\0"
+ /* _mesa_function_pool[24340]: Normal3s (offset 60) */
+ "iii\0"
+ "glNormal3s\0"
"\0"
- /* _mesa_function_pool[25671]: GetVertexAttribdv (will be remapped) */
+ /* _mesa_function_pool[24356]: Materialxv (will be remapped) */
"iip\0"
- "glGetVertexAttribdv\0"
- "glGetVertexAttribdvARB\0"
+ "glMaterialxvOES\0"
+ "glMaterialxv\0"
"\0"
- /* _mesa_function_pool[25719]: VDPAUUnregisterSurfaceNV (will be remapped) */
- "i\0"
- "glVDPAUUnregisterSurfaceNV\0"
+ /* _mesa_function_pool[24390]: Normal3i (offset 58) */
+ "iii\0"
+ "glNormal3i\0"
"\0"
- /* _mesa_function_pool[25749]: Normal3dv (offset 55) */
- "p\0"
- "glNormal3dv\0"
+ /* _mesa_function_pool[24406]: ProgramNamedParameter4fvNV (will be remapped) */
+ "iipp\0"
+ "glProgramNamedParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[25764]: Lightf (offset 159) */
- "iif\0"
- "glLightf\0"
+ /* _mesa_function_pool[24441]: Normal3b (offset 52) */
+ "iii\0"
+ "glNormal3b\0"
"\0"
- /* _mesa_function_pool[25778]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[24457]: Normal3d (offset 54) */
+ "ddd\0"
+ "glNormal3d\0"
"\0"
- "glFinishTextureSUNX\0"
+ /* _mesa_function_pool[24473]: Normal3f (offset 56) */
+ "fff\0"
+ "glNormal3f\0"
"\0"
- /* _mesa_function_pool[25800]: MatrixMode (offset 293) */
+ /* _mesa_function_pool[24489]: Indexi (offset 48) */
"i\0"
- "glMatrixMode\0"
+ "glIndexi\0"
"\0"
- /* _mesa_function_pool[25816]: GetPixelMapusv (offset 273) */
- "ip\0"
- "glGetPixelMapusv\0"
+ /* _mesa_function_pool[24501]: Uniform1uiv (will be remapped) */
+ "iip\0"
+ "glUniform1uivEXT\0"
+ "glUniform1uiv\0"
"\0"
- /* _mesa_function_pool[25837]: Lighti (offset 161) */
+ /* _mesa_function_pool[24537]: VertexAttribI2uiEXT (will be remapped) */
"iii\0"
- "glLighti\0"
+ "glVertexAttribI2uiEXT\0"
+ "glVertexAttribI2ui\0"
"\0"
- /* _mesa_function_pool[25851]: VertexAttribPointerNV (will be remapped) */
- "iiiip\0"
- "glVertexAttribPointerNV\0"
+ /* _mesa_function_pool[24583]: IsRenderbuffer (will be remapped) */
+ "i\0"
+ "glIsRenderbuffer\0"
+ "glIsRenderbufferEXT\0"
+ "glIsRenderbufferOES\0"
"\0"
- /* _mesa_function_pool[25882]: GenFramebuffers (will be remapped) */
+ /* _mesa_function_pool[24643]: NormalP3uiv (will be remapped) */
"ip\0"
- "glGenFramebuffers\0"
- "glGenFramebuffersEXT\0"
- "glGenFramebuffersOES\0"
+ "glNormalP3uiv\0"
"\0"
- /* _mesa_function_pool[25946]: GenBuffers (will be remapped) */
- "ip\0"
- "glGenBuffers\0"
- "glGenBuffersARB\0"
+ /* _mesa_function_pool[24661]: Indexf (offset 46) */
+ "f\0"
+ "glIndexf\0"
"\0"
- /* _mesa_function_pool[25979]: VDPAUMapSurfacesNV (will be remapped) */
- "ip\0"
- "glVDPAUMapSurfacesNV\0"
+ /* _mesa_function_pool[24673]: Indexd (offset 44) */
+ "d\0"
+ "glIndexd\0"
+ "\0"
+ /* _mesa_function_pool[24685]: GetMaterialiv (offset 270) */
+ "iip\0"
+ "glGetMaterialiv\0"
"\0"
- /* _mesa_function_pool[26004]: ClearDepthx (will be remapped) */
+ /* _mesa_function_pool[24706]: Indexs (offset 50) */
"i\0"
- "glClearDepthxOES\0"
- "glClearDepthx\0"
+ "glIndexs\0"
"\0"
- /* _mesa_function_pool[26038]: Uniform4uiv (will be remapped) */
+ /* _mesa_function_pool[24718]: MultiTexCoordP1uiv (will be remapped) */
"iip\0"
- "glUniform4uivEXT\0"
- "glUniform4uiv\0"
+ "glMultiTexCoordP1uiv\0"
"\0"
- /* _mesa_function_pool[26074]: IsFramebuffer (will be remapped) */
+ /* _mesa_function_pool[24744]: ConvolutionFilter2D (offset 349) */
+ "iiiiiip\0"
+ "glConvolutionFilter2D\0"
+ "glConvolutionFilter2DEXT\0"
+ "\0"
+ /* _mesa_function_pool[24800]: Vertex2d (offset 126) */
+ "dd\0"
+ "glVertex2d\0"
+ "\0"
+ /* _mesa_function_pool[24815]: Vertex2f (offset 128) */
+ "ff\0"
+ "glVertex2f\0"
+ "\0"
+ /* _mesa_function_pool[24830]: Color4bv (offset 26) */
+ "p\0"
+ "glColor4bv\0"
+ "\0"
+ /* _mesa_function_pool[24844]: VertexAttrib2fvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib2fvNV\0"
+ "\0"
+ /* _mesa_function_pool[24868]: Vertex2s (offset 132) */
+ "ii\0"
+ "glVertex2s\0"
+ "\0"
+ /* _mesa_function_pool[24883]: ActiveTexture (offset 374) */
"i\0"
- "glIsFramebuffer\0"
- "glIsFramebufferEXT\0"
- "glIsFramebufferOES\0"
+ "glActiveTexture\0"
+ "glActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[26131]: PopDebugGroup (will be remapped) */
+ /* _mesa_function_pool[24921]: GlobalAlphaFactorfSUN (dynamic) */
+ "f\0"
+ "glGlobalAlphaFactorfSUN\0"
"\0"
- "glPopDebugGroup\0"
+ /* _mesa_function_pool[24948]: ColorP4uiv (will be remapped) */
+ "ip\0"
+ "glColorP4uiv\0"
"\0"
- /* _mesa_function_pool[26149]: PixelTransformParameterfEXT (dynamic) */
- "iif\0"
- "glPixelTransformParameterfEXT\0"
+ /* _mesa_function_pool[24965]: DrawTexxOES (will be remapped) */
+ "iiiii\0"
+ "glDrawTexxOES\0"
"\0"
- /* _mesa_function_pool[26184]: BlendEquationSeparate (will be remapped) */
+ /* _mesa_function_pool[24986]: SetFenceNV (dynamic) */
"ii\0"
- "glBlendEquationSeparate\0"
- "glBlendEquationSeparateEXT\0"
- "glBlendEquationSeparateATI\0"
- "glBlendEquationSeparateOES\0"
+ "glSetFenceNV\0"
"\0"
- /* _mesa_function_pool[26293]: Lightx (will be remapped) */
- "iii\0"
- "glLightxOES\0"
- "glLightx\0"
+ /* _mesa_function_pool[25003]: PixelTexGenParameterivSGIS (dynamic) */
+ "ip\0"
+ "glPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[26319]: PixelTransformParameteriEXT (dynamic) */
+ /* _mesa_function_pool[25036]: MultiTexCoordP3ui (will be remapped) */
"iii\0"
- "glPixelTransformParameteriEXT\0"
+ "glMultiTexCoordP3ui\0"
"\0"
- /* _mesa_function_pool[26354]: GetDoublev (offset 260) */
+ /* _mesa_function_pool[25061]: GetAttribLocation (will be remapped) */
"ip\0"
- "glGetDoublev\0"
+ "glGetAttribLocation\0"
+ "glGetAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[26371]: MultiTexCoordP4ui (will be remapped) */
- "iii\0"
- "glMultiTexCoordP4ui\0"
+ /* _mesa_function_pool[25108]: GetCombinerStageParameterfvNV (dynamic) */
+ "iip\0"
+ "glGetCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[26396]: GetObjectLabel (will be remapped) */
- "iiipp\0"
- "glGetObjectLabel\0"
+ /* _mesa_function_pool[25145]: DrawBuffer (offset 202) */
+ "i\0"
+ "glDrawBuffer\0"
"\0"
- /* _mesa_function_pool[26420]: MultMatrixd (offset 295) */
- "p\0"
- "glMultMatrixd\0"
+ /* _mesa_function_pool[25161]: MultiTexCoord2dv (offset 385) */
+ "ip\0"
+ "glMultiTexCoord2dv\0"
+ "glMultiTexCoord2dvARB\0"
"\0"
- /* _mesa_function_pool[26437]: MultMatrixf (offset 294) */
- "p\0"
- "glMultMatrixf\0"
+ /* _mesa_function_pool[25206]: IsSampler (will be remapped) */
+ "i\0"
+ "glIsSampler\0"
"\0"
- /* _mesa_function_pool[26454]: TextureMaterialEXT (dynamic) */
+ /* _mesa_function_pool[25221]: BlendFunc (offset 241) */
"ii\0"
- "glTextureMaterialEXT\0"
+ "glBlendFunc\0"
"\0"
- /* _mesa_function_pool[26479]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
- "ffiiiifff\0"
- "glTexCoord2fColor4ubVertex3fSUN\0"
+ /* _mesa_function_pool[25237]: LineStipple (offset 167) */
+ "ii\0"
+ "glLineStipple\0"
"\0"
- /* _mesa_function_pool[26522]: VertexAttrib1d (will be remapped) */
- "id\0"
- "glVertexAttrib1d\0"
- "glVertexAttrib1dARB\0"
+ /* _mesa_function_pool[25255]: Tangent3fvEXT (dynamic) */
+ "p\0"
+ "glTangent3fvEXT\0"
"\0"
- /* _mesa_function_pool[26563]: CompressedTexImage1D (will be remapped) */
- "iiiiiip\0"
- "glCompressedTexImage1D\0"
- "glCompressedTexImage1DARB\0"
+ /* _mesa_function_pool[25274]: ColorMaterial (offset 151) */
+ "ii\0"
+ "glColorMaterial\0"
"\0"
- /* _mesa_function_pool[26621]: UnlockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[25294]: RasterPos3sv (offset 77) */
+ "p\0"
+ "glRasterPos3sv\0"
"\0"
- "glUnlockArraysEXT\0"
+ /* _mesa_function_pool[25312]: TexCoordP2ui (will be remapped) */
+ "ii\0"
+ "glTexCoordP2ui\0"
"\0"
- /* _mesa_function_pool[26641]: TexBufferRange (will be remapped) */
- "iiiii\0"
- "glTexBufferRange\0"
+ /* _mesa_function_pool[25331]: TexParameteriv (offset 181) */
+ "iip\0"
+ "glTexParameteriv\0"
"\0"
- /* _mesa_function_pool[26665]: MultiTexCoord4fvARB (offset 403) */
+ /* _mesa_function_pool[25353]: VertexAttrib3fvARB (will be remapped) */
"ip\0"
- "glMultiTexCoord4fv\0"
- "glMultiTexCoord4fvARB\0"
+ "glVertexAttrib3fv\0"
+ "glVertexAttrib3fvARB\0"
"\0"
- /* _mesa_function_pool[26710]: TagSampleBufferSGIX (dynamic) */
+ /* _mesa_function_pool[25396]: ProgramUniformMatrix3x4fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix3x4fv\0"
"\0"
- "glTagSampleBufferSGIX\0"
+ /* _mesa_function_pool[25431]: PixelTransformParameterfEXT (dynamic) */
+ "iif\0"
+ "glPixelTransformParameterfEXT\0"
+ "\0"
+ /* _mesa_function_pool[25466]: TextureColorMaskSGIS (dynamic) */
+ "iiii\0"
+ "glTextureColorMaskSGIS\0"
"\0"
- /* _mesa_function_pool[26734]: UniformMatrix2x3fv (will be remapped) */
+ /* _mesa_function_pool[25495]: GetColorTable (offset 343) */
"iiip\0"
- "glUniformMatrix2x3fv\0"
+ "glGetColorTable\0"
+ "glGetColorTableSGI\0"
+ "glGetColorTableEXT\0"
"\0"
- /* _mesa_function_pool[26761]: SamplerParameteri (will be remapped) */
+ /* _mesa_function_pool[25555]: TexCoord3i (offset 114) */
"iii\0"
- "glSamplerParameteri\0"
+ "glTexCoord3i\0"
"\0"
- /* _mesa_function_pool[26786]: SamplerParameterf (will be remapped) */
- "iif\0"
- "glSamplerParameterf\0"
+ /* _mesa_function_pool[25573]: CopyColorTable (offset 342) */
+ "iiiii\0"
+ "glCopyColorTable\0"
+ "glCopyColorTableSGI\0"
"\0"
- /* _mesa_function_pool[26811]: CombinerParameteriNV (dynamic) */
- "ii\0"
- "glCombinerParameteriNV\0"
+ /* _mesa_function_pool[25617]: Frustum (offset 289) */
+ "dddddd\0"
+ "glFrustum\0"
"\0"
- /* _mesa_function_pool[26838]: VertexAttrib1s (will be remapped) */
- "ii\0"
- "glVertexAttrib1s\0"
- "glVertexAttrib1sARB\0"
+ /* _mesa_function_pool[25635]: TexCoord3d (offset 110) */
+ "ddd\0"
+ "glTexCoord3d\0"
"\0"
- /* _mesa_function_pool[26879]: EnableVertexAttribArray (will be remapped) */
- "i\0"
- "glEnableVertexAttribArray\0"
- "glEnableVertexAttribArrayARB\0"
+ /* _mesa_function_pool[25653]: TexCoord3f (offset 112) */
+ "fff\0"
+ "glTexCoord3f\0"
"\0"
- /* _mesa_function_pool[26937]: FrameZoomSGIX (dynamic) */
- "i\0"
- "glFrameZoomSGIX\0"
+ /* _mesa_function_pool[25671]: DepthRangeArrayv (will be remapped) */
+ "iip\0"
+ "glDepthRangeArrayv\0"
"\0"
- /* _mesa_function_pool[26956]: Normal3fVertex3fvSUN (dynamic) */
- "pp\0"
- "glNormal3fVertex3fvSUN\0"
+ /* _mesa_function_pool[25695]: DeleteTextures (offset 327) */
+ "ip\0"
+ "glDeleteTextures\0"
+ "glDeleteTexturesEXT\0"
"\0"
- /* _mesa_function_pool[26983]: Tangent3dvEXT (dynamic) */
- "p\0"
- "glTangent3dvEXT\0"
+ /* _mesa_function_pool[25736]: TexCoordPointerEXT (will be remapped) */
+ "iiiip\0"
+ "glTexCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[27002]: MultiDrawElementsIndirect (will be remapped) */
- "iipii\0"
- "glMultiDrawElementsIndirect\0"
+ /* _mesa_function_pool[25764]: TexCoord3s (offset 116) */
+ "iii\0"
+ "glTexCoord3s\0"
"\0"
- /* _mesa_function_pool[27037]: RasterPos4sv (offset 85) */
- "p\0"
- "glRasterPos4sv\0"
+ /* _mesa_function_pool[25782]: TexCoord4fVertex4fSUN (dynamic) */
+ "ffffffff\0"
+ "glTexCoord4fVertex4fSUN\0"
+ "\0"
+ /* _mesa_function_pool[25816]: CombinerStageParameterfvNV (dynamic) */
+ "iip\0"
+ "glCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[27055]: VertexAttrib3fvARB (will be remapped) */
+ /* _mesa_function_pool[25850]: GenPerfMonitorsAMD (will be remapped) */
"ip\0"
- "glVertexAttrib3fv\0"
- "glVertexAttrib3fvARB\0"
+ "glGenPerfMonitorsAMD\0"
"\0"
- /* _mesa_function_pool[27098]: ClearColor (offset 206) */
+ /* _mesa_function_pool[25875]: ClearAccum (offset 204) */
"ffff\0"
- "glClearColor\0"
- "\0"
- /* _mesa_function_pool[27117]: Materialx (will be remapped) */
- "iii\0"
- "glMaterialxOES\0"
- "glMaterialx\0"
- "\0"
- /* _mesa_function_pool[27149]: GetSynciv (will be remapped) */
- "iiipp\0"
- "glGetSynciv\0"
+ "glClearAccum\0"
"\0"
- /* _mesa_function_pool[27168]: VertexAttrib1svNV (will be remapped) */
- "ip\0"
- "glVertexAttrib1svNV\0"
+ /* _mesa_function_pool[25894]: DeformSGIX (dynamic) */
+ "i\0"
+ "glDeformSGIX\0"
"\0"
- /* _mesa_function_pool[27192]: SecondaryColor3ubv (will be remapped) */
+ /* _mesa_function_pool[25910]: TexCoord4iv (offset 123) */
"p\0"
- "glSecondaryColor3ubv\0"
- "glSecondaryColor3ubvEXT\0"
+ "glTexCoord4iv\0"
"\0"
- /* _mesa_function_pool[27240]: PointParameteri (will be remapped) */
- "ii\0"
- "glPointParameteri\0"
- "glPointParameteriNV\0"
+ /* _mesa_function_pool[25927]: TexStorage3D (will be remapped) */
+ "iiiiii\0"
+ "glTexStorage3D\0"
"\0"
- /* _mesa_function_pool[27282]: PointParameterf (will be remapped) */
- "if\0"
- "glPointParameterf\0"
- "glPointParameterfARB\0"
- "glPointParameterfEXT\0"
- "glPointParameterfSGIS\0"
+ /* _mesa_function_pool[25950]: FramebufferTexture3D (will be remapped) */
+ "iiiiii\0"
+ "glFramebufferTexture3D\0"
+ "glFramebufferTexture3DEXT\0"
+ "glFramebufferTexture3DOES\0"
"\0"
- /* _mesa_function_pool[27368]: GlobalAlphaFactorsSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactorsSUN\0"
+ /* _mesa_function_pool[26033]: FragmentLightModelfvSGIX (dynamic) */
+ "ip\0"
+ "glFragmentLightModelfvSGIX\0"
"\0"
- /* _mesa_function_pool[27395]: GetDebugMessageLog (will be remapped) */
- "iipppppp\0"
- "glGetDebugMessageLog\0"
+ /* _mesa_function_pool[26064]: GetBufferParameteriv (will be remapped) */
+ "iip\0"
+ "glGetBufferParameteriv\0"
+ "glGetBufferParameterivARB\0"
+ "\0"
+ /* _mesa_function_pool[26118]: VertexAttrib2fNV (will be remapped) */
+ "iff\0"
+ "glVertexAttrib2fNV\0"
"\0"
- /* _mesa_function_pool[27426]: TexEnviv (offset 187) */
+ /* _mesa_function_pool[26142]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
- "glTexEnviv\0"
+ "glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[27442]: TexSubImage3D (offset 372) */
- "iiiiiiiiiip\0"
- "glTexSubImage3D\0"
- "glTexSubImage3DEXT\0"
- "glTexSubImage3DOES\0"
+ /* _mesa_function_pool[26172]: CopyTexImage2D (offset 324) */
+ "iiiiiiii\0"
+ "glCopyTexImage2D\0"
+ "glCopyTexImage2DEXT\0"
"\0"
- /* _mesa_function_pool[27509]: Tangent3fEXT (dynamic) */
- "fff\0"
- "glTangent3fEXT\0"
+ /* _mesa_function_pool[26219]: DebugMessageInsertARB (will be remapped) */
+ "iiiiip\0"
+ "glDebugMessageInsertARB\0"
"\0"
- /* _mesa_function_pool[27529]: DeformationMap3fSGIX (dynamic) */
- "iffiiffiiffiip\0"
- "glDeformationMap3fSGIX\0"
+ /* _mesa_function_pool[26251]: Vertex3fv (offset 137) */
+ "p\0"
+ "glVertex3fv\0"
"\0"
- /* _mesa_function_pool[27568]: BeginPerfMonitorAMD (will be remapped) */
- "i\0"
- "glBeginPerfMonitorAMD\0"
+ /* _mesa_function_pool[26266]: WindowPos4dvMESA (will be remapped) */
+ "p\0"
+ "glWindowPos4dvMESA\0"
"\0"
- /* _mesa_function_pool[27593]: MatrixIndexubvARB (dynamic) */
+ /* _mesa_function_pool[26288]: CreateShaderProgramEXT (will be remapped) */
"ip\0"
- "glMatrixIndexubvARB\0"
- "\0"
- /* _mesa_function_pool[27617]: Color4fNormal3fVertex3fSUN (dynamic) */
- "ffffffffff\0"
- "glColor4fNormal3fVertex3fSUN\0"
+ "glCreateShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[27658]: PixelTexGenParameterfSGIS (dynamic) */
- "if\0"
- "glPixelTexGenParameterfSGIS\0"
+ /* _mesa_function_pool[26317]: VertexAttribs1dvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs1dvNV\0"
"\0"
- /* _mesa_function_pool[27690]: CreateShader (will be remapped) */
+ /* _mesa_function_pool[26343]: IsQuery (will be remapped) */
"i\0"
- "glCreateShader\0"
+ "glIsQuery\0"
+ "glIsQueryARB\0"
"\0"
- /* _mesa_function_pool[27708]: GetColorTableParameterfv (offset 344) */
+ /* _mesa_function_pool[26369]: EdgeFlagPointerEXT (will be remapped) */
"iip\0"
- "glGetColorTableParameterfv\0"
- "glGetColorTableParameterfvSGI\0"
- "glGetColorTableParameterfvEXT\0"
- "\0"
- /* _mesa_function_pool[27800]: FragmentLightModelfvSGIX (dynamic) */
- "ip\0"
- "glFragmentLightModelfvSGIX\0"
- "\0"
- /* _mesa_function_pool[27831]: FramebufferTexture2D (will be remapped) */
- "iiiii\0"
- "glFramebufferTexture2D\0"
- "glFramebufferTexture2DEXT\0"
- "glFramebufferTexture2DOES\0"
+ "glEdgeFlagPointerEXT\0"
"\0"
- /* _mesa_function_pool[27913]: Bitmap (offset 8) */
- "iiffffp\0"
- "glBitmap\0"
+ /* _mesa_function_pool[26395]: VertexAttribs2svNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs2svNV\0"
"\0"
- /* _mesa_function_pool[27931]: MultiTexCoord3fARB (offset 394) */
- "ifff\0"
- "glMultiTexCoord3f\0"
- "glMultiTexCoord3fARB\0"
+ /* _mesa_function_pool[26421]: CreateShaderProgramv (will be remapped) */
+ "iip\0"
+ "glCreateShaderProgramv\0"
"\0"
- /* _mesa_function_pool[27976]: GetTexLevelParameterfv (offset 284) */
- "iiip\0"
- "glGetTexLevelParameterfv\0"
+ /* _mesa_function_pool[26449]: BlendEquationiARB (will be remapped) */
+ "ii\0"
+ "glBlendEquationiARB\0"
+ "glBlendEquationIndexedAMD\0"
"\0"
- /* _mesa_function_pool[28007]: GetPixelTexGenParameterfvSGIS (dynamic) */
+ /* _mesa_function_pool[26499]: VertexAttribI4uivEXT (will be remapped) */
"ip\0"
- "glGetPixelTexGenParameterfvSGIS\0"
+ "glVertexAttribI4uivEXT\0"
+ "glVertexAttribI4uiv\0"
"\0"
- /* _mesa_function_pool[28043]: CheckFramebufferStatus (will be remapped) */
+ /* _mesa_function_pool[26546]: PointSizex (will be remapped) */
"i\0"
- "glCheckFramebufferStatus\0"
- "glCheckFramebufferStatusEXT\0"
- "glCheckFramebufferStatusOES\0"
+ "glPointSizexOES\0"
+ "glPointSizex\0"
"\0"
- /* _mesa_function_pool[28127]: DrawTransformFeedbackStream (will be remapped) */
- "iii\0"
- "glDrawTransformFeedbackStream\0"
+ /* _mesa_function_pool[26578]: PolygonMode (offset 174) */
+ "ii\0"
+ "glPolygonMode\0"
"\0"
- /* _mesa_function_pool[28162]: Vertex2sv (offset 133) */
+ /* _mesa_function_pool[26596]: SecondaryColor3iv (will be remapped) */
"p\0"
- "glVertex2sv\0"
+ "glSecondaryColor3iv\0"
+ "glSecondaryColor3ivEXT\0"
+ "\0"
+ /* _mesa_function_pool[26642]: VertexAttribI1iEXT (will be remapped) */
+ "ii\0"
+ "glVertexAttribI1iEXT\0"
+ "glVertexAttribI1i\0"
"\0"
- /* _mesa_function_pool[28177]: GetIntegerv (offset 263) */
+ /* _mesa_function_pool[26685]: VertexAttrib4Niv (will be remapped) */
"ip\0"
- "glGetIntegerv\0"
+ "glVertexAttrib4Niv\0"
+ "glVertexAttrib4NivARB\0"
+ "\0"
+ /* _mesa_function_pool[26730]: GetMapAttribParameterivNV (dynamic) */
+ "iiip\0"
+ "glGetMapAttribParameterivNV\0"
"\0"
- /* _mesa_function_pool[28195]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[26764]: GetnUniformdvARB (will be remapped) */
+ "iiip\0"
+ "glGetnUniformdvARB\0"
+ "\0"
+ /* _mesa_function_pool[26789]: LinkProgram (will be remapped) */
"i\0"
- "glGenFragmentShadersATI\0"
+ "glLinkProgram\0"
+ "glLinkProgramARB\0"
"\0"
- /* _mesa_function_pool[28222]: GetShaderSource (will be remapped) */
- "iipp\0"
- "glGetShaderSource\0"
- "glGetShaderSourceARB\0"
+ /* _mesa_function_pool[26823]: ProgramUniform4f (will be remapped) */
+ "iiffff\0"
+ "glProgramUniform4f\0"
"\0"
- /* _mesa_function_pool[28267]: GetTexBumpParameterfvATI (will be remapped) */
- "ip\0"
- "glGetTexBumpParameterfvATI\0"
+ /* _mesa_function_pool[26850]: ProgramUniform4i (will be remapped) */
+ "iiiiii\0"
+ "glProgramUniform4i\0"
"\0"
- /* _mesa_function_pool[28298]: BindProgramARB (will be remapped) */
- "ii\0"
- "glBindProgramARB\0"
- "glBindProgramNV\0"
+ /* _mesa_function_pool[26877]: ListParameterfvSGIX (dynamic) */
+ "iip\0"
+ "glListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[28335]: GetnMapdvARB (will be remapped) */
- "iiip\0"
- "glGetnMapdvARB\0"
+ /* _mesa_function_pool[26904]: VertexAttrib4d (will be remapped) */
+ "idddd\0"
+ "glVertexAttrib4d\0"
+ "glVertexAttrib4dARB\0"
"\0"
- /* _mesa_function_pool[28356]: VertexAttrib3sNV (will be remapped) */
+ /* _mesa_function_pool[26948]: WindowPos4sMESA (will be remapped) */
"iiii\0"
- "glVertexAttrib3sNV\0"
+ "glWindowPos4sMESA\0"
+ "\0"
+ /* _mesa_function_pool[26972]: VertexAttrib4s (will be remapped) */
+ "iiiii\0"
+ "glVertexAttrib4s\0"
+ "glVertexAttrib4sARB\0"
"\0"
- /* _mesa_function_pool[28381]: VertexAttribI2uivEXT (will be remapped) */
+ /* _mesa_function_pool[27016]: VertexAttrib1dvNV (will be remapped) */
"ip\0"
- "glVertexAttribI2uivEXT\0"
- "glVertexAttribI2uiv\0"
+ "glVertexAttrib1dvNV\0"
"\0"
- /* _mesa_function_pool[28428]: GetProgramEnvParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[27040]: ReplacementCodePointerSUN (dynamic) */
"iip\0"
- "glGetProgramEnvParameterfvARB\0"
+ "glReplacementCodePointerSUN\0"
"\0"
- /* _mesa_function_pool[28463]: GetTrackMatrixivNV (will be remapped) */
+ /* _mesa_function_pool[27073]: TexStorage3DMultisample (will be remapped) */
+ "iiiiiii\0"
+ "glTexStorage3DMultisample\0"
+ "\0"
+ /* _mesa_function_pool[27108]: Binormal3bvEXT (dynamic) */
+ "p\0"
+ "glBinormal3bvEXT\0"
+ "\0"
+ /* _mesa_function_pool[27128]: SamplerParameteriv (will be remapped) */
+ "iip\0"
+ "glSamplerParameteriv\0"
+ "\0"
+ /* _mesa_function_pool[27154]: VertexAttribP3uiv (will be remapped) */
"iiip\0"
- "glGetTrackMatrixivNV\0"
+ "glVertexAttribP3uiv\0"
"\0"
- /* _mesa_function_pool[28490]: VertexAttrib3svNV (will be remapped) */
+ /* _mesa_function_pool[27180]: ScissorIndexedv (will be remapped) */
"ip\0"
- "glVertexAttrib3svNV\0"
+ "glScissorIndexedv\0"
"\0"
- /* _mesa_function_pool[28514]: GetActiveUniform (will be remapped) */
- "iiipppp\0"
- "glGetActiveUniform\0"
- "glGetActiveUniformARB\0"
+ /* _mesa_function_pool[27202]: Color4ubVertex2fSUN (dynamic) */
+ "iiiiff\0"
+ "glColor4ubVertex2fSUN\0"
"\0"
- /* _mesa_function_pool[28564]: DeleteBuffers (will be remapped) */
- "ip\0"
- "glDeleteBuffers\0"
- "glDeleteBuffersARB\0"
+ /* _mesa_function_pool[27232]: FragmentColorMaterialSGIX (dynamic) */
+ "ii\0"
+ "glFragmentColorMaterialSGIX\0"
"\0"
- /* _mesa_function_pool[28603]: AlphaFuncx (will be remapped) */
+ /* _mesa_function_pool[27264]: GetStringi (will be remapped) */
"ii\0"
- "glAlphaFuncxOES\0"
- "glAlphaFuncx\0"
+ "glGetStringi\0"
"\0"
- /* _mesa_function_pool[28636]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
- "ffffffff\0"
- "glTexCoord2fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[27281]: VertexAttrib4dv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4dv\0"
+ "glVertexAttrib4dvARB\0"
+ "\0"
+ /* _mesa_function_pool[27324]: EvalCoord2dv (offset 233) */
+ "p\0"
+ "glEvalCoord2dv\0"
+ "\0"
+ /* _mesa_function_pool[27342]: VertexAttrib1fNV (will be remapped) */
+ "if\0"
+ "glVertexAttrib1fNV\0"
+ "\0"
+ /* _mesa_function_pool[27365]: CompressedTexSubImage1D (will be remapped) */
+ "iiiiiip\0"
+ "glCompressedTexSubImage1D\0"
+ "glCompressedTexSubImage1DARB\0"
+ "\0"
+ /* _mesa_function_pool[27429]: GetSeparableFilter (offset 359) */
+ "iiippp\0"
+ "glGetSeparableFilter\0"
+ "glGetSeparableFilterEXT\0"
+ "\0"
+ /* _mesa_function_pool[27482]: ReplacementCodeusSUN (dynamic) */
+ "i\0"
+ "glReplacementCodeusSUN\0"
"\0"
- /* _mesa_function_pool[28678]: GetTexEnviv (offset 277) */
+ /* _mesa_function_pool[27508]: FeedbackBuffer (offset 194) */
"iip\0"
- "glGetTexEnviv\0"
+ "glFeedbackBuffer\0"
"\0"
- /* _mesa_function_pool[28697]: DrawTexivOES (will be remapped) */
+ /* _mesa_function_pool[27530]: RasterPos2iv (offset 67) */
"p\0"
- "glDrawTexivOES\0"
+ "glRasterPos2iv\0"
"\0"
- /* _mesa_function_pool[28715]: GetBufferSubData (will be remapped) */
- "iiip\0"
- "glGetBufferSubData\0"
- "glGetBufferSubDataARB\0"
+ /* _mesa_function_pool[27548]: TexImage1D (offset 182) */
+ "iiiiiiip\0"
+ "glTexImage1D\0"
"\0"
- /* _mesa_function_pool[28762]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
- "ip\0"
- "glEGLImageTargetRenderbufferStorageOES\0"
+ /* _mesa_function_pool[27571]: MultiDrawElementsEXT (will be remapped) */
+ "ipipi\0"
+ "glMultiDrawElements\0"
+ "glMultiDrawElementsEXT\0"
"\0"
- /* _mesa_function_pool[28805]: VertexAttribI2ivEXT (will be remapped) */
- "ip\0"
- "glVertexAttribI2ivEXT\0"
- "glVertexAttribI2iv\0"
+ /* _mesa_function_pool[27621]: GetnSeparableFilterARB (will be remapped) */
+ "iiiipipp\0"
+ "glGetnSeparableFilterARB\0"
"\0"
- /* _mesa_function_pool[28850]: PopClientAttrib (offset 334) */
+ /* _mesa_function_pool[27656]: FrontFace (offset 157) */
+ "i\0"
+ "glFrontFace\0"
"\0"
- "glPopClientAttrib\0"
+ /* _mesa_function_pool[27671]: MultiModeDrawArraysIBM (will be remapped) */
+ "pppii\0"
+ "glMultiModeDrawArraysIBM\0"
"\0"
- /* _mesa_function_pool[28870]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
- "iffffffffffff\0"
- "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
+ /* _mesa_function_pool[27703]: Tangent3ivEXT (dynamic) */
+ "p\0"
+ "glTangent3ivEXT\0"
"\0"
- /* _mesa_function_pool[28941]: DetachObjectARB (will be remapped) */
+ /* _mesa_function_pool[27722]: LightEnviSGIX (dynamic) */
"ii\0"
- "glDetachObjectARB\0"
+ "glLightEnviSGIX\0"
"\0"
- /* _mesa_function_pool[28963]: VertexBlendARB (dynamic) */
+ /* _mesa_function_pool[27742]: Normal3dv (offset 55) */
+ "p\0"
+ "glNormal3dv\0"
+ "\0"
+ /* _mesa_function_pool[27757]: Lightf (offset 159) */
+ "iif\0"
+ "glLightf\0"
+ "\0"
+ /* _mesa_function_pool[27771]: MatrixMode (offset 293) */
"i\0"
- "glVertexBlendARB\0"
+ "glMatrixMode\0"
"\0"
- /* _mesa_function_pool[28983]: EndTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[27787]: GetPixelMapusv (offset 273) */
+ "ip\0"
+ "glGetPixelMapusv\0"
"\0"
- "glEndTransformFeedback\0"
- "glEndTransformFeedbackEXT\0"
+ /* _mesa_function_pool[27808]: Lighti (offset 161) */
+ "iii\0"
+ "glLighti\0"
"\0"
- /* _mesa_function_pool[29034]: SeparableFilter2D (offset 360) */
- "iiiiiipp\0"
- "glSeparableFilter2D\0"
- "glSeparableFilter2DEXT\0"
+ /* _mesa_function_pool[27822]: VertexAttribPointerNV (will be remapped) */
+ "iiiip\0"
+ "glVertexAttribPointerNV\0"
"\0"
- /* _mesa_function_pool[29087]: DispatchComputeIndirect (will be remapped) */
- "i\0"
- "glDispatchComputeIndirect\0"
+ /* _mesa_function_pool[27853]: GetFragDataIndex (will be remapped) */
+ "ip\0"
+ "glGetFragDataIndex\0"
"\0"
- /* _mesa_function_pool[29116]: GetQueryObjectuiv (will be remapped) */
- "iip\0"
- "glGetQueryObjectuiv\0"
- "glGetQueryObjectuivARB\0"
+ /* _mesa_function_pool[27876]: Lightx (will be remapped) */
+ "iii\0"
+ "glLightxOES\0"
+ "glLightx\0"
"\0"
- /* _mesa_function_pool[29164]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
- "ppp\0"
- "glReplacementCodeuiColor4ubVertex3fvSUN\0"
+ /* _mesa_function_pool[27902]: ProgramUniform3fv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform3fv\0"
"\0"
- /* _mesa_function_pool[29209]: Map1d (offset 220) */
- "iddiip\0"
- "glMap1d\0"
+ /* _mesa_function_pool[27928]: MultMatrixd (offset 295) */
+ "p\0"
+ "glMultMatrixd\0"
"\0"
- /* _mesa_function_pool[29225]: Map1f (offset 221) */
- "iffiip\0"
- "glMap1f\0"
+ /* _mesa_function_pool[27945]: MultMatrixf (offset 294) */
+ "p\0"
+ "glMultMatrixf\0"
"\0"
- /* _mesa_function_pool[29241]: FlushRasterSGIX (dynamic) */
+ /* _mesa_function_pool[27962]: MultiTexCoord4fvARB (offset 403) */
+ "ip\0"
+ "glMultiTexCoord4fv\0"
+ "glMultiTexCoord4fvARB\0"
"\0"
- "glFlushRasterSGIX\0"
+ /* _mesa_function_pool[28007]: UniformMatrix2x3fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[29261]: ArrayElement (offset 306) */
- "i\0"
- "glArrayElement\0"
- "glArrayElementEXT\0"
+ /* _mesa_function_pool[28034]: TrackMatrixNV (will be remapped) */
+ "iiii\0"
+ "glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[29297]: TexImage2D (offset 183) */
- "iiiiiiiip\0"
- "glTexImage2D\0"
+ /* _mesa_function_pool[28056]: MultMatrixx (will be remapped) */
+ "p\0"
+ "glMultMatrixxOES\0"
+ "glMultMatrixx\0"
"\0"
- /* _mesa_function_pool[29321]: DepthBoundsEXT (will be remapped) */
- "dd\0"
- "glDepthBoundsEXT\0"
+ /* _mesa_function_pool[28090]: PointParameterx (will be remapped) */
+ "ii\0"
+ "glPointParameterxOES\0"
+ "glPointParameterx\0"
"\0"
- /* _mesa_function_pool[29342]: GetProgramivNV (will be remapped) */
- "iip\0"
- "glGetProgramivNV\0"
+ /* _mesa_function_pool[28133]: DrawArrays (offset 310) */
+ "iii\0"
+ "glDrawArrays\0"
+ "glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[29364]: GetMinmaxParameteriv (offset 366) */
- "iip\0"
- "glGetMinmaxParameteriv\0"
- "glGetMinmaxParameterivEXT\0"
+ /* _mesa_function_pool[28167]: PointParameteri (will be remapped) */
+ "ii\0"
+ "glPointParameteri\0"
+ "glPointParameteriNV\0"
"\0"
- /* _mesa_function_pool[29418]: PixelTransferf (offset 247) */
+ /* _mesa_function_pool[28209]: PointParameterf (will be remapped) */
"if\0"
- "glPixelTransferf\0"
- "\0"
- /* _mesa_function_pool[29439]: CopyTexImage1D (offset 323) */
- "iiiiiii\0"
- "glCopyTexImage1D\0"
- "glCopyTexImage1DEXT\0"
+ "glPointParameterf\0"
+ "glPointParameterfARB\0"
+ "glPointParameterfEXT\0"
+ "glPointParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[29485]: PushMatrix (offset 298) */
+ /* _mesa_function_pool[28295]: GlobalAlphaFactorsSUN (dynamic) */
+ "i\0"
+ "glGlobalAlphaFactorsSUN\0"
"\0"
- "glPushMatrix\0"
+ /* _mesa_function_pool[28322]: VertexAttribBinding (will be remapped) */
+ "ii\0"
+ "glVertexAttribBinding\0"
"\0"
- /* _mesa_function_pool[29500]: Fogiv (offset 156) */
- "ip\0"
- "glFogiv\0"
+ /* _mesa_function_pool[28348]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glReplacementCodeuiTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[29512]: EndQuery (will be remapped) */
+ /* _mesa_function_pool[28395]: CreateShader (will be remapped) */
"i\0"
- "glEndQuery\0"
- "glEndQueryARB\0"
+ "glCreateShader\0"
"\0"
- /* _mesa_function_pool[29540]: TexCoord1dv (offset 95) */
- "p\0"
- "glTexCoord1dv\0"
+ /* _mesa_function_pool[28413]: GetProgramParameterdvNV (will be remapped) */
+ "iiip\0"
+ "glGetProgramParameterdvNV\0"
"\0"
- /* _mesa_function_pool[29557]: AlphaFragmentOp3ATI (will be remapped) */
- "iiiiiiiiiiii\0"
- "glAlphaFragmentOp3ATI\0"
+ /* _mesa_function_pool[28445]: GetProgramEnvParameterfvARB (will be remapped) */
+ "iip\0"
+ "glGetProgramEnvParameterfvARB\0"
"\0"
- /* _mesa_function_pool[29593]: PixelTransferi (offset 248) */
- "ii\0"
- "glPixelTransferi\0"
+ /* _mesa_function_pool[28480]: DeleteBuffers (will be remapped) */
+ "ip\0"
+ "glDeleteBuffers\0"
+ "glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[29614]: GetnColorTableARB (will be remapped) */
- "iiiip\0"
- "glGetnColorTableARB\0"
+ /* _mesa_function_pool[28519]: GetBufferSubData (will be remapped) */
+ "iiip\0"
+ "glGetBufferSubData\0"
+ "glGetBufferSubDataARB\0"
"\0"
- /* _mesa_function_pool[29641]: VertexAttrib3fvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib3fvNV\0"
+ /* _mesa_function_pool[28566]: GetPerfMonitorGroupsAMD (will be remapped) */
+ "pip\0"
+ "glGetPerfMonitorGroupsAMD\0"
"\0"
- /* _mesa_function_pool[29665]: Rotatef (offset 300) */
- "ffff\0"
- "glRotatef\0"
+ /* _mesa_function_pool[28597]: FlushRasterSGIX (dynamic) */
"\0"
- /* _mesa_function_pool[29681]: GetFinalCombinerInputParameterivNV (dynamic) */
- "iip\0"
- "glGetFinalCombinerInputParameterivNV\0"
+ "glFlushRasterSGIX\0"
"\0"
- /* _mesa_function_pool[29723]: Vertex3i (offset 138) */
- "iii\0"
- "glVertex3i\0"
+ /* _mesa_function_pool[28617]: VertexAttribP2ui (will be remapped) */
+ "iiii\0"
+ "glVertexAttribP2ui\0"
"\0"
- /* _mesa_function_pool[29739]: GetTexEnvxv (will be remapped) */
+ /* _mesa_function_pool[28642]: GetMinmaxParameteriv (offset 366) */
"iip\0"
- "glGetTexEnvxvOES\0"
- "glGetTexEnvxv\0"
+ "glGetMinmaxParameteriv\0"
+ "glGetMinmaxParameterivEXT\0"
"\0"
- /* _mesa_function_pool[29775]: SecondaryColorP3ui (will be remapped) */
- "ii\0"
- "glSecondaryColorP3ui\0"
+ /* _mesa_function_pool[28696]: DrawTexivOES (will be remapped) */
+ "p\0"
+ "glDrawTexivOES\0"
+ "\0"
+ /* _mesa_function_pool[28714]: CopyTexImage1D (offset 323) */
+ "iiiiiii\0"
+ "glCopyTexImage1D\0"
+ "glCopyTexImage1DEXT\0"
+ "\0"
+ /* _mesa_function_pool[28760]: GetnColorTableARB (will be remapped) */
+ "iiiip\0"
+ "glGetnColorTableARB\0"
+ "\0"
+ /* _mesa_function_pool[28787]: VertexAttribFormat (will be remapped) */
+ "iiiii\0"
+ "glVertexAttribFormat\0"
+ "\0"
+ /* _mesa_function_pool[28815]: Vertex3i (offset 138) */
+ "iii\0"
+ "glVertex3i\0"
"\0"
- /* _mesa_function_pool[29800]: Vertex3f (offset 136) */
+ /* _mesa_function_pool[28831]: Vertex3f (offset 136) */
"fff\0"
"glVertex3f\0"
"\0"
- /* _mesa_function_pool[29816]: Clear (offset 203) */
- "i\0"
- "glClear\0"
- "\0"
- /* _mesa_function_pool[29827]: Vertex3d (offset 134) */
+ /* _mesa_function_pool[28847]: Vertex3d (offset 134) */
"ddd\0"
"glVertex3d\0"
"\0"
- /* _mesa_function_pool[29843]: GetMapParameterivNV (dynamic) */
+ /* _mesa_function_pool[28863]: GetProgramPipelineiv (will be remapped) */
"iip\0"
- "glGetMapParameterivNV\0"
- "\0"
- /* _mesa_function_pool[29870]: IndexMaterialEXT (dynamic) */
- "ii\0"
- "glIndexMaterialEXT\0"
- "\0"
- /* _mesa_function_pool[29893]: Disablei (will be remapped) */
- "ii\0"
- "glDisableIndexedEXT\0"
- "glDisablei\0"
+ "glGetProgramPipelineiv\0"
"\0"
- /* _mesa_function_pool[29928]: ReadBuffer (offset 254) */
+ /* _mesa_function_pool[28891]: ReadBuffer (offset 254) */
"i\0"
"glReadBuffer\0"
"glReadBufferNV\0"
"\0"
- /* _mesa_function_pool[29959]: ConvolutionParameteri (offset 352) */
+ /* _mesa_function_pool[28922]: ConvolutionParameteri (offset 352) */
"iii\0"
"glConvolutionParameteri\0"
"glConvolutionParameteriEXT\0"
"\0"
- /* _mesa_function_pool[30015]: VertexAttrib4sv (will be remapped) */
- "ip\0"
- "glVertexAttrib4sv\0"
- "glVertexAttrib4svARB\0"
- "\0"
- /* _mesa_function_pool[30058]: Ortho (offset 296) */
- "dddddd\0"
- "glOrtho\0"
- "\0"
- /* _mesa_function_pool[30074]: Binormal3sEXT (dynamic) */
- "iii\0"
- "glBinormal3sEXT\0"
- "\0"
- /* _mesa_function_pool[30095]: VDPAUUnmapSurfacesNV (will be remapped) */
- "ip\0"
- "glVDPAUUnmapSurfacesNV\0"
- "\0"
- /* _mesa_function_pool[30122]: ListBase (offset 6) */
- "i\0"
- "glListBase\0"
- "\0"
- /* _mesa_function_pool[30136]: GetTexParameterIiv (will be remapped) */
+ /* _mesa_function_pool[28978]: GetTexParameterIiv (will be remapped) */
"iip\0"
"glGetTexParameterIivEXT\0"
"glGetTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[30186]: Tangent3sEXT (dynamic) */
- "iii\0"
- "glTangent3sEXT\0"
- "\0"
- /* _mesa_function_pool[30206]: Vertex3s (offset 140) */
+ /* _mesa_function_pool[29028]: Vertex3s (offset 140) */
"iii\0"
"glVertex3s\0"
"\0"
- /* _mesa_function_pool[30222]: ConvolutionParameterf (offset 350) */
+ /* _mesa_function_pool[29044]: ConvolutionParameterf (offset 350) */
"iif\0"
"glConvolutionParameterf\0"
"glConvolutionParameterfEXT\0"
"\0"
- /* _mesa_function_pool[30278]: GetColorTableParameteriv (offset 345) */
+ /* _mesa_function_pool[29100]: GetColorTableParameteriv (offset 345) */
"iip\0"
"glGetColorTableParameteriv\0"
"glGetColorTableParameterivSGI\0"
"glGetColorTableParameterivEXT\0"
"\0"
- /* _mesa_function_pool[30370]: ProgramEnvParameter4dvARB (will be remapped) */
- "iip\0"
- "glProgramEnvParameter4dvARB\0"
- "glProgramParameter4dvNV\0"
+ /* _mesa_function_pool[29192]: GetTransformFeedbackVarying (will be remapped) */
+ "iiipppp\0"
+ "glGetTransformFeedbackVarying\0"
+ "glGetTransformFeedbackVaryingEXT\0"
"\0"
- /* _mesa_function_pool[30427]: ShadeModel (offset 177) */
- "i\0"
- "glShadeModel\0"
+ /* _mesa_function_pool[29264]: TexCoord3fv (offset 113) */
+ "p\0"
+ "glTexCoord3fv\0"
"\0"
- /* _mesa_function_pool[30443]: Uniform3uiv (will be remapped) */
- "iip\0"
- "glUniform3uivEXT\0"
- "glUniform3uiv\0"
+ /* _mesa_function_pool[29281]: TextureBarrierNV (will be remapped) */
"\0"
- /* _mesa_function_pool[30479]: GenerateMipmap (will be remapped) */
- "i\0"
- "glGenerateMipmap\0"
- "glGenerateMipmapEXT\0"
- "glGenerateMipmapOES\0"
+ "glTextureBarrierNV\0"
"\0"
- /* _mesa_function_pool[30539]: Rectiv (offset 91) */
- "pp\0"
- "glRectiv\0"
+ /* _mesa_function_pool[29302]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
+ "iffffffffff\0"
+ "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[30552]: TexImage3DMultisample (will be remapped) */
- "iiiiiii\0"
- "glTexImage3DMultisample\0"
+ /* _mesa_function_pool[29361]: ProgramLocalParameter4fARB (will be remapped) */
+ "iiffff\0"
+ "glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[30585]: MatrixIndexPointerARB (dynamic) */
+ /* _mesa_function_pool[29398]: ObjectLabel (will be remapped) */
"iiip\0"
- "glMatrixIndexPointerARB\0"
- "glMatrixIndexPointerOES\0"
+ "glObjectLabel\0"
+ "\0"
+ /* _mesa_function_pool[29418]: PauseTransformFeedback (will be remapped) */
"\0"
- /* _mesa_function_pool[30639]: GetMapParameterfvNV (dynamic) */
+ "glPauseTransformFeedback\0"
+ "\0"
+ /* _mesa_function_pool[29445]: DeleteShader (will be remapped) */
+ "i\0"
+ "glDeleteShader\0"
+ "\0"
+ /* _mesa_function_pool[29463]: CompileShader (will be remapped) */
+ "i\0"
+ "glCompileShader\0"
+ "glCompileShaderARB\0"
+ "\0"
+ /* _mesa_function_pool[29501]: Vertex2iv (offset 131) */
+ "p\0"
+ "glVertex2iv\0"
+ "\0"
+ /* _mesa_function_pool[29516]: TexGendv (offset 189) */
"iip\0"
- "glGetMapParameterfvNV\0"
+ "glTexGendv\0"
"\0"
- /* _mesa_function_pool[30666]: MultiTexCoord1iv (offset 381) */
- "ip\0"
- "glMultiTexCoord1iv\0"
- "glMultiTexCoord1ivARB\0"
+ /* _mesa_function_pool[29532]: ProgramLocalParameters4fvEXT (will be remapped) */
+ "iiip\0"
+ "glProgramLocalParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[30711]: PassTexCoordATI (will be remapped) */
- "iii\0"
- "glPassTexCoordATI\0"
+ /* _mesa_function_pool[29569]: ResetMinmax (offset 370) */
+ "i\0"
+ "glResetMinmax\0"
+ "glResetMinmaxEXT\0"
+ "\0"
+ /* _mesa_function_pool[29603]: SpriteParameterfSGIX (dynamic) */
+ "if\0"
+ "glSpriteParameterfSGIX\0"
+ "\0"
+ /* _mesa_function_pool[29630]: DeleteProgramsARB (will be remapped) */
+ "ip\0"
+ "glDeleteProgramsARB\0"
+ "glDeleteProgramsNV\0"
"\0"
- /* _mesa_function_pool[30734]: DeleteProgram (will be remapped) */
+ /* _mesa_function_pool[29673]: ShadeModel (offset 177) */
"i\0"
- "glDeleteProgram\0"
+ "glShadeModel\0"
"\0"
- /* _mesa_function_pool[30753]: GetSamplerParameteriv (will be remapped) */
+ /* _mesa_function_pool[29689]: VertexAttribs1fvNV (will be remapped) */
"iip\0"
- "glGetSamplerParameteriv\0"
+ "glVertexAttribs1fvNV\0"
"\0"
- /* _mesa_function_pool[30782]: BindBufferRange (will be remapped) */
- "iiiii\0"
- "glBindBufferRange\0"
- "glBindBufferRangeEXT\0"
+ /* _mesa_function_pool[29715]: FogFuncSGIS (dynamic) */
+ "ip\0"
+ "glFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[30828]: Tangent3dEXT (dynamic) */
- "ddd\0"
- "glTangent3dEXT\0"
+ /* _mesa_function_pool[29733]: GetTexLevelParameteriv (offset 285) */
+ "iiip\0"
+ "glGetTexLevelParameteriv\0"
"\0"
- /* _mesa_function_pool[30848]: TexParameterxv (will be remapped) */
+ /* _mesa_function_pool[29764]: MultiDrawArrays (will be remapped) */
+ "ippi\0"
+ "glMultiDrawArrays\0"
+ "glMultiDrawArraysEXT\0"
+ "\0"
+ /* _mesa_function_pool[29809]: GetProgramLocalParameterdvARB (will be remapped) */
"iip\0"
- "glTexParameterxvOES\0"
- "glTexParameterxv\0"
+ "glGetProgramLocalParameterdvARB\0"
+ "\0"
+ /* _mesa_function_pool[29846]: MapBufferRange (will be remapped) */
+ "iiii\0"
+ "glMapBufferRange\0"
+ "glMapBufferRangeEXT\0"
"\0"
- /* _mesa_function_pool[30890]: BlendEquationSeparateiARB (will be remapped) */
+ /* _mesa_function_pool[29889]: DispatchCompute (will be remapped) */
"iii\0"
- "glBlendEquationSeparateiARB\0"
- "glBlendEquationSeparateIndexedAMD\0"
+ "glDispatchCompute\0"
"\0"
- /* _mesa_function_pool[30957]: AlphaFragmentOp2ATI (will be remapped) */
- "iiiiiiiii\0"
- "glAlphaFragmentOp2ATI\0"
+ /* _mesa_function_pool[29912]: UseProgramStages (will be remapped) */
+ "iii\0"
+ "glUseProgramStages\0"
"\0"
- /* _mesa_function_pool[30990]: Vertex2fv (offset 129) */
+ /* _mesa_function_pool[29936]: ProgramUniformMatrix4fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix4fv\0"
+ "\0"
+ /* _mesa_function_pool[29969]: FinishAsyncSGIX (dynamic) */
"p\0"
- "glVertex2fv\0"
+ "glFinishAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[31005]: SampleMaskSGIS (will be remapped) */
- "fi\0"
- "glSampleMaskSGIS\0"
- "glSampleMaskEXT\0"
+ /* _mesa_function_pool[29990]: FramebufferRenderbuffer (will be remapped) */
+ "iiii\0"
+ "glFramebufferRenderbuffer\0"
+ "glFramebufferRenderbufferEXT\0"
+ "glFramebufferRenderbufferOES\0"
"\0"
- /* _mesa_function_pool[31042]: BindRenderbufferEXT (will be remapped) */
- "ii\0"
- "glBindRenderbufferEXT\0"
+ /* _mesa_function_pool[30080]: IsProgramARB (will be remapped) */
+ "i\0"
+ "glIsProgramARB\0"
+ "glIsProgramNV\0"
"\0"
- /* _mesa_function_pool[31068]: VertexAttrib1fNV (will be remapped) */
- "if\0"
- "glVertexAttrib1fNV\0"
+ /* _mesa_function_pool[30112]: Map2d (offset 222) */
+ "iddiiddiip\0"
+ "glMap2d\0"
"\0"
- /* _mesa_function_pool[31091]: Rotatex (will be remapped) */
- "iiii\0"
- "glRotatexOES\0"
- "glRotatex\0"
+ /* _mesa_function_pool[30132]: Map2f (offset 223) */
+ "iffiiffiip\0"
+ "glMap2f\0"
+ "\0"
+ /* _mesa_function_pool[30152]: ProgramStringARB (will be remapped) */
+ "iiip\0"
+ "glProgramStringARB\0"
"\0"
- /* _mesa_function_pool[31120]: FramebufferTextureFaceARB (will be remapped) */
+ /* _mesa_function_pool[30177]: MultiTexCoord4x (will be remapped) */
"iiiii\0"
- "glFramebufferTextureFaceARB\0"
+ "glMultiTexCoord4xOES\0"
+ "glMultiTexCoord4x\0"
"\0"
- /* _mesa_function_pool[31155]: Vertex3sv (offset 141) */
- "p\0"
- "glVertex3sv\0"
+ /* _mesa_function_pool[30223]: MultiTexCoord4s (offset 406) */
+ "iiiii\0"
+ "glMultiTexCoord4s\0"
+ "glMultiTexCoord4sARB\0"
"\0"
- /* _mesa_function_pool[31170]: GetQueryObjectiv (will be remapped) */
- "iip\0"
- "glGetQueryObjectiv\0"
- "glGetQueryObjectivARB\0"
+ /* _mesa_function_pool[30269]: ViewportIndexedf (will be remapped) */
+ "iffff\0"
+ "glViewportIndexedf\0"
"\0"
- /* _mesa_function_pool[31216]: VertexAttrib2s (will be remapped) */
- "iii\0"
- "glVertexAttrib2s\0"
- "glVertexAttrib2sARB\0"
+ /* _mesa_function_pool[30295]: MultiTexCoord4i (offset 404) */
+ "iiiii\0"
+ "glMultiTexCoord4i\0"
+ "glMultiTexCoord4iARB\0"
"\0"
- /* _mesa_function_pool[31258]: VertexWeightfEXT (dynamic) */
- "f\0"
- "glVertexWeightfEXT\0"
+ /* _mesa_function_pool[30341]: ApplyTextureEXT (dynamic) */
+ "i\0"
+ "glApplyTextureEXT\0"
"\0"
- /* _mesa_function_pool[31280]: ProgramLocalParameter4fvARB (will be remapped) */
- "iip\0"
- "glProgramLocalParameter4fvARB\0"
+ /* _mesa_function_pool[30362]: DebugMessageControl (will be remapped) */
+ "iiiipi\0"
+ "glDebugMessageControl\0"
"\0"
- /* _mesa_function_pool[31315]: EvalMesh1 (offset 236) */
- "iii\0"
- "glEvalMesh1\0"
+ /* _mesa_function_pool[30392]: MultiTexCoord4d (offset 400) */
+ "idddd\0"
+ "glMultiTexCoord4d\0"
+ "glMultiTexCoord4dARB\0"
"\0"
- /* _mesa_function_pool[31332]: ObjectLabel (will be remapped) */
- "iiip\0"
- "glObjectLabel\0"
+ /* _mesa_function_pool[30438]: GetHistogram (offset 361) */
+ "iiiip\0"
+ "glGetHistogram\0"
+ "glGetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[31352]: PauseTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[30478]: Translatex (will be remapped) */
+ "iii\0"
+ "glTranslatexOES\0"
+ "glTranslatex\0"
"\0"
- "glPauseTransformFeedback\0"
+ /* _mesa_function_pool[30512]: IglooInterfaceSGIX (dynamic) */
+ "ip\0"
+ "glIglooInterfaceSGIX\0"
"\0"
- /* _mesa_function_pool[31379]: DeleteShader (will be remapped) */
- "i\0"
- "glDeleteShader\0"
+ /* _mesa_function_pool[30537]: Indexsv (offset 51) */
+ "p\0"
+ "glIndexsv\0"
"\0"
- /* _mesa_function_pool[31397]: BindImageTexture (will be remapped) */
- "iiiiiii\0"
- "glBindImageTexture\0"
+ /* _mesa_function_pool[30550]: VertexAttrib1fvARB (will be remapped) */
+ "ip\0"
+ "glVertexAttrib1fv\0"
+ "glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[31425]: Uniform2f (will be remapped) */
- "iff\0"
- "glUniform2f\0"
- "glUniform2fARB\0"
+ /* _mesa_function_pool[30593]: TexCoord2dv (offset 103) */
+ "p\0"
+ "glTexCoord2dv\0"
"\0"
- /* _mesa_function_pool[31457]: VertexAttrib2d (will be remapped) */
- "idd\0"
- "glVertexAttrib2d\0"
- "glVertexAttrib2dARB\0"
+ /* _mesa_function_pool[30610]: Translated (offset 303) */
+ "ddd\0"
+ "glTranslated\0"
"\0"
- /* _mesa_function_pool[31499]: CompressedTexSubImage3D (will be remapped) */
- "iiiiiiiiiip\0"
- "glCompressedTexSubImage3D\0"
- "glCompressedTexSubImage3DARB\0"
- "glCompressedTexSubImage3DOES\0"
+ /* _mesa_function_pool[30628]: Translatef (offset 304) */
+ "fff\0"
+ "glTranslatef\0"
"\0"
- /* _mesa_function_pool[31596]: Vertex2iv (offset 131) */
+ /* _mesa_function_pool[30646]: MultTransposeMatrixd (will be remapped) */
"p\0"
- "glVertex2iv\0"
+ "glMultTransposeMatrixd\0"
+ "glMultTransposeMatrixdARB\0"
+ "\0"
+ /* _mesa_function_pool[30698]: ProgramUniform4uiv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform4uiv\0"
+ "\0"
+ /* _mesa_function_pool[30725]: RenderMode (offset 196) */
+ "i\0"
+ "glRenderMode\0"
+ "\0"
+ /* _mesa_function_pool[30741]: MultiTexCoord1fARB (offset 378) */
+ "if\0"
+ "glMultiTexCoord1f\0"
+ "glMultiTexCoord1fARB\0"
+ "\0"
+ /* _mesa_function_pool[30784]: SecondaryColor3d (will be remapped) */
+ "ddd\0"
+ "glSecondaryColor3d\0"
+ "glSecondaryColor3dEXT\0"
"\0"
- /* _mesa_function_pool[31611]: GetProgramStringNV (will be remapped) */
+ /* _mesa_function_pool[30830]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
- "glGetProgramStringNV\0"
+ "glVertexAttribs4ubvNV\0"
+ "\0"
+ /* _mesa_function_pool[30857]: WeightsvARB (dynamic) */
+ "ip\0"
+ "glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[31637]: VertexAttribP3uiv (will be remapped) */
+ /* _mesa_function_pool[30875]: ProgramUniform4fv (will be remapped) */
"iiip\0"
- "glVertexAttribP3uiv\0"
+ "glProgramUniform4fv\0"
"\0"
- /* _mesa_function_pool[31663]: LineWidth (offset 168) */
- "f\0"
- "glLineWidth\0"
+ /* _mesa_function_pool[30901]: LightModelxv (will be remapped) */
+ "ip\0"
+ "glLightModelxvOES\0"
+ "glLightModelxv\0"
+ "\0"
+ /* _mesa_function_pool[30938]: CopyTexSubImage1D (offset 325) */
+ "iiiiii\0"
+ "glCopyTexSubImage1D\0"
+ "glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[31678]: GetActiveAtomicCounterBufferiv (will be remapped) */
+ /* _mesa_function_pool[30989]: PushDebugGroup (will be remapped) */
"iiip\0"
- "glGetActiveAtomicCounterBufferiv\0"
+ "glPushDebugGroup\0"
"\0"
- /* _mesa_function_pool[31717]: Uniform2i (will be remapped) */
+ /* _mesa_function_pool[31012]: StencilFunc (offset 243) */
"iii\0"
- "glUniform2i\0"
- "glUniform2iARB\0"
+ "glStencilFunc\0"
"\0"
- /* _mesa_function_pool[31749]: MultiDrawElementsBaseVertex (will be remapped) */
- "ipipip\0"
- "glMultiDrawElementsBaseVertex\0"
+ /* _mesa_function_pool[31031]: CopyPixels (offset 255) */
+ "iiiii\0"
+ "glCopyPixels\0"
"\0"
- /* _mesa_function_pool[31787]: FogFuncSGIS (dynamic) */
- "ip\0"
- "glFogFuncSGIS\0"
+ /* _mesa_function_pool[31051]: TexGenxvOES (will be remapped) */
+ "iip\0"
+ "glTexGenxvOES\0"
"\0"
- /* _mesa_function_pool[31805]: GenPerfMonitorsAMD (will be remapped) */
+ /* _mesa_function_pool[31070]: VertexAttrib4Nubv (will be remapped) */
"ip\0"
- "glGenPerfMonitorsAMD\0"
+ "glVertexAttrib4Nubv\0"
+ "glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[31830]: Binormal3svEXT (dynamic) */
+ /* _mesa_function_pool[31117]: GetFogFuncSGIS (dynamic) */
"p\0"
- "glBinormal3svEXT\0"
- "\0"
- /* _mesa_function_pool[31850]: GetBufferParameteri64v (will be remapped) */
- "iip\0"
- "glGetBufferParameteri64v\0"
+ "glGetFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[31880]: TexGendv (offset 189) */
- "iip\0"
- "glTexGendv\0"
+ /* _mesa_function_pool[31137]: VertexP2uiv (will be remapped) */
+ "ip\0"
+ "glVertexP2uiv\0"
"\0"
- /* _mesa_function_pool[31896]: Uniform1fv (will be remapped) */
- "iip\0"
- "glUniform1fv\0"
- "glUniform1fvARB\0"
+ /* _mesa_function_pool[31155]: VertexAttribPointer (will be remapped) */
+ "iiiiip\0"
+ "glVertexAttribPointer\0"
+ "glVertexAttribPointerARB\0"
"\0"
- /* _mesa_function_pool[31930]: DepthRangeIndexed (will be remapped) */
- "idd\0"
- "glDepthRangeIndexed\0"
+ /* _mesa_function_pool[31210]: IndexMask (offset 212) */
+ "i\0"
+ "glIndexMask\0"
"\0"
- /* _mesa_function_pool[31955]: LightModelx (will be remapped) */
- "ii\0"
- "glLightModelxOES\0"
- "glLightModelx\0"
+ /* _mesa_function_pool[31225]: SharpenTexFuncSGIS (dynamic) */
+ "iip\0"
+ "glSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[31990]: VertexAttribI3iEXT (will be remapped) */
+ /* _mesa_function_pool[31251]: VertexAttribIFormat (will be remapped) */
"iiii\0"
- "glVertexAttribI3iEXT\0"
- "glVertexAttribI3i\0"
+ "glVertexAttribIFormat\0"
"\0"
- /* _mesa_function_pool[32035]: EndConditionalRender (will be remapped) */
+ /* _mesa_function_pool[31279]: CombinerOutputNV (dynamic) */
+ "iiiiiiiiii\0"
+ "glCombinerOutputNV\0"
"\0"
- "glEndConditionalRender\0"
- "glEndConditionalRenderNV\0"
+ /* _mesa_function_pool[31310]: DrawArraysInstancedBaseInstance (will be remapped) */
+ "iiiii\0"
+ "glDrawArraysInstancedBaseInstance\0"
"\0"
- /* _mesa_function_pool[32085]: GetBufferPointerv (will be remapped) */
- "iip\0"
- "glGetBufferPointerv\0"
- "glGetBufferPointervARB\0"
- "glGetBufferPointervOES\0"
+ /* _mesa_function_pool[31351]: PopAttrib (offset 218) */
"\0"
- /* _mesa_function_pool[32156]: TextureLightEXT (dynamic) */
- "i\0"
- "glTextureLightEXT\0"
+ "glPopAttrib\0"
"\0"
- /* _mesa_function_pool[32177]: ResetMinmax (offset 370) */
+ /* _mesa_function_pool[31365]: SamplePatternSGIS (will be remapped) */
"i\0"
- "glResetMinmax\0"
- "glResetMinmaxEXT\0"
- "\0"
- /* _mesa_function_pool[32211]: SpriteParameterfSGIX (dynamic) */
- "if\0"
- "glSpriteParameterfSGIX\0"
+ "glSamplePatternSGIS\0"
+ "glSamplePatternEXT\0"
"\0"
- /* _mesa_function_pool[32238]: EnableClientState (offset 313) */
- "i\0"
- "glEnableClientState\0"
+ /* _mesa_function_pool[31407]: Uniform3ui (will be remapped) */
+ "iiii\0"
+ "glUniform3uiEXT\0"
+ "glUniform3ui\0"
"\0"
- /* _mesa_function_pool[32261]: VertexAttrib4sNV (will be remapped) */
- "iiiii\0"
- "glVertexAttrib4sNV\0"
+ /* _mesa_function_pool[31442]: DeletePerfMonitorsAMD (will be remapped) */
+ "ip\0"
+ "glDeletePerfMonitorsAMD\0"
"\0"
- /* _mesa_function_pool[32287]: GetConvolutionParameterfv (offset 357) */
- "iip\0"
- "glGetConvolutionParameterfv\0"
- "glGetConvolutionParameterfvEXT\0"
+ /* _mesa_function_pool[31470]: Color4dv (offset 28) */
+ "p\0"
+ "glColor4dv\0"
"\0"
- /* _mesa_function_pool[32351]: GetActiveUniformName (will be remapped) */
- "iiipp\0"
- "glGetActiveUniformName\0"
+ /* _mesa_function_pool[31484]: AreProgramsResidentNV (will be remapped) */
+ "ipp\0"
+ "glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[32381]: Uniform1iv (will be remapped) */
- "iip\0"
- "glUniform1iv\0"
- "glUniform1ivARB\0"
+ /* _mesa_function_pool[31513]: DisableVertexAttribArray (will be remapped) */
+ "i\0"
+ "glDisableVertexAttribArray\0"
+ "glDisableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[32415]: MultiTexCoord4i (offset 404) */
- "iiiii\0"
- "glMultiTexCoord4i\0"
- "glMultiTexCoord4iARB\0"
+ /* _mesa_function_pool[31573]: ProgramUniformMatrix3x2fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[32461]: CombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[31608]: GetDoublei_v (will be remapped) */
"iip\0"
- "glCombinerStageParameterfvNV\0"
- "\0"
- /* _mesa_function_pool[32495]: ProgramNamedParameter4dNV (will be remapped) */
- "iipdddd\0"
- "glProgramNamedParameter4dNV\0"
+ "glGetDoublei_v\0"
"\0"
- /* _mesa_function_pool[32532]: GetMaterialfv (offset 269) */
- "iip\0"
- "glGetMaterialfv\0"
+ /* _mesa_function_pool[31628]: IsTransformFeedback (will be remapped) */
+ "i\0"
+ "glIsTransformFeedback\0"
"\0"
- /* _mesa_function_pool[32553]: ViewportIndexedfv (will be remapped) */
+ /* _mesa_function_pool[31653]: ClipPlanex (will be remapped) */
"ip\0"
- "glViewportIndexedfv\0"
+ "glClipPlanexOES\0"
+ "glClipPlanex\0"
"\0"
- /* _mesa_function_pool[32577]: WindowPos3fv (will be remapped) */
- "p\0"
- "glWindowPos3fv\0"
- "glWindowPos3fvARB\0"
- "glWindowPos3fvMESA\0"
+ /* _mesa_function_pool[31686]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ "iffffff\0"
+ "glReplacementCodeuiColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[32632]: SecondaryColorPointerListIBM (dynamic) */
- "iiipi\0"
- "glSecondaryColorPointerListIBM\0"
+ /* _mesa_function_pool[31733]: GetLightfv (offset 264) */
+ "iip\0"
+ "glGetLightfv\0"
"\0"
- /* _mesa_function_pool[32670]: DeleteProgramsARB (will be remapped) */
+ /* _mesa_function_pool[31751]: ClipPlanef (will be remapped) */
"ip\0"
- "glDeleteProgramsARB\0"
- "glDeleteProgramsNV\0"
+ "glClipPlanefOES\0"
+ "glClipPlanef\0"
"\0"
- /* _mesa_function_pool[32713]: VDPAUSurfaceAccessNV (will be remapped) */
- "ii\0"
- "glVDPAUSurfaceAccessNV\0"
+ /* _mesa_function_pool[31784]: ProgramUniform1ui (will be remapped) */
+ "iii\0"
+ "glProgramUniform1ui\0"
"\0"
- /* _mesa_function_pool[32740]: SetFragmentShaderConstantATI (will be remapped) */
- "ip\0"
- "glSetFragmentShaderConstantATI\0"
+ /* _mesa_function_pool[31809]: SecondaryColorPointer (will be remapped) */
+ "iiip\0"
+ "glSecondaryColorPointer\0"
+ "glSecondaryColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[32775]: Binormal3fEXT (dynamic) */
- "fff\0"
- "glBinormal3fEXT\0"
+ /* _mesa_function_pool[31866]: Tangent3svEXT (dynamic) */
+ "p\0"
+ "glTangent3svEXT\0"
+ "\0"
+ /* _mesa_function_pool[31885]: Tangent3iEXT (dynamic) */
+ "iii\0"
+ "glTangent3iEXT\0"
"\0"
- /* _mesa_function_pool[32796]: CallList (offset 2) */
+ /* _mesa_function_pool[31905]: Indexub (offset 315) */
"i\0"
- "glCallList\0"
+ "glIndexub\0"
"\0"
- /* _mesa_function_pool[32810]: Materialfv (offset 170) */
- "iip\0"
- "glMaterialfv\0"
+ /* _mesa_function_pool[31918]: FragmentLightfSGIX (dynamic) */
+ "iif\0"
+ "glFragmentLightfSGIX\0"
"\0"
- /* _mesa_function_pool[32828]: TexCoord3fv (offset 113) */
- "p\0"
- "glTexCoord3fv\0"
+ /* _mesa_function_pool[31944]: BeginFragmentShaderATI (will be remapped) */
"\0"
- /* _mesa_function_pool[32845]: WeightfvARB (dynamic) */
- "ip\0"
- "glWeightfvARB\0"
+ "glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[32863]: GetUniformBlockIndex (will be remapped) */
+ /* _mesa_function_pool[31971]: GenRenderbuffers (will be remapped) */
"ip\0"
- "glGetUniformBlockIndex\0"
+ "glGenRenderbuffers\0"
+ "glGenRenderbuffersEXT\0"
+ "glGenRenderbuffersOES\0"
"\0"
- /* _mesa_function_pool[32890]: FogCoordfvEXT (will be remapped) */
- "p\0"
- "glFogCoordfv\0"
- "glFogCoordfvEXT\0"
+ /* _mesa_function_pool[32038]: GetMinmaxParameterfv (offset 365) */
+ "iip\0"
+ "glGetMinmaxParameterfv\0"
+ "glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[32922]: DetachShader (will be remapped) */
+ /* _mesa_function_pool[32092]: IsEnabledi (will be remapped) */
"ii\0"
- "glDetachShader\0"
- "\0"
- /* _mesa_function_pool[32941]: ClearDepthf (will be remapped) */
- "f\0"
- "glClearDepthf\0"
- "glClearDepthfOES\0"
+ "glIsEnabledIndexedEXT\0"
+ "glIsEnabledi\0"
"\0"
- /* _mesa_function_pool[32975]: CopyTexSubImage2D (offset 326) */
- "iiiiiiii\0"
- "glCopyTexSubImage2D\0"
- "glCopyTexSubImage2DEXT\0"
+ /* _mesa_function_pool[32131]: FragmentMaterialivSGIX (dynamic) */
+ "iip\0"
+ "glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[33028]: SampleCoverage (will be remapped) */
- "fi\0"
- "glSampleCoverage\0"
- "glSampleCoverageARB\0"
+ /* _mesa_function_pool[32161]: WaitSync (will be remapped) */
+ "iii\0"
+ "glWaitSync\0"
"\0"
- /* _mesa_function_pool[33069]: GetObjectParameterivARB (will be remapped) */
+ /* _mesa_function_pool[32177]: GetVertexAttribPointerv (will be remapped) */
"iip\0"
- "glGetObjectParameterivARB\0"
+ "glGetVertexAttribPointerv\0"
+ "glGetVertexAttribPointervARB\0"
+ "glGetVertexAttribPointervNV\0"
+ "\0"
+ /* _mesa_function_pool[32265]: NewList (dynamic) */
+ "ii\0"
+ "glNewList\0"
"\0"
- /* _mesa_function_pool[33100]: Color3iv (offset 16) */
+ /* _mesa_function_pool[32279]: TexBuffer (will be remapped) */
+ "iii\0"
+ "glTexBufferARB\0"
+ "glTexBuffer\0"
+ "\0"
+ /* _mesa_function_pool[32311]: TexCoord4sv (offset 125) */
"p\0"
- "glColor3iv\0"
+ "glTexCoord4sv\0"
"\0"
- /* _mesa_function_pool[33114]: GlobalAlphaFactorubSUN (dynamic) */
- "i\0"
- "glGlobalAlphaFactorubSUN\0"
+ /* _mesa_function_pool[32328]: TexCoord1f (offset 96) */
+ "f\0"
+ "glTexCoord1f\0"
"\0"
- /* _mesa_function_pool[33142]: VertexAttrib4ubv (will be remapped) */
- "ip\0"
- "glVertexAttrib4ubv\0"
- "glVertexAttrib4ubvARB\0"
+ /* _mesa_function_pool[32344]: TexCoord1d (offset 94) */
+ "d\0"
+ "glTexCoord1d\0"
"\0"
- /* _mesa_function_pool[33187]: MultiDrawArrays (will be remapped) */
- "ippi\0"
- "glMultiDrawArrays\0"
- "glMultiDrawArraysEXT\0"
+ /* _mesa_function_pool[32360]: TexCoord1i (offset 98) */
+ "i\0"
+ "glTexCoord1i\0"
"\0"
- /* _mesa_function_pool[33232]: DrawElements (offset 311) */
+ /* _mesa_function_pool[32376]: GetnUniformfvARB (will be remapped) */
"iiip\0"
- "glDrawElements\0"
+ "glGetnUniformfvARB\0"
"\0"
- /* _mesa_function_pool[33253]: BindVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[32401]: TexCoord1s (offset 100) */
"i\0"
- "glBindVertexArrayAPPLE\0"
+ "glTexCoord1s\0"
"\0"
- /* _mesa_function_pool[33279]: GetProgramLocalParameterdvARB (will be remapped) */
- "iip\0"
- "glGetProgramLocalParameterdvARB\0"
+ /* _mesa_function_pool[32417]: GlobalAlphaFactoriSUN (dynamic) */
+ "i\0"
+ "glGlobalAlphaFactoriSUN\0"
"\0"
- /* _mesa_function_pool[33316]: GetHistogramParameteriv (offset 363) */
- "iip\0"
- "glGetHistogramParameteriv\0"
- "glGetHistogramParameterivEXT\0"
+ /* _mesa_function_pool[32444]: TexStorage1D (will be remapped) */
+ "iiii\0"
+ "glTexStorage1D\0"
+ "\0"
+ /* _mesa_function_pool[32465]: BlitFramebuffer (will be remapped) */
+ "iiiiiiiiii\0"
+ "glBlitFramebuffer\0"
+ "glBlitFramebufferEXT\0"
+ "\0"
+ /* _mesa_function_pool[32516]: FramebufferTexture1D (will be remapped) */
+ "iiiii\0"
+ "glFramebufferTexture1D\0"
+ "glFramebufferTexture1DEXT\0"
"\0"
- /* _mesa_function_pool[33376]: TexGenxvOES (will be remapped) */
+ /* _mesa_function_pool[32572]: GetMapiv (offset 268) */
"iip\0"
- "glTexGenxvOES\0"
+ "glGetMapiv\0"
+ "\0"
+ /* _mesa_function_pool[32588]: TexCoordP4ui (will be remapped) */
+ "ii\0"
+ "glTexCoordP4ui\0"
"\0"
- /* _mesa_function_pool[33395]: PointParameteriv (will be remapped) */
+ /* _mesa_function_pool[32607]: VertexAttrib1sv (will be remapped) */
"ip\0"
- "glPointParameteriv\0"
- "glPointParameterivNV\0"
+ "glVertexAttrib1sv\0"
+ "glVertexAttrib1svARB\0"
"\0"
- /* _mesa_function_pool[33439]: UniformMatrix2x4fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix2x4fv\0"
+ /* _mesa_function_pool[32650]: WindowPos4dMESA (will be remapped) */
+ "dddd\0"
+ "glWindowPos4dMESA\0"
"\0"
- /* _mesa_function_pool[33466]: SecondaryColor3d (will be remapped) */
- "ddd\0"
- "glSecondaryColor3d\0"
- "glSecondaryColor3dEXT\0"
+ /* _mesa_function_pool[32674]: Vertex3dv (offset 135) */
+ "p\0"
+ "glVertex3dv\0"
"\0"
- /* _mesa_function_pool[33512]: GetConvolutionFilter (offset 356) */
+ /* _mesa_function_pool[32689]: MultiTexCoordP2ui (will be remapped) */
+ "iii\0"
+ "glMultiTexCoordP2ui\0"
+ "\0"
+ /* _mesa_function_pool[32714]: GetnMapivARB (will be remapped) */
"iiip\0"
- "glGetConvolutionFilter\0"
- "glGetConvolutionFilterEXT\0"
+ "glGetnMapivARB\0"
"\0"
- /* _mesa_function_pool[33567]: GetProgramivARB (will be remapped) */
+ /* _mesa_function_pool[32735]: MapParameterfvNV (dynamic) */
"iip\0"
- "glGetProgramivARB\0"
- "\0"
- /* _mesa_function_pool[33590]: FlushVertexArrayRangeNV (dynamic) */
+ "glMapParameterfvNV\0"
"\0"
- "glFlushVertexArrayRangeNV\0"
+ /* _mesa_function_pool[32759]: GetVertexAttribfv (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribfv\0"
+ "glGetVertexAttribfvARB\0"
"\0"
- /* _mesa_function_pool[33618]: ScissorArrayv (will be remapped) */
+ /* _mesa_function_pool[32807]: MultiTexCoordP4uiv (will be remapped) */
"iip\0"
- "glScissorArrayv\0"
+ "glMultiTexCoordP4uiv\0"
"\0"
- /* _mesa_function_pool[33639]: Uniform2iv (will be remapped) */
+ /* _mesa_function_pool[32833]: TexGeniv (offset 193) */
"iip\0"
- "glUniform2iv\0"
- "glUniform2ivARB\0"
+ "glTexGeniv\0"
+ "glTexGenivOES\0"
"\0"
- /* _mesa_function_pool[33673]: GetFixedv (will be remapped) */
+ /* _mesa_function_pool[32863]: WeightubvARB (dynamic) */
"ip\0"
- "glGetFixedvOES\0"
- "glGetFixedv\0"
- "\0"
- /* _mesa_function_pool[33704]: BindRenderbuffer (will be remapped) */
- "ii\0"
- "glBindRenderbuffer\0"
- "glBindRenderbufferOES\0"
+ "glWeightubvARB\0"
"\0"
- /* _mesa_function_pool[33749]: ProgramParameters4dvNV (will be remapped) */
- "iiip\0"
- "glProgramParameters4dvNV\0"
+ /* _mesa_function_pool[32882]: BlendColor (offset 336) */
+ "ffff\0"
+ "glBlendColor\0"
+ "glBlendColorEXT\0"
"\0"
- /* _mesa_function_pool[33780]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
- "ppp\0"
- "glTexCoord2fColor3fVertex3fvSUN\0"
+ /* _mesa_function_pool[32917]: Materiali (offset 171) */
+ "iii\0"
+ "glMateriali\0"
"\0"
- /* _mesa_function_pool[33817]: EvalPoint2 (offset 239) */
- "ii\0"
- "glEvalPoint2\0"
+ /* _mesa_function_pool[32934]: VertexAttrib2dvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib2dvNV\0"
"\0"
- /* _mesa_function_pool[33834]: EvalPoint1 (offset 237) */
+ /* _mesa_function_pool[32958]: ResetHistogram (offset 369) */
"i\0"
- "glEvalPoint1\0"
+ "glResetHistogram\0"
+ "glResetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[33850]: Binormal3dvEXT (dynamic) */
+ /* _mesa_function_pool[32998]: CompressedTexSubImage2D (will be remapped) */
+ "iiiiiiiip\0"
+ "glCompressedTexSubImage2D\0"
+ "glCompressedTexSubImage2DARB\0"
+ "\0"
+ /* _mesa_function_pool[33064]: TexCoord2sv (offset 109) */
"p\0"
- "glBinormal3dvEXT\0"
+ "glTexCoord2sv\0"
"\0"
- /* _mesa_function_pool[33870]: PopMatrix (offset 297) */
+ /* _mesa_function_pool[33081]: StencilMaskSeparate (will be remapped) */
+ "ii\0"
+ "glStencilMaskSeparate\0"
"\0"
- "glPopMatrix\0"
+ /* _mesa_function_pool[33107]: MultiTexCoord3sv (offset 399) */
+ "ip\0"
+ "glMultiTexCoord3sv\0"
+ "glMultiTexCoord3svARB\0"
"\0"
- /* _mesa_function_pool[33884]: FinishFenceNV (dynamic) */
- "i\0"
- "glFinishFenceNV\0"
+ /* _mesa_function_pool[33152]: GetMapParameterfvNV (dynamic) */
+ "iip\0"
+ "glGetMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[33903]: GetFogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[33179]: TexCoord3iv (offset 115) */
"p\0"
- "glGetFogFuncSGIS\0"
+ "glTexCoord3iv\0"
"\0"
- /* _mesa_function_pool[33923]: DeleteFramebuffers (will be remapped) */
+ /* _mesa_function_pool[33196]: MultiTexCoord4sv (offset 407) */
"ip\0"
- "glDeleteFramebuffers\0"
- "glDeleteFramebuffersEXT\0"
- "glDeleteFramebuffersOES\0"
- "\0"
- /* _mesa_function_pool[33996]: DispatchCompute (will be remapped) */
- "iii\0"
- "glDispatchCompute\0"
- "\0"
- /* _mesa_function_pool[34019]: SecondaryColor3fEXT (will be remapped) */
- "fff\0"
- "glSecondaryColor3f\0"
- "glSecondaryColor3fEXT\0"
- "\0"
- /* _mesa_function_pool[34065]: GetTexGeniv (offset 280) */
- "iip\0"
- "glGetTexGeniv\0"
- "glGetTexGenivOES\0"
- "\0"
- /* _mesa_function_pool[34101]: CombinerInputNV (dynamic) */
- "iiiiii\0"
- "glCombinerInputNV\0"
+ "glMultiTexCoord4sv\0"
+ "glMultiTexCoord4svARB\0"
"\0"
- /* _mesa_function_pool[34127]: VertexBindingDivisor (will be remapped) */
+ /* _mesa_function_pool[33241]: VertexBindingDivisor (will be remapped) */
"ii\0"
"glVertexBindingDivisor\0"
"\0"
- /* _mesa_function_pool[34154]: FramebufferRenderbuffer (will be remapped) */
- "iiii\0"
- "glFramebufferRenderbuffer\0"
- "glFramebufferRenderbufferEXT\0"
- "glFramebufferRenderbufferOES\0"
+ /* _mesa_function_pool[33268]: GetPerfMonitorCounterInfoAMD (will be remapped) */
+ "iiip\0"
+ "glGetPerfMonitorCounterInfoAMD\0"
"\0"
- /* _mesa_function_pool[34244]: IsProgramARB (will be remapped) */
- "i\0"
- "glIsProgramARB\0"
- "glIsProgramNV\0"
+ /* _mesa_function_pool[33305]: UniformBlockBinding (will be remapped) */
+ "iii\0"
+ "glUniformBlockBinding\0"
"\0"
- /* _mesa_function_pool[34276]: VertexAttrib4uiv (will be remapped) */
- "ip\0"
- "glVertexAttrib4uiv\0"
- "glVertexAttrib4uivARB\0"
+ /* _mesa_function_pool[33332]: FenceSync (will be remapped) */
+ "ii\0"
+ "glFenceSync\0"
"\0"
- /* _mesa_function_pool[34321]: VertexAttrib4Nsv (will be remapped) */
+ /* _mesa_function_pool[33348]: VertexAttrib4Nusv (will be remapped) */
"ip\0"
- "glVertexAttrib4Nsv\0"
- "glVertexAttrib4NsvARB\0"
+ "glVertexAttrib4Nusv\0"
+ "glVertexAttrib4NusvARB\0"
"\0"
- /* _mesa_function_pool[34366]: Map2d (offset 222) */
- "iddiiddiip\0"
- "glMap2d\0"
+ /* _mesa_function_pool[33395]: SetFragmentShaderConstantATI (will be remapped) */
+ "ip\0"
+ "glSetFragmentShaderConstantATI\0"
"\0"
- /* _mesa_function_pool[34386]: Map2f (offset 223) */
- "iffiiffiip\0"
- "glMap2f\0"
+ /* _mesa_function_pool[33430]: VertexP2ui (will be remapped) */
+ "ii\0"
+ "glVertexP2ui\0"
"\0"
- /* _mesa_function_pool[34406]: ProgramStringARB (will be remapped) */
- "iiip\0"
- "glProgramStringARB\0"
+ /* _mesa_function_pool[33447]: GetTexEnvfv (offset 276) */
+ "iip\0"
+ "glGetTexEnvfv\0"
"\0"
- /* _mesa_function_pool[34431]: MultiTexCoord4x (will be remapped) */
- "iiiii\0"
- "glMultiTexCoord4xOES\0"
- "glMultiTexCoord4x\0"
+ /* _mesa_function_pool[33466]: BindAttribLocation (will be remapped) */
+ "iip\0"
+ "glBindAttribLocation\0"
+ "glBindAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[34477]: Vertex4s (offset 148) */
- "iiii\0"
- "glVertex4s\0"
+ /* _mesa_function_pool[33516]: TextureStorage2DEXT (will be remapped) */
+ "iiiiii\0"
+ "glTextureStorage2DEXT\0"
"\0"
- /* _mesa_function_pool[34494]: TexCoord4fVertex4fvSUN (dynamic) */
- "pp\0"
- "glTexCoord4fVertex4fvSUN\0"
+ /* _mesa_function_pool[33546]: FragmentLightiSGIX (dynamic) */
+ "iii\0"
+ "glFragmentLightiSGIX\0"
"\0"
- /* _mesa_function_pool[34523]: UnmapBuffer (will be remapped) */
- "i\0"
- "glUnmapBuffer\0"
- "glUnmapBufferARB\0"
- "glUnmapBufferOES\0"
+ /* _mesa_function_pool[33572]: DrawTransformFeedbackInstanced (will be remapped) */
+ "iii\0"
+ "glDrawTransformFeedbackInstanced\0"
"\0"
- /* _mesa_function_pool[34574]: MultiTexCoord4s (offset 406) */
- "iiiii\0"
- "glMultiTexCoord4s\0"
- "glMultiTexCoord4sARB\0"
+ /* _mesa_function_pool[33610]: PollAsyncSGIX (dynamic) */
+ "p\0"
+ "glPollAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[34620]: VertexAttribI2iEXT (will be remapped) */
- "iii\0"
- "glVertexAttribI2iEXT\0"
- "glVertexAttribI2i\0"
+ /* _mesa_function_pool[33629]: ResumeTransformFeedback (will be remapped) */
"\0"
- /* _mesa_function_pool[34664]: Vertex4f (offset 144) */
- "ffff\0"
- "glVertex4f\0"
+ "glResumeTransformFeedback\0"
"\0"
- /* _mesa_function_pool[34681]: EvalCoord1d (offset 228) */
- "d\0"
- "glEvalCoord1d\0"
+ /* _mesa_function_pool[33657]: GetProgramNamedParameterdvNV (will be remapped) */
+ "iipp\0"
+ "glGetProgramNamedParameterdvNV\0"
"\0"
- /* _mesa_function_pool[34698]: Vertex4d (offset 142) */
- "dddd\0"
- "glVertex4d\0"
+ /* _mesa_function_pool[33694]: VertexAttribI1iv (will be remapped) */
+ "ip\0"
+ "glVertexAttribI1ivEXT\0"
+ "glVertexAttribI1iv\0"
"\0"
- /* _mesa_function_pool[34715]: RasterPos4dv (offset 79) */
+ /* _mesa_function_pool[33739]: Vertex2dv (offset 127) */
"p\0"
- "glRasterPos4dv\0"
- "\0"
- /* _mesa_function_pool[34733]: GetGraphicsResetStatusARB (will be remapped) */
+ "glVertex2dv\0"
"\0"
- "glGetGraphicsResetStatusARB\0"
+ /* _mesa_function_pool[33754]: VertexAttribI2uivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI2uivEXT\0"
+ "glVertexAttribI2uiv\0"
"\0"
- /* _mesa_function_pool[34763]: UseShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[33801]: SampleMaski (will be remapped) */
"ii\0"
- "glUseShaderProgramEXT\0"
+ "glSampleMaski\0"
"\0"
- /* _mesa_function_pool[34789]: VertexAttribP2uiv (will be remapped) */
- "iiip\0"
- "glVertexAttribP2uiv\0"
+ /* _mesa_function_pool[33819]: GetFloati_v (will be remapped) */
+ "iip\0"
+ "glGetFloati_v\0"
"\0"
- /* _mesa_function_pool[34815]: VertexAttrib4bv (will be remapped) */
+ /* _mesa_function_pool[33838]: MultiTexCoord2iv (offset 389) */
"ip\0"
- "glVertexAttrib4bv\0"
- "glVertexAttrib4bvARB\0"
+ "glMultiTexCoord2iv\0"
+ "glMultiTexCoord2ivARB\0"
"\0"
- /* _mesa_function_pool[34858]: DebugMessageControl (will be remapped) */
- "iiiipi\0"
- "glDebugMessageControl\0"
+ /* _mesa_function_pool[33883]: DrawPixels (offset 257) */
+ "iiiip\0"
+ "glDrawPixels\0"
"\0"
- /* _mesa_function_pool[34888]: GetTexGenfv (offset 279) */
- "iip\0"
- "glGetTexGenfv\0"
- "glGetTexGenfvOES\0"
+ /* _mesa_function_pool[33903]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
+ "iffffffff\0"
+ "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[34924]: MultiTexCoord4d (offset 400) */
- "idddd\0"
- "glMultiTexCoord4d\0"
- "glMultiTexCoord4dARB\0"
+ /* _mesa_function_pool[33963]: DrawTransformFeedback (will be remapped) */
+ "ii\0"
+ "glDrawTransformFeedback\0"
"\0"
- /* _mesa_function_pool[34970]: Vertex4i (offset 146) */
- "iiii\0"
- "glVertex4i\0"
+ /* _mesa_function_pool[33991]: VertexAttribs3fvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs3fvNV\0"
"\0"
- /* _mesa_function_pool[34987]: VertexWeightPointerEXT (dynamic) */
- "iiip\0"
- "glVertexWeightPointerEXT\0"
+ /* _mesa_function_pool[34017]: GenLists (offset 5) */
+ "i\0"
+ "glGenLists\0"
"\0"
- /* _mesa_function_pool[35018]: GetHistogram (offset 361) */
- "iiiip\0"
- "glGetHistogram\0"
- "glGetHistogramEXT\0"
+ /* _mesa_function_pool[34031]: MapGrid2d (offset 226) */
+ "iddidd\0"
+ "glMapGrid2d\0"
"\0"
- /* _mesa_function_pool[35058]: ActiveStencilFaceEXT (will be remapped) */
- "i\0"
- "glActiveStencilFaceEXT\0"
+ /* _mesa_function_pool[34051]: MapGrid2f (offset 227) */
+ "iffiff\0"
+ "glMapGrid2f\0"
"\0"
- /* _mesa_function_pool[35084]: Translatex (will be remapped) */
+ /* _mesa_function_pool[34071]: SampleMapATI (will be remapped) */
"iii\0"
- "glTranslatexOES\0"
- "glTranslatex\0"
+ "glSampleMapATI\0"
"\0"
- /* _mesa_function_pool[35118]: StencilFuncSeparateATI (will be remapped) */
- "iiii\0"
- "glStencilFuncSeparateATI\0"
+ /* _mesa_function_pool[34091]: TexBumpParameterfvATI (will be remapped) */
+ "ip\0"
+ "glTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[35149]: Materialf (offset 169) */
- "iif\0"
- "glMaterialf\0"
+ /* _mesa_function_pool[34119]: GetActiveAttrib (will be remapped) */
+ "iiipppp\0"
+ "glGetActiveAttrib\0"
+ "glGetActiveAttribARB\0"
"\0"
- /* _mesa_function_pool[35166]: GetnMapfvARB (will be remapped) */
- "iiip\0"
- "glGetnMapfvARB\0"
+ /* _mesa_function_pool[34167]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glTexCoord2fColor4ubVertex3fvSUN\0"
+ "\0"
+ /* _mesa_function_pool[34205]: PixelMapfv (offset 251) */
+ "iip\0"
+ "glPixelMapfv\0"
+ "\0"
+ /* _mesa_function_pool[34223]: ClearBufferData (will be remapped) */
+ "iiiip\0"
+ "glClearBufferData\0"
+ "\0"
+ /* _mesa_function_pool[34248]: Color3usv (offset 24) */
+ "p\0"
+ "glColor3usv\0"
+ "\0"
+ /* _mesa_function_pool[34263]: StencilOpSeparate (will be remapped) */
+ "iiii\0"
+ "glStencilOpSeparate\0"
+ "glStencilOpSeparateATI\0"
"\0"
- /* _mesa_function_pool[35187]: IglooInterfaceSGIX (dynamic) */
+ /* _mesa_function_pool[34312]: GenSamplers (will be remapped) */
"ip\0"
- "glIglooInterfaceSGIX\0"
+ "glGenSamplers\0"
"\0"
- /* _mesa_function_pool[35212]: Materiali (offset 171) */
- "iii\0"
- "glMateriali\0"
+ /* _mesa_function_pool[34330]: DrawTexfOES (will be remapped) */
+ "fffff\0"
+ "glDrawTexfOES\0"
"\0"
- /* _mesa_function_pool[35229]: VertexAttrib4dNV (will be remapped) */
- "idddd\0"
- "glVertexAttrib4dNV\0"
+ /* _mesa_function_pool[34351]: AttachObjectARB (will be remapped) */
+ "ii\0"
+ "glAttachObjectARB\0"
"\0"
- /* _mesa_function_pool[35255]: MultiModeDrawElementsIBM (will be remapped) */
- "ppipii\0"
- "glMultiModeDrawElementsIBM\0"
+ /* _mesa_function_pool[34373]: GetFragmentLightivSGIX (dynamic) */
+ "iip\0"
+ "glGetFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[35290]: Indexsv (offset 51) */
- "p\0"
- "glIndexsv\0"
+ /* _mesa_function_pool[34403]: Accum (offset 213) */
+ "if\0"
+ "glAccum\0"
"\0"
- /* _mesa_function_pool[35303]: VertexAttrib1fvARB (will be remapped) */
- "ip\0"
- "glVertexAttrib1fv\0"
- "glVertexAttrib1fvARB\0"
+ /* _mesa_function_pool[34415]: GetTexImage (offset 281) */
+ "iiiip\0"
+ "glGetTexImage\0"
"\0"
- /* _mesa_function_pool[35346]: LightModelfv (offset 164) */
- "ip\0"
- "glLightModelfv\0"
+ /* _mesa_function_pool[34436]: Color4x (will be remapped) */
+ "iiii\0"
+ "glColor4xOES\0"
+ "glColor4x\0"
"\0"
- /* _mesa_function_pool[35365]: TexCoord2dv (offset 103) */
- "p\0"
- "glTexCoord2dv\0"
+ /* _mesa_function_pool[34465]: ConvolutionParameteriv (offset 353) */
+ "iip\0"
+ "glConvolutionParameteriv\0"
+ "glConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[35382]: ProgramParameters4fvNV (will be remapped) */
- "iiip\0"
- "glProgramParameters4fvNV\0"
+ /* _mesa_function_pool[34523]: Color4s (offset 33) */
+ "iiii\0"
+ "glColor4s\0"
"\0"
- /* _mesa_function_pool[35413]: EvalCoord1dv (offset 229) */
- "p\0"
- "glEvalCoord1dv\0"
+ /* _mesa_function_pool[34539]: CullParameterdvEXT (dynamic) */
+ "ip\0"
+ "glCullParameterdvEXT\0"
"\0"
- /* _mesa_function_pool[35431]: ReplacementCodeuiVertex3fSUN (dynamic) */
- "ifff\0"
- "glReplacementCodeuiVertex3fSUN\0"
+ /* _mesa_function_pool[34564]: GetUniformuiv (will be remapped) */
+ "iip\0"
+ "glGetUniformuivEXT\0"
+ "glGetUniformuiv\0"
"\0"
- /* _mesa_function_pool[35468]: MapBufferRange (will be remapped) */
+ /* _mesa_function_pool[34604]: Color4i (offset 31) */
"iiii\0"
- "glMapBufferRange\0"
- "glMapBufferRangeEXT\0"
+ "glColor4i\0"
"\0"
- /* _mesa_function_pool[35511]: Translated (offset 303) */
- "ddd\0"
- "glTranslated\0"
+ /* _mesa_function_pool[34620]: Color4f (offset 29) */
+ "ffff\0"
+ "glColor4f\0"
"\0"
- /* _mesa_function_pool[35529]: Translatef (offset 304) */
- "fff\0"
- "glTranslatef\0"
+ /* _mesa_function_pool[34636]: Color4d (offset 27) */
+ "dddd\0"
+ "glColor4d\0"
"\0"
- /* _mesa_function_pool[35547]: StencilMask (offset 209) */
- "i\0"
- "glStencilMask\0"
+ /* _mesa_function_pool[34652]: Color4b (offset 25) */
+ "iiii\0"
+ "glColor4b\0"
"\0"
- /* _mesa_function_pool[35564]: MinSampleShading (will be remapped) */
- "f\0"
- "glMinSampleShadingARB\0"
- "glMinSampleShading\0"
+ /* _mesa_function_pool[34668]: LoadProgramNV (will be remapped) */
+ "iiip\0"
+ "glLoadProgramNV\0"
"\0"
- /* _mesa_function_pool[35608]: MultTransposeMatrixd (will be remapped) */
- "p\0"
- "glMultTransposeMatrixd\0"
- "glMultTransposeMatrixdARB\0"
+ /* _mesa_function_pool[34690]: GetAttachedObjectsARB (will be remapped) */
+ "iipp\0"
+ "glGetAttachedObjectsARB\0"
"\0"
- /* _mesa_function_pool[35660]: MultTransposeMatrixf (will be remapped) */
+ /* _mesa_function_pool[34720]: EvalCoord1fv (offset 231) */
"p\0"
- "glMultTransposeMatrixf\0"
- "glMultTransposeMatrixfARB\0"
+ "glEvalCoord1fv\0"
"\0"
- /* _mesa_function_pool[35712]: GetLightiv (offset 265) */
- "iip\0"
- "glGetLightiv\0"
+ /* _mesa_function_pool[34738]: VertexAttribLFormat (will be remapped) */
+ "iiii\0"
+ "glVertexAttribLFormat\0"
"\0"
- /* _mesa_function_pool[35730]: DrawElementsInstancedBaseInstance (will be remapped) */
- "iiipii\0"
- "glDrawElementsInstancedBaseInstance\0"
+ /* _mesa_function_pool[34766]: StencilFuncSeparate (will be remapped) */
+ "iiii\0"
+ "glStencilFuncSeparate\0"
"\0"
- /* _mesa_function_pool[35774]: IsList (offset 287) */
- "i\0"
- "glIsList\0"
+ /* _mesa_function_pool[34794]: ShaderSource (will be remapped) */
+ "iipp\0"
+ "glShaderSource\0"
+ "glShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[35786]: PointSizex (will be remapped) */
- "i\0"
- "glPointSizexOES\0"
- "glPointSizex\0"
+ /* _mesa_function_pool[34833]: Normal3fv (offset 57) */
+ "p\0"
+ "glNormal3fv\0"
"\0"
- /* _mesa_function_pool[35818]: GetnPixelMapusvARB (will be remapped) */
+ /* _mesa_function_pool[34848]: ImageTransformParameterfvHP (dynamic) */
"iip\0"
- "glGetnPixelMapusvARB\0"
+ "glImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[35844]: IsSync (will be remapped) */
- "i\0"
- "glIsSync\0"
+ /* _mesa_function_pool[34883]: NormalP3ui (will be remapped) */
+ "ii\0"
+ "glNormalP3ui\0"
"\0"
- /* _mesa_function_pool[35856]: RenderMode (offset 196) */
- "i\0"
- "glRenderMode\0"
+ /* _mesa_function_pool[34900]: MultiTexCoord3fvARB (offset 395) */
+ "ip\0"
+ "glMultiTexCoord3fv\0"
+ "glMultiTexCoord3fvARB\0"
"\0"
- /* _mesa_function_pool[35872]: PrimitiveRestartIndex (will be remapped) */
- "i\0"
- "glPrimitiveRestartIndex\0"
- "glPrimitiveRestartIndexNV\0"
+ /* _mesa_function_pool[34945]: GetProgramParameterfvNV (will be remapped) */
+ "iiip\0"
+ "glGetProgramParameterfvNV\0"
"\0"
- /* _mesa_function_pool[35925]: GetMapControlPointsNV (dynamic) */
- "iiiiiip\0"
- "glGetMapControlPointsNV\0"
+ /* _mesa_function_pool[34977]: BufferData (will be remapped) */
+ "iipi\0"
+ "glBufferData\0"
+ "glBufferDataARB\0"
+ "\0"
+ /* _mesa_function_pool[35012]: TexSubImage2D (offset 333) */
+ "iiiiiiiip\0"
+ "glTexSubImage2D\0"
+ "glTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[35958]: ClearBufferiv (will be remapped) */
+ /* _mesa_function_pool[35058]: FragmentLightivSGIX (dynamic) */
"iip\0"
- "glClearBufferiv\0"
+ "glFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[35979]: ProgramLocalParameter4fARB (will be remapped) */
- "iiffff\0"
- "glProgramLocalParameter4fARB\0"
+ /* _mesa_function_pool[35085]: GetTexParameterPointervAPPLE (dynamic) */
+ "iip\0"
+ "glGetTexParameterPointervAPPLE\0"
+ "\0"
+ /* _mesa_function_pool[35121]: TexGenfv (offset 191) */
+ "iip\0"
+ "glTexGenfv\0"
+ "glTexGenfvOES\0"
"\0"
- /* _mesa_function_pool[36016]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[35151]: GetVertexAttribiv (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribiv\0"
+ "glGetVertexAttribivARB\0"
+ "\0"
+ /* _mesa_function_pool[35199]: TexCoordP2uiv (will be remapped) */
"ip\0"
- "glSpriteParameterivSGIX\0"
+ "glTexCoordP2uiv\0"
"\0"
- /* _mesa_function_pool[36044]: MultiTexCoord1fARB (offset 378) */
- "if\0"
- "glMultiTexCoord1f\0"
- "glMultiTexCoord1fARB\0"
+ /* _mesa_function_pool[35219]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glReplacementCodeuiColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[36087]: LoadName (offset 198) */
+ /* _mesa_function_pool[35263]: Uniform3fv (will be remapped) */
+ "iip\0"
+ "glUniform3fv\0"
+ "glUniform3fvARB\0"
+ "\0"
+ /* _mesa_function_pool[35297]: BlendEquation (offset 337) */
"i\0"
- "glLoadName\0"
+ "glBlendEquation\0"
+ "glBlendEquationEXT\0"
+ "glBlendEquationOES\0"
"\0"
- /* _mesa_function_pool[36101]: GetInternalformativ (will be remapped) */
- "iiiip\0"
- "glGetInternalformativ\0"
+ /* _mesa_function_pool[35354]: VertexAttrib3dNV (will be remapped) */
+ "iddd\0"
+ "glVertexAttrib3dNV\0"
"\0"
- /* _mesa_function_pool[36130]: VertexAttribs4ubvNV (will be remapped) */
- "iip\0"
- "glVertexAttribs4ubvNV\0"
+ /* _mesa_function_pool[35379]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ "ppppp\0"
+ "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[36157]: Frustumf (will be remapped) */
- "ffffff\0"
- "glFrustumfOES\0"
- "glFrustumf\0"
+ /* _mesa_function_pool[35443]: IndexFuncEXT (dynamic) */
+ "if\0"
+ "glIndexFuncEXT\0"
"\0"
- /* _mesa_function_pool[36190]: WeightsvARB (dynamic) */
- "ip\0"
- "glWeightsvARB\0"
+ /* _mesa_function_pool[35462]: UseShaderProgramEXT (will be remapped) */
+ "ii\0"
+ "glUseShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[36208]: GetIntegeri_v (will be remapped) */
- "iip\0"
- "glGetIntegerIndexedvEXT\0"
- "glGetIntegeri_v\0"
+ /* _mesa_function_pool[35488]: PushName (offset 201) */
+ "i\0"
+ "glPushName\0"
"\0"
- /* _mesa_function_pool[36253]: LightModelxv (will be remapped) */
+ /* _mesa_function_pool[35502]: GenFencesNV (dynamic) */
"ip\0"
- "glLightModelxvOES\0"
- "glLightModelxv\0"
+ "glGenFencesNV\0"
"\0"
- /* _mesa_function_pool[36290]: IsTransformFeedback (will be remapped) */
- "i\0"
- "glIsTransformFeedback\0"
+ /* _mesa_function_pool[35520]: CullParameterfvEXT (dynamic) */
+ "ip\0"
+ "glCullParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[36315]: CopyTexSubImage1D (offset 325) */
- "iiiiii\0"
- "glCopyTexSubImage1D\0"
- "glCopyTexSubImage1DEXT\0"
+ /* _mesa_function_pool[35545]: DeleteRenderbuffers (will be remapped) */
+ "ip\0"
+ "glDeleteRenderbuffers\0"
+ "glDeleteRenderbuffersEXT\0"
+ "glDeleteRenderbuffersOES\0"
"\0"
- /* _mesa_function_pool[36366]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */
- "ppp\0"
- "glReplacementCodeuiColor3fVertex3fvSUN\0"
+ /* _mesa_function_pool[35621]: VertexAttrib1dv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib1dv\0"
+ "glVertexAttrib1dvARB\0"
"\0"
- /* _mesa_function_pool[36410]: CullFace (offset 152) */
+ /* _mesa_function_pool[35664]: ImageTransformParameteriHP (dynamic) */
+ "iii\0"
+ "glImageTransformParameteriHP\0"
+ "\0"
+ /* _mesa_function_pool[35698]: IsShader (will be remapped) */
"i\0"
- "glCullFace\0"
+ "glIsShader\0"
+ "\0"
+ /* _mesa_function_pool[35712]: Rotated (offset 299) */
+ "dddd\0"
+ "glRotated\0"
+ "\0"
+ /* _mesa_function_pool[35728]: Color4iv (offset 32) */
+ "p\0"
+ "glColor4iv\0"
"\0"
- /* _mesa_function_pool[36424]: BindTexture (offset 307) */
+ /* _mesa_function_pool[35742]: Disablei (will be remapped) */
"ii\0"
- "glBindTexture\0"
- "glBindTextureEXT\0"
+ "glDisableIndexedEXT\0"
+ "glDisablei\0"
+ "\0"
+ /* _mesa_function_pool[35777]: Rotatex (will be remapped) */
+ "iiii\0"
+ "glRotatexOES\0"
+ "glRotatex\0"
+ "\0"
+ /* _mesa_function_pool[35806]: FramebufferTextureLayer (will be remapped) */
+ "iiiii\0"
+ "glFramebufferTextureLayer\0"
+ "glFramebufferTextureLayerARB\0"
+ "glFramebufferTextureLayerEXT\0"
"\0"
- /* _mesa_function_pool[36459]: VertexAttribs2fvNV (will be remapped) */
+ /* _mesa_function_pool[35897]: TexEnvfv (offset 185) */
"iip\0"
- "glVertexAttribs2fvNV\0"
+ "glTexEnvfv\0"
"\0"
- /* _mesa_function_pool[36485]: MultiTexCoord4fARB (offset 402) */
- "iffff\0"
- "glMultiTexCoord4f\0"
- "glMultiTexCoord4fARB\0"
+ /* _mesa_function_pool[35913]: ProgramUniformMatrix3fv (will be remapped) */
+ "iiiip\0"
+ "glProgramUniformMatrix3fv\0"
"\0"
- /* _mesa_function_pool[36531]: ResumeTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[35946]: LoadMatrixf (offset 291) */
+ "p\0"
+ "glLoadMatrixf\0"
"\0"
- "glResumeTransformFeedback\0"
+ /* _mesa_function_pool[35963]: GetProgramLocalParameterfvARB (will be remapped) */
+ "iip\0"
+ "glGetProgramLocalParameterfvARB\0"
"\0"
- /* _mesa_function_pool[36559]: PushDebugGroup (will be remapped) */
- "iiip\0"
- "glPushDebugGroup\0"
+ /* _mesa_function_pool[36000]: LoadMatrixx (will be remapped) */
+ "p\0"
+ "glLoadMatrixxOES\0"
+ "glLoadMatrixx\0"
"\0"
- /* _mesa_function_pool[36582]: DrawMeshArraysSUN (dynamic) */
- "iiii\0"
- "glDrawMeshArraysSUN\0"
+ /* _mesa_function_pool[36034]: DrawRangeElementsBaseVertex (will be remapped) */
+ "iiiiipi\0"
+ "glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[36608]: SecondaryColor3i (will be remapped) */
- "iii\0"
- "glSecondaryColor3i\0"
- "glSecondaryColor3iEXT\0"
+ /* _mesa_function_pool[36073]: MatrixIndexuivARB (dynamic) */
+ "ip\0"
+ "glMatrixIndexuivARB\0"
"\0"
- /* _mesa_function_pool[36654]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[36097]: Tangent3sEXT (dynamic) */
"iii\0"
- "glStencilFunc\0"
+ "glTangent3sEXT\0"
"\0"
- /* _mesa_function_pool[36673]: CopyPixels (offset 255) */
- "iiiii\0"
- "glCopyPixels\0"
+ /* _mesa_function_pool[36117]: SecondaryColor3bv (will be remapped) */
+ "p\0"
+ "glSecondaryColor3bv\0"
+ "glSecondaryColor3bvEXT\0"
"\0"
- /* _mesa_function_pool[36693]: Rectsv (offset 93) */
- "pp\0"
- "glRectsv\0"
+ /* _mesa_function_pool[36163]: GlobalAlphaFactorusSUN (dynamic) */
+ "i\0"
+ "glGlobalAlphaFactorusSUN\0"
"\0"
- /* _mesa_function_pool[36706]: WindowPos3iv (will be remapped) */
+ /* _mesa_function_pool[36191]: GetCombinerOutputParameterivNV (dynamic) */
+ "iiip\0"
+ "glGetCombinerOutputParameterivNV\0"
+ "\0"
+ /* _mesa_function_pool[36230]: DrawTexxvOES (will be remapped) */
"p\0"
- "glWindowPos3iv\0"
- "glWindowPos3ivARB\0"
- "glWindowPos3ivMESA\0"
+ "glDrawTexxvOES\0"
+ "\0"
+ /* _mesa_function_pool[36248]: TexParameterfv (offset 179) */
+ "iip\0"
+ "glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[36761]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[36270]: Color4ubv (offset 36) */
"p\0"
- "glReplacementCodeuivSUN\0"
+ "glColor4ubv\0"
"\0"
- /* _mesa_function_pool[36788]: DrawElementsBaseVertex (will be remapped) */
- "iiipi\0"
- "glDrawElementsBaseVertex\0"
+ /* _mesa_function_pool[36285]: TexCoord2fv (offset 105) */
+ "p\0"
+ "glTexCoord2fv\0"
"\0"
- /* _mesa_function_pool[36820]: CopyConvolutionFilter2D (offset 355) */
- "iiiiii\0"
- "glCopyConvolutionFilter2D\0"
- "glCopyConvolutionFilter2DEXT\0"
+ /* _mesa_function_pool[36302]: FogCoorddv (will be remapped) */
+ "p\0"
+ "glFogCoorddv\0"
+ "glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[36883]: ApplyTextureEXT (dynamic) */
+ /* _mesa_function_pool[36334]: VDPAUUnregisterSurfaceNV (will be remapped) */
"i\0"
- "glApplyTextureEXT\0"
+ "glVDPAUUnregisterSurfaceNV\0"
"\0"
- /* _mesa_function_pool[36904]: CopyBufferSubData (will be remapped) */
- "iiiii\0"
- "glCopyBufferSubData\0"
+ /* _mesa_function_pool[36364]: ColorP3ui (will be remapped) */
+ "ii\0"
+ "glColorP3ui\0"
"\0"
- /* _mesa_function_pool[36931]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[36380]: ClearBufferuiv (will be remapped) */
"iip\0"
- "glNormalPointer\0"
+ "glClearBufferuiv\0"
+ "\0"
+ /* _mesa_function_pool[36402]: GetShaderPrecisionFormat (will be remapped) */
+ "iipp\0"
+ "glGetShaderPrecisionFormat\0"
+ "\0"
+ /* _mesa_function_pool[36435]: ProgramNamedParameter4dvNV (will be remapped) */
+ "iipp\0"
+ "glProgramNamedParameter4dvNV\0"
+ "\0"
+ /* _mesa_function_pool[36470]: Flush (offset 217) */
+ "\0"
+ "glFlush\0"
"\0"
- /* _mesa_function_pool[36952]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[36480]: VertexAttribI4iEXT (will be remapped) */
+ "iiiii\0"
+ "glVertexAttribI4iEXT\0"
+ "glVertexAttribI4i\0"
+ "\0"
+ /* _mesa_function_pool[36526]: FogCoordd (will be remapped) */
+ "d\0"
+ "glFogCoordd\0"
+ "glFogCoorddEXT\0"
+ "\0"
+ /* _mesa_function_pool[36556]: Uniform3iv (will be remapped) */
"iip\0"
- "glTexParameterfv\0"
+ "glUniform3iv\0"
+ "glUniform3ivARB\0"
"\0"
- /* _mesa_function_pool[36974]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
- "ppp\0"
- "glReplacementCodeuiNormal3fVertex3fvSUN\0"
+ /* _mesa_function_pool[36590]: TexStorage2DMultisample (will be remapped) */
+ "iiiiii\0"
+ "glTexStorage2DMultisample\0"
"\0"
- /* _mesa_function_pool[37019]: GetCombinerOutputParameterfvNV (dynamic) */
- "iiip\0"
- "glGetCombinerOutputParameterfvNV\0"
+ /* _mesa_function_pool[36624]: UnlockArraysEXT (will be remapped) */
"\0"
- /* _mesa_function_pool[37058]: WindowPos4iMESA (will be remapped) */
- "iiii\0"
- "glWindowPos4iMESA\0"
+ "glUnlockArraysEXT\0"
"\0"
- /* _mesa_function_pool[37082]: VertexAttrib4Nubv (will be remapped) */
+ /* _mesa_function_pool[36644]: VertexAttrib1svNV (will be remapped) */
"ip\0"
- "glVertexAttrib4Nubv\0"
- "glVertexAttrib4NubvARB\0"
- "\0"
- /* _mesa_function_pool[37129]: SecondaryColor3ui (will be remapped) */
- "iii\0"
- "glSecondaryColor3ui\0"
- "glSecondaryColor3uiEXT\0"
+ "glVertexAttrib1svNV\0"
"\0"
- /* _mesa_function_pool[37177]: VertexAttribI3uivEXT (will be remapped) */
+ /* _mesa_function_pool[36668]: VertexAttrib4iv (will be remapped) */
"ip\0"
- "glVertexAttribI3uivEXT\0"
- "glVertexAttribI3uiv\0"
+ "glVertexAttrib4iv\0"
+ "glVertexAttrib4ivARB\0"
"\0"
- /* _mesa_function_pool[37224]: UniformMatrix3x4fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix3x4fv\0"
+ /* _mesa_function_pool[36711]: CopyTexSubImage3D (offset 373) */
+ "iiiiiiiii\0"
+ "glCopyTexSubImage3D\0"
+ "glCopyTexSubImage3DEXT\0"
+ "glCopyTexSubImage3DOES\0"
"\0"
- /* _mesa_function_pool[37251]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[36788]: GetInteger64v (will be remapped) */
"ip\0"
- "glClipPlane\0"
+ "glGetInteger64v\0"
"\0"
- /* _mesa_function_pool[37267]: Recti (offset 90) */
- "iiii\0"
- "glRecti\0"
+ /* _mesa_function_pool[36808]: DetachObjectARB (will be remapped) */
+ "ii\0"
+ "glDetachObjectARB\0"
"\0"
- /* _mesa_function_pool[37281]: VertexAttribI3ivEXT (will be remapped) */
- "ip\0"
- "glVertexAttribI3ivEXT\0"
- "glVertexAttribI3iv\0"
+ /* _mesa_function_pool[36830]: Indexiv (offset 49) */
+ "p\0"
+ "glIndexiv\0"
"\0"
- /* _mesa_function_pool[37326]: DrawRangeElementsBaseVertex (will be remapped) */
- "iiiiipi\0"
- "glDrawRangeElementsBaseVertex\0"
+ /* _mesa_function_pool[36843]: TexEnvi (offset 186) */
+ "iii\0"
+ "glTexEnvi\0"
"\0"
- /* _mesa_function_pool[37365]: VertexAttribIPointer (will be remapped) */
- "iiiip\0"
- "glVertexAttribIPointerEXT\0"
- "glVertexAttribIPointer\0"
+ /* _mesa_function_pool[36858]: TexEnvf (offset 184) */
+ "iif\0"
+ "glTexEnvf\0"
"\0"
- /* _mesa_function_pool[37421]: SecondaryColor3usv (will be remapped) */
- "p\0"
- "glSecondaryColor3usv\0"
- "glSecondaryColor3usvEXT\0"
+ /* _mesa_function_pool[36873]: TexEnvx (will be remapped) */
+ "iii\0"
+ "glTexEnvxOES\0"
+ "glTexEnvx\0"
"\0"
- /* _mesa_function_pool[37469]: VertexP2uiv (will be remapped) */
- "ip\0"
- "glVertexP2uiv\0"
+ /* _mesa_function_pool[36901]: StopInstrumentsSGIX (dynamic) */
+ "i\0"
+ "glStopInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[37487]: Fogxv (will be remapped) */
- "ip\0"
- "glFogxvOES\0"
- "glFogxv\0"
+ /* _mesa_function_pool[36926]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
+ "fffffffffffffff\0"
+ "glTexCoord4fColor4fNormal3fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[37510]: MultiTexCoord3dv (offset 393) */
- "ip\0"
- "glMultiTexCoord3dv\0"
- "glMultiTexCoord3dvARB\0"
+ /* _mesa_function_pool[36982]: InvalidateBufferSubData (will be remapped) */
+ "iii\0"
+ "glInvalidateBufferSubData\0"
"\0"
- /* _mesa_function_pool[37555]: WindowPos4fvMESA (will be remapped) */
- "p\0"
- "glWindowPos4fvMESA\0"
+ /* _mesa_function_pool[37013]: UniformMatrix4x2fv (will be remapped) */
+ "iiip\0"
+ "glUniformMatrix4x2fv\0"
+ "\0"
+ /* _mesa_function_pool[37040]: SamplerParameterIiv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterIiv\0"
"\0"
- /* _mesa_function_pool[37577]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[37067]: PolygonOffset (offset 319) */
+ "ff\0"
+ "glPolygonOffset\0"
+ "\0"
+ /* _mesa_function_pool[37087]: NormalPointervINTEL (dynamic) */
"ip\0"
- "glGetPixelMapuiv\0"
+ "glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[37598]: Rectf (offset 88) */
- "ffff\0"
- "glRectf\0"
+ /* _mesa_function_pool[37113]: SamplerParameterfv (will be remapped) */
+ "iip\0"
+ "glSamplerParameterfv\0"
"\0"
- /* _mesa_function_pool[37612]: VertexAttrib1sNV (will be remapped) */
- "ii\0"
- "glVertexAttrib1sNV\0"
+ /* _mesa_function_pool[37139]: Normal3fVertex3fSUN (dynamic) */
+ "ffffff\0"
+ "glNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[37635]: Indexfv (offset 47) */
- "p\0"
- "glIndexfv\0"
+ /* _mesa_function_pool[37169]: ProgramEnvParameter4fARB (will be remapped) */
+ "iiffff\0"
+ "glProgramEnvParameter4fARB\0"
+ "glProgramParameter4fNV\0"
+ "\0"
+ /* _mesa_function_pool[37227]: ClearDepth (offset 208) */
+ "d\0"
+ "glClearDepth\0"
"\0"
- /* _mesa_function_pool[37648]: ColorP3uiv (will be remapped) */
+ /* _mesa_function_pool[37243]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
- "glColorP3uiv\0"
+ "glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[37665]: TexParameterIuiv (will be remapped) */
- "iip\0"
- "glTexParameterIuivEXT\0"
- "glTexParameterIuiv\0"
+ /* _mesa_function_pool[37267]: Color4fv (offset 30) */
+ "p\0"
+ "glColor4fv\0"
"\0"
- /* _mesa_function_pool[37711]: BlitFramebuffer (will be remapped) */
- "iiiiiiiiii\0"
- "glBlitFramebuffer\0"
- "glBlitFramebufferEXT\0"
+ /* _mesa_function_pool[37281]: GetnMinmaxARB (will be remapped) */
+ "iiiiip\0"
+ "glGetnMinmaxARB\0"
"\0"
- /* _mesa_function_pool[37762]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[37305]: ColorPointer (offset 308) */
+ "iiip\0"
+ "glColorPointer\0"
+ "\0"
+ /* _mesa_function_pool[37326]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[37797]: Tangent3bEXT (dynamic) */
- "iii\0"
- "glTangent3bEXT\0"
+ /* _mesa_function_pool[37361]: Lightiv (offset 162) */
+ "iip\0"
+ "glLightiv\0"
"\0"
- /* _mesa_function_pool[37817]: CombinerParameterfNV (dynamic) */
- "if\0"
- "glCombinerParameterfNV\0"
+ /* _mesa_function_pool[37376]: GetTexParameteriv (offset 283) */
+ "iip\0"
+ "glGetTexParameteriv\0"
"\0"
- /* _mesa_function_pool[37844]: IndexMask (offset 212) */
- "i\0"
- "glIndexMask\0"
+ /* _mesa_function_pool[37401]: TransformFeedbackVaryings (will be remapped) */
+ "iipi\0"
+ "glTransformFeedbackVaryings\0"
+ "glTransformFeedbackVaryingsEXT\0"
"\0"
- /* _mesa_function_pool[37859]: CreateShaderObjectARB (will be remapped) */
+ /* _mesa_function_pool[37466]: VertexAttrib3sv (will be remapped) */
+ "ip\0"
+ "glVertexAttrib3sv\0"
+ "glVertexAttrib3svARB\0"
+ "\0"
+ /* _mesa_function_pool[37509]: IsVertexArray (will be remapped) */
"i\0"
- "glCreateShaderObjectARB\0"
+ "glIsVertexArray\0"
+ "glIsVertexArrayAPPLE\0"
+ "glIsVertexArrayOES\0"
"\0"
- /* _mesa_function_pool[37886]: ReplacementCodeuiSUN (dynamic) */
+ /* _mesa_function_pool[37568]: PushClientAttrib (offset 335) */
"i\0"
- "glReplacementCodeuiSUN\0"
+ "glPushClientAttrib\0"
"\0"
- /* _mesa_function_pool[37912]: GetFloatv (offset 262) */
- "ip\0"
- "glGetFloatv\0"
+ /* _mesa_function_pool[37590]: ProgramUniform4ui (will be remapped) */
+ "iiiiii\0"
+ "glProgramUniform4ui\0"
"\0"
- /* _mesa_function_pool[37928]: CombinerOutputNV (dynamic) */
- "iiiiiiiiii\0"
- "glCombinerOutputNV\0"
+ /* _mesa_function_pool[37618]: Uniform1f (will be remapped) */
+ "if\0"
+ "glUniform1f\0"
+ "glUniform1fARB\0"
"\0"
- /* _mesa_function_pool[37959]: MultiTexCoord3i (offset 396) */
- "iiii\0"
- "glMultiTexCoord3i\0"
- "glMultiTexCoord3iARB\0"
+ /* _mesa_function_pool[37649]: FragmentMaterialfSGIX (dynamic) */
+ "iif\0"
+ "glFragmentMaterialfSGIX\0"
"\0"
- /* _mesa_function_pool[38004]: GetVertexAttribIiv (will be remapped) */
- "iip\0"
- "glGetVertexAttribIivEXT\0"
- "glGetVertexAttribIiv\0"
+ /* _mesa_function_pool[37678]: Uniform1i (will be remapped) */
+ "ii\0"
+ "glUniform1i\0"
+ "glUniform1iARB\0"
+ "\0"
+ /* _mesa_function_pool[37709]: GetPolygonStipple (offset 274) */
+ "p\0"
+ "glGetPolygonStipple\0"
+ "\0"
+ /* _mesa_function_pool[37732]: PixelTexGenSGIX (dynamic) */
+ "i\0"
+ "glPixelTexGenSGIX\0"
"\0"
- /* _mesa_function_pool[38054]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[37753]: TexGenxOES (will be remapped) */
"iii\0"
- "glClientWaitSync\0"
+ "glTexGenxOES\0"
"\0"
- /* _mesa_function_pool[38076]: TexCoord4s (offset 124) */
- "iiii\0"
- "glTexCoord4s\0"
+ /* _mesa_function_pool[37771]: UseProgram (will be remapped) */
+ "i\0"
+ "glUseProgram\0"
+ "glUseProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[38095]: GetPerfMonitorGroupsAMD (will be remapped) */
- "pip\0"
- "glGetPerfMonitorGroupsAMD\0"
+ /* _mesa_function_pool[37809]: StartInstrumentsSGIX (dynamic) */
"\0"
- /* _mesa_function_pool[38126]: TexCoord3sv (offset 117) */
- "p\0"
- "glTexCoord3sv\0"
+ "glStartInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[38143]: VertexAttrib2dNV (will be remapped) */
- "idd\0"
- "glVertexAttrib2dNV\0"
+ /* _mesa_function_pool[37834]: FlushMappedBufferRangeAPPLE (will be remapped) */
+ "iii\0"
+ "glFlushMappedBufferRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[38167]: FogCoorddv (will be remapped) */
+ /* _mesa_function_pool[37869]: GetFragDataLocation (will be remapped) */
+ "ip\0"
+ "glGetFragDataLocationEXT\0"
+ "glGetFragDataLocation\0"
+ "\0"
+ /* _mesa_function_pool[37920]: PixelMapuiv (offset 252) */
+ "iip\0"
+ "glPixelMapuiv\0"
+ "\0"
+ /* _mesa_function_pool[37939]: VertexWeightfvEXT (dynamic) */
"p\0"
- "glFogCoorddv\0"
- "glFogCoorddvEXT\0"
+ "glVertexWeightfvEXT\0"
"\0"
- /* _mesa_function_pool[38199]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[37962]: GetFenceivNV (dynamic) */
+ "iip\0"
+ "glGetFenceivNV\0"
"\0"
- "glPopAttrib\0"
+ /* _mesa_function_pool[37982]: CurrentPaletteMatrixARB (dynamic) */
+ "i\0"
+ "glCurrentPaletteMatrixARB\0"
+ "glCurrentPaletteMatrixOES\0"
"\0"
- /* _mesa_function_pool[38213]: Fogfv (offset 154) */
- "ip\0"
- "glFogfv\0"
+ /* _mesa_function_pool[38037]: GetInteger64i_v (will be remapped) */
+ "iip\0"
+ "glGetInteger64i_v\0"
"\0"
- /* _mesa_function_pool[38225]: ObjectPurgeableAPPLE (will be remapped) */
- "iii\0"
- "glObjectPurgeableAPPLE\0"
+ /* _mesa_function_pool[38060]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
+ "ffiiiifff\0"
+ "glTexCoord2fColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[38253]: InitNames (offset 197) */
+ /* _mesa_function_pool[38103]: TagSampleBufferSGIX (dynamic) */
"\0"
- "glInitNames\0"
+ "glTagSampleBufferSGIX\0"
"\0"
- /* _mesa_function_pool[38267]: Normal3sv (offset 61) */
- "p\0"
- "glNormal3sv\0"
+ /* _mesa_function_pool[38127]: Color3s (offset 17) */
+ "iii\0"
+ "glColor3s\0"
"\0"
- /* _mesa_function_pool[38282]: GetTransformFeedbackVarying (will be remapped) */
- "iiipppp\0"
- "glGetTransformFeedbackVarying\0"
- "glGetTransformFeedbackVaryingEXT\0"
+ /* _mesa_function_pool[38142]: TexCoordPointer (offset 320) */
+ "iiip\0"
+ "glTexCoordPointer\0"
"\0"
- /* _mesa_function_pool[38354]: Minmax (offset 368) */
+ /* _mesa_function_pool[38166]: Color3i (offset 15) */
"iii\0"
- "glMinmax\0"
- "glMinmaxEXT\0"
+ "glColor3i\0"
"\0"
- /* _mesa_function_pool[38380]: BufferData (will be remapped) */
- "iipi\0"
- "glBufferData\0"
- "glBufferDataARB\0"
+ /* _mesa_function_pool[38181]: EvalCoord2d (offset 232) */
+ "dd\0"
+ "glEvalCoord2d\0"
"\0"
- /* _mesa_function_pool[38415]: DeleteQueries (will be remapped) */
- "ip\0"
- "glDeleteQueries\0"
- "glDeleteQueriesARB\0"
+ /* _mesa_function_pool[38199]: EvalCoord2f (offset 234) */
+ "ff\0"
+ "glEvalCoord2f\0"
"\0"
- /* _mesa_function_pool[38454]: TexCoord4d (offset 118) */
- "dddd\0"
- "glTexCoord4d\0"
+ /* _mesa_function_pool[38217]: Color3b (offset 9) */
+ "iii\0"
+ "glColor3b\0"
"\0"
- /* _mesa_function_pool[38473]: IsEnabledi (will be remapped) */
- "ii\0"
- "glIsEnabledIndexedEXT\0"
- "glIsEnabledi\0"
+ /* _mesa_function_pool[38232]: ExecuteProgramNV (will be remapped) */
+ "iip\0"
+ "glExecuteProgramNV\0"
"\0"
- /* _mesa_function_pool[38512]: TexCoord4f (offset 120) */
- "ffff\0"
- "glTexCoord4f\0"
+ /* _mesa_function_pool[38256]: Color3f (offset 13) */
+ "fff\0"
+ "glColor3f\0"
"\0"
- /* _mesa_function_pool[38531]: Uniform3ui (will be remapped) */
- "iiii\0"
- "glUniform3uiEXT\0"
- "glUniform3ui\0"
+ /* _mesa_function_pool[38271]: Color3d (offset 11) */
+ "ddd\0"
+ "glColor3d\0"
"\0"
- /* _mesa_function_pool[38566]: InvalidateFramebuffer (will be remapped) */
+ /* _mesa_function_pool[38286]: GetVertexAttribdv (will be remapped) */
"iip\0"
- "glInvalidateFramebuffer\0"
+ "glGetVertexAttribdv\0"
+ "glGetVertexAttribdvARB\0"
"\0"
- /* _mesa_function_pool[38595]: GetFragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[38334]: GetBufferPointerv (will be remapped) */
"iip\0"
- "glGetFragmentMaterialfvSGIX\0"
+ "glGetBufferPointerv\0"
+ "glGetBufferPointervARB\0"
+ "glGetBufferPointervOES\0"
"\0"
- /* _mesa_function_pool[38628]: Binormal3fvEXT (dynamic) */
- "p\0"
- "glBinormal3fvEXT\0"
+ /* _mesa_function_pool[38405]: GenFramebuffers (will be remapped) */
+ "ip\0"
+ "glGenFramebuffers\0"
+ "glGenFramebuffersEXT\0"
+ "glGenFramebuffersOES\0"
"\0"
- /* _mesa_function_pool[38648]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[38469]: GenBuffers (will be remapped) */
"ip\0"
- "glGetBooleanv\0"
+ "glGenBuffers\0"
+ "glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[38666]: ColorFragmentOp3ATI (will be remapped) */
- "iiiiiiiiiiiii\0"
- "glColorFragmentOp3ATI\0"
+ /* _mesa_function_pool[38502]: ClearDepthx (will be remapped) */
+ "i\0"
+ "glClearDepthxOES\0"
+ "glClearDepthx\0"
"\0"
- /* _mesa_function_pool[38703]: Hint (offset 158) */
+ /* _mesa_function_pool[38536]: BlendEquationSeparate (will be remapped) */
"ii\0"
- "glHint\0"
+ "glBlendEquationSeparate\0"
+ "glBlendEquationSeparateEXT\0"
+ "glBlendEquationSeparateATI\0"
+ "glBlendEquationSeparateOES\0"
"\0"
- /* _mesa_function_pool[38714]: DeletePerfMonitorsAMD (will be remapped) */
- "ip\0"
- "glDeletePerfMonitorsAMD\0"
+ /* _mesa_function_pool[38645]: PixelTransformParameteriEXT (dynamic) */
+ "iii\0"
+ "glPixelTransformParameteriEXT\0"
"\0"
- /* _mesa_function_pool[38742]: Color4dv (offset 28) */
- "p\0"
- "glColor4dv\0"
+ /* _mesa_function_pool[38680]: MultiTexCoordP4ui (will be remapped) */
+ "iii\0"
+ "glMultiTexCoordP4ui\0"
"\0"
- /* _mesa_function_pool[38756]: IsAsyncMarkerSGIX (dynamic) */
- "i\0"
- "glIsAsyncMarkerSGIX\0"
+ /* _mesa_function_pool[38705]: VertexAttribIPointer (will be remapped) */
+ "iiiip\0"
+ "glVertexAttribIPointerEXT\0"
+ "glVertexAttribIPointer\0"
"\0"
- /* _mesa_function_pool[38779]: MemoryBarrier (will be remapped) */
+ /* _mesa_function_pool[38761]: EnableVertexAttribArray (will be remapped) */
"i\0"
- "glMemoryBarrier\0"
- "\0"
- /* _mesa_function_pool[38798]: AreProgramsResidentNV (will be remapped) */
- "ipp\0"
- "glAreProgramsResidentNV\0"
+ "glEnableVertexAttribArray\0"
+ "glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[38827]: DisableVertexAttribArray (will be remapped) */
+ /* _mesa_function_pool[38819]: FrameZoomSGIX (dynamic) */
"i\0"
- "glDisableVertexAttribArray\0"
- "glDisableVertexAttribArrayARB\0"
+ "glFrameZoomSGIX\0"
"\0"
- /* _mesa_function_pool[38887]: CopyColorSubTable (offset 347) */
- "iiiii\0"
- "glCopyColorSubTable\0"
- "glCopyColorSubTableEXT\0"
+ /* _mesa_function_pool[38838]: RasterPos4sv (offset 85) */
+ "p\0"
+ "glRasterPos4sv\0"
"\0"
- /* _mesa_function_pool[38937]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[38856]: SelectBuffer (offset 195) */
"ip\0"
- "glWeightdvARB\0"
+ "glSelectBuffer\0"
"\0"
- /* _mesa_function_pool[38955]: PollInstrumentsSGIX (dynamic) */
- "p\0"
- "glPollInstrumentsSGIX\0"
+ /* _mesa_function_pool[38875]: GetSynciv (will be remapped) */
+ "iiipp\0"
+ "glGetSynciv\0"
"\0"
- /* _mesa_function_pool[38980]: VertexAttrib3dvNV (will be remapped) */
- "ip\0"
- "glVertexAttrib3dvNV\0"
+ /* _mesa_function_pool[38894]: TextureView (will be remapped) */
+ "iiiiiiii\0"
+ "glTextureView\0"
"\0"
- /* _mesa_function_pool[39004]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[38918]: TexEnviv (offset 187) */
"iip\0"
- "glGetObjectParameterfvARB\0"
+ "glTexEnviv\0"
"\0"
- /* _mesa_function_pool[39035]: Vertex4iv (offset 147) */
- "p\0"
- "glVertex4iv\0"
+ /* _mesa_function_pool[38934]: TexSubImage3D (offset 372) */
+ "iiiiiiiiiip\0"
+ "glTexSubImage3D\0"
+ "glTexSubImage3DEXT\0"
+ "glTexSubImage3DOES\0"
+ "\0"
+ /* _mesa_function_pool[39001]: Bitmap (offset 8) */
+ "iiffffp\0"
+ "glBitmap\0"
+ "\0"
+ /* _mesa_function_pool[39019]: VertexAttribDivisor (will be remapped) */
+ "ii\0"
+ "glVertexAttribDivisorARB\0"
+ "glVertexAttribDivisor\0"
+ "\0"
+ /* _mesa_function_pool[39070]: DrawTransformFeedbackStream (will be remapped) */
+ "iii\0"
+ "glDrawTransformFeedbackStream\0"
+ "\0"
+ /* _mesa_function_pool[39105]: GetIntegerv (offset 263) */
+ "ip\0"
+ "glGetIntegerv\0"
"\0"
- /* _mesa_function_pool[39050]: GetDoublei_v (will be remapped) */
+ /* _mesa_function_pool[39123]: FragmentLightfvSGIX (dynamic) */
"iip\0"
- "glGetDoublei_v\0"
+ "glFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[39070]: BufferSubData (will be remapped) */
- "iiip\0"
- "glBufferSubData\0"
- "glBufferSubDataARB\0"
+ /* _mesa_function_pool[39150]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
+ "ppp\0"
+ "glTexCoord2fColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[39111]: TexCoord4dv (offset 119) */
- "p\0"
- "glTexCoord4dv\0"
+ /* _mesa_function_pool[39187]: GetActiveUniform (will be remapped) */
+ "iiipppp\0"
+ "glGetActiveUniform\0"
+ "glGetActiveUniformARB\0"
"\0"
- /* _mesa_function_pool[39128]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[39237]: AlphaFuncx (will be remapped) */
"ii\0"
- "glLockArraysEXT\0"
+ "glAlphaFuncxOES\0"
+ "glAlphaFuncx\0"
"\0"
- /* _mesa_function_pool[39148]: Begin (offset 7) */
+ /* _mesa_function_pool[39270]: VertexAttribI2ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI2ivEXT\0"
+ "glVertexAttribI2iv\0"
+ "\0"
+ /* _mesa_function_pool[39315]: VertexBlendARB (dynamic) */
"i\0"
- "glBegin\0"
+ "glVertexBlendARB\0"
"\0"
- /* _mesa_function_pool[39159]: LightModeli (offset 165) */
+ /* _mesa_function_pool[39335]: Map1d (offset 220) */
+ "iddiip\0"
+ "glMap1d\0"
+ "\0"
+ /* _mesa_function_pool[39351]: Map1f (offset 221) */
+ "iffiip\0"
+ "glMap1f\0"
+ "\0"
+ /* _mesa_function_pool[39367]: AreTexturesResident (offset 322) */
+ "ipp\0"
+ "glAreTexturesResident\0"
+ "glAreTexturesResidentEXT\0"
+ "\0"
+ /* _mesa_function_pool[39419]: ProgramNamedParameter4fNV (will be remapped) */
+ "iipffff\0"
+ "glProgramNamedParameter4fNV\0"
+ "\0"
+ /* _mesa_function_pool[39456]: PixelTransferi (offset 248) */
"ii\0"
- "glLightModeli\0"
+ "glPixelTransferi\0"
"\0"
- /* _mesa_function_pool[39177]: FogCoordPointerListIBM (dynamic) */
- "iipi\0"
- "glFogCoordPointerListIBM\0"
+ /* _mesa_function_pool[39477]: VertexAttrib3fvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib3fvNV\0"
"\0"
- /* _mesa_function_pool[39208]: ObjectPtrLabel (will be remapped) */
- "pip\0"
- "glObjectPtrLabel\0"
+ /* _mesa_function_pool[39501]: GetFinalCombinerInputParameterivNV (dynamic) */
+ "iip\0"
+ "glGetFinalCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[39230]: Rectfv (offset 89) */
+ /* _mesa_function_pool[39543]: SecondaryColorP3ui (will be remapped) */
+ "ii\0"
+ "glSecondaryColorP3ui\0"
+ "\0"
+ /* _mesa_function_pool[39568]: GetMapParameterivNV (dynamic) */
+ "iip\0"
+ "glGetMapParameterivNV\0"
+ "\0"
+ /* _mesa_function_pool[39595]: VertexAttrib4fvNV (will be remapped) */
+ "ip\0"
+ "glVertexAttrib4fvNV\0"
+ "\0"
+ /* _mesa_function_pool[39619]: Rectiv (offset 91) */
"pp\0"
- "glRectfv\0"
+ "glRectiv\0"
"\0"
- /* _mesa_function_pool[39243]: ClipPlanex (will be remapped) */
+ /* _mesa_function_pool[39632]: MultiTexCoord1iv (offset 381) */
"ip\0"
- "glClipPlanexOES\0"
- "glClipPlanex\0"
+ "glMultiTexCoord1iv\0"
+ "glMultiTexCoord1ivARB\0"
"\0"
- /* _mesa_function_pool[39276]: Uniform4f (will be remapped) */
- "iffff\0"
- "glUniform4f\0"
- "glUniform4fARB\0"
+ /* _mesa_function_pool[39677]: PassTexCoordATI (will be remapped) */
+ "iii\0"
+ "glPassTexCoordATI\0"
"\0"
- /* _mesa_function_pool[39310]: LightModelf (offset 163) */
- "if\0"
- "glLightModelf\0"
+ /* _mesa_function_pool[39700]: Tangent3dEXT (dynamic) */
+ "ddd\0"
+ "glTangent3dEXT\0"
"\0"
- /* _mesa_function_pool[39328]: GetTexParameterfv (offset 282) */
- "iip\0"
- "glGetTexParameterfv\0"
+ /* _mesa_function_pool[39720]: Vertex2fv (offset 129) */
+ "p\0"
+ "glVertex2fv\0"
+ "\0"
+ /* _mesa_function_pool[39735]: BindRenderbufferEXT (will be remapped) */
+ "ii\0"
+ "glBindRenderbufferEXT\0"
+ "\0"
+ /* _mesa_function_pool[39761]: Vertex3sv (offset 141) */
+ "p\0"
+ "glVertex3sv\0"
"\0"
- /* _mesa_function_pool[39353]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[39776]: EvalMesh1 (offset 236) */
+ "iii\0"
+ "glEvalMesh1\0"
+ "\0"
+ /* _mesa_function_pool[39793]: DiscardFramebufferEXT (will be remapped) */
"iip\0"
- "glGetLightfv\0"
+ "glDiscardFramebufferEXT\0"
+ "\0"
+ /* _mesa_function_pool[39822]: Uniform2f (will be remapped) */
+ "iff\0"
+ "glUniform2f\0"
+ "glUniform2fARB\0"
+ "\0"
+ /* _mesa_function_pool[39854]: ColorPointerEXT (will be remapped) */
+ "iiiip\0"
+ "glColorPointerEXT\0"
+ "\0"
+ /* _mesa_function_pool[39879]: LineWidth (offset 168) */
+ "f\0"
+ "glLineWidth\0"
+ "\0"
+ /* _mesa_function_pool[39894]: Uniform2i (will be remapped) */
+ "iii\0"
+ "glUniform2i\0"
+ "glUniform2iARB\0"
+ "\0"
+ /* _mesa_function_pool[39926]: MultiDrawElementsBaseVertex (will be remapped) */
+ "ipipip\0"
+ "glMultiDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[39371]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[39964]: Lightxv (will be remapped) */
"iip\0"
- "glPixelTransformParameterivEXT\0"
+ "glLightxvOES\0"
+ "glLightxv\0"
+ "\0"
+ /* _mesa_function_pool[39992]: DepthRangeIndexed (will be remapped) */
+ "idd\0"
+ "glDepthRangeIndexed\0"
"\0"
- /* _mesa_function_pool[39407]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[40017]: GetConvolutionParameterfv (offset 357) */
"iip\0"
- "glBinormalPointerEXT\0"
+ "glGetConvolutionParameterfv\0"
+ "glGetConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[39433]: VertexP4uiv (will be remapped) */
+ /* _mesa_function_pool[40081]: GetTexBumpParameterfvATI (will be remapped) */
"ip\0"
- "glVertexP4uiv\0"
+ "glGetTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[39451]: GetCombinerInputParameterivNV (dynamic) */
- "iiiip\0"
- "glGetCombinerInputParameterivNV\0"
+ /* _mesa_function_pool[40112]: ProgramNamedParameter4dNV (will be remapped) */
+ "iipdddd\0"
+ "glProgramNamedParameter4dNV\0"
"\0"
- /* _mesa_function_pool[39490]: Disable (offset 214) */
- "i\0"
- "glDisable\0"
+ /* _mesa_function_pool[40149]: GetMaterialfv (offset 269) */
+ "iip\0"
+ "glGetMaterialfv\0"
+ "\0"
+ /* _mesa_function_pool[40170]: TexImage3DMultisample (will be remapped) */
+ "iiiiiii\0"
+ "glTexImage3DMultisample\0"
"\0"
- /* _mesa_function_pool[39503]: ClipPlanef (will be remapped) */
+ /* _mesa_function_pool[40203]: VertexAttrib1fvNV (will be remapped) */
"ip\0"
- "glClipPlanefOES\0"
- "glClipPlanef\0"
+ "glVertexAttrib1fvNV\0"
"\0"
- /* _mesa_function_pool[39536]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[40227]: GetUniformBlockIndex (will be remapped) */
"ip\0"
- "glMultiTexCoord2fv\0"
- "glMultiTexCoord2fvARB\0"
+ "glGetUniformBlockIndex\0"
"\0"
- /* _mesa_function_pool[39581]: GetPerfMonitorCounterStringAMD (will be remapped) */
- "iiipp\0"
- "glGetPerfMonitorCounterStringAMD\0"
+ /* _mesa_function_pool[40254]: DetachShader (will be remapped) */
+ "ii\0"
+ "glDetachShader\0"
"\0"
- /* _mesa_function_pool[39621]: SecondaryColorPointer (will be remapped) */
- "iiip\0"
- "glSecondaryColorPointer\0"
- "glSecondaryColorPointerEXT\0"
+ /* _mesa_function_pool[40273]: CopyTexSubImage2D (offset 326) */
+ "iiiiiiii\0"
+ "glCopyTexSubImage2D\0"
+ "glCopyTexSubImage2DEXT\0"
+ "\0"
+ /* _mesa_function_pool[40326]: SampleCoverage (will be remapped) */
+ "fi\0"
+ "glSampleCoverage\0"
+ "glSampleCoverageARB\0"
+ "\0"
+ /* _mesa_function_pool[40367]: GetObjectParameterivARB (will be remapped) */
+ "iip\0"
+ "glGetObjectParameterivARB\0"
"\0"
- /* _mesa_function_pool[39678]: FinishAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[40398]: Color3iv (offset 16) */
"p\0"
- "glFinishAsyncSGIX\0"
+ "glColor3iv\0"
"\0"
- /* _mesa_function_pool[39699]: DrawArrays (offset 310) */
- "iii\0"
- "glDrawArrays\0"
- "glDrawArraysEXT\0"
+ /* _mesa_function_pool[40412]: DrawElements (offset 311) */
+ "iiip\0"
+ "glDrawElements\0"
"\0"
- /* _mesa_function_pool[39733]: WeightuivARB (dynamic) */
- "ip\0"
- "glWeightuivARB\0"
+ /* _mesa_function_pool[40433]: ScissorArrayv (will be remapped) */
+ "iip\0"
+ "glScissorArrayv\0"
"\0"
- /* _mesa_function_pool[39752]: GetnTexImageARB (will be remapped) */
- "iiiiip\0"
- "glGetnTexImageARB\0"
+ /* _mesa_function_pool[40454]: GetInternalformativ (will be remapped) */
+ "iiiip\0"
+ "glGetInternalformativ\0"
"\0"
- /* _mesa_function_pool[39778]: ColorMask (offset 210) */
- "iiii\0"
- "glColorMask\0"
+ /* _mesa_function_pool[40483]: EvalPoint2 (offset 239) */
+ "ii\0"
+ "glEvalPoint2\0"
"\0"
- /* _mesa_function_pool[39796]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[40500]: EvalPoint1 (offset 237) */
"i\0"
- "glGenAsyncMarkersSGIX\0"
+ "glEvalPoint1\0"
+ "\0"
+ /* _mesa_function_pool[40516]: PopMatrix (offset 297) */
"\0"
- /* _mesa_function_pool[39821]: Materialxv (will be remapped) */
+ "glPopMatrix\0"
+ "\0"
+ /* _mesa_function_pool[40530]: FinishFenceNV (dynamic) */
+ "i\0"
+ "glFinishFenceNV\0"
+ "\0"
+ /* _mesa_function_pool[40549]: Tangent3bvEXT (dynamic) */
+ "p\0"
+ "glTangent3bvEXT\0"
+ "\0"
+ /* _mesa_function_pool[40568]: GetTexGeniv (offset 280) */
"iip\0"
- "glMaterialxvOES\0"
- "glMaterialxv\0"
+ "glGetTexGeniv\0"
+ "glGetTexGenivOES\0"
"\0"
- /* _mesa_function_pool[39855]: DebugMessageInsertARB (will be remapped) */
- "iiiiip\0"
- "glDebugMessageInsertARB\0"
+ /* _mesa_function_pool[40604]: ActiveProgramEXT (will be remapped) */
+ "i\0"
+ "glActiveProgramEXT\0"
"\0"
- /* _mesa_function_pool[39887]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[40626]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
- "glGetListParameterivSGIX\0"
+ "glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[39917]: GetInfoLogARB (will be remapped) */
- "iipp\0"
- "glGetInfoLogARB\0"
+ /* _mesa_function_pool[40662]: TexCoord4fVertex4fvSUN (dynamic) */
+ "pp\0"
+ "glTexCoord4fVertex4fvSUN\0"
+ "\0"
+ /* _mesa_function_pool[40691]: UnmapBuffer (will be remapped) */
+ "i\0"
+ "glUnmapBuffer\0"
+ "glUnmapBufferARB\0"
+ "glUnmapBufferOES\0"
+ "\0"
+ /* _mesa_function_pool[40742]: EvalCoord1d (offset 228) */
+ "d\0"
+ "glEvalCoord1d\0"
+ "\0"
+ /* _mesa_function_pool[40759]: EvalCoord1f (offset 230) */
+ "f\0"
+ "glEvalCoord1f\0"
"\0"
- /* _mesa_function_pool[39939]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[40776]: IndexMaterialEXT (dynamic) */
+ "ii\0"
+ "glIndexMaterialEXT\0"
+ "\0"
+ /* _mesa_function_pool[40799]: Materialf (offset 169) */
+ "iif\0"
+ "glMaterialf\0"
+ "\0"
+ /* _mesa_function_pool[40816]: VertexAttribs2dvNV (will be remapped) */
+ "iip\0"
+ "glVertexAttribs2dvNV\0"
+ "\0"
+ /* _mesa_function_pool[40842]: ProgramUniform1uiv (will be remapped) */
+ "iiip\0"
+ "glProgramUniform1uiv\0"
+ "\0"
+ /* _mesa_function_pool[40869]: EvalCoord1dv (offset 229) */
"p\0"
- "glRasterPos4iv\0"
+ "glEvalCoord1dv\0"
"\0"
- /* _mesa_function_pool[39957]: Enable (offset 215) */
- "i\0"
- "glEnable\0"
+ /* _mesa_function_pool[40887]: Materialx (will be remapped) */
+ "iii\0"
+ "glMaterialxOES\0"
+ "glMaterialx\0"
"\0"
- /* _mesa_function_pool[39969]: GetRenderbufferParameteriv (will be remapped) */
+ /* _mesa_function_pool[40919]: GetLightiv (offset 265) */
"iip\0"
- "glGetRenderbufferParameteriv\0"
- "glGetRenderbufferParameterivEXT\0"
- "glGetRenderbufferParameterivOES\0"
+ "glGetLightiv\0"
"\0"
- /* _mesa_function_pool[40067]: LineStipple (offset 167) */
+ /* _mesa_function_pool[40937]: BindBuffer (will be remapped) */
"ii\0"
- "glLineStipple\0"
+ "glBindBuffer\0"
+ "glBindBufferARB\0"
+ "\0"
+ /* _mesa_function_pool[40970]: ProgramUniform1i (will be remapped) */
+ "iii\0"
+ "glProgramUniform1i\0"
"\0"
- /* _mesa_function_pool[40085]: FragmentLightfSGIX (dynamic) */
+ /* _mesa_function_pool[40994]: ProgramUniform1f (will be remapped) */
"iif\0"
- "glFragmentLightfSGIX\0"
+ "glProgramUniform1f\0"
"\0"
- /* _mesa_function_pool[40111]: SetFenceNV (dynamic) */
- "ii\0"
- "glSetFenceNV\0"
+ /* _mesa_function_pool[41018]: WindowPos3iv (will be remapped) */
+ "p\0"
+ "glWindowPos3iv\0"
+ "glWindowPos3ivARB\0"
+ "glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[40128]: DepthRangeArrayv (will be remapped) */
- "iip\0"
- "glDepthRangeArrayv\0"
+ /* _mesa_function_pool[41073]: CopyConvolutionFilter2D (offset 355) */
+ "iiiiii\0"
+ "glCopyConvolutionFilter2D\0"
+ "glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[40152]: VertexAttribs4svNV (will be remapped) */
- "iip\0"
- "glVertexAttribs4svNV\0"
+ /* _mesa_function_pool[41136]: CopyBufferSubData (will be remapped) */
+ "iiiii\0"
+ "glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[40178]: GenRenderbuffers (will be remapped) */
+ /* _mesa_function_pool[41163]: WeightfvARB (dynamic) */
"ip\0"
- "glGenRenderbuffers\0"
- "glGenRenderbuffersEXT\0"
- "glGenRenderbuffersOES\0"
- "\0"
- /* _mesa_function_pool[40245]: EdgeFlagPointerListIBM (dynamic) */
- "ipi\0"
- "glEdgeFlagPointerListIBM\0"
+ "glWeightfvARB\0"
"\0"
- /* _mesa_function_pool[40275]: UniformMatrix4fv (will be remapped) */
+ /* _mesa_function_pool[41181]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
- "glUniformMatrix4fv\0"
- "glUniformMatrix4fvARB\0"
+ "glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[40322]: UniformMatrix3x2fv (will be remapped) */
- "iiip\0"
- "glUniformMatrix3x2fv\0"
+ /* _mesa_function_pool[41208]: Recti (offset 90) */
+ "iiii\0"
+ "glRecti\0"
"\0"
- /* _mesa_function_pool[40349]: GetMinmaxParameterfv (offset 365) */
- "iip\0"
- "glGetMinmaxParameterfv\0"
- "glGetMinmaxParameterfvEXT\0"
+ /* _mesa_function_pool[41222]: VertexAttribI3ivEXT (will be remapped) */
+ "ip\0"
+ "glVertexAttribI3ivEXT\0"
+ "glVertexAttribI3iv\0"
"\0"
- /* _mesa_function_pool[40403]: VertexAttrib4Nuiv (will be remapped) */
+ /* _mesa_function_pool[41267]: DeleteSamplers (will be remapped) */
"ip\0"
- "glVertexAttrib4Nuiv\0"
- "glVertexAttrib4NuivARB\0"
+ "glDeleteSamplers\0"
"\0"
- /* _mesa_function_pool[40450]: ClientActiveTexture (offset 375) */
- "i\0"
- "glClientActiveTexture\0"
- "glClientActiveTextureARB\0"
+ /* _mesa_function_pool[41288]: SamplerParameteri (will be remapped) */
+ "iii\0"
+ "glSamplerParameteri\0"
"\0"
- /* _mesa_function_pool[40500]: WindowPos2sv (will be remapped) */
- "p\0"
- "glWindowPos2sv\0"
- "glWindowPos2svARB\0"
- "glWindowPos2svMESA\0"
+ /* _mesa_function_pool[41313]: Rectf (offset 88) */
+ "ffff\0"
+ "glRectf\0"
"\0"
- /* _mesa_function_pool[40555]: Vertex3fv (offset 137) */
- "p\0"
- "glVertex3fv\0"
+ /* _mesa_function_pool[41327]: Rectd (offset 86) */
+ "dddd\0"
+ "glRectd\0"
"\0"
- /* _mesa_function_pool[40570]: GetUniformIndices (will be remapped) */
- "iipp\0"
- "glGetUniformIndices\0"
+ /* _mesa_function_pool[41341]: SamplerParameterf (will be remapped) */
+ "iif\0"
+ "glSamplerParameterf\0"
"\0"
- /* _mesa_function_pool[40596]: GetTexBumpParameterivATI (will be remapped) */
- "ip\0"
- "glGetTexBumpParameterivATI\0"
+ /* _mesa_function_pool[41366]: Rects (offset 92) */
+ "iiii\0"
+ "glRects\0"
"\0"
- /* _mesa_function_pool[40627]: SecondaryColor3sv (will be remapped) */
- "p\0"
- "glSecondaryColor3sv\0"
- "glSecondaryColor3svEXT\0"
+ /* _mesa_function_pool[41380]: CombinerParameterfNV (dynamic) */
+ "if\0"
+ "glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[40673]: Fogx (will be remapped) */
- "ii\0"
- "glFogxOES\0"
- "glFogx\0"
+ /* _mesa_function_pool[41407]: GetVertexAttribIiv (will be remapped) */
+ "iip\0"
+ "glGetVertexAttribIivEXT\0"
+ "glGetVertexAttribIiv\0"
"\0"
- /* _mesa_function_pool[40694]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[41457]: ClientWaitSync (will be remapped) */
"iii\0"
- "glBinormal3bEXT\0"
+ "glClientWaitSync\0"
+ "\0"
+ /* _mesa_function_pool[41479]: TexCoord4s (offset 124) */
+ "iiii\0"
+ "glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[40715]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[41498]: TexEnvxv (will be remapped) */
"iip\0"
- "glFragmentMaterialivSGIX\0"
+ "glTexEnvxvOES\0"
+ "glTexEnvxv\0"
+ "\0"
+ /* _mesa_function_pool[41528]: TexCoord4i (offset 122) */
+ "iiii\0"
+ "glTexCoord4i\0"
"\0"
- /* _mesa_function_pool[40745]: WaitSync (will be remapped) */
+ /* _mesa_function_pool[41547]: ObjectPurgeableAPPLE (will be remapped) */
"iii\0"
- "glWaitSync\0"
+ "glObjectPurgeableAPPLE\0"
+ "\0"
+ /* _mesa_function_pool[41575]: TexCoord4d (offset 118) */
+ "dddd\0"
+ "glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[40761]: CombinerParameterivNV (dynamic) */
+ /* _mesa_function_pool[41594]: TexCoord4f (offset 120) */
+ "ffff\0"
+ "glTexCoord4f\0"
+ "\0"
+ /* _mesa_function_pool[41613]: GetBooleanv (offset 258) */
"ip\0"
- "glCombinerParameterivNV\0"
+ "glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[40789]: BindVertexBuffer (will be remapped) */
- "iiii\0"
- "glBindVertexBuffer\0"
+ /* _mesa_function_pool[41631]: IsAsyncMarkerSGIX (dynamic) */
+ "i\0"
+ "glIsAsyncMarkerSGIX\0"
+ "\0"
+ /* _mesa_function_pool[41654]: LockArraysEXT (will be remapped) */
+ "ii\0"
+ "glLockArraysEXT\0"
+ "\0"
+ /* _mesa_function_pool[41674]: GetActiveUniformBlockiv (will be remapped) */
+ "iiip\0"
+ "glGetActiveUniformBlockiv\0"
+ "\0"
+ /* _mesa_function_pool[41706]: GetPerfMonitorCountersAMD (will be remapped) */
+ "ippip\0"
+ "glGetPerfMonitorCountersAMD\0"
+ "\0"
+ /* _mesa_function_pool[41741]: ObjectPtrLabel (will be remapped) */
+ "pip\0"
+ "glObjectPtrLabel\0"
+ "\0"
+ /* _mesa_function_pool[41763]: Rectfv (offset 89) */
+ "pp\0"
+ "glRectfv\0"
+ "\0"
+ /* _mesa_function_pool[41776]: BindImageTexture (will be remapped) */
+ "iiiiiii\0"
+ "glBindImageTexture\0"
+ "\0"
+ /* _mesa_function_pool[41804]: ClearDepthf (will be remapped) */
+ "f\0"
+ "glClearDepthf\0"
+ "glClearDepthfOES\0"
"\0"
- /* _mesa_function_pool[40814]: MultiTexCoord2sv (offset 391) */
+ /* _mesa_function_pool[41838]: VertexP4uiv (will be remapped) */
"ip\0"
- "glMultiTexCoord2sv\0"
- "glMultiTexCoord2svARB\0"
+ "glVertexP4uiv\0"
"\0"
- /* _mesa_function_pool[40859]: DeformationMap3dSGIX (dynamic) */
- "iddiiddiiddiip\0"
- "glDeformationMap3dSGIX\0"
+ /* _mesa_function_pool[41856]: MinSampleShading (will be remapped) */
+ "f\0"
+ "glMinSampleShadingARB\0"
+ "glMinSampleShading\0"
"\0"
- /* _mesa_function_pool[40898]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[41900]: GetRenderbufferParameteriv (will be remapped) */
+ "iip\0"
+ "glGetRenderbufferParameteriv\0"
+ "glGetRenderbufferParameterivEXT\0"
+ "glGetRenderbufferParameterivOES\0"
"\0"
- "glEndFragmentShaderATI\0"
+ /* _mesa_function_pool[41998]: EdgeFlagPointerListIBM (dynamic) */
+ "ipi\0"
+ "glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[40923]: Binormal3iEXT (dynamic) */
- "iii\0"
- "glBinormal3iEXT\0"
+ /* _mesa_function_pool[42028]: WindowPos2sv (will be remapped) */
+ "p\0"
+ "glWindowPos2sv\0"
+ "glWindowPos2svARB\0"
+ "glWindowPos2svMESA\0"
+ "\0"
+ /* _mesa_function_pool[42083]: VertexArrayRangeNV (dynamic) */
+ "ip\0"
+ "glVertexArrayRangeNV\0"
+ "\0"
+ /* _mesa_function_pool[42108]: GetPerfMonitorCounterStringAMD (will be remapped) */
+ "iiipp\0"
+ "glGetPerfMonitorCounterStringAMD\0"
+ "\0"
+ /* _mesa_function_pool[42148]: EndFragmentShaderATI (will be remapped) */
+ "\0"
+ "glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[40944]: Uniform4iv (will be remapped) */
+ /* _mesa_function_pool[42173]: Uniform4iv (will be remapped) */
"iip\0"
"glUniform4iv\0"
"glUniform4ivARB\0"
@@ -5812,784 +5988,828 @@ static const char _mesa_function_pool[] =
/* these functions need to be remapped */
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
- { 26563, CompressedTexImage1D_remap_index },
- { 17047, CompressedTexImage2D_remap_index },
- { 3014, CompressedTexImage3D_remap_index },
- { 7897, CompressedTexSubImage1D_remap_index },
- { 4192, CompressedTexSubImage2D_remap_index },
- { 31499, CompressedTexSubImage3D_remap_index },
- { 15512, GetCompressedTexImage_remap_index },
- { 23374, LoadTransposeMatrixd_remap_index },
- { 23322, LoadTransposeMatrixf_remap_index },
- { 35608, MultTransposeMatrixd_remap_index },
- { 35660, MultTransposeMatrixf_remap_index },
- { 33028, SampleCoverage_remap_index },
- { 12181, BlendFuncSeparate_remap_index },
- { 14445, FogCoordPointer_remap_index },
- { 17372, FogCoordd_remap_index },
- { 38167, FogCoorddv_remap_index },
- { 33187, MultiDrawArrays_remap_index },
- { 27282, PointParameterf_remap_index },
- { 18225, PointParameterfv_remap_index },
- { 27240, PointParameteri_remap_index },
- { 33395, PointParameteriv_remap_index },
- { 19189, SecondaryColor3b_remap_index },
- { 15896, SecondaryColor3bv_remap_index },
- { 33466, SecondaryColor3d_remap_index },
- { 3354, SecondaryColor3dv_remap_index },
- { 36608, SecondaryColor3i_remap_index },
- { 22053, SecondaryColor3iv_remap_index },
- { 18896, SecondaryColor3s_remap_index },
- { 40627, SecondaryColor3sv_remap_index },
- { 16423, SecondaryColor3ub_remap_index },
- { 27192, SecondaryColor3ubv_remap_index },
- { 37129, SecondaryColor3ui_remap_index },
- { 4374, SecondaryColor3uiv_remap_index },
- { 14676, SecondaryColor3us_remap_index },
- { 37421, SecondaryColor3usv_remap_index },
- { 39621, SecondaryColorPointer_remap_index },
- { 2193, WindowPos2d_remap_index },
- { 19713, WindowPos2dv_remap_index },
- { 2121, WindowPos2f_remap_index },
- { 1608, WindowPos2fv_remap_index },
- { 16741, WindowPos2i_remap_index },
- { 24370, WindowPos2iv_remap_index },
- { 2523, WindowPos2s_remap_index },
- { 40500, WindowPos2sv_remap_index },
- { 16282, WindowPos3d_remap_index },
- { 14313, WindowPos3dv_remap_index },
- { 16369, WindowPos3f_remap_index },
- { 32577, WindowPos3fv_remap_index },
- { 19135, WindowPos3i_remap_index },
- { 36706, WindowPos3iv_remap_index },
- { 16794, WindowPos3s_remap_index },
- { 7306, WindowPos3sv_remap_index },
- { 23853, BeginQuery_remap_index },
- { 12858, BindBuffer_remap_index },
- { 38380, BufferData_remap_index },
- { 39070, BufferSubData_remap_index },
- { 28564, DeleteBuffers_remap_index },
- { 38415, DeleteQueries_remap_index },
- { 29512, EndQuery_remap_index },
- { 25946, GenBuffers_remap_index },
- { 2865, GenQueries_remap_index },
- { 19482, GetBufferParameteriv_remap_index },
- { 32085, GetBufferPointerv_remap_index },
- { 28715, GetBufferSubData_remap_index },
- { 31170, GetQueryObjectiv_remap_index },
- { 29116, GetQueryObjectuiv_remap_index },
- { 3946, GetQueryiv_remap_index },
- { 24513, IsBuffer_remap_index },
- { 21212, IsQuery_remap_index },
- { 4553, MapBuffer_remap_index },
- { 34523, UnmapBuffer_remap_index },
- { 1380, AttachShader_remap_index },
- { 6623, BindAttribLocation_remap_index },
- { 26184, BlendEquationSeparate_remap_index },
- { 23193, CompileShader_remap_index },
- { 12103, CreateProgram_remap_index },
- { 27690, CreateShader_remap_index },
- { 30734, DeleteProgram_remap_index },
- { 31379, DeleteShader_remap_index },
- { 32922, DetachShader_remap_index },
- { 38827, DisableVertexAttribArray_remap_index },
- { 13421, DrawBuffers_remap_index },
- { 26879, EnableVertexAttribArray_remap_index },
- { 9357, GetActiveAttrib_remap_index },
- { 28514, GetActiveUniform_remap_index },
- { 21780, GetAttachedShaders_remap_index },
- { 17640, GetAttribLocation_remap_index },
- { 6203, GetProgramInfoLog_remap_index },
- { 365, GetProgramiv_remap_index },
- { 14937, GetShaderInfoLog_remap_index },
- { 28222, GetShaderSource_remap_index },
- { 1677, GetShaderiv_remap_index },
- { 24303, GetUniformLocation_remap_index },
- { 7565, GetUniformfv_remap_index },
- { 8088, GetUniformiv_remap_index },
- { 20465, GetVertexAttribPointerv_remap_index },
- { 25671, GetVertexAttribdv_remap_index },
- { 2272, GetVertexAttribfv_remap_index },
- { 13222, GetVertexAttribiv_remap_index },
- { 15881, IsProgram_remap_index },
- { 7683, IsShader_remap_index },
- { 22355, LinkProgram_remap_index },
- { 12305, ShaderSource_remap_index },
- { 12277, StencilFuncSeparate_remap_index },
- { 4527, StencilMaskSeparate_remap_index },
- { 9781, StencilOpSeparate_remap_index },
- { 22436, Uniform1f_remap_index },
- { 31896, Uniform1fv_remap_index },
- { 22590, Uniform1i_remap_index },
- { 32381, Uniform1iv_remap_index },
- { 31425, Uniform2f_remap_index },
- { 854, Uniform2fv_remap_index },
- { 31717, Uniform2i_remap_index },
- { 33639, Uniform2iv_remap_index },
- { 3205, Uniform3f_remap_index },
- { 13517, Uniform3fv_remap_index },
- { 19008, Uniform3i_remap_index },
- { 17558, Uniform3iv_remap_index },
- { 39276, Uniform4f_remap_index },
- { 5737, Uniform4fv_remap_index },
- { 16968, Uniform4i_remap_index },
- { 40944, Uniform4iv_remap_index },
- { 3238, UniformMatrix2fv_remap_index },
- { 3672, UniformMatrix3fv_remap_index },
- { 40275, UniformMatrix4fv_remap_index },
- { 23128, UseProgram_remap_index },
- { 8918, ValidateProgram_remap_index },
- { 26522, VertexAttrib1d_remap_index },
- { 14174, VertexAttrib1dv_remap_index },
- { 26838, VertexAttrib1s_remap_index },
- { 1808, VertexAttrib1sv_remap_index },
- { 31457, VertexAttrib2d_remap_index },
- { 6095, VertexAttrib2dv_remap_index },
- { 31216, VertexAttrib2s_remap_index },
- { 12914, VertexAttrib2sv_remap_index },
- { 4005, VertexAttrib3d_remap_index },
- { 578, VertexAttrib3dv_remap_index },
- { 23974, VertexAttrib3s_remap_index },
- { 21144, VertexAttrib3sv_remap_index },
- { 4640, VertexAttrib4Nbv_remap_index },
- { 22170, VertexAttrib4Niv_remap_index },
- { 34321, VertexAttrib4Nsv_remap_index },
- { 5621, VertexAttrib4Nub_remap_index },
- { 37082, VertexAttrib4Nubv_remap_index },
- { 40403, VertexAttrib4Nuiv_remap_index },
- { 6138, VertexAttrib4Nusv_remap_index },
- { 34815, VertexAttrib4bv_remap_index },
- { 22673, VertexAttrib4d_remap_index },
- { 21557, VertexAttrib4dv_remap_index },
- { 17827, VertexAttrib4iv_remap_index },
- { 23002, VertexAttrib4s_remap_index },
- { 30015, VertexAttrib4sv_remap_index },
- { 33142, VertexAttrib4ubv_remap_index },
- { 34276, VertexAttrib4uiv_remap_index },
- { 5373, VertexAttrib4usv_remap_index },
- { 18756, VertexAttribPointer_remap_index },
- { 26734, UniformMatrix2x3fv_remap_index },
- { 33439, UniformMatrix2x4fv_remap_index },
- { 40322, UniformMatrix3x2fv_remap_index },
- { 37224, UniformMatrix3x4fv_remap_index },
- { 19081, UniformMatrix4x2fv_remap_index },
- { 3750, UniformMatrix4x3fv_remap_index },
- { 20694, BeginConditionalRender_remap_index },
- { 9157, BeginTransformFeedback_remap_index },
- { 6832, BindBufferBase_remap_index },
- { 30782, BindBufferRange_remap_index },
- { 1851, BindFragDataLocation_remap_index },
- { 6533, ClampColor_remap_index },
- { 7110, ClearBufferfi_remap_index },
- { 21238, ClearBufferfv_remap_index },
- { 35958, ClearBufferiv_remap_index },
- { 16048, ClearBufferuiv_remap_index },
- { 9315, ColorMaski_remap_index },
- { 29893, Disablei_remap_index },
- { 16336, Enablei_remap_index },
- { 32035, EndConditionalRender_remap_index },
- { 28983, EndTransformFeedback_remap_index },
- { 17181, GetBooleani_v_remap_index },
- { 23624, GetFragDataLocation_remap_index },
- { 36208, GetIntegeri_v_remap_index },
- { 24241, GetStringi_remap_index },
- { 30136, GetTexParameterIiv_remap_index },
- { 13968, GetTexParameterIuiv_remap_index },
- { 38282, GetTransformFeedbackVarying_remap_index },
- { 10212, GetUniformuiv_remap_index },
- { 38004, GetVertexAttribIiv_remap_index },
- { 2933, GetVertexAttribIuiv_remap_index },
- { 38473, IsEnabledi_remap_index },
- { 10648, TexParameterIiv_remap_index },
- { 37665, TexParameterIuiv_remap_index },
- { 3455, TransformFeedbackVaryings_remap_index },
- { 16094, Uniform1ui_remap_index },
- { 17464, Uniform1uiv_remap_index },
- { 24863, Uniform2ui_remap_index },
- { 15970, Uniform2uiv_remap_index },
- { 38531, Uniform3ui_remap_index },
- { 30443, Uniform3uiv_remap_index },
- { 4788, Uniform4ui_remap_index },
- { 26038, Uniform4uiv_remap_index },
- { 7467, VertexAttribI1iv_remap_index },
- { 20806, VertexAttribI1uiv_remap_index },
- { 5177, VertexAttribI4bv_remap_index },
- { 9014, VertexAttribI4sv_remap_index },
- { 24594, VertexAttribI4ubv_remap_index },
- { 1905, VertexAttribI4usv_remap_index },
- { 37365, VertexAttribIPointer_remap_index },
- { 35872, PrimitiveRestartIndex_remap_index },
- { 437, TexBuffer_remap_index },
- { 6329, FramebufferTexture_remap_index },
- { 31850, GetBufferParameteri64v_remap_index },
- { 12344, GetInteger64i_v_remap_index },
- { 3874, VertexAttribDivisor_remap_index },
- { 35564, MinSampleShading_remap_index },
- { 28298, BindProgramARB_remap_index },
- { 32670, DeleteProgramsARB_remap_index },
- { 16500, GenProgramsARB_remap_index },
- { 11976, GetProgramEnvParameterdvARB_remap_index },
- { 28428, GetProgramEnvParameterfvARB_remap_index },
- { 33279, GetProgramLocalParameterdvARB_remap_index },
- { 10128, GetProgramLocalParameterfvARB_remap_index },
- { 22242, GetProgramStringARB_remap_index },
- { 33567, GetProgramivARB_remap_index },
- { 34244, IsProgramARB_remap_index },
- { 23510, ProgramEnvParameter4dARB_remap_index },
- { 30370, ProgramEnvParameter4dvARB_remap_index },
- { 20160, ProgramEnvParameter4fARB_remap_index },
- { 11073, ProgramEnvParameter4fvARB_remap_index },
- { 4685, ProgramLocalParameter4dARB_remap_index },
- { 15592, ProgramLocalParameter4dvARB_remap_index },
- { 35979, ProgramLocalParameter4fARB_remap_index },
- { 31280, ProgramLocalParameter4fvARB_remap_index },
- { 34406, ProgramStringARB_remap_index },
- { 4983, VertexAttrib1fARB_remap_index },
- { 35303, VertexAttrib1fvARB_remap_index },
- { 1486, VertexAttrib2fARB_remap_index },
- { 10055, VertexAttrib2fvARB_remap_index },
- { 1565, VertexAttrib3fARB_remap_index },
- { 27055, VertexAttrib3fvARB_remap_index },
- { 13727, VertexAttrib4fARB_remap_index },
- { 14131, VertexAttrib4fvARB_remap_index },
- { 10324, AttachObjectARB_remap_index },
- { 3645, CreateProgramObjectARB_remap_index },
- { 37859, CreateShaderObjectARB_remap_index },
- { 17106, DeleteObjectARB_remap_index },
- { 28941, DetachObjectARB_remap_index },
- { 11534, GetAttachedObjectsARB_remap_index },
- { 11837, GetHandleARB_remap_index },
- { 39917, GetInfoLogARB_remap_index },
- { 39004, GetObjectParameterfvARB_remap_index },
- { 33069, GetObjectParameterivARB_remap_index },
- { 21654, DrawArraysInstancedARB_remap_index },
- { 8360, DrawElementsInstancedARB_remap_index },
- { 12060, BindFramebuffer_remap_index },
- { 33704, BindRenderbuffer_remap_index },
- { 37711, BlitFramebuffer_remap_index },
- { 28043, CheckFramebufferStatus_remap_index },
- { 33923, DeleteFramebuffers_remap_index },
- { 5056, DeleteRenderbuffers_remap_index },
- { 34154, FramebufferRenderbuffer_remap_index },
- { 1430, FramebufferTexture1D_remap_index },
- { 27831, FramebufferTexture2D_remap_index },
- { 19235, FramebufferTexture3D_remap_index },
- { 14846, FramebufferTextureLayer_remap_index },
- { 25882, GenFramebuffers_remap_index },
- { 40178, GenRenderbuffers_remap_index },
- { 30479, GenerateMipmap_remap_index },
- { 20260, GetFramebufferAttachmentParameteriv_remap_index },
- { 39969, GetRenderbufferParameteriv_remap_index },
- { 26074, IsFramebuffer_remap_index },
- { 14601, IsRenderbuffer_remap_index },
- { 2591, RenderbufferStorage_remap_index },
- { 15697, RenderbufferStorageMultisample_remap_index },
- { 31120, FramebufferTextureFaceARB_remap_index },
- { 20019, FlushMappedBufferRange_remap_index },
- { 35468, MapBufferRange_remap_index },
- { 19365, BindVertexArray_remap_index },
- { 25002, DeleteVertexArrays_remap_index },
- { 24659, GenVertexArrays_remap_index },
- { 21308, IsVertexArray_remap_index },
- { 14020, GetActiveUniformBlockName_remap_index },
- { 6430, GetActiveUniformBlockiv_remap_index },
- { 32351, GetActiveUniformName_remap_index },
- { 12829, GetActiveUniformsiv_remap_index },
- { 32863, GetUniformBlockIndex_remap_index },
- { 40570, GetUniformIndices_remap_index },
- { 6027, UniformBlockBinding_remap_index },
- { 36904, CopyBufferSubData_remap_index },
- { 38054, ClientWaitSync_remap_index },
- { 2824, DeleteSync_remap_index },
- { 9213, FenceSync_remap_index },
- { 17982, GetInteger64v_remap_index },
- { 27149, GetSynciv_remap_index },
- { 35844, IsSync_remap_index },
- { 40745, WaitSync_remap_index },
- { 36788, DrawElementsBaseVertex_remap_index },
- { 22313, DrawElementsInstancedBaseVertex_remap_index },
- { 37326, DrawRangeElementsBaseVertex_remap_index },
- { 31749, MultiDrawElementsBaseVertex_remap_index },
- { 19602, ProvokingVertex_remap_index },
- { 21367, GetMultisamplefv_remap_index },
- { 6185, SampleMaski_remap_index },
- { 7728, TexImage2DMultisample_remap_index },
- { 30552, TexImage3DMultisample_remap_index },
- { 30890, BlendEquationSeparateiARB_remap_index },
- { 21448, BlendEquationiARB_remap_index },
- { 15078, BlendFuncSeparateiARB_remap_index },
- { 11933, BlendFunciARB_remap_index },
- { 6673, BindFragDataLocationIndexed_remap_index },
- { 15239, GetFragDataIndex_remap_index },
- { 10194, BindSampler_remap_index },
- { 4962, DeleteSamplers_remap_index },
- { 9911, GenSamplers_remap_index },
- { 16907, GetSamplerParameterIiv_remap_index },
- { 23046, GetSamplerParameterIuiv_remap_index },
- { 6066, GetSamplerParameterfv_remap_index },
- { 30753, GetSamplerParameteriv_remap_index },
- { 16937, IsSampler_remap_index },
- { 19318, SamplerParameterIiv_remap_index },
- { 6246, SamplerParameterIuiv_remap_index },
- { 26786, SamplerParameterf_remap_index },
- { 19644, SamplerParameterfv_remap_index },
- { 26761, SamplerParameteri_remap_index },
- { 17592, SamplerParameteriv_remap_index },
- { 6380, GetQueryObjecti64v_remap_index },
- { 385, GetQueryObjectui64v_remap_index },
- { 7961, QueryCounter_remap_index },
- { 17002, ColorP3ui_remap_index },
- { 37648, ColorP3uiv_remap_index },
- { 24800, ColorP4ui_remap_index },
- { 16006, ColorP4uiv_remap_index },
- { 11509, MultiTexCoordP1ui_remap_index },
- { 15052, MultiTexCoordP1uiv_remap_index },
- { 20959, MultiTexCoordP2ui_remap_index },
- { 15171, MultiTexCoordP2uiv_remap_index },
- { 16537, MultiTexCoordP3ui_remap_index },
- { 12639, MultiTexCoordP3uiv_remap_index },
- { 26371, MultiTexCoordP4ui_remap_index },
- { 16162, MultiTexCoordP4uiv_remap_index },
- { 12536, NormalP3ui_remap_index },
- { 22829, NormalP3uiv_remap_index },
- { 29775, SecondaryColorP3ui_remap_index },
- { 22847, SecondaryColorP3uiv_remap_index },
- { 888, TexCoordP1ui_remap_index },
- { 2459, TexCoordP1uiv_remap_index },
- { 17420, TexCoordP2ui_remap_index },
- { 13314, TexCoordP2uiv_remap_index },
- { 15011, TexCoordP3ui_remap_index },
- { 25136, TexCoordP3uiv_remap_index },
- { 1753, TexCoordP4ui_remap_index },
- { 6987, TexCoordP4uiv_remap_index },
- { 15430, VertexAttribP1ui_remap_index },
- { 15855, VertexAttribP1uiv_remap_index },
- { 9886, VertexAttribP2ui_remap_index },
- { 34789, VertexAttribP2uiv_remap_index },
- { 5712, VertexAttribP3ui_remap_index },
- { 31637, VertexAttribP3uiv_remap_index },
- { 16848, VertexAttribP4ui_remap_index },
- { 18845, VertexAttribP4uiv_remap_index },
- { 6229, VertexP2ui_remap_index },
- { 37469, VertexP2uiv_remap_index },
- { 3438, VertexP3ui_remap_index },
- { 23956, VertexP3uiv_remap_index },
- { 11492, VertexP4ui_remap_index },
- { 39433, VertexP4uiv_remap_index },
- { 2840, DrawArraysIndirect_remap_index },
- { 7188, DrawElementsIndirect_remap_index },
- { 6774, BindTransformFeedback_remap_index },
- { 12394, DeleteTransformFeedbacks_remap_index },
- { 8332, DrawTransformFeedback_remap_index },
- { 11727, GenTransformFeedbacks_remap_index },
- { 36290, IsTransformFeedback_remap_index },
- { 31352, PauseTransformFeedback_remap_index },
- { 36531, ResumeTransformFeedback_remap_index },
- { 2479, BeginQueryIndexed_remap_index },
- { 28127, DrawTransformFeedbackStream_remap_index },
- { 18109, EndQueryIndexed_remap_index },
- { 321, GetQueryIndexediv_remap_index },
- { 32941, ClearDepthf_remap_index },
- { 8617, DepthRangef_remap_index },
- { 17127, GetShaderPrecisionFormat_remap_index },
- { 12121, ReleaseShaderCompiler_remap_index },
- { 13292, ShaderBinary_remap_index },
- { 19434, GetProgramBinary_remap_index },
- { 4722, ProgramBinary_remap_index },
- { 5325, ProgramParameteri_remap_index },
- { 40128, DepthRangeArrayv_remap_index },
- { 31930, DepthRangeIndexed_remap_index },
- { 39050, GetDoublei_v_remap_index },
- { 22269, GetFloati_v_remap_index },
- { 33618, ScissorArrayv_remap_index },
- { 12553, ScissorIndexed_remap_index },
- { 23911, ScissorIndexedv_remap_index },
- { 672, ViewportArrayv_remap_index },
- { 7539, ViewportIndexedf_remap_index },
- { 32553, ViewportIndexedfv_remap_index },
- { 1217, DebugMessageCallbackARB_remap_index },
- { 11855, DebugMessageControlARB_remap_index },
- { 39855, DebugMessageInsertARB_remap_index },
- { 3100, GetDebugMessageLogARB_remap_index },
- { 34733, GetGraphicsResetStatusARB_remap_index },
- { 29614, GetnColorTableARB_remap_index },
- { 9976, GetnCompressedTexImageARB_remap_index },
- { 4422, GetnConvolutionFilterARB_remap_index },
- { 18537, GetnHistogramARB_remap_index },
- { 28335, GetnMapdvARB_remap_index },
- { 35166, GetnMapfvARB_remap_index },
- { 2080, GetnMapivARB_remap_index },
- { 20633, GetnMinmaxARB_remap_index },
- { 14238, GetnPixelMapfvARB_remap_index },
- { 22976, GetnPixelMapuivARB_remap_index },
- { 35818, GetnPixelMapusvARB_remap_index },
- { 1139, GetnPolygonStippleARB_remap_index },
- { 25455, GetnSeparableFilterARB_remap_index },
- { 39752, GetnTexImageARB_remap_index },
- { 22288, GetnUniformdvARB_remap_index },
- { 9244, GetnUniformfvARB_remap_index },
- { 12011, GetnUniformivARB_remap_index },
- { 8306, GetnUniformuivARB_remap_index },
- { 3285, ReadnPixelsARB_remap_index },
- { 22764, DrawArraysInstancedBaseInstance_remap_index },
- { 35730, DrawElementsInstancedBaseInstance_remap_index },
- { 9709, DrawElementsInstancedBaseVertexBaseInstance_remap_index },
- { 7132, DrawTransformFeedbackInstanced_remap_index },
- { 10010, DrawTransformFeedbackStreamInstanced_remap_index },
- { 36101, GetInternalformativ_remap_index },
- { 31678, GetActiveAtomicCounterBufferiv_remap_index },
- { 31397, BindImageTexture_remap_index },
- { 38779, MemoryBarrier_remap_index },
- { 1072, TexStorage1D_remap_index },
- { 5265, TexStorage2D_remap_index },
- { 19058, TexStorage3D_remap_index },
- { 5566, TextureStorage1DEXT_remap_index },
- { 6802, TextureStorage2DEXT_remap_index },
- { 1399, TextureStorage3DEXT_remap_index },
- { 21187, ClearBufferData_remap_index },
- { 8276, ClearBufferSubData_remap_index },
- { 33996, DispatchCompute_remap_index },
- { 29087, DispatchComputeIndirect_remap_index },
- { 5771, TextureView_remap_index },
- { 40789, BindVertexBuffer_remap_index },
- { 8490, VertexAttribBinding_remap_index },
- { 12611, VertexAttribFormat_remap_index },
- { 22099, VertexAttribIFormat_remap_index },
- { 11699, VertexAttribLFormat_remap_index },
- { 34127, VertexBindingDivisor_remap_index },
- { 15480, MultiDrawArraysIndirect_remap_index },
- { 27002, MultiDrawElementsIndirect_remap_index },
- { 26641, TexBufferRange_remap_index },
- { 18811, TexStorage2DMultisample_remap_index },
- { 23675, TexStorage3DMultisample_remap_index },
- { 25490, InvalidateBufferData_remap_index },
- { 18977, InvalidateBufferSubData_remap_index },
- { 38566, InvalidateFramebuffer_remap_index },
- { 24722, InvalidateSubFramebuffer_remap_index },
- { 4763, InvalidateTexImage_remap_index },
- { 13870, InvalidateTexSubImage_remap_index },
- { 7216, PolygonOffsetEXT_remap_index },
- { 14978, DrawTexfOES_remap_index },
- { 11888, DrawTexfvOES_remap_index },
- { 3400, DrawTexiOES_remap_index },
- { 28697, DrawTexivOES_remap_index },
- { 24842, DrawTexsOES_remap_index },
- { 22934, DrawTexsvOES_remap_index },
- { 1528, DrawTexxOES_remap_index },
- { 12990, DrawTexxvOES_remap_index },
- { 2373, PointSizePointerOES_remap_index },
- { 13270, QueryMatrixxOES_remap_index },
- { 31005, SampleMaskSGIS_remap_index },
- { 24758, SamplePatternSGIS_remap_index },
- { 23886, ColorPointerEXT_remap_index },
- { 21282, EdgeFlagPointerEXT_remap_index },
- { 7443, IndexPointerEXT_remap_index },
- { 8063, NormalPointerEXT_remap_index },
- { 18605, TexCoordPointerEXT_remap_index },
- { 8960, VertexPointerEXT_remap_index },
- { 6709, DiscardFramebufferEXT_remap_index },
- { 39128, LockArraysEXT_remap_index },
- { 26621, UnlockArraysEXT_remap_index },
- { 7994, DebugMessageCallback_remap_index },
- { 34858, DebugMessageControl_remap_index },
- { 21807, DebugMessageInsert_remap_index },
- { 27395, GetDebugMessageLog_remap_index },
- { 26396, GetObjectLabel_remap_index },
- { 5239, GetObjectPtrLabel_remap_index },
- { 31332, ObjectLabel_remap_index },
- { 39208, ObjectPtrLabel_remap_index },
- { 26131, PopDebugGroup_remap_index },
- { 36559, PushDebugGroup_remap_index },
- { 34019, SecondaryColor3fEXT_remap_index },
- { 21989, SecondaryColor3fvEXT_remap_index },
- { 25302, MultiDrawElementsEXT_remap_index },
- { 5826, FogCoordfEXT_remap_index },
- { 32890, FogCoordfvEXT_remap_index },
- { 15030, ResizeBuffersMESA_remap_index },
- { 13397, WindowPos4dMESA_remap_index },
- { 7239, WindowPos4dvMESA_remap_index },
- { 16655, WindowPos4fMESA_remap_index },
- { 37555, WindowPos4fvMESA_remap_index },
- { 37058, WindowPos4iMESA_remap_index },
- { 14824, WindowPos4ivMESA_remap_index },
- { 22952, WindowPos4sMESA_remap_index },
- { 3623, WindowPos4svMESA_remap_index },
- { 23245, MultiModeDrawArraysIBM_remap_index },
- { 35255, MultiModeDrawElementsIBM_remap_index },
- { 38798, AreProgramsResidentNV_remap_index },
- { 25597, ExecuteProgramNV_remap_index },
- { 19768, GetProgramParameterdvNV_remap_index },
- { 12797, GetProgramParameterfvNV_remap_index },
- { 31611, GetProgramStringNV_remap_index },
- { 29342, GetProgramivNV_remap_index },
- { 28463, GetTrackMatrixivNV_remap_index },
- { 12367, GetVertexAttribdvNV_remap_index },
- { 22717, GetVertexAttribfvNV_remap_index },
- { 22215, GetVertexAttribivNV_remap_index },
- { 11458, LoadProgramNV_remap_index },
- { 33749, ProgramParameters4dvNV_remap_index },
- { 35382, ProgramParameters4fvNV_remap_index },
- { 25104, RequestResidentProgramsNV_remap_index },
- { 556, TrackMatrixNV_remap_index },
- { 13175, VertexAttrib1dNV_remap_index },
- { 16070, VertexAttrib1dvNV_remap_index },
- { 31068, VertexAttrib1fNV_remap_index },
- { 24897, VertexAttrib1fvNV_remap_index },
- { 37612, VertexAttrib1sNV_remap_index },
- { 27168, VertexAttrib1svNV_remap_index },
- { 38143, VertexAttrib2dNV_remap_index },
- { 23104, VertexAttrib2dvNV_remap_index },
- { 24541, VertexAttrib2fNV_remap_index },
- { 15568, VertexAttrib2fvNV_remap_index },
- { 7807, VertexAttrib2sNV_remap_index },
- { 22805, VertexAttrib2svNV_remap_index },
- { 13608, VertexAttrib3dNV_remap_index },
- { 38980, VertexAttrib3dvNV_remap_index },
- { 19800, VertexAttrib3fNV_remap_index },
- { 29641, VertexAttrib3fvNV_remap_index },
- { 28356, VertexAttrib3sNV_remap_index },
- { 28490, VertexAttrib3svNV_remap_index },
- { 35229, VertexAttrib4dNV_remap_index },
- { 13198, VertexAttrib4dvNV_remap_index },
- { 5495, VertexAttrib4fNV_remap_index },
- { 23829, VertexAttrib4fvNV_remap_index },
- { 32261, VertexAttrib4sNV_remap_index },
- { 1247, VertexAttrib4svNV_remap_index },
- { 6462, VertexAttrib4ubNV_remap_index },
- { 694, VertexAttrib4ubvNV_remap_index },
- { 25851, VertexAttribPointerNV_remap_index },
- { 2246, VertexAttribs1dvNV_remap_index },
- { 22873, VertexAttribs1fvNV_remap_index },
- { 24816, VertexAttribs1svNV_remap_index },
- { 12665, VertexAttribs2dvNV_remap_index },
- { 36459, VertexAttribs2fvNV_remap_index },
- { 4824, VertexAttribs2svNV_remap_index },
- { 7007, VertexAttribs3dvNV_remap_index },
- { 11783, VertexAttribs3fvNV_remap_index },
- { 12585, VertexAttribs3svNV_remap_index },
- { 21118, VertexAttribs4dvNV_remap_index },
- { 7033, VertexAttribs4fvNV_remap_index },
- { 40152, VertexAttribs4svNV_remap_index },
- { 36130, VertexAttribs4ubvNV_remap_index },
- { 28267, GetTexBumpParameterfvATI_remap_index },
- { 40596, GetTexBumpParameterivATI_remap_index },
- { 22389, TexBumpParameterfvATI_remap_index },
- { 24921, TexBumpParameterivATI_remap_index },
- { 18489, AlphaFragmentOp1ATI_remap_index },
- { 30957, AlphaFragmentOp2ATI_remap_index },
- { 29557, AlphaFragmentOp3ATI_remap_index },
- { 16628, BeginFragmentShaderATI_remap_index },
- { 11906, BindFragmentShaderATI_remap_index },
- { 7776, ColorFragmentOp1ATI_remap_index },
- { 7649, ColorFragmentOp2ATI_remap_index },
- { 38666, ColorFragmentOp3ATI_remap_index },
- { 7361, DeleteFragmentShaderATI_remap_index },
- { 40898, EndFragmentShaderATI_remap_index },
- { 28195, GenFragmentShadersATI_remap_index },
- { 30711, PassTexCoordATI_remap_index },
- { 8898, SampleMapATI_remap_index },
- { 32740, SetFragmentShaderConstantATI_remap_index },
- { 35058, ActiveStencilFaceEXT_remap_index },
- { 33253, BindVertexArrayAPPLE_remap_index },
- { 20218, GenVertexArraysAPPLE_remap_index },
- { 735, GetProgramNamedParameterdvNV_remap_index },
- { 4121, GetProgramNamedParameterfvNV_remap_index },
- { 32495, ProgramNamedParameter4dNV_remap_index },
- { 17226, ProgramNamedParameter4dvNV_remap_index },
- { 10962, ProgramNamedParameter4fNV_remap_index },
- { 14096, ProgramNamedParameter4fvNV_remap_index },
- { 21259, PrimitiveRestartNV_remap_index },
- { 18449, GetTexGenxvOES_remap_index },
- { 12440, TexGenxOES_remap_index },
- { 33376, TexGenxvOES_remap_index },
- { 29321, DepthBoundsEXT_remap_index },
- { 17439, BindFramebufferEXT_remap_index },
- { 31042, BindRenderbufferEXT_remap_index },
- { 17018, BufferParameteriAPPLE_remap_index },
- { 23426, FlushMappedBufferRangeAPPLE_remap_index },
- { 22127, VertexAttribI1iEXT_remap_index },
- { 2731, VertexAttribI1uiEXT_remap_index },
- { 34620, VertexAttribI2iEXT_remap_index },
- { 28805, VertexAttribI2ivEXT_remap_index },
- { 14534, VertexAttribI2uiEXT_remap_index },
- { 28381, VertexAttribI2uivEXT_remap_index },
- { 31990, VertexAttribI3iEXT_remap_index },
- { 37281, VertexAttribI3ivEXT_remap_index },
- { 3827, VertexAttribI3uiEXT_remap_index },
- { 37177, VertexAttribI3uivEXT_remap_index },
- { 220, VertexAttribI4iEXT_remap_index },
- { 12691, VertexAttribI4ivEXT_remap_index },
- { 101, VertexAttribI4uiEXT_remap_index },
- { 34, VertexAttribI4uivEXT_remap_index },
- { 12036, ClearColorIiEXT_remap_index },
- { 3980, ClearColorIuiEXT_remap_index },
- { 10252, BindBufferOffsetEXT_remap_index },
- { 27568, BeginPerfMonitorAMD_remap_index },
- { 38714, DeletePerfMonitorsAMD_remap_index },
- { 20610, EndPerfMonitorAMD_remap_index },
- { 31805, GenPerfMonitorsAMD_remap_index },
- { 6887, GetPerfMonitorCounterDataAMD_remap_index },
- { 5946, GetPerfMonitorCounterInfoAMD_remap_index },
- { 39581, GetPerfMonitorCounterStringAMD_remap_index },
- { 22899, GetPerfMonitorCountersAMD_remap_index },
- { 13771, GetPerfMonitorGroupStringAMD_remap_index },
- { 38095, GetPerfMonitorGroupsAMD_remap_index },
- { 20122, SelectPerfMonitorCountersAMD_remap_index },
- { 13920, GetObjectParameterivAPPLE_remap_index },
- { 38225, ObjectPurgeableAPPLE_remap_index },
- { 7603, ObjectUnpurgeableAPPLE_remap_index },
- { 20984, ActiveProgramEXT_remap_index },
- { 2051, CreateShaderProgramEXT_remap_index },
- { 34763, UseShaderProgramEXT_remap_index },
- { 17160, TextureBarrierNV_remap_index },
- { 9946, VDPAUFiniNV_remap_index },
- { 3134, VDPAUGetSurfaceivNV_remap_index },
- { 7170, VDPAUInitNV_remap_index },
- { 17350, VDPAUIsSurfaceNV_remap_index },
- { 25979, VDPAUMapSurfacesNV_remap_index },
- { 11372, VDPAURegisterOutputSurfaceNV_remap_index },
- { 6738, VDPAURegisterVideoSurfaceNV_remap_index },
- { 32713, VDPAUSurfaceAccessNV_remap_index },
- { 30095, VDPAUUnmapSurfacesNV_remap_index },
- { 25719, VDPAUUnregisterSurfaceNV_remap_index },
- { 35118, StencilFuncSeparateATI_remap_index },
- { 21876, ProgramEnvParameters4fvEXT_remap_index },
- { 20657, ProgramLocalParameters4fvEXT_remap_index },
- { 28762, EGLImageTargetRenderbufferStorageOES_remap_index },
- { 14501, EGLImageTargetTexture2DOES_remap_index },
- { 28603, AlphaFuncx_remap_index },
- { 20922, ClearColorx_remap_index },
- { 26004, ClearDepthx_remap_index },
- { 10745, Color4x_remap_index },
- { 8206, DepthRangex_remap_index },
- { 40673, Fogx_remap_index },
- { 37487, Fogxv_remap_index },
- { 36157, Frustumf_remap_index },
- { 4048, Frustumx_remap_index },
- { 31955, LightModelx_remap_index },
- { 36253, LightModelxv_remap_index },
- { 26293, Lightx_remap_index },
- { 13489, Lightxv_remap_index },
- { 21957, LineWidthx_remap_index },
- { 4864, LoadMatrixx_remap_index },
- { 27117, Materialx_remap_index },
- { 39821, Materialxv_remap_index },
- { 10614, MultMatrixx_remap_index },
- { 34431, MultiTexCoord4x_remap_index },
- { 13633, Normal3x_remap_index },
- { 10999, Orthof_remap_index },
- { 22644, Orthox_remap_index },
- { 35786, PointSizex_remap_index },
- { 4599, PolygonOffsetx_remap_index },
- { 31091, Rotatex_remap_index },
- { 8678, SampleCoveragex_remap_index },
- { 7261, Scalex_remap_index },
- { 22547, TexEnvx_remap_index },
- { 25245, TexEnvxv_remap_index },
- { 6274, TexParameterx_remap_index },
- { 35084, Translatex_remap_index },
- { 39503, ClipPlanef_remap_index },
- { 39243, ClipPlanex_remap_index },
- { 18717, GetClipPlanef_remap_index },
- { 4473, GetClipPlanex_remap_index },
- { 33673, GetFixedv_remap_index },
- { 4158, GetLightxv_remap_index },
- { 4276, GetMaterialxv_remap_index },
- { 29739, GetTexEnvxv_remap_index },
- { 21732, GetTexParameterxv_remap_index },
- { 5669, PointParameterx_remap_index },
- { 14384, PointParameterxv_remap_index },
- { 30848, TexParameterxv_remap_index },
+ { 17150, CompressedTexImage1D_remap_index },
+ { 14764, CompressedTexImage2D_remap_index },
+ { 10802, CompressedTexImage3D_remap_index },
+ { 27365, CompressedTexSubImage1D_remap_index },
+ { 32998, CompressedTexSubImage2D_remap_index },
+ { 5573, CompressedTexSubImage3D_remap_index },
+ { 3741, GetCompressedTexImage_remap_index },
+ { 16406, LoadTransposeMatrixd_remap_index },
+ { 16354, LoadTransposeMatrixf_remap_index },
+ { 30646, MultTransposeMatrixd_remap_index },
+ { 12086, MultTransposeMatrixf_remap_index },
+ { 40326, SampleCoverage_remap_index },
+ { 3042, BlendFuncSeparate_remap_index },
+ { 19856, FogCoordPointer_remap_index },
+ { 36526, FogCoordd_remap_index },
+ { 36302, FogCoorddv_remap_index },
+ { 29764, MultiDrawArrays_remap_index },
+ { 28209, PointParameterf_remap_index },
+ { 4283, PointParameterfv_remap_index },
+ { 28167, PointParameteri_remap_index },
+ { 7778, PointParameteriv_remap_index },
+ { 4705, SecondaryColor3b_remap_index },
+ { 36117, SecondaryColor3bv_remap_index },
+ { 30784, SecondaryColor3d_remap_index },
+ { 10935, SecondaryColor3dv_remap_index },
+ { 4801, SecondaryColor3i_remap_index },
+ { 26596, SecondaryColor3iv_remap_index },
+ { 4581, SecondaryColor3s_remap_index },
+ { 14074, SecondaryColor3sv_remap_index },
+ { 20009, SecondaryColor3ub_remap_index },
+ { 6466, SecondaryColor3ubv_remap_index },
+ { 20057, SecondaryColor3ui_remap_index },
+ { 21910, SecondaryColor3uiv_remap_index },
+ { 19900, SecondaryColor3us_remap_index },
+ { 8701, SecondaryColor3usv_remap_index },
+ { 31809, SecondaryColorPointer_remap_index },
+ { 10560, WindowPos2d_remap_index },
+ { 15446, WindowPos2dv_remap_index },
+ { 10507, WindowPos2f_remap_index },
+ { 21296, WindowPos2fv_remap_index },
+ { 10613, WindowPos2i_remap_index },
+ { 5827, WindowPos2iv_remap_index },
+ { 10666, WindowPos2s_remap_index },
+ { 42028, WindowPos2sv_remap_index },
+ { 14321, WindowPos3d_remap_index },
+ { 13842, WindowPos3dv_remap_index },
+ { 14408, WindowPos3f_remap_index },
+ { 7637, WindowPos3fv_remap_index },
+ { 14517, WindowPos3i_remap_index },
+ { 41018, WindowPos3iv_remap_index },
+ { 14633, WindowPos3s_remap_index },
+ { 22633, WindowPos3sv_remap_index },
+ { 5709, BeginQuery_remap_index },
+ { 40937, BindBuffer_remap_index },
+ { 34977, BufferData_remap_index },
+ { 9175, BufferSubData_remap_index },
+ { 28480, DeleteBuffers_remap_index },
+ { 20303, DeleteQueries_remap_index },
+ { 17973, EndQuery_remap_index },
+ { 38469, GenBuffers_remap_index },
+ { 1755, GenQueries_remap_index },
+ { 26064, GetBufferParameteriv_remap_index },
+ { 38334, GetBufferPointerv_remap_index },
+ { 28519, GetBufferSubData_remap_index },
+ { 7347, GetQueryObjectiv_remap_index },
+ { 7047, GetQueryObjectuiv_remap_index },
+ { 11128, GetQueryiv_remap_index },
+ { 16840, IsBuffer_remap_index },
+ { 26343, IsQuery_remap_index },
+ { 11239, MapBuffer_remap_index },
+ { 40691, UnmapBuffer_remap_index },
+ { 315, AttachShader_remap_index },
+ { 33466, BindAttribLocation_remap_index },
+ { 38536, BlendEquationSeparate_remap_index },
+ { 29463, CompileShader_remap_index },
+ { 22928, CreateProgram_remap_index },
+ { 28395, CreateShader_remap_index },
+ { 18770, DeleteProgram_remap_index },
+ { 29445, DeleteShader_remap_index },
+ { 40254, DetachShader_remap_index },
+ { 31513, DisableVertexAttribArray_remap_index },
+ { 21094, DrawBuffers_remap_index },
+ { 38761, EnableVertexAttribArray_remap_index },
+ { 34119, GetActiveAttrib_remap_index },
+ { 39187, GetActiveUniform_remap_index },
+ { 15993, GetAttachedShaders_remap_index },
+ { 25061, GetAttribLocation_remap_index },
+ { 10217, GetProgramInfoLog_remap_index },
+ { 20830, GetProgramiv_remap_index },
+ { 3507, GetShaderInfoLog_remap_index },
+ { 6769, GetShaderSource_remap_index },
+ { 15754, GetShaderiv_remap_index },
+ { 5760, GetUniformLocation_remap_index },
+ { 12239, GetUniformfv_remap_index },
+ { 1991, GetUniformiv_remap_index },
+ { 32177, GetVertexAttribPointerv_remap_index },
+ { 38286, GetVertexAttribdv_remap_index },
+ { 32759, GetVertexAttribfv_remap_index },
+ { 35151, GetVertexAttribiv_remap_index },
+ { 3927, IsProgram_remap_index },
+ { 35698, IsShader_remap_index },
+ { 26789, LinkProgram_remap_index },
+ { 34794, ShaderSource_remap_index },
+ { 34766, StencilFuncSeparate_remap_index },
+ { 33081, StencilMaskSeparate_remap_index },
+ { 34263, StencilOpSeparate_remap_index },
+ { 37618, Uniform1f_remap_index },
+ { 7523, Uniform1fv_remap_index },
+ { 37678, Uniform1i_remap_index },
+ { 17021, Uniform1iv_remap_index },
+ { 39822, Uniform2f_remap_index },
+ { 21030, Uniform2fv_remap_index },
+ { 39894, Uniform2i_remap_index },
+ { 19012, Uniform2iv_remap_index },
+ { 858, Uniform3f_remap_index },
+ { 35263, Uniform3fv_remap_index },
+ { 771, Uniform3i_remap_index },
+ { 36556, Uniform3iv_remap_index },
+ { 4197, Uniform4f_remap_index },
+ { 8189, Uniform4fv_remap_index },
+ { 4134, Uniform4i_remap_index },
+ { 42173, Uniform4iv_remap_index },
+ { 9281, UniformMatrix2fv_remap_index },
+ { 21644, UniformMatrix3fv_remap_index },
+ { 9750, UniformMatrix4fv_remap_index },
+ { 37771, UseProgram_remap_index },
+ { 23046, ValidateProgram_remap_index },
+ { 17109, VertexAttrib1d_remap_index },
+ { 35621, VertexAttrib1dv_remap_index },
+ { 17232, VertexAttrib1s_remap_index },
+ { 32607, VertexAttrib1sv_remap_index },
+ { 7481, VertexAttrib2d_remap_index },
+ { 22384, VertexAttrib2dv_remap_index },
+ { 7393, VertexAttrib2s_remap_index },
+ { 13491, VertexAttrib2sv_remap_index },
+ { 11162, VertexAttrib3d_remap_index },
+ { 20954, VertexAttrib3dv_remap_index },
+ { 11037, VertexAttrib3s_remap_index },
+ { 37466, VertexAttrib3sv_remap_index },
+ { 11285, VertexAttrib4Nbv_remap_index },
+ { 26685, VertexAttrib4Niv_remap_index },
+ { 19315, VertexAttrib4Nsv_remap_index },
+ { 1408, VertexAttrib4Nub_remap_index },
+ { 31070, VertexAttrib4Nubv_remap_index },
+ { 9824, VertexAttrib4Nuiv_remap_index },
+ { 33348, VertexAttrib4Nusv_remap_index },
+ { 8631, VertexAttrib4bv_remap_index },
+ { 26904, VertexAttrib4d_remap_index },
+ { 27281, VertexAttrib4dv_remap_index },
+ { 36668, VertexAttrib4iv_remap_index },
+ { 26972, VertexAttrib4s_remap_index },
+ { 18073, VertexAttrib4sv_remap_index },
+ { 9510, VertexAttrib4ubv_remap_index },
+ { 19270, VertexAttrib4uiv_remap_index },
+ { 1334, VertexAttrib4usv_remap_index },
+ { 31155, VertexAttribPointer_remap_index },
+ { 28007, UniformMatrix2x3fv_remap_index },
+ { 891, UniformMatrix2x4fv_remap_index },
+ { 9797, UniformMatrix3x2fv_remap_index },
+ { 41181, UniformMatrix3x4fv_remap_index },
+ { 37013, UniformMatrix4x2fv_remap_index },
+ { 11080, UniformMatrix4x3fv_remap_index },
+ { 15660, BeginConditionalRender_remap_index },
+ { 23130, BeginTransformFeedback_remap_index },
+ { 11961, BindBufferBase_remap_index },
+ { 7266, BindBufferRange_remap_index },
+ { 21428, BindFragDataLocation_remap_index },
+ { 22492, ClampColor_remap_index },
+ { 16020, ClearBufferfi_remap_index },
+ { 15869, ClearBufferfv_remap_index },
+ { 19738, ClearBufferiv_remap_index },
+ { 36380, ClearBufferuiv_remap_index },
+ { 12541, ColorMaski_remap_index },
+ { 35742, Disablei_remap_index },
+ { 14375, Enablei_remap_index },
+ { 21958, EndConditionalRender_remap_index },
+ { 18589, EndTransformFeedback_remap_index },
+ { 11473, GetBooleani_v_remap_index },
+ { 37869, GetFragDataLocation_remap_index },
+ { 19759, GetIntegeri_v_remap_index },
+ { 27264, GetStringi_remap_index },
+ { 28978, GetTexParameterIiv_remap_index },
+ { 12737, GetTexParameterIuiv_remap_index },
+ { 29192, GetTransformFeedbackVarying_remap_index },
+ { 34564, GetUniformuiv_remap_index },
+ { 41407, GetVertexAttribIiv_remap_index },
+ { 19570, GetVertexAttribIuiv_remap_index },
+ { 32092, IsEnabledi_remap_index },
+ { 18828, TexParameterIiv_remap_index },
+ { 15501, TexParameterIuiv_remap_index },
+ { 37401, TransformFeedbackVaryings_remap_index },
+ { 5196, Uniform1ui_remap_index },
+ { 24501, Uniform1uiv_remap_index },
+ { 23950, Uniform2ui_remap_index },
+ { 12583, Uniform2uiv_remap_index },
+ { 31407, Uniform3ui_remap_index },
+ { 18132, Uniform3uiv_remap_index },
+ { 11396, Uniform4ui_remap_index },
+ { 17055, Uniform4uiv_remap_index },
+ { 33694, VertexAttribI1iv_remap_index },
+ { 10888, VertexAttribI1uiv_remap_index },
+ { 7095, VertexAttribI4bv_remap_index },
+ { 9661, VertexAttribI4sv_remap_index },
+ { 7989, VertexAttribI4ubv_remap_index },
+ { 6608, VertexAttribI4usv_remap_index },
+ { 38705, VertexAttribIPointer_remap_index },
+ { 7936, PrimitiveRestartIndex_remap_index },
+ { 32279, TexBuffer_remap_index },
+ { 111, FramebufferTexture_remap_index },
+ { 22898, GetBufferParameteri64v_remap_index },
+ { 38037, GetInteger64i_v_remap_index },
+ { 39019, VertexAttribDivisor_remap_index },
+ { 41856, MinSampleShading_remap_index },
+ { 6814, BindProgramARB_remap_index },
+ { 29630, DeleteProgramsARB_remap_index },
+ { 14462, GenProgramsARB_remap_index },
+ { 13534, GetProgramEnvParameterdvARB_remap_index },
+ { 28445, GetProgramEnvParameterfvARB_remap_index },
+ { 29809, GetProgramLocalParameterdvARB_remap_index },
+ { 35963, GetProgramLocalParameterfvARB_remap_index },
+ { 21573, GetProgramStringARB_remap_index },
+ { 7822, GetProgramivARB_remap_index },
+ { 30080, IsProgramARB_remap_index },
+ { 16474, ProgramEnvParameter4dARB_remap_index },
+ { 2502, ProgramEnvParameter4dvARB_remap_index },
+ { 37169, ProgramEnvParameter4fARB_remap_index },
+ { 23635, ProgramEnvParameter4fvARB_remap_index },
+ { 22008, ProgramLocalParameter4dARB_remap_index },
+ { 3797, ProgramLocalParameter4dvARB_remap_index },
+ { 29361, ProgramLocalParameter4fARB_remap_index },
+ { 18391, ProgramLocalParameter4fvARB_remap_index },
+ { 30152, ProgramStringARB_remap_index },
+ { 11432, VertexAttrib1fARB_remap_index },
+ { 30550, VertexAttrib1fvARB_remap_index },
+ { 21254, VertexAttrib2fARB_remap_index },
+ { 12834, VertexAttrib2fvARB_remap_index },
+ { 334, VertexAttrib3fARB_remap_index },
+ { 25353, VertexAttrib3fvARB_remap_index },
+ { 24235, VertexAttrib4fARB_remap_index },
+ { 13799, VertexAttrib4fvARB_remap_index },
+ { 34351, AttachObjectARB_remap_index },
+ { 21617, CreateProgramObjectARB_remap_index },
+ { 15918, CreateShaderObjectARB_remap_index },
+ { 14823, DeleteObjectARB_remap_index },
+ { 36808, DetachObjectARB_remap_index },
+ { 34690, GetAttachedObjectsARB_remap_index },
+ { 23840, GetHandleARB_remap_index },
+ { 19687, GetInfoLogARB_remap_index },
+ { 20469, GetObjectParameterfvARB_remap_index },
+ { 40367, GetObjectParameterivARB_remap_index },
+ { 5308, DrawArraysInstancedARB_remap_index },
+ { 6962, DrawElementsInstancedARB_remap_index },
+ { 13297, BindFramebuffer_remap_index },
+ { 7845, BindRenderbuffer_remap_index },
+ { 32465, BlitFramebuffer_remap_index },
+ { 6031, CheckFramebufferStatus_remap_index },
+ { 19171, DeleteFramebuffers_remap_index },
+ { 35545, DeleteRenderbuffers_remap_index },
+ { 29990, FramebufferRenderbuffer_remap_index },
+ { 32516, FramebufferTexture1D_remap_index },
+ { 22273, FramebufferTexture2D_remap_index },
+ { 25950, FramebufferTexture3D_remap_index },
+ { 35806, FramebufferTextureLayer_remap_index },
+ { 38405, GenFramebuffers_remap_index },
+ { 31971, GenRenderbuffers_remap_index },
+ { 7206, GenerateMipmap_remap_index },
+ { 5004, GetFramebufferAttachmentParameteriv_remap_index },
+ { 41900, GetRenderbufferParameteriv_remap_index },
+ { 6195, IsFramebuffer_remap_index },
+ { 24583, IsRenderbuffer_remap_index },
+ { 629, RenderbufferStorage_remap_index },
+ { 14245, RenderbufferStorageMultisample_remap_index },
+ { 18323, FramebufferTextureFaceARB_remap_index },
+ { 4931, FlushMappedBufferRange_remap_index },
+ { 29846, MapBufferRange_remap_index },
+ { 12676, BindVertexArray_remap_index },
+ { 1102, DeleteVertexArrays_remap_index },
+ { 16748, GenVertexArrays_remap_index },
+ { 37509, IsVertexArray_remap_index },
+ { 12456, GetActiveUniformBlockName_remap_index },
+ { 41674, GetActiveUniformBlockiv_remap_index },
+ { 2928, GetActiveUniformName_remap_index },
+ { 13462, GetActiveUniformsiv_remap_index },
+ { 40227, GetUniformBlockIndex_remap_index },
+ { 9921, GetUniformIndices_remap_index },
+ { 33305, UniformBlockBinding_remap_index },
+ { 41136, CopyBufferSubData_remap_index },
+ { 41457, ClientWaitSync_remap_index },
+ { 10764, DeleteSync_remap_index },
+ { 33332, FenceSync_remap_index },
+ { 36788, GetInteger64v_remap_index },
+ { 38875, GetSynciv_remap_index },
+ { 14844, IsSync_remap_index },
+ { 32161, WaitSync_remap_index },
+ { 12491, DrawElementsBaseVertex_remap_index },
+ { 16108, DrawElementsInstancedBaseVertex_remap_index },
+ { 36034, DrawRangeElementsBaseVertex_remap_index },
+ { 39926, MultiDrawElementsBaseVertex_remap_index },
+ { 23380, ProvokingVertex_remap_index },
+ { 5253, GetMultisamplefv_remap_index },
+ { 33801, SampleMaski_remap_index },
+ { 1861, TexImage2DMultisample_remap_index },
+ { 40170, TexImage3DMultisample_remap_index },
+ { 22086, BlendEquationSeparateiARB_remap_index },
+ { 26449, BlendEquationiARB_remap_index },
+ { 3559, BlendFuncSeparateiARB_remap_index },
+ { 23880, BlendFunciARB_remap_index },
+ { 1626, BindFragDataLocationIndexed_remap_index },
+ { 27853, GetFragDataIndex_remap_index },
+ { 2649, BindSampler_remap_index },
+ { 41267, DeleteSamplers_remap_index },
+ { 34312, GenSamplers_remap_index },
+ { 2369, GetSamplerParameterIiv_remap_index },
+ { 5497, GetSamplerParameterIuiv_remap_index },
+ { 22355, GetSamplerParameterfv_remap_index },
+ { 24016, GetSamplerParameteriv_remap_index },
+ { 25206, IsSampler_remap_index },
+ { 37040, SamplerParameterIiv_remap_index },
+ { 11800, SamplerParameterIuiv_remap_index },
+ { 41341, SamplerParameterf_remap_index },
+ { 37113, SamplerParameterfv_remap_index },
+ { 41288, SamplerParameteri_remap_index },
+ { 27128, SamplerParameteriv_remap_index },
+ { 22442, GetQueryObjecti64v_remap_index },
+ { 3849, GetQueryObjectui64v_remap_index },
+ { 12386, QueryCounter_remap_index },
+ { 36364, ColorP3ui_remap_index },
+ { 6350, ColorP3uiv_remap_index },
+ { 16868, ColorP4ui_remap_index },
+ { 24948, ColorP4uiv_remap_index },
+ { 13200, MultiTexCoordP1ui_remap_index },
+ { 24718, MultiTexCoordP1uiv_remap_index },
+ { 32689, MultiTexCoordP2ui_remap_index },
+ { 8511, MultiTexCoordP2uiv_remap_index },
+ { 25036, MultiTexCoordP3ui_remap_index },
+ { 391, MultiTexCoordP3uiv_remap_index },
+ { 38680, MultiTexCoordP4ui_remap_index },
+ { 32807, MultiTexCoordP4uiv_remap_index },
+ { 34883, NormalP3ui_remap_index },
+ { 24643, NormalP3uiv_remap_index },
+ { 39543, SecondaryColorP3ui_remap_index },
+ { 5445, SecondaryColorP3uiv_remap_index },
+ { 162, TexCoordP1ui_remap_index },
+ { 609, TexCoordP1uiv_remap_index },
+ { 25312, TexCoordP2ui_remap_index },
+ { 35199, TexCoordP2uiv_remap_index },
+ { 14120, TexCoordP3ui_remap_index },
+ { 16911, TexCoordP3uiv_remap_index },
+ { 32588, TexCoordP4ui_remap_index },
+ { 1709, TexCoordP4uiv_remap_index },
+ { 14189, VertexAttribP1ui_remap_index },
+ { 3901, VertexAttribP1uiv_remap_index },
+ { 28617, VertexAttribP2ui_remap_index },
+ { 4627, VertexAttribP2uiv_remap_index },
+ { 1456, VertexAttribP3ui_remap_index },
+ { 27154, VertexAttribP3uiv_remap_index },
+ { 4109, VertexAttribP4ui_remap_index },
+ { 15350, VertexAttribP4uiv_remap_index },
+ { 33430, VertexP2ui_remap_index },
+ { 31137, VertexP2uiv_remap_index },
+ { 21600, VertexP3ui_remap_index },
+ { 5742, VertexP3uiv_remap_index },
+ { 2883, VertexP4ui_remap_index },
+ { 41838, VertexP4uiv_remap_index },
+ { 746, DrawArraysIndirect_remap_index },
+ { 22605, DrawElementsIndirect_remap_index },
+ { 10243, BindTransformFeedback_remap_index },
+ { 10115, DeleteTransformFeedbacks_remap_index },
+ { 33963, DrawTransformFeedback_remap_index },
+ { 3695, GenTransformFeedbacks_remap_index },
+ { 31628, IsTransformFeedback_remap_index },
+ { 29418, PauseTransformFeedback_remap_index },
+ { 33629, ResumeTransformFeedback_remap_index },
+ { 21516, BeginQueryIndexed_remap_index },
+ { 39070, DrawTransformFeedbackStream_remap_index },
+ { 18222, EndQueryIndexed_remap_index },
+ { 20786, GetQueryIndexediv_remap_index },
+ { 41804, ClearDepthf_remap_index },
+ { 22946, DepthRangef_remap_index },
+ { 36402, GetShaderPrecisionFormat_remap_index },
+ { 3016, ReleaseShaderCompiler_remap_index },
+ { 24106, ShaderBinary_remap_index },
+ { 18666, GetProgramBinary_remap_index },
+ { 11330, ProgramBinary_remap_index },
+ { 11565, ProgramParameteri_remap_index },
+ { 25671, DepthRangeArrayv_remap_index },
+ { 39992, DepthRangeIndexed_remap_index },
+ { 31608, GetDoublei_v_remap_index },
+ { 33819, GetFloati_v_remap_index },
+ { 40433, ScissorArrayv_remap_index },
+ { 23984, ScissorIndexed_remap_index },
+ { 27180, ScissorIndexedv_remap_index },
+ { 17663, ViewportArrayv_remap_index },
+ { 30269, ViewportIndexedf_remap_index },
+ { 18714, ViewportIndexedfv_remap_index },
+ { 10355, DebugMessageCallbackARB_remap_index },
+ { 2958, DebugMessageControlARB_remap_index },
+ { 26219, DebugMessageInsertARB_remap_index },
+ { 20850, GetDebugMessageLogARB_remap_index },
+ { 8036, GetGraphicsResetStatusARB_remap_index },
+ { 28760, GetnColorTableARB_remap_index },
+ { 2615, GetnCompressedTexImageARB_remap_index },
+ { 1202, GetnConvolutionFilterARB_remap_index },
+ { 4501, GetnHistogramARB_remap_index },
+ { 17548, GetnMapdvARB_remap_index },
+ { 11691, GetnMapfvARB_remap_index },
+ { 32714, GetnMapivARB_remap_index },
+ { 37281, GetnMinmaxARB_remap_index },
+ { 3412, GetnPixelMapfvARB_remap_index },
+ { 5471, GetnPixelMapuivARB_remap_index },
+ { 11011, GetnPixelMapusvARB_remap_index },
+ { 21162, GetnPolygonStippleARB_remap_index },
+ { 27621, GetnSeparableFilterARB_remap_index },
+ { 9555, GetnTexImageARB_remap_index },
+ { 26764, GetnUniformdvARB_remap_index },
+ { 32376, GetnUniformfvARB_remap_index },
+ { 2991, GetnUniformivARB_remap_index },
+ { 13060, GetnUniformuivARB_remap_index },
+ { 24279, ReadnPixelsARB_remap_index },
+ { 31310, DrawArraysInstancedBaseInstance_remap_index },
+ { 9706, DrawElementsInstancedBaseInstance_remap_index },
+ { 2447, DrawElementsInstancedBaseVertexBaseInstance_remap_index },
+ { 33572, DrawTransformFeedbackInstanced_remap_index },
+ { 12789, DrawTransformFeedbackStreamInstanced_remap_index },
+ { 40454, GetInternalformativ_remap_index },
+ { 18789, GetActiveAtomicCounterBufferiv_remap_index },
+ { 41776, BindImageTexture_remap_index },
+ { 20382, MemoryBarrier_remap_index },
+ { 32444, TexStorage1D_remap_index },
+ { 22215, TexStorage2D_remap_index },
+ { 25927, TexStorage3D_remap_index },
+ { 1379, TextureStorage1DEXT_remap_index },
+ { 33516, TextureStorage2DEXT_remap_index },
+ { 21223, TextureStorage3DEXT_remap_index },
+ { 34223, ClearBufferData_remap_index },
+ { 2029, ClearBufferSubData_remap_index },
+ { 29889, DispatchCompute_remap_index },
+ { 6115, DispatchComputeIndirect_remap_index },
+ { 38894, TextureView_remap_index },
+ { 20680, BindVertexBuffer_remap_index },
+ { 28322, VertexAttribBinding_remap_index },
+ { 28787, VertexAttribFormat_remap_index },
+ { 31251, VertexAttribIFormat_remap_index },
+ { 34738, VertexAttribLFormat_remap_index },
+ { 33241, VertexBindingDivisor_remap_index },
+ { 3154, MultiDrawArraysIndirect_remap_index },
+ { 17273, MultiDrawElementsIndirect_remap_index },
+ { 17208, TexBufferRange_remap_index },
+ { 36590, TexStorage2DMultisample_remap_index },
+ { 27073, TexStorage3DMultisample_remap_index },
+ { 3186, BufferStorage_remap_index },
+ { 6144, InvalidateBufferData_remap_index },
+ { 36982, InvalidateBufferSubData_remap_index },
+ { 20342, InvalidateFramebuffer_remap_index },
+ { 15112, InvalidateSubFramebuffer_remap_index },
+ { 11371, InvalidateTexImage_remap_index },
+ { 24306, InvalidateTexSubImage_remap_index },
+ { 12138, PolygonOffsetEXT_remap_index },
+ { 34330, DrawTexfOES_remap_index },
+ { 3723, DrawTexfvOES_remap_index },
+ { 955, DrawTexiOES_remap_index },
+ { 28696, DrawTexivOES_remap_index },
+ { 11518, DrawTexsOES_remap_index },
+ { 20536, DrawTexsvOES_remap_index },
+ { 24965, DrawTexxOES_remap_index },
+ { 36230, DrawTexxvOES_remap_index },
+ { 23271, PointSizePointerOES_remap_index },
+ { 918, QueryMatrixxOES_remap_index },
+ { 18286, SampleMaskSGIS_remap_index },
+ { 31365, SamplePatternSGIS_remap_index },
+ { 39854, ColorPointerEXT_remap_index },
+ { 26369, EdgeFlagPointerEXT_remap_index },
+ { 12215, IndexPointerEXT_remap_index },
+ { 12405, NormalPointerEXT_remap_index },
+ { 25736, TexCoordPointerEXT_remap_index },
+ { 23088, VertexPointerEXT_remap_index },
+ { 39793, DiscardFramebufferEXT_remap_index },
+ { 10089, ActiveShaderProgram_remap_index },
+ { 15325, BindProgramPipeline_remap_index },
+ { 26421, CreateShaderProgramv_remap_index },
+ { 3338, DeleteProgramPipelines_remap_index },
+ { 24045, GenProgramPipelines_remap_index },
+ { 7557, GetProgramPipelineInfoLog_remap_index },
+ { 28863, GetProgramPipelineiv_remap_index },
+ { 24083, IsProgramPipeline_remap_index },
+ { 41654, LockArraysEXT_remap_index },
+ { 40994, ProgramUniform1f_remap_index },
+ { 8900, ProgramUniform1fv_remap_index },
+ { 40970, ProgramUniform1i_remap_index },
+ { 14021, ProgramUniform1iv_remap_index },
+ { 31784, ProgramUniform1ui_remap_index },
+ { 40842, ProgramUniform1uiv_remap_index },
+ { 2137, ProgramUniform2f_remap_index },
+ { 16645, ProgramUniform2fv_remap_index },
+ { 2198, ProgramUniform2i_remap_index },
+ { 19804, ProgramUniform2iv_remap_index },
+ { 6687, ProgramUniform2ui_remap_index },
+ { 8343, ProgramUniform2uiv_remap_index },
+ { 4231, ProgramUniform3f_remap_index },
+ { 27902, ProgramUniform3fv_remap_index },
+ { 4257, ProgramUniform3i_remap_index },
+ { 12430, ProgramUniform3iv_remap_index },
+ { 14047, ProgramUniform3ui_remap_index },
+ { 16618, ProgramUniform3uiv_remap_index },
+ { 26823, ProgramUniform4f_remap_index },
+ { 30875, ProgramUniform4fv_remap_index },
+ { 26850, ProgramUniform4i_remap_index },
+ { 1788, ProgramUniform4iv_remap_index },
+ { 37590, ProgramUniform4ui_remap_index },
+ { 30698, ProgramUniform4uiv_remap_index },
+ { 18358, ProgramUniformMatrix2fv_remap_index },
+ { 20645, ProgramUniformMatrix2x3fv_remap_index },
+ { 7312, ProgramUniformMatrix2x4fv_remap_index },
+ { 35913, ProgramUniformMatrix3fv_remap_index },
+ { 31573, ProgramUniformMatrix3x2fv_remap_index },
+ { 25396, ProgramUniformMatrix3x4fv_remap_index },
+ { 29936, ProgramUniformMatrix4fv_remap_index },
+ { 2102, ProgramUniformMatrix4x2fv_remap_index },
+ { 6907, ProgramUniformMatrix4x3fv_remap_index },
+ { 36624, UnlockArraysEXT_remap_index },
+ { 29912, UseProgramStages_remap_index },
+ { 1597, ValidateProgramPipeline_remap_index },
+ { 15376, DebugMessageCallback_remap_index },
+ { 30362, DebugMessageControl_remap_index },
+ { 14706, DebugMessageInsert_remap_index },
+ { 6514, GetDebugMessageLog_remap_index },
+ { 6305, GetObjectLabel_remap_index },
+ { 11539, GetObjectPtrLabel_remap_index },
+ { 29398, ObjectLabel_remap_index },
+ { 41741, ObjectPtrLabel_remap_index },
+ { 17091, PopDebugGroup_remap_index },
+ { 30989, PushDebugGroup_remap_index },
+ { 7890, SecondaryColor3fEXT_remap_index },
+ { 7435, SecondaryColor3fvEXT_remap_index },
+ { 27571, MultiDrawElementsEXT_remap_index },
+ { 10171, FogCoordfEXT_remap_index },
+ { 17308, FogCoordfvEXT_remap_index },
+ { 3974, ResizeBuffersMESA_remap_index },
+ { 32650, WindowPos4dMESA_remap_index },
+ { 26266, WindowPos4dvMESA_remap_index },
+ { 4059, WindowPos4fMESA_remap_index },
+ { 10780, WindowPos4fvMESA_remap_index },
+ { 8583, WindowPos4iMESA_remap_index },
+ { 3485, WindowPos4ivMESA_remap_index },
+ { 26948, WindowPos4sMESA_remap_index },
+ { 1049, WindowPos4svMESA_remap_index },
+ { 27671, MultiModeDrawArraysIBM_remap_index },
+ { 18977, MultiModeDrawElementsIBM_remap_index },
+ { 31484, AreProgramsResidentNV_remap_index },
+ { 38232, ExecuteProgramNV_remap_index },
+ { 28413, GetProgramParameterdvNV_remap_index },
+ { 34945, GetProgramParameterfvNV_remap_index },
+ { 18426, GetProgramStringNV_remap_index },
+ { 15036, GetProgramivNV_remap_index },
+ { 17593, GetTrackMatrixivNV_remap_index },
+ { 18035, GetVertexAttribdvNV_remap_index },
+ { 16245, GetVertexAttribfvNV_remap_index },
+ { 15218, GetVertexAttribivNV_remap_index },
+ { 34668, LoadProgramNV_remap_index },
+ { 19077, ProgramParameters4dvNV_remap_index },
+ { 19656, ProgramParameters4fvNV_remap_index },
+ { 5926, RequestResidentProgramsNV_remap_index },
+ { 28034, TrackMatrixNV_remap_index },
+ { 13569, VertexAttrib1dNV_remap_index },
+ { 27016, VertexAttrib1dvNV_remap_index },
+ { 27342, VertexAttrib1fNV_remap_index },
+ { 40203, VertexAttrib1fvNV_remap_index },
+ { 20201, VertexAttrib1sNV_remap_index },
+ { 36644, VertexAttrib1svNV_remap_index },
+ { 17569, VertexAttrib2dNV_remap_index },
+ { 32934, VertexAttrib2dvNV_remap_index },
+ { 26118, VertexAttrib2fNV_remap_index },
+ { 24844, VertexAttrib2fvNV_remap_index },
+ { 12311, VertexAttrib2sNV_remap_index },
+ { 5421, VertexAttrib2svNV_remap_index },
+ { 35354, VertexAttrib3dNV_remap_index },
+ { 37243, VertexAttrib3dvNV_remap_index },
+ { 4680, VertexAttrib3fNV_remap_index },
+ { 39477, VertexAttrib3fvNV_remap_index },
+ { 6851, VertexAttrib3sNV_remap_index },
+ { 17620, VertexAttrib3svNV_remap_index },
+ { 8092, VertexAttrib4dNV_remap_index },
+ { 3263, VertexAttrib4dvNV_remap_index },
+ { 8163, VertexAttrib4fNV_remap_index },
+ { 39595, VertexAttrib4fvNV_remap_index },
+ { 16706, VertexAttrib4sNV_remap_index },
+ { 10385, VertexAttrib4svNV_remap_index },
+ { 1570, VertexAttrib4ubNV_remap_index },
+ { 10146, VertexAttrib4ubvNV_remap_index },
+ { 27822, VertexAttribPointerNV_remap_index },
+ { 26317, VertexAttribs1dvNV_remap_index },
+ { 29689, VertexAttribs1fvNV_remap_index },
+ { 5900, VertexAttribs1svNV_remap_index },
+ { 40816, VertexAttribs2dvNV_remap_index },
+ { 4083, VertexAttribs2fvNV_remap_index },
+ { 26395, VertexAttribs2svNV_remap_index },
+ { 1729, VertexAttribs3dvNV_remap_index },
+ { 33991, VertexAttribs3fvNV_remap_index },
+ { 13436, VertexAttribs3svNV_remap_index },
+ { 18640, VertexAttribs4dvNV_remap_index },
+ { 23422, VertexAttribs4fvNV_remap_index },
+ { 19830, VertexAttribs4svNV_remap_index },
+ { 30830, VertexAttribs4ubvNV_remap_index },
+ { 40081, GetTexBumpParameterfvATI_remap_index },
+ { 9947, GetTexBumpParameterivATI_remap_index },
+ { 34091, TexBumpParameterfvATI_remap_index },
+ { 8135, TexBumpParameterivATI_remap_index },
+ { 8783, AlphaFragmentOp1ATI_remap_index },
+ { 3287, AlphaFragmentOp2ATI_remap_index },
+ { 9216, AlphaFragmentOp3ATI_remap_index },
+ { 31944, BeginFragmentShaderATI_remap_index },
+ { 3532, BindFragmentShaderATI_remap_index },
+ { 6876, ColorFragmentOp1ATI_remap_index },
+ { 12277, ColorFragmentOp2ATI_remap_index },
+ { 23009, ColorFragmentOp3ATI_remap_index },
+ { 16060, DeleteFragmentShaderATI_remap_index },
+ { 42148, EndFragmentShaderATI_remap_index },
+ { 22059, GenFragmentShadersATI_remap_index },
+ { 39677, PassTexCoordATI_remap_index },
+ { 34071, SampleMapATI_remap_index },
+ { 33395, SetFragmentShaderConstantATI_remap_index },
+ { 8066, ActiveStencilFaceEXT_remap_index },
+ { 7692, BindVertexArrayAPPLE_remap_index },
+ { 15590, GenVertexArraysAPPLE_remap_index },
+ { 33657, GetProgramNamedParameterdvNV_remap_index },
+ { 21809, GetProgramNamedParameterfvNV_remap_index },
+ { 40112, ProgramNamedParameter4dNV_remap_index },
+ { 36435, ProgramNamedParameter4dvNV_remap_index },
+ { 39419, ProgramNamedParameter4fNV_remap_index },
+ { 24406, ProgramNamedParameter4fvNV_remap_index },
+ { 23329, PrimitiveRestartNV_remap_index },
+ { 23818, GetTexGenxvOES_remap_index },
+ { 37753, TexGenxOES_remap_index },
+ { 31051, TexGenxvOES_remap_index },
+ { 7616, DepthBoundsEXT_remap_index },
+ { 5670, BindFramebufferEXT_remap_index },
+ { 39735, BindRenderbufferEXT_remap_index },
+ { 4168, BufferParameteriAPPLE_remap_index },
+ { 37834, FlushMappedBufferRangeAPPLE_remap_index },
+ { 26642, VertexAttribI1iEXT_remap_index },
+ { 10719, VertexAttribI1uiEXT_remap_index },
+ { 19377, VertexAttribI2iEXT_remap_index },
+ { 39270, VertexAttribI2ivEXT_remap_index },
+ { 24537, VertexAttribI2uiEXT_remap_index },
+ { 33754, VertexAttribI2uivEXT_remap_index },
+ { 18507, VertexAttribI3iEXT_remap_index },
+ { 41222, VertexAttribI3ivEXT_remap_index },
+ { 21741, VertexAttribI3uiEXT_remap_index },
+ { 20105, VertexAttribI3uivEXT_remap_index },
+ { 36480, VertexAttribI4iEXT_remap_index },
+ { 6421, VertexAttribI4ivEXT_remap_index },
+ { 2399, VertexAttribI4uiEXT_remap_index },
+ { 26499, VertexAttribI4uivEXT_remap_index },
+ { 2805, ClearColorIiEXT_remap_index },
+ { 1177, ClearColorIuiEXT_remap_index },
+ { 23352, BindBufferOffsetEXT_remap_index },
+ { 17340, BeginPerfMonitorAMD_remap_index },
+ { 31442, DeletePerfMonitorsAMD_remap_index },
+ { 5173, EndPerfMonitorAMD_remap_index },
+ { 25850, GenPerfMonitorsAMD_remap_index },
+ { 12003, GetPerfMonitorCounterDataAMD_remap_index },
+ { 33268, GetPerfMonitorCounterInfoAMD_remap_index },
+ { 42108, GetPerfMonitorCounterStringAMD_remap_index },
+ { 41706, GetPerfMonitorCountersAMD_remap_index },
+ { 13640, GetPerfMonitorGroupStringAMD_remap_index },
+ { 28566, GetPerfMonitorGroupsAMD_remap_index },
+ { 13259, SelectPerfMonitorCountersAMD_remap_index },
+ { 13737, GetObjectParameterivAPPLE_remap_index },
+ { 41547, ObjectPurgeableAPPLE_remap_index },
+ { 1814, ObjectUnpurgeableAPPLE_remap_index },
+ { 40604, ActiveProgramEXT_remap_index },
+ { 26288, CreateShaderProgramEXT_remap_index },
+ { 35462, UseShaderProgramEXT_remap_index },
+ { 29281, TextureBarrierNV_remap_index },
+ { 2059, VDPAUFiniNV_remap_index },
+ { 804, VDPAUGetSurfaceivNV_remap_index },
+ { 22880, VDPAUInitNV_remap_index },
+ { 20623, VDPAUIsSurfaceNV_remap_index },
+ { 6170, VDPAUMapSurfacesNV_remap_index },
+ { 2846, VDPAURegisterOutputSurfaceNV_remap_index },
+ { 11872, VDPAURegisterVideoSurfaceNV_remap_index },
+ { 10458, VDPAUSurfaceAccessNV_remap_index },
+ { 4474, VDPAUUnmapSurfacesNV_remap_index },
+ { 36334, VDPAUUnregisterSurfaceNV_remap_index },
+ { 19539, StencilFuncSeparateATI_remap_index },
+ { 5386, ProgramEnvParameters4fvEXT_remap_index },
+ { 29532, ProgramLocalParameters4fvEXT_remap_index },
+ { 3652, EGLImageTargetRenderbufferStorageOES_remap_index },
+ { 3437, EGLImageTargetTexture2DOES_remap_index },
+ { 39237, AlphaFuncx_remap_index },
+ { 18552, ClearColorx_remap_index },
+ { 38502, ClearDepthx_remap_index },
+ { 34436, Color4x_remap_index },
+ { 22818, DepthRangex_remap_index },
+ { 2223, Fogx_remap_index },
+ { 14139, Fogxv_remap_index },
+ { 8310, Frustumf_remap_index },
+ { 8383, Frustumx_remap_index },
+ { 18472, LightModelx_remap_index },
+ { 30901, LightModelxv_remap_index },
+ { 27876, Lightx_remap_index },
+ { 39964, Lightxv_remap_index },
+ { 3367, LineWidthx_remap_index },
+ { 36000, LoadMatrixx_remap_index },
+ { 40887, Materialx_remap_index },
+ { 24356, Materialxv_remap_index },
+ { 28056, MultMatrixx_remap_index },
+ { 30177, MultiTexCoord4x_remap_index },
+ { 24205, Normal3x_remap_index },
+ { 14735, Orthof_remap_index },
+ { 14916, Orthox_remap_index },
+ { 26546, PointSizex_remap_index },
+ { 70, PolygonOffsetx_remap_index },
+ { 35777, Rotatex_remap_index },
+ { 19128, SampleCoveragex_remap_index },
+ { 12161, Scalex_remap_index },
+ { 36873, TexEnvx_remap_index },
+ { 41498, TexEnvxv_remap_index },
+ { 1893, TexParameterx_remap_index },
+ { 30478, Translatex_remap_index },
+ { 31751, ClipPlanef_remap_index },
+ { 31653, ClipPlanex_remap_index },
+ { 707, GetClipPlanef_remap_index },
+ { 570, GetClipPlanex_remap_index },
+ { 19046, GetFixedv_remap_index },
+ { 1236, GetLightxv_remap_index },
+ { 21846, GetMaterialxv_remap_index },
+ { 20500, GetTexEnvxv_remap_index },
+ { 15945, GetTexParameterxv_remap_index },
+ { 28090, PointParameterx_remap_index },
+ { 5528, PointParameterxv_remap_index },
+ { 18244, TexParameterxv_remap_index },
{ -1, -1 }
};
/* these functions are in the ABI, but have alternative names */
static const struct gl_function_remap MESA_alt_functions[] = {
/* from GL_EXT_blend_color */
- { 2898, _gloffset_BlendColor },
+ { 32882, _gloffset_BlendColor },
/* from GL_EXT_blend_minmax */
- { 13551, _gloffset_BlendEquation },
+ { 35297, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
- { 20553, _gloffset_ColorSubTable },
- { 38887, _gloffset_CopyColorSubTable },
+ { 5130, _gloffset_ColorSubTable },
+ { 20401, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
- { 266, _gloffset_ConvolutionFilter1D },
- { 2669, _gloffset_CopyConvolutionFilter1D },
- { 4898, _gloffset_GetConvolutionParameteriv },
- { 10558, _gloffset_ConvolutionFilter2D },
- { 10788, _gloffset_ConvolutionParameteriv },
- { 11293, _gloffset_ConvolutionParameterfv },
- { 24949, _gloffset_GetSeparableFilter },
- { 29034, _gloffset_SeparableFilter2D },
- { 29959, _gloffset_ConvolutionParameteri },
- { 30222, _gloffset_ConvolutionParameterf },
- { 32287, _gloffset_GetConvolutionParameterfv },
- { 33512, _gloffset_GetConvolutionFilter },
- { 36820, _gloffset_CopyConvolutionFilter2D },
+ { 1270, _gloffset_GetConvolutionParameteriv },
+ { 13102, _gloffset_ConvolutionParameterfv },
+ { 15807, _gloffset_CopyConvolutionFilter1D },
+ { 17756, _gloffset_SeparableFilter2D },
+ { 18922, _gloffset_GetConvolutionFilter },
+ { 22550, _gloffset_ConvolutionFilter1D },
+ { 24744, _gloffset_ConvolutionFilter2D },
+ { 27429, _gloffset_GetSeparableFilter },
+ { 28922, _gloffset_ConvolutionParameteri },
+ { 29044, _gloffset_ConvolutionParameterf },
+ { 34465, _gloffset_ConvolutionParameteriv },
+ { 40017, _gloffset_GetConvolutionParameterfv },
+ { 41073, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
- { 17888, _gloffset_CopyTexSubImage3D },
- { 19972, _gloffset_CopyTexImage2D },
- { 29439, _gloffset_CopyTexImage1D },
- { 32975, _gloffset_CopyTexSubImage2D },
- { 36315, _gloffset_CopyTexSubImage1D },
+ { 26172, _gloffset_CopyTexImage2D },
+ { 28714, _gloffset_CopyTexImage1D },
+ { 30938, _gloffset_CopyTexSubImage1D },
+ { 36711, _gloffset_CopyTexSubImage3D },
+ { 40273, _gloffset_CopyTexSubImage2D },
/* from GL_EXT_draw_range_elements */
- { 11582, _gloffset_DrawRangeElements },
+ { 23767, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
- { 772, _gloffset_Histogram },
- { 4081, _gloffset_ResetHistogram },
- { 12147, _gloffset_GetMinmax },
- { 18315, _gloffset_GetHistogramParameterfv },
- { 29364, _gloffset_GetMinmaxParameteriv },
- { 32177, _gloffset_ResetMinmax },
- { 33316, _gloffset_GetHistogramParameteriv },
- { 35018, _gloffset_GetHistogram },
- { 38354, _gloffset_Minmax },
- { 40349, _gloffset_GetMinmaxParameterfv },
+ { 4373, _gloffset_GetHistogramParameterfv },
+ { 7718, _gloffset_GetHistogramParameteriv },
+ { 9000, _gloffset_Minmax },
+ { 13376, _gloffset_GetMinmax },
+ { 20997, _gloffset_Histogram },
+ { 28642, _gloffset_GetMinmaxParameteriv },
+ { 29569, _gloffset_ResetMinmax },
+ { 30438, _gloffset_GetHistogram },
+ { 32038, _gloffset_GetMinmaxParameterfv },
+ { 32958, _gloffset_ResetHistogram },
/* from GL_EXT_paletted_texture */
- { 10420, _gloffset_ColorTable },
- { 18049, _gloffset_GetColorTable },
- { 27708, _gloffset_GetColorTableParameterfv },
- { 30278, _gloffset_GetColorTableParameteriv },
+ { 12964, _gloffset_ColorTable },
+ { 17365, _gloffset_GetColorTableParameterfv },
+ { 25495, _gloffset_GetColorTable },
+ { 29100, _gloffset_GetColorTableParameteriv },
/* from GL_EXT_subtexture */
- { 9113, _gloffset_TexSubImage1D },
- { 13008, _gloffset_TexSubImage2D },
+ { 2255, _gloffset_TexSubImage1D },
+ { 35012, _gloffset_TexSubImage2D },
/* from GL_EXT_texture3D */
- { 1696, _gloffset_TexImage3D },
- { 27442, _gloffset_TexSubImage3D },
+ { 21371, _gloffset_TexImage3D },
+ { 38934, _gloffset_TexSubImage3D },
/* from GL_EXT_texture_object */
- { 3777, _gloffset_PrioritizeTextures },
- { 9657, _gloffset_AreTexturesResident },
- { 16127, _gloffset_GenTextures },
- { 18564, _gloffset_DeleteTextures },
- { 23799, _gloffset_IsTexture },
- { 36424, _gloffset_BindTexture },
+ { 3996, _gloffset_GenTextures },
+ { 8430, _gloffset_BindTexture },
+ { 16588, _gloffset_IsTexture },
+ { 21691, _gloffset_PrioritizeTextures },
+ { 25695, _gloffset_DeleteTextures },
+ { 39367, _gloffset_AreTexturesResident },
/* from GL_EXT_vertex_array */
- { 29261, _gloffset_ArrayElement },
- { 37762, _gloffset_GetPointerv },
- { 39699, _gloffset_DrawArrays },
+ { 17854, _gloffset_ArrayElement },
+ { 28133, _gloffset_DrawArrays },
+ { 37326, _gloffset_GetPointerv },
/* from GL_NV_read_buffer */
- { 29928, _gloffset_ReadBuffer },
+ { 28891, _gloffset_ReadBuffer },
/* from GL_OES_blend_subtract */
- { 13551, _gloffset_BlendEquation },
+ { 35297, _gloffset_BlendEquation },
/* from GL_OES_texture_3D */
- { 1696, _gloffset_TexImage3D },
- { 17888, _gloffset_CopyTexSubImage3D },
- { 27442, _gloffset_TexSubImage3D },
+ { 21371, _gloffset_TexImage3D },
+ { 36711, _gloffset_CopyTexSubImage3D },
+ { 38934, _gloffset_TexSubImage3D },
/* from GL_OES_texture_cube_map */
- { 2429, _gloffset_TexGeniv },
- { 13145, _gloffset_TexGenfv },
- { 22491, _gloffset_TexGeni },
- { 22519, _gloffset_TexGenf },
- { 34065, _gloffset_GetTexGeniv },
- { 34888, _gloffset_GetTexGenfv },
+ { 16174, _gloffset_TexGeni },
+ { 16202, _gloffset_TexGenf },
+ { 19455, _gloffset_GetTexGenfv },
+ { 32833, _gloffset_TexGeniv },
+ { 35121, _gloffset_TexGenfv },
+ { 40568, _gloffset_GetTexGeniv },
/* from GL_SGI_color_table */
- { 9830, _gloffset_ColorTableParameteriv },
- { 10420, _gloffset_ColorTable },
- { 18049, _gloffset_GetColorTable },
- { 18181, _gloffset_CopyColorTable },
- { 23568, _gloffset_ColorTableParameterfv },
- { 27708, _gloffset_GetColorTableParameterfv },
- { 30278, _gloffset_GetColorTableParameteriv },
+ { 2559, _gloffset_ColorTableParameteriv },
+ { 12964, _gloffset_ColorTable },
+ { 16532, _gloffset_ColorTableParameterfv },
+ { 17365, _gloffset_GetColorTableParameterfv },
+ { 25495, _gloffset_GetColorTable },
+ { 25573, _gloffset_CopyColorTable },
+ { 29100, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
diff --git a/xorg-server/glx/glthread.h b/xorg-server/glx/u_thread.h
index 62c9bd4f1..62c9bd4f1 100644
--- a/xorg-server/glx/glthread.h
+++ b/xorg-server/glx/u_thread.h
diff --git a/xorg-server/hw/kdrive/ephyr/ephyr.c b/xorg-server/hw/kdrive/ephyr/ephyr.c
index 3e1495876..ba22ba225 100644
--- a/xorg-server/hw/kdrive/ephyr/ephyr.c
+++ b/xorg-server/hw/kdrive/ephyr/ephyr.c
@@ -1243,6 +1243,9 @@ ephyrGetColors(ScreenPtr pScreen, int n, xColorItem * pdefs)
void
ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs)
{
+ KdScreenPriv(pScreen);
+ KdScreenInfo *screen = pScreenPriv->screen;
+ EphyrScrPriv *scrpriv = screen->driver;
int min, max, p;
/* XXX Not sure if this is right */
@@ -1262,6 +1265,18 @@ ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs)
pdefs->green >> 8, pdefs->blue >> 8);
pdefs++;
}
+ if (scrpriv->pDamage) {
+ BoxRec box;
+ RegionRec region;
+
+ box.x1 = 0;
+ box.y1 = 0;
+ box.x2 = pScreen->width;
+ box.y2 = pScreen->height;
+ RegionInit(&region, &box, 1);
+ DamageReportDamage(scrpriv->pDamage, &region);
+ RegionUninit(&region);
+ }
}
/* Mouse calls */
diff --git a/xorg-server/hw/xfree86/common/xf86Config.c b/xorg-server/hw/xfree86/common/xf86Config.c
index 258b22bfe..542d5abf6 100644
--- a/xorg-server/hw/xfree86/common/xf86Config.c
+++ b/xorg-server/hw/xfree86/common/xf86Config.c
@@ -777,13 +777,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
MessageType from;
const char *s;
XkbRMLVOSet set;
-
- /* Default options. */
- set.rules = "base";
- set.model = "pc105";
- set.layout = "us";
- set.variant = NULL;
- set.options = NULL;
+ const char *rules;
/*
* Merge the ServerLayout and ServerFlags options. The former have
@@ -963,9 +957,15 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
* evdev rules set. */
#if defined(linux)
if (!xf86Info.forceInputDevices)
- set.rules = "evdev";
+ rules = "evdev";
+ else
#endif
+ rules = "base";
+
+ /* Xkb default options. */
+ XkbInitRules(&set, rules, "pc105", "us", NULL, NULL);
XkbSetRulesDflts(&set);
+ XkbFreeRMLVOSet(&set, FALSE);
xf86Info.useDefaultFontPath = TRUE;
xf86Info.useDefaultFontPathFrom = X_DEFAULT;
diff --git a/xorg-server/hw/xfree86/common/xf86Configure.c b/xorg-server/hw/xfree86/common/xf86Configure.c
index 30dc5505c..967bfbc93 100644
--- a/xorg-server/hw/xfree86/common/xf86Configure.c
+++ b/xorg-server/hw/xfree86/common/xf86Configure.c
@@ -159,8 +159,8 @@ configureInputSection(void)
parsePrologue(XF86ConfInputPtr, XF86ConfInputRec)
- ptr->inp_identifier = "Keyboard0";
- ptr->inp_driver = "kbd";
+ ptr->inp_identifier = xnfstrdup("Keyboard0");
+ ptr->inp_driver = xnfstrdup("kbd");
ptr->list.next = NULL;
/* Crude mechanism to auto-detect mouse (os dependent) */
@@ -175,17 +175,17 @@ configureInputSection(void)
}
mouse = calloc(1, sizeof(XF86ConfInputRec));
- mouse->inp_identifier = "Mouse0";
- mouse->inp_driver = "mouse";
+ mouse->inp_identifier = xnfstrdup("Mouse0");
+ mouse->inp_driver = xnfstrdup("mouse");
mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, strdup("Protocol"),
- strdup(DFLT_MOUSE_PROTO));
+ xf86addNewOption(mouse->inp_option_lst, xnfstrdup("Protocol"),
+ xnfstrdup(DFLT_MOUSE_PROTO));
mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, strdup("Device"),
- strdup(DFLT_MOUSE_DEV));
+ xf86addNewOption(mouse->inp_option_lst, xnfstrdup("Device"),
+ xnfstrdup(DFLT_MOUSE_DEV));
mouse->inp_option_lst =
- xf86addNewOption(mouse->inp_option_lst, strdup("ZAxisMapping"),
- strdup("4 5 6 7"));
+ xf86addNewOption(mouse->inp_option_lst, xnfstrdup("ZAxisMapping"),
+ xnfstrdup("4 5 6 7"));
ptr = (XF86ConfInputPtr) xf86addListItem((glp) ptr, (glp) mouse);
return ptr;
}
@@ -290,7 +290,7 @@ configureDeviceSection(int screennum)
" ### <string>: \"String\", <freq>: \"<f> Hz/kHz/MHz\",\n"
" ### <percent>: \"<f>%\"\n"
" ### [arg]: arg optional\n";
- ptr->dev_comment = strdup(descrip);
+ ptr->dev_comment = xnfstrdup(descrip);
if (ptr->dev_comment) {
for (p = DevToConfig[screennum].GDev.options; p->name != NULL; p++) {
char *p_e;
@@ -337,9 +337,9 @@ configureLayoutSection(void)
iptr = malloc(sizeof(XF86ConfInputrefRec));
iptr->list.next = NULL;
iptr->iref_option_lst = NULL;
- iptr->iref_inputdev_str = "Mouse0";
+ iptr->iref_inputdev_str = xnfstrdup("Mouse0");
iptr->iref_option_lst =
- xf86addNewOption(iptr->iref_option_lst, strdup("CorePointer"),
+ xf86addNewOption(iptr->iref_option_lst, xnfstrdup("CorePointer"),
NULL);
ptr->lay_input_lst = (XF86ConfInputrefPtr)
xf86addListItem((glp) ptr->lay_input_lst, (glp) iptr);
@@ -351,9 +351,9 @@ configureLayoutSection(void)
iptr = malloc(sizeof(XF86ConfInputrefRec));
iptr->list.next = NULL;
iptr->iref_option_lst = NULL;
- iptr->iref_inputdev_str = "Keyboard0";
+ iptr->iref_inputdev_str = xnfstrdup("Keyboard0");
iptr->iref_option_lst =
- xf86addNewOption(iptr->iref_option_lst, strdup("CoreKeyboard"),
+ xf86addNewOption(iptr->iref_option_lst, xnfstrdup("CoreKeyboard"),
NULL);
ptr->lay_input_lst = (XF86ConfInputrefPtr)
xf86addListItem((glp) ptr->lay_input_lst, (glp) iptr);
@@ -431,9 +431,9 @@ configureFilesSection(void)
parsePrologue(XF86ConfFilesPtr, XF86ConfFilesRec)
if (xf86ModulePath)
- ptr->file_modulepath = strdup(xf86ModulePath);
+ ptr->file_modulepath = xnfstrdup(xf86ModulePath);
if (defaultFontPath)
- ptr->file_fontpath = strdup(defaultFontPath);
+ ptr->file_fontpath = xnfstrdup(defaultFontPath);
return ptr;
}
@@ -446,8 +446,8 @@ configureMonitorSection(int screennum)
XNFasprintf(&tmp, "Monitor%d", screennum);
ptr->mon_identifier = tmp;
- ptr->mon_vendor = strdup("Monitor Vendor");
- ptr->mon_modelname = strdup("Monitor Model");
+ ptr->mon_vendor = xnfstrdup("Monitor Vendor");
+ ptr->mon_modelname = xnfstrdup("Monitor Model");
return ptr;
}
@@ -491,7 +491,7 @@ configureDDCMonitorSection(int screennum)
XNFasprintf(&tmp, "Monitor%d", screennum);
ptr->mon_identifier = tmp;
- ptr->mon_vendor = strdup(ConfiguredMonitor->vendor.name);
+ ptr->mon_vendor = xnfstrdup(ConfiguredMonitor->vendor.name);
XNFasprintf(&ptr->mon_modelname, "%x", ConfiguredMonitor->vendor.prod_id);
/* features in centimetres, we want millimetres */
@@ -529,7 +529,7 @@ configureDDCMonitorSection(int screennum)
if (ConfiguredMonitor->features.dpms) {
ptr->mon_option_lst =
- xf86addNewOption(ptr->mon_option_lst, strdup("DPMS"), NULL);
+ xf86addNewOption(ptr->mon_option_lst, xnfstrdup("DPMS"), NULL);
}
return ptr;
diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c
index 3a0151374..f6f2b90dd 100644
--- a/xorg-server/hw/xfree86/common/xf86Xinput.c
+++ b/xorg-server/hw/xfree86/common/xf86Xinput.c
@@ -539,7 +539,7 @@ MatchAttrToken(const char *attr, struct xorg_list *patterns,
* match. Each list entry is a separate Match line of the same type.
*/
xorg_list_for_each_entry(group, patterns, entry) {
- const char *const *cur;
+ char *const *cur;
Bool match = FALSE;
for (cur = group->values; *cur; cur++)
@@ -598,7 +598,7 @@ InputClassMatches(const XF86ConfInputClassPtr iclass, const InputInfoPtr idev,
* See if any of the device's tags match any of the MatchTag tokens.
*/
if (!xorg_list_is_empty(&iclass->match_tag)) {
- const char *const *tag;
+ char *const *tag;
Bool match;
if (!attrs->tags)
diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.h b/xorg-server/hw/xfree86/common/xf86Xinput.h
index f94261a01..b6d125128 100644
--- a/xorg-server/hw/xfree86/common/xf86Xinput.h
+++ b/xorg-server/hw/xfree86/common/xf86Xinput.h
@@ -82,8 +82,8 @@ typedef struct _InputDriverRec {
typedef struct _InputInfoRec {
struct _InputInfoRec *next;
- const char *name;
- const char *driver;
+ char *name;
+ char *driver;
int flags;
diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c
index 824003d26..47f5abc2c 100644
--- a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c
+++ b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c
@@ -204,7 +204,7 @@ mtrr_cull_wc_region(int screenNum, unsigned long base, unsigned long size,
xf86DrvMsgVerb(screenNum, X_WARNING, 0,
"Failed to remove MMIO "
"write-combining range (0x%lx,0x%lx)\n",
- gent.base, (unsigned long) gent.size);
+ (unsigned long)gent.base, (unsigned long) gent.size);
}
}
return wcreturn;
diff --git a/xorg-server/hw/xfree86/parser/InputClass.c b/xorg-server/hw/xfree86/parser/InputClass.c
index 24a124691..c2fbd22a7 100644
--- a/xorg-server/hw/xfree86/parser/InputClass.c
+++ b/xorg-server/hw/xfree86/parser/InputClass.c
@@ -63,7 +63,7 @@ xf86ConfigSymTabRec InputClassTab[] = {
#define TOKEN_SEP "|"
static void
-add_group_entry(struct xorg_list *head, const char **values)
+add_group_entry(struct xorg_list *head, char **values)
{
xf86MatchGroup *group;
@@ -256,7 +256,7 @@ void
xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr)
{
const xf86MatchGroup *group;
- const char *const *cur;
+ char *const *cur;
while (ptr) {
fprintf(cf, "Section \"InputClass\"\n");
@@ -362,7 +362,7 @@ xf86freeInputClassList(XF86ConfInputClassPtr ptr)
while (ptr) {
xf86MatchGroup *group, *next;
- const char **list;
+ char **list;
TestFree(ptr->identifier);
TestFree(ptr->driver);
@@ -370,55 +370,55 @@ xf86freeInputClassList(XF86ConfInputClassPtr ptr)
xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) {
xorg_list_del(&group->entry);
for (list = group->values; *list; list++)
- free((void *) *list);
+ free(*list);
free(group);
}
diff --git a/xorg-server/hw/xfree86/parser/xf86Parser.h b/xorg-server/hw/xfree86/parser/xf86Parser.h
index 83607f26c..8f855ac09 100644
--- a/xorg-server/hw/xfree86/parser/xf86Parser.h
+++ b/xorg-server/hw/xfree86/parser/xf86Parser.h
@@ -279,8 +279,8 @@ typedef struct {
typedef struct {
GenericListRec list;
- const char *inp_identifier;
- const char *inp_driver;
+ char *inp_identifier;
+ char *inp_driver;
XF86OptionPtr inp_option_lst;
char *inp_comment;
} XF86ConfInputRec, *XF86ConfInputPtr;
@@ -288,7 +288,7 @@ typedef struct {
typedef struct {
GenericListRec list;
XF86ConfInputPtr iref_inputdev;
- const char *iref_inputdev_str;
+ char *iref_inputdev_str;
XF86OptionPtr iref_option_lst;
} XF86ConfInputrefRec, *XF86ConfInputrefPtr;
@@ -299,13 +299,13 @@ typedef struct {
typedef struct {
struct xorg_list entry;
- const char **values;
+ char **values;
} xf86MatchGroup;
typedef struct {
GenericListRec list;
char *identifier;
- const char *driver;
+ char *driver;
struct xorg_list match_product;
struct xorg_list match_vendor;
struct xorg_list match_device;
diff --git a/xorg-server/hw/xquartz/quartzCocoa.m b/xorg-server/hw/xquartz/quartzCocoa.m
index db2b3cfd6..d21fb7d91 100644
--- a/xorg-server/hw/xquartz/quartzCocoa.m
+++ b/xorg-server/hw/xquartz/quartzCocoa.m
@@ -48,9 +48,9 @@
* Clean out any autoreleased objects.
*/
void
-QuartzBlockHandler(pointer blockData,
+QuartzBlockHandler(void *blockData,
OSTimePtr pTimeout,
- pointer pReadmask)
+ void *pReadmask)
{
static NSAutoreleasePool *aPool = nil;
@@ -62,9 +62,9 @@ QuartzBlockHandler(pointer blockData,
* QuartzWakeupHandler
*/
void
-QuartzWakeupHandler(pointer blockData,
+QuartzWakeupHandler(void *blockData,
int result,
- pointer pReadmask)
+ void *pReadmask)
{
// nothing here
}
diff --git a/xorg-server/hw/xwin/InitOutput.c b/xorg-server/hw/xwin/InitOutput.c
index defbbadd8..91242259f 100644
--- a/xorg-server/hw/xwin/InitOutput.c
+++ b/xorg-server/hw/xwin/InitOutput.c
@@ -53,8 +53,11 @@ typedef HRESULT (__stdcall * SHGETFOLDERPATHPROC)(HWND hwndOwner,
HANDLE hToken,
DWORD dwFlags, LPTSTR pszPath);
#endif
-
#include "glx_extinit.h"
+#ifdef XWIN_GLX_WINDOWS
+#include "glx/glwindows.h"
+#endif
+
/*
* References to external symbols
*/
diff --git a/xorg-server/hw/xwin/glx/gen_gl_wrappers.py b/xorg-server/hw/xwin/glx/gen_gl_wrappers.py
index e5fa57142..840e4366b 100755
--- a/xorg-server/hw/xwin/glx/gen_gl_wrappers.py
+++ b/xorg-server/hw/xwin/glx/gen_gl_wrappers.py
@@ -48,34 +48,18 @@ preresolve=False
staticwrappers=False
nodebugcallcounting=False
-WinGDI={key: 1 for key in [
- "wglCopyContext"
- ,"wglCreateContext"
- ,"wglCreateLayerContext"
- ,"wglDeleteContext"
- ,"wglGetCurrentContext"
- ,"wglGetCurrentDC"
- ,"wglGetProcAddress"
- ,"wglMakeCurrent"
- ,"wglShareLists"
- ,"wglUseFontBitmapsA"
- ,"wglUseFontBitmapsW"
- ,"wglUseFontBitmaps"
- ,"SwapBuffers"
- ,"wglUseFontOutlinesA"
- ,"wglUseFontOutlinesW"
- ,"wglUseFontOutlines"
- ,"wglDescribeLayerPlane"
- ,"wglSetLayerPaletteEntries"
- ,"wglGetLayerPaletteEntries"
- ,"wglRealizeLayerPalette"
- ,"wglSwapLayerBuffers"
- ,"wglSwapMultipleBuffers"
- ,"ChoosePixelFormat"
- ,"DescribePixelFormat"
- ,"GetEnhMetaFilePixelFormat"
- ,"GetPixelFormat"
- ,"SetPixelFormat"
+# list of WGL extension functions we use
+used_wgl_ext_fns = {key: 1 for key in [
+ "wglSwapIntervalEXT",
+ "wglGetExtensionsStringARB",
+ "wglDestroyPbufferARB",
+ "wglGetPbufferDCARB",
+ "wglReleasePbufferDCARB",
+ "wglCreatePbufferARB",
+ "wglMakeContextCurrentARB",
+ "wglChoosePixelFormatARB",
+ "wglGetPixelFormatAttribivARB",
+ "wglGetPixelFormatAttribivARB"
]}
if __name__ == '__main__':
@@ -260,7 +244,7 @@ class PreResolveOutputGenerator(OutputGenerator):
OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name)
- if name in WinGDI:
+ if prefix == 'wgl' and not name in used_wgl_ext_fns:
return
self.outFile.write('RESOLVE_DECL(PFN' + name.upper() + 'PROC);\n')
@@ -293,7 +277,7 @@ class MyOutputGenerator(OutputGenerator):
self.outFile.write('/* No wrapper for ' + name + ', not in dispatch table */\n')
return
- if name in WinGDI:
+ if prefix == 'wgl' and not name in used_wgl_ext_fns:
return
self.wrappers[name]=1
diff --git a/xorg-server/hw/xwin/glx/genheaders.py b/xorg-server/hw/xwin/glx/genheaders.py
index 78171c982..baaf93de9 100644
--- a/xorg-server/hw/xwin/glx/genheaders.py
+++ b/xorg-server/hw/xwin/glx/genheaders.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2013 The Khronos Group Inc.
+# Copyright (c) 2013-2014 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
@@ -139,7 +139,7 @@ glx13andLaterPat = '1\.[3-9]'
# Copyright text prefixing all headers (list of strings).
prefixStrings = [
'/*',
- '** Copyright (c) 2013 The Khronos Group Inc.',
+ '** Copyright (c) 2013-2014 The Khronos Group Inc.',
'**',
'** Permission is hereby granted, free of charge, to any person obtaining a',
'** copy of this software and/or associated documentation files (the',
diff --git a/xorg-server/hw/xwin/glx/gl.xml b/xorg-server/hw/xwin/glx/gl.xml
index e46fcaf48..669ff8d26 100644
--- a/xorg-server/hw/xwin/glx/gl.xml
+++ b/xorg-server/hw/xwin/glx/gl.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<comment>
-Copyright (c) 2013 The Khronos Group Inc.
+Copyright (c) 2013-2014 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
@@ -546,6 +546,11 @@ typedef unsigned int GLhandleARB;
<enum name="GL_TEXTURE_DEFORMATION_SGIX"/>
</group>
+ <group name="FogCoordinatePointerType">
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_DOUBLE"/>
+ </group>
+
<group name="FogMode">
<enum name="GL_EXP"/>
<enum name="GL_EXP2"/>
@@ -563,6 +568,16 @@ typedef unsigned int GLhandleARB;
<enum name="GL_FOG_START"/>
</group>
+ <group name="FogPointerTypeEXT">
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_DOUBLE"/>
+ </group>
+
+ <group name="FogPointerTypeIBM">
+ <enum name="GL_FLOAT"/>
+ <enum name="GL_DOUBLE"/>
+ </group>
+
<group name="FragmentLightModelParameterSGIX">
<enum name="GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX"/>
<enum name="GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX"/>
@@ -1726,6 +1741,14 @@ typedef unsigned int GLhandleARB;
<enum name="GL_TRIANGLE_STRIP_ADJACENCY_EXT"/>
</group>
+ <group name="OcclusionQueryEventMaskAMD">
+ <enum name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_ALL_EVENT_BITS_AMD"/>
+ </group>
+
<group name="ReadBufferMode">
<enum name="GL_AUX0"/>
<enum name="GL_AUX1"/>
@@ -2090,6 +2113,14 @@ typedef unsigned int GLhandleARB;
<enum value="0xFFFFFFFF" name="GL_ALL_BARRIER_BITS_EXT"/>
</enums>
+ <enums namespace="OcclusionQueryEventMaskAMD">
+ <enum value="0x00000001" name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/>
+ <enum value="0x00000002" name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/>
+ <enum value="0x00000004" name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/>
+ <enum value="0x00000008" name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/>
+ <enum value="0xFFFFFFFF" name="GL_QUERY_ALL_EVENT_BITS_AMD"/>
+ </enums>
+
<enums namespace="GL" group="SyncObjectMask" type="bitmask">
<enum value="0x00000001" name="GL_SYNC_FLUSH_COMMANDS_BIT"/>
<enum value="0x00000001" name="GL_SYNC_FLUSH_COMMANDS_BIT_APPLE"/>
@@ -2174,6 +2205,11 @@ typedef unsigned int GLhandleARB;
<enum value="0x10000000" name="GL_FONT_HAS_KERNING_BIT_NV"/>
</enums>
+ <enums namespace="GL" group="PerformanceQueryCapsMaskINTEL" type="bitmask">
+ <enum value="0x00000000" name="GL_PERFQUERY_SINGLE_CONTEXT_INTEL"/>
+ <enum value="0x00000001" name="GL_PERFQUERY_GLOBAL_CONTEXT_INTEL"/>
+ </enums>
+
<enums namespace="GL" group="VertexHintsMaskPGI" type="bitmask">
<enum value="0x00000004" name="GL_VERTEX23_BIT_PGI"/>
<enum value="0x00000008" name="GL_VERTEX4_BIT_PGI"/>
@@ -4152,7 +4188,10 @@ typedef unsigned int GLhandleARB;
<enum value="0x83F6" name="GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL"/>
<enum value="0x83F7" name="GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL"/>
<enum value="0x83F8" name="GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL"/>
- <unused start="0x83F9" end="0x83FE"/>
+ <enum value="0x83F9" name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/>
+ <enum value="0x83FA" name="GL_PERFQUERY_FLUSH_INTEL"/>
+ <enum value="0x83FB" name="GL_PERFQUERY_WAIT_INTEL"/>
+ <unused start="0x83FC" end="0x83FE"/>
<enum value="0x83FF" name="GL_TEXTURE_MEMORY_LAYOUT_INTEL"/>
</enums>
@@ -5103,7 +5142,7 @@ typedef unsigned int GLhandleARB;
<enum value="0x874C" name="GL_STENCIL_OP_VALUE_AMD"/>
<enum value="0x874D" name="GL_STENCIL_BACK_OP_VALUE_AMD"/>
<enum value="0x874E" name="GL_VERTEX_ATTRIB_ARRAY_LONG"/>
- <unused start="0x874F"/>
+ <enum value="0x874F" name="GL_OCCLUSION_QUERY_EVENT_MASK_AMD"/>
</enums>
<enums namespace="GL" start="0x8750" end="0x875F" vendor="MESA">
@@ -5455,7 +5494,9 @@ typedef unsigned int GLhandleARB;
<enum value="0x8834" name="GL_DRAW_BUFFER15_EXT"/>
<enum value="0x8834" name="GL_DRAW_BUFFER15_NV"/>
<enum value="0x8835" name="GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI"/>
- <unused start="0x8836" end="0x883C"/>
+ <unused start="0x8836"/>
+ <enum value="0x8837" name="GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI" comment="Defined by Mesa but not ATI"/>
+ <unused start="0x8838" end="0x883C"/>
<enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA"/>
<enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA_EXT"/>
<enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA_OES"/>
@@ -6934,9 +6975,13 @@ typedef unsigned int GLhandleARB;
<enum value="0x8E88" name="GL_TESS_CONTROL_SHADER"/>
<enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"/>
<enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"/>
+ <enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM"/>
<enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"/>
+ <enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/>
<enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"/>
+ <enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/>
<enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"/>
+ <enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/>
<enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"/>
</enums>
@@ -7191,7 +7236,11 @@ typedef unsigned int GLhandleARB;
<unused start="0x903D" end="0x9044"/>
<enum value="0x9045" name="GL_TEXTURE_COVERAGE_SAMPLES_NV"/>
<enum value="0x9046" name="GL_TEXTURE_COLOR_SAMPLES_NV"/>
- <unused start="0x9047" end="0x904B"/>
+ <enum value="0x9047" name="GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX"/>
+ <enum value="0x9048" name="GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX"/>
+ <enum value="0x9049" name="GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX"/>
+ <enum value="0x904A" name="GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX"/>
+ <enum value="0x904B" name="GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX"/>
<enum value="0x904C" name="GL_IMAGE_1D"/>
<enum value="0x904C" name="GL_IMAGE_1D_EXT"/>
<enum value="0x904D" name="GL_IMAGE_2D"/>
@@ -7780,7 +7829,18 @@ typedef unsigned int GLhandleARB;
<enum value="0x93BB" name="GL_COMPRESSED_RGBA_ASTC_10x10_KHR"/>
<enum value="0x93BC" name="GL_COMPRESSED_RGBA_ASTC_12x10_KHR"/>
<enum value="0x93BD" name="GL_COMPRESSED_RGBA_ASTC_12x12_KHR"/>
- <unused start="0x93BE" end="0x93CF"/>
+ <unused start="0x93BE" end="0x93BF"/>
+ <enum value="0x93C0" name="GL_COMPRESSED_RGBA_ASTC_3x3x3_OES"/>
+ <enum value="0x93C1" name="GL_COMPRESSED_RGBA_ASTC_4x3x3_OES"/>
+ <enum value="0x93C2" name="GL_COMPRESSED_RGBA_ASTC_4x4x3_OES"/>
+ <enum value="0x93C3" name="GL_COMPRESSED_RGBA_ASTC_4x4x4_OES"/>
+ <enum value="0x93C4" name="GL_COMPRESSED_RGBA_ASTC_5x4x4_OES"/>
+ <enum value="0x93C5" name="GL_COMPRESSED_RGBA_ASTC_5x5x4_OES"/>
+ <enum value="0x93C6" name="GL_COMPRESSED_RGBA_ASTC_5x5x5_OES"/>
+ <enum value="0x93C7" name="GL_COMPRESSED_RGBA_ASTC_6x5x5_OES"/>
+ <enum value="0x93C8" name="GL_COMPRESSED_RGBA_ASTC_6x6x5_OES"/>
+ <enum value="0x93C9" name="GL_COMPRESSED_RGBA_ASTC_6x6x6_OES"/>
+ <unused start="0x93CA" end="0x93CF"/>
<enum value="0x93D0" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"/>
<enum value="0x93D1" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"/>
<enum value="0x93D2" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"/>
@@ -7795,13 +7855,44 @@ typedef unsigned int GLhandleARB;
<enum value="0x93DB" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/>
<enum value="0x93DC" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/>
<enum value="0x93DD" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/>
- <unused start="0x93DE" end="0x93EF"/>
+ <unused start="0x93DE" end="0x93DF"/>
+ <enum value="0x93E0" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES"/>
+ <enum value="0x93E1" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES"/>
+ <enum value="0x93E2" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES"/>
+ <enum value="0x93E3" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES"/>
+ <enum value="0x93E4" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES"/>
+ <enum value="0x93E5" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES"/>
+ <enum value="0x93E6" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES"/>
+ <enum value="0x93E7" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES"/>
+ <enum value="0x93E8" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES"/>
+ <enum value="0x93E9" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES"/>
+ <unused start="0x93EA" end="0x93EF"/>
</enums>
<enums namespace="GL" start="0x93F0" end="0x94EF" vendor="APPLE" comment="Khronos bug 10233">
<unused start="0x93F0" end="0x94EF"/>
</enums>
+ <enums namespace="GL" start="0x94F0" end="0x950F" vendor="INTEL" comment="Khronos bug 11345">
+ <enum value="0x94F0" name="GL_PERFQUERY_COUNTER_EVENT_INTEL"/>
+ <enum value="0x94F1" name="GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL"/>
+ <enum value="0x94F2" name="GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL"/>
+ <enum value="0x94F3" name="GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL"/>
+ <enum value="0x94F4" name="GL_PERFQUERY_COUNTER_RAW_INTEL"/>
+ <enum value="0x94F5" name="GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL"/>
+ <unused start="0x94F6" end="0x94F7"/>
+ <enum value="0x94F8" name="GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL"/>
+ <enum value="0x94F9" name="GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL"/>
+ <enum value="0x94FA" name="GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL"/>
+ <enum value="0x94FB" name="GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL"/>
+ <enum value="0x94FC" name="GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL"/>
+ <enum value="0x94FD" name="GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL"/>
+ <enum value="0x94FE" name="GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL"/>
+ <enum value="0x94FF" name="GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL"/>
+ <enum value="0x9500" name="GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL"/>
+ <unused start="0x9501" end="0x950F"/>
+ </enums>
+
<!-- Enums reservable for future use. To reserve a new range, allocate one
or more multiples of 16 starting at the lowest available point in this
block and note it in a new <enums> block immediately above.
@@ -7811,8 +7902,8 @@ typedef unsigned int GLhandleARB;
file) File requests in the Khronos Bugzilla, OpenGL project, Registry
component. -->
- <enums namespace="GL" start="0x94F0" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS">
- <unused start="0x94F0" end="99999"/>
+ <enums namespace="GL" start="0x9510" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS">
+ <unused start="0x9510" end="99999"/>
</enums>
<!-- Historical large block allocations, all unused except (in older days) by IBM -->
@@ -8072,6 +8163,10 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>monitor</name></param>
</command>
<command>
+ <proto>void <name>glBeginPerfQueryINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryHandle</name></param>
+ </command>
+ <command>
<proto>void <name>glBeginQuery</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>id</name></param>
@@ -8205,16 +8300,16 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param>
</command>
<command>
<proto>void <name>glBindBuffersRange</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>buffers</name></param>
- <param>const <ptype>GLintptr</ptype> *<name>offsets</name></param>
- <param>const <ptype>GLsizeiptr</ptype> *<name>sizes</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param len="count">const <ptype>GLintptr</ptype> *<name>offsets</name></param>
+ <param len="count">const <ptype>GLsizeiptr</ptype> *<name>sizes</name></param>
</command>
<command>
<proto>void <name>glBindFragDataLocation</name></proto>
@@ -8281,7 +8376,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glBindImageTextures</name></proto>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>textures</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>textures</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glBindLightParameterEXT</name></proto>
@@ -8350,7 +8445,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glBindSamplers</name></proto>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>samplers</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>samplers</name></param>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glBindTexGenParameterEXT</name></proto>
@@ -8380,7 +8475,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glBindTextures</name></proto>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>textures</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>textures</name></param>
</command>
<command>
<proto>void <name>glBindTransformFeedback</name></proto>
@@ -8400,11 +8495,11 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glBindVertexArrayAPPLE</name></proto>
<param><ptype>GLuint</ptype> <name>array</name></param>
- <alias name="glBindVertexArray"/>
</command>
<command>
<proto>void <name>glBindVertexArrayOES</name></proto>
<param><ptype>GLuint</ptype> <name>array</name></param>
+ <alias name="glBindVertexArray"/>
</command>
<command>
<proto>void <name>glBindVertexBuffer</name></proto>
@@ -8417,9 +8512,9 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glBindVertexBuffers</name></proto>
<param><ptype>GLuint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint</ptype> *<name>buffers</name></param>
- <param>const <ptype>GLintptr</ptype> *<name>offsets</name></param>
- <param>const <ptype>GLsizei</ptype> *<name>strides</name></param>
+ <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param len="count">const <ptype>GLintptr</ptype> *<name>offsets</name></param>
+ <param len="count">const <ptype>GLsizei</ptype> *<name>strides</name></param>
</command>
<command>
<proto>void <name>glBindVertexShaderEXT</name></proto>
@@ -8521,7 +8616,10 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLfixed</ptype> <name>yorig</name></param>
<param><ptype>GLfixed</ptype> <name>xmove</name></param>
<param><ptype>GLfixed</ptype> <name>ymove</name></param>
- <param len="COMPSIZE()">const <ptype>GLubyte</ptype> *<name>bitmap</name></param>
+ <param len="COMPSIZE(width,height)">const <ptype>GLubyte</ptype> *<name>bitmap</name></param>
+ </command>
+ <command>
+ <proto>void <name>glBlendBarrierNV</name></proto>
</command>
<command>
<proto>void <name>glBlendColor</name></proto>
@@ -8708,9 +8806,6 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>value</name></param>
</command>
<command>
- <proto>void <name>glBlendBarrierNV</name></proto>
- </command>
- <command>
<proto>void <name>glBlitFramebuffer</name></proto>
<param><ptype>GLint</ptype> <name>srcX0</name></param>
<param><ptype>GLint</ptype> <name>srcY0</name></param>
@@ -8764,6 +8859,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>dstY1</name></param>
<param><ptype>GLbitfield</ptype> <name>mask</name></param>
<param><ptype>GLenum</ptype> <name>filter</name></param>
+ <alias name="glBlitFramebuffer"/>
</command>
<command>
<proto>void <name>glBufferAddressRangeNV</name></proto>
@@ -8797,7 +8893,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glBufferStorage</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizeiptr</ptype> <name>size</name></param>
- <param>const void *<name>data</name></param>
+ <param len="size">const void *<name>data</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
@@ -9006,10 +9102,10 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glClearNamedBufferSubDataEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param><ptype>GLenum</ptype> <name>internalformat</name></param>
- <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
- <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>offset</name></param>
<param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param>
+ <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param>
+ <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param>
<param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
@@ -9023,7 +9119,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>data</name></param>
+ <param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
<proto>void <name>glClearTexSubImage</name></proto>
@@ -9037,7 +9133,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>data</name></param>
+ <param len="COMPSIZE(format,type)">const void *<name>data</name></param>
</command>
<command>
<proto>void <name>glClientActiveTexture</name></proto>
@@ -9067,6 +9163,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsync</ptype> <name>sync</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
<param><ptype>GLuint64</ptype> <name>timeout</name></param>
+ <alias name="glClientWaitSync"/>
</command>
<command>
<proto>void <name>glClipPlane</name></proto>
@@ -9077,12 +9174,12 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glClipPlanef</name></proto>
<param><ptype>GLenum</ptype> <name>p</name></param>
- <param>const <ptype>GLfloat</ptype> *<name>eqn</name></param>
+ <param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanefIMG</name></proto>
<param><ptype>GLenum</ptype> <name>p</name></param>
- <param>const <ptype>GLfloat</ptype> *<name>eqn</name></param>
+ <param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanefOES</name></proto>
@@ -9093,12 +9190,12 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glClipPlanex</name></proto>
<param><ptype>GLenum</ptype> <name>plane</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>equation</name></param>
+ <param len="4">const <ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glClipPlanexIMG</name></proto>
<param><ptype>GLenum</ptype> <name>p</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>eqn</name></param>
+ <param len="4">const <ptype>GLfixed</ptype> *<name>eqn</name></param>
</command>
<command>
<proto>void <name>glClipPlanexOES</name></proto>
@@ -9861,7 +9958,8 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
- <param>const void *<name>data</name></param>
+ <param len="imageSize">const void *<name>data</name></param>
+ <alias name="glCompressedTexImage3D"/>
</command>
<command>
<proto>void <name>glCompressedTexSubImage1D</name></proto>
@@ -9959,7 +10057,8 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLsizei</ptype> <name>imageSize</name></param>
- <param>const void *<name>data</name></param>
+ <param len="imageSize">const void *<name>data</name></param>
+ <alias name="glCompressedTexSubImage3D"/>
</command>
<command>
<proto>void <name>glCompressedTextureImage1DEXT</name></proto>
@@ -10489,6 +10588,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>y</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
+ <alias name="glCopyTexSubImage3D"/>
</command>
<command>
<proto>void <name>glCopyTextureImage1DEXT</name></proto>
@@ -10594,6 +10694,11 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>operation</name></param>
</command>
<command>
+ <proto>void <name>glCreatePerfQueryINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryId</name></param>
+ <param><ptype>GLuint</ptype> *<name>queryHandle</name></param>
+ </command>
+ <command>
<proto><ptype>GLuint</ptype> <name>glCreateProgram</name></proto>
</command>
<command>
@@ -10624,7 +10729,7 @@ typedef unsigned int GLhandleARB;
<proto><ptype>GLuint</ptype> <name>glCreateShaderProgramvEXT</name></proto>
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLchar</ptype> **<name>strings</name></param>
+ <param len="count">const <ptype>GLchar</ptype> **<name>strings</name></param>
</command>
<command>
<proto group="sync"><ptype>GLsync</ptype> <name>glCreateSyncFromCLeventARB</name></proto>
@@ -10840,7 +10945,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteFramebuffersOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>framebuffers</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>framebuffers</name></param>
</command>
<command>
<proto>void <name>glDeleteLists</name></proto>
@@ -10879,6 +10984,10 @@ typedef unsigned int GLhandleARB;
<param len="n"><ptype>GLuint</ptype> *<name>monitors</name></param>
</command>
<command>
+ <proto>void <name>glDeletePerfQueryINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryHandle</name></param>
+ </command>
+ <command>
<proto>void <name>glDeleteProgram</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<glx type="single" opcode="202"/>
@@ -10891,7 +11000,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteProgramPipelinesEXT</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>pipelines</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>pipelines</name></param>
</command>
<command>
<proto>void <name>glDeleteProgramsARB</name></proto>
@@ -10921,7 +11030,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteQueriesEXT</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>ids</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
<proto>void <name>glDeleteRenderbuffers</name></proto>
@@ -10939,7 +11048,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteRenderbuffersOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>renderbuffers</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>renderbuffers</name></param>
</command>
<command>
<proto>void <name>glDeleteSamplers</name></proto>
@@ -10958,6 +11067,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteSyncAPPLE</name></proto>
<param><ptype>GLsync</ptype> <name>sync</name></param>
+ <alias name="glDeleteSync"/>
</command>
<command>
<proto>void <name>glDeleteTextures</name></proto>
@@ -10997,7 +11107,8 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDeleteVertexArraysOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLuint</ptype> *<name>arrays</name></param>
+ <param len="n">const <ptype>GLuint</ptype> *<name>arrays</name></param>
+ <alias name="glDeleteVertexArrays"/>
</command>
<command>
<proto>void <name>glDeleteVertexShaderEXT</name></proto>
@@ -11155,7 +11266,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glDiscardFramebufferEXT</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLsizei</ptype> <name>numAttachments</name></param>
- <param>const <ptype>GLenum</ptype> *<name>attachments</name></param>
+ <param len="numAttachments">const <ptype>GLenum</ptype> *<name>attachments</name></param>
</command>
<command>
<proto>void <name>glDispatchCompute</name></proto>
@@ -11209,6 +11320,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
+ <alias name="glDrawArraysInstanced"/>
</command>
<command>
<proto>void <name>glDrawArraysInstancedARB</name></proto>
@@ -11240,6 +11352,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>first</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
+ <alias name="glDrawArraysInstanced"/>
</command>
<command>
<proto>void <name>glDrawBuffer</name></proto>
@@ -11274,13 +11387,13 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glDrawBuffersIndexedEXT</name></proto>
<param><ptype>GLint</ptype> <name>n</name></param>
- <param>const <ptype>GLenum</ptype> *<name>location</name></param>
- <param>const <ptype>GLint</ptype> *<name>indices</name></param>
+ <param len="n">const <ptype>GLenum</ptype> *<name>location</name></param>
+ <param len="n">const <ptype>GLint</ptype> *<name>indices</name></param>
</command>
<command>
<proto>void <name>glDrawBuffersNV</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param>const <ptype>GLenum</ptype> *<name>bufs</name></param>
+ <param len="n">const <ptype>GLenum</ptype> *<name>bufs</name></param>
</command>
<command>
<proto>void <name>glDrawElementArrayAPPLE</name></proto>
@@ -11327,8 +11440,9 @@ typedef unsigned int GLhandleARB;
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>indices</name></param>
+ <param len="COMPSIZE(count,type)">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
+ <alias name="glDrawElementsInstanced"/>
</command>
<command>
<proto>void <name>glDrawElementsInstancedARB</name></proto>
@@ -11381,8 +11495,9 @@ typedef unsigned int GLhandleARB;
<param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>indices</name></param>
+ <param len="COMPSIZE(count,type)">const void *<name>indices</name></param>
<param><ptype>GLsizei</ptype> <name>primcount</name></param>
+ <alias name="glDrawElementsInstanced"/>
</command>
<command>
<proto>void <name>glDrawMeshArraysSUN</name></proto>
@@ -11575,7 +11690,7 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glEdgeFlagv</name></proto>
- <param group="Boolean">const <ptype>GLboolean</ptype> *<name>flag</name></param>
+ <param group="Boolean" len="1">const <ptype>GLboolean</ptype> *<name>flag</name></param>
<glx type="render" opcode="22"/>
</command>
<command>
@@ -11681,6 +11796,10 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>monitor</name></param>
</command>
<command>
+ <proto>void <name>glEndPerfQueryINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryHandle</name></param>
+ </command>
+ <command>
<proto>void <name>glEndQuery</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<glx type="render" opcode="232"/>
@@ -11826,15 +11945,15 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glExtGetBuffersQCOM</name></proto>
- <param><ptype>GLuint</ptype> *<name>buffers</name></param>
+ <param len="maxBuffers"><ptype>GLuint</ptype> *<name>buffers</name></param>
<param><ptype>GLint</ptype> <name>maxBuffers</name></param>
- <param><ptype>GLint</ptype> *<name>numBuffers</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>numBuffers</name></param>
</command>
<command>
<proto>void <name>glExtGetFramebuffersQCOM</name></proto>
- <param><ptype>GLuint</ptype> *<name>framebuffers</name></param>
+ <param len="maxFramebuffers"><ptype>GLuint</ptype> *<name>framebuffers</name></param>
<param><ptype>GLint</ptype> <name>maxFramebuffers</name></param>
- <param><ptype>GLint</ptype> *<name>numFramebuffers</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>numFramebuffers</name></param>
</command>
<command>
<proto>void <name>glExtGetProgramBinarySourceQCOM</name></proto>
@@ -11845,21 +11964,21 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glExtGetProgramsQCOM</name></proto>
- <param><ptype>GLuint</ptype> *<name>programs</name></param>
+ <param len="maxPrograms"><ptype>GLuint</ptype> *<name>programs</name></param>
<param><ptype>GLint</ptype> <name>maxPrograms</name></param>
- <param><ptype>GLint</ptype> *<name>numPrograms</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>numPrograms</name></param>
</command>
<command>
<proto>void <name>glExtGetRenderbuffersQCOM</name></proto>
- <param><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
+ <param len="maxRenderbuffers"><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
<param><ptype>GLint</ptype> <name>maxRenderbuffers</name></param>
- <param><ptype>GLint</ptype> *<name>numRenderbuffers</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>numRenderbuffers</name></param>
</command>
<command>
<proto>void <name>glExtGetShadersQCOM</name></proto>
- <param><ptype>GLuint</ptype> *<name>shaders</name></param>
+ <param len="maxShaders"><ptype>GLuint</ptype> *<name>shaders</name></param>
<param><ptype>GLint</ptype> <name>maxShaders</name></param>
- <param><ptype>GLint</ptype> *<name>numShaders</name></param>
+ <param len="1"><ptype>GLint</ptype> *<name>numShaders</name></param>
</command>
<command>
<proto>void <name>glExtGetTexLevelParameterivQCOM</name></proto>
@@ -11927,6 +12046,7 @@ typedef unsigned int GLhandleARB;
<proto><ptype>GLsync</ptype> <name>glFenceSyncAPPLE</name></proto>
<param><ptype>GLenum</ptype> <name>condition</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
+ <alias name="glFenceSync"/>
</command>
<command>
<proto>void <name>glFinalCombinerInputNV</name></proto>
@@ -11983,6 +12103,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param><ptype>GLsizeiptr</ptype> <name>length</name></param>
+ <alias name="glFlushMappedBufferRange"/>
</command>
<command>
<proto>void <name>glFlushMappedNamedBufferRangeEXT</name></proto>
@@ -12132,7 +12253,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glFogxv</name></proto>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>param</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glFogxvOES</name></proto>
@@ -12366,6 +12487,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>texture</name></param>
<param><ptype>GLint</ptype> <name>level</name></param>
<param><ptype>GLint</ptype> <name>zoffset</name></param>
+ <alias name="glFramebufferTexture3D"/>
</command>
<command>
<proto>void <name>glFramebufferTextureARB</name></proto>
@@ -12529,7 +12651,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGenFramebuffersOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>framebuffers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>framebuffers</name></param>
</command>
<command>
<proto group="List"><ptype>GLuint</ptype> <name>glGenLists</name></proto>
@@ -12564,7 +12686,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGenProgramPipelinesEXT</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>pipelines</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>pipelines</name></param>
</command>
<command>
<proto>void <name>glGenProgramsARB</name></proto>
@@ -12594,7 +12716,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGenQueriesEXT</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>ids</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>ids</name></param>
</command>
<command>
<proto>void <name>glGenRenderbuffers</name></proto>
@@ -12612,7 +12734,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGenRenderbuffersOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>renderbuffers</name></param>
</command>
<command>
<proto>void <name>glGenSamplers</name></proto>
@@ -12664,7 +12786,8 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGenVertexArraysOES</name></proto>
<param><ptype>GLsizei</ptype> <name>n</name></param>
- <param><ptype>GLuint</ptype> *<name>arrays</name></param>
+ <param len="n"><ptype>GLuint</ptype> *<name>arrays</name></param>
+ <alias name="glGenVertexArrays"/>
</command>
<command>
<proto><ptype>GLuint</ptype> <name>glGenVertexShadersEXT</name></proto>
@@ -12823,20 +12946,19 @@ typedef unsigned int GLhandleARB;
<param group="ArrayObjectPNameATI"><ptype>GLenum</ptype> <name>pname</name></param>
<param len="1"><ptype>GLint</ptype> *<name>params</name></param>
</command>
- <command>
+ <command comment="Could be an alias of glGetAttachedShaders except that GLhandleARB is different on MacOS X">
<proto>void <name>glGetAttachedObjectsARB</name></proto>
<param group="handleARB"><ptype>GLhandleARB</ptype> <name>containerObj</name></param>
<param><ptype>GLsizei</ptype> <name>maxCount</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>count</name></param>
- <param group="handleARB" len="count"><ptype>GLhandleARB</ptype> *<name>obj</name></param>
- <alias name="glGetAttachedShaders"/>
+ <param group="handleARB" len="maxCount"><ptype>GLhandleARB</ptype> *<name>obj</name></param>
</command>
<command>
<proto>void <name>glGetAttachedShaders</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLsizei</ptype> <name>maxCount</name></param>
<param len="1"><ptype>GLsizei</ptype> *<name>count</name></param>
- <param><ptype>GLuint</ptype> *<name>shaders</name></param>
+ <param len="maxCount"><ptype>GLuint</ptype> *<name>shaders</name></param>
</command>
<command>
<proto><ptype>GLint</ptype> <name>glGetAttribLocation</name></proto>
@@ -12911,6 +13033,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param>void **<name>params</name></param>
+ <alias name="glGetBufferPointerv"/>
</command>
<command>
<proto>void <name>glGetBufferSubData</name></proto>
@@ -12936,7 +13059,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGetClipPlanef</name></proto>
<param><ptype>GLenum</ptype> <name>plane</name></param>
- <param><ptype>GLfloat</ptype> *<name>equation</name></param>
+ <param len="4"><ptype>GLfloat</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glGetClipPlanefOES</name></proto>
@@ -12947,7 +13070,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGetClipPlanex</name></proto>
<param><ptype>GLenum</ptype> <name>plane</name></param>
- <param><ptype>GLfixed</ptype> *<name>equation</name></param>
+ <param len="4"><ptype>GLfixed</ptype> *<name>equation</name></param>
</command>
<command>
<proto>void <name>glGetClipPlanexOES</name></proto>
@@ -13258,6 +13381,10 @@ typedef unsigned int GLhandleARB;
<glx type="vendor" opcode="1275"/>
</command>
<command>
+ <proto>void <name>glGetFirstPerfQueryIdINTEL</name></proto>
+ <param><ptype>GLuint</ptype> *<name>queryId</name></param>
+ </command>
+ <command>
<proto>void <name>glGetFixedv</name></proto>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLfixed</ptype> *<name>params</name></param>
@@ -13359,7 +13486,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>attachment</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetFramebufferParameteriv</name></proto>
@@ -13490,6 +13617,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetInteger64vAPPLE</name></proto>
<param><ptype>GLenum</ptype> <name>pname</name></param>
<param><ptype>GLint64</ptype> *<name>params</name></param>
+ <alias name="glGetInteger64v"/>
</command>
<command>
<proto>void <name>glGetIntegerIndexedvEXT</name></proto>
@@ -13585,13 +13713,13 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetLightxv</name></proto>
<param><ptype>GLenum</ptype> <name>light</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetLightxvOES</name></proto>
<param><ptype>GLenum</ptype> <name>light</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetListParameterfvSGIX</name></proto>
@@ -13710,13 +13838,13 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetMaterialxv</name></proto>
<param><ptype>GLenum</ptype> <name>face</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetMaterialxvOES</name></proto>
<param><ptype>GLenum</ptype> <name>face</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetMinmax</name></proto>
@@ -13968,6 +14096,11 @@ typedef unsigned int GLhandleARB;
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
+ <proto>void <name>glGetNextPerfQueryIdINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryId</name></param>
+ <param><ptype>GLuint</ptype> *<name>nextQueryId</name></param>
+ </command>
+ <command>
<proto>void <name>glGetObjectBufferfvATI</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param group="ArrayObjectPNameATI"><ptype>GLenum</ptype> <name>pname</name></param>
@@ -13984,7 +14117,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>identifier</name></param>
<param><ptype>GLuint</ptype> <name>name</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param>
</command>
<command>
@@ -13992,7 +14125,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLuint</ptype> <name>object</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param>
</command>
<command>
@@ -14027,14 +14160,14 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetObjectPtrLabel</name></proto>
<param>const void *<name>ptr</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param>
</command>
<command>
<proto>void <name>glGetObjectPtrLabelKHR</name></proto>
<param>const void *<name>ptr</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param>
<alias name="glGetObjectPtrLabel"/>
</command>
@@ -14138,6 +14271,20 @@ typedef unsigned int GLhandleARB;
<param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>value</name></param>
</command>
<command>
+ <proto>void <name>glGetPerfCounterInfoINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryId</name></param>
+ <param><ptype>GLuint</ptype> <name>counterId</name></param>
+ <param><ptype>GLuint</ptype> <name>counterNameLength</name></param>
+ <param><ptype>GLchar</ptype> *<name>counterName</name></param>
+ <param><ptype>GLuint</ptype> <name>counterDescLength</name></param>
+ <param><ptype>GLchar</ptype> *<name>counterDesc</name></param>
+ <param><ptype>GLuint</ptype> *<name>counterOffset</name></param>
+ <param><ptype>GLuint</ptype> *<name>counterDataSize</name></param>
+ <param><ptype>GLuint</ptype> *<name>counterTypeEnum</name></param>
+ <param><ptype>GLuint</ptype> *<name>counterDataTypeEnum</name></param>
+ <param><ptype>GLuint64</ptype> *<name>rawCounterMaxValue</name></param>
+ </command>
+ <command>
<proto>void <name>glGetPerfMonitorCounterDataAMD</name></proto>
<param><ptype>GLuint</ptype> <name>monitor</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
@@ -14182,6 +14329,29 @@ typedef unsigned int GLhandleARB;
<param len="groupsSize"><ptype>GLuint</ptype> *<name>groups</name></param>
</command>
<command>
+ <proto>void <name>glGetPerfQueryDataINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryHandle</name></param>
+ <param><ptype>GLuint</ptype> <name>flags</name></param>
+ <param><ptype>GLsizei</ptype> <name>dataSize</name></param>
+ <param><ptype>GLvoid</ptype> *<name>data</name></param>
+ <param><ptype>GLuint</ptype> *<name>bytesWritten</name></param>
+ </command>
+ <command>
+ <proto>void <name>glGetPerfQueryIdByNameINTEL</name></proto>
+ <param><ptype>GLchar</ptype> *<name>queryName</name></param>
+ <param><ptype>GLuint</ptype> *<name>queryId</name></param>
+ </command>
+ <command>
+ <proto>void <name>glGetPerfQueryInfoINTEL</name></proto>
+ <param><ptype>GLuint</ptype> <name>queryId</name></param>
+ <param><ptype>GLuint</ptype> <name>queryNameLength</name></param>
+ <param><ptype>GLchar</ptype> *<name>queryName</name></param>
+ <param><ptype>GLuint</ptype> *<name>dataSize</name></param>
+ <param><ptype>GLuint</ptype> *<name>noCounters</name></param>
+ <param><ptype>GLuint</ptype> *<name>noInstances</name></param>
+ <param><ptype>GLuint</ptype> *<name>capsMask</name></param>
+ </command>
+ <command>
<proto>void <name>glGetPixelMapfv</name></proto>
<param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param>
<param len="COMPSIZE(map)"><ptype>GLfloat</ptype> *<name>values</name></param>
@@ -14247,7 +14417,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glGetPointerv</name></proto>
<param group="GetPointervPName"><ptype>GLenum</ptype> <name>pname</name></param>
- <param>void **<name>params</name></param>
+ <param len="1">void **<name>params</name></param>
<glx type="single" opcode="208"/>
</command>
<command>
@@ -14280,9 +14450,10 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetProgramBinaryOES</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
- <param><ptype>GLenum</ptype> *<name>binaryFormat</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLenum</ptype> *<name>binaryFormat</name></param>
<param len="bufSize">void *<name>binary</name></param>
+ <alias name="glGetProgramBinary"/>
</command>
<command>
<proto>void <name>glGetProgramEnvParameterIivNV</name></proto>
@@ -14390,7 +14561,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetProgramPipelineInfoLogEXT</name></proto>
<param><ptype>GLuint</ptype> <name>pipeline</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>infoLog</name></param>
</command>
<command>
@@ -14429,7 +14600,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>programInterface</name></param>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param>
</command>
<command>
@@ -14440,7 +14611,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>propCount</name></param>
<param len="propCount">const <ptype>GLenum</ptype> *<name>props</name></param>
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
@@ -14604,7 +14775,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetRenderbufferParameterivOES</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetSamplerParameterIiv</name></proto>
@@ -14731,6 +14902,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>bufSize</name></param>
<param><ptype>GLsizei</ptype> *<name>length</name></param>
<param len="bufSize"><ptype>GLint</ptype> *<name>values</name></param>
+ <alias name="glGetSynciv"/>
</command>
<command>
<proto>void <name>glGetTexBumpParameterfvATI</name></proto>
@@ -14760,7 +14932,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetTexEnvxv</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexEnvxvOES</name></proto>
@@ -14793,7 +14965,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetTexGenfvOES</name></proto>
<param><ptype>GLenum</ptype> <name>coord</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexGeniv</name></proto>
@@ -14806,7 +14978,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetTexGenivOES</name></proto>
<param><ptype>GLenum</ptype> <name>coord</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLint</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexGenxvOES</name></proto>
@@ -14899,7 +15071,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetTexParameterxv</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param><ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glGetTexParameterxvOES</name></proto>
@@ -15017,7 +15189,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetTranslatedShaderSourceANGLE</name></proto>
<param><ptype>GLuint</ptype> <name>shader</name></param>
<param><ptype>GLsizei</ptype> <name>bufsize</name></param>
- <param><ptype>GLsizei</ptype> *<name>length</name></param>
+ <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param>
<param><ptype>GLchar</ptype> *<name>source</name></param>
</command>
<command>
@@ -15181,7 +15353,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glGetVertexArrayPointervEXT</name></proto>
<param><ptype>GLuint</ptype> <name>vaobj</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>void **<name>param</name></param>
+ <param len="1">void **<name>param</name></param>
</command>
<command>
<proto>void <name>glGetVertexAttribArrayObjectfvATI</name></proto>
@@ -15988,6 +16160,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto><ptype>GLboolean</ptype> <name>glIsSyncAPPLE</name></proto>
<param><ptype>GLsync</ptype> <name>sync</name></param>
+ <alias name="glIsSync"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsTexture</name></proto>
@@ -16034,6 +16207,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto><ptype>GLboolean</ptype> <name>glIsVertexArrayOES</name></proto>
<param><ptype>GLuint</ptype> <name>array</name></param>
+ <alias name="glIsVertexArray"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsVertexAttribEnabledAPPLE</name></proto>
@@ -16089,7 +16263,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glLightModelxv</name></proto>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>param</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glLightModelxvOES</name></proto>
@@ -16140,7 +16314,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glLightxv</name></proto>
<param><ptype>GLenum</ptype> <name>light</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glLightxvOES</name></proto>
@@ -16230,7 +16404,7 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glLoadMatrixx</name></proto>
- <param>const <ptype>GLfixed</ptype> *<name>m</name></param>
+ <param len="16">const <ptype>GLfixed</ptype> *<name>m</name></param>
</command>
<command>
<proto>void <name>glLoadMatrixxOES</name></proto>
@@ -16421,6 +16595,7 @@ typedef unsigned int GLhandleARB;
<proto>void *<name>glMapBufferOES</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>access</name></param>
+ <alias name="glMapBuffer"/>
</command>
<command>
<proto>void *<name>glMapBufferRange</name></proto>
@@ -16436,6 +16611,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLintptr</ptype> <name>offset</name></param>
<param><ptype>GLsizeiptr</ptype> <name>length</name></param>
<param><ptype>GLbitfield</ptype> <name>access</name></param>
+ <alias name="glMapBufferRange"/>
</command>
<command>
<proto>void <name>glMapControlPointsNV</name></proto>
@@ -16625,7 +16801,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glMaterialxv</name></proto>
<param><ptype>GLenum</ptype> <name>face</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>param</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param>
</command>
<command>
<proto>void <name>glMaterialxvOES</name></proto>
@@ -16648,14 +16824,14 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>size</name></param>
<param group="MatrixIndexPointerTypeARB"><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
- <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param>
+ <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
</command>
<command>
<proto>void <name>glMatrixIndexPointerOES</name></proto>
<param><ptype>GLint</ptype> <name>size</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
- <param>const void *<name>pointer</name></param>
+ <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param>
</command>
<command>
<proto>void <name>glMatrixIndexubvARB</name></proto>
@@ -16831,7 +17007,7 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glMultMatrixx</name></proto>
- <param>const <ptype>GLfixed</ptype> *<name>m</name></param>
+ <param len="16">const <ptype>GLfixed</ptype> *<name>m</name></param>
</command>
<command>
<proto>void <name>glMultMatrixxOES</name></proto>
@@ -16898,15 +17074,6 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>vertexBufferCount</name></param>
</command>
<command>
- <proto>void <name>glMultiDrawElementsIndirectBindlessNV</name></proto>
- <param><ptype>GLenum</ptype> <name>mode</name></param>
- <param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>indirect</name></param>
- <param><ptype>GLsizei</ptype> <name>drawCount</name></param>
- <param><ptype>GLsizei</ptype> <name>stride</name></param>
- <param><ptype>GLint</ptype> <name>vertexBufferCount</name></param>
- </command>
- <command>
<proto>void <name>glMultiDrawArraysIndirectCountARB</name></proto>
<param><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLintptr</ptype> <name>indirect</name></param>
@@ -16965,6 +17132,15 @@ typedef unsigned int GLhandleARB;
<alias name="glMultiDrawElementsIndirect"/>
</command>
<command>
+ <proto>void <name>glMultiDrawElementsIndirectBindlessNV</name></proto>
+ <param><ptype>GLenum</ptype> <name>mode</name></param>
+ <param><ptype>GLenum</ptype> <name>type</name></param>
+ <param>const void *<name>indirect</name></param>
+ <param><ptype>GLsizei</ptype> <name>drawCount</name></param>
+ <param><ptype>GLsizei</ptype> <name>stride</name></param>
+ <param><ptype>GLint</ptype> <name>vertexBufferCount</name></param>
+ </command>
+ <command>
<proto>void <name>glMultiDrawElementsIndirectCountARB</name></proto>
<param><ptype>GLenum</ptype> <name>mode</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
@@ -17894,7 +18070,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glNamedBufferStorageEXT</name></proto>
<param><ptype>GLuint</ptype> <name>buffer</name></param>
<param><ptype>GLsizeiptr</ptype> <name>size</name></param>
- <param>const void *<name>data</name></param>
+ <param len="size">const void *<name>data</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
</command>
<command>
@@ -18814,7 +18990,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto>void <name>glPointParameterxv</name></proto>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glPointParameterxvOES</name></proto>
@@ -18830,7 +19006,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glPointSizePointerOES</name></proto>
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
- <param>const void *<name>pointer</name></param>
+ <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param>
</command>
<command>
<proto>void <name>glPointSizex</name></proto>
@@ -18981,8 +19157,9 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glProgramBinaryOES</name></proto>
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLenum</ptype> <name>binaryFormat</name></param>
- <param>const void *<name>binary</name></param>
+ <param len="length">const void *<name>binary</name></param>
<param><ptype>GLint</ptype> <name>length</name></param>
+ <alias name="glProgramBinary"/>
</command>
<command>
<proto>void <name>glProgramBufferParametersIivNV</name></proto>
@@ -19514,7 +19691,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*2)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2iEXT</name></proto>
@@ -19558,7 +19735,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*2)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform2uiEXT</name></proto>
@@ -19666,7 +19843,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*3)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3iEXT</name></proto>
@@ -19713,7 +19890,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*3)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform3uiEXT</name></proto>
@@ -19828,7 +20005,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*4)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4iEXT</name></proto>
@@ -19878,7 +20055,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*4)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glProgramUniform4uiEXT</name></proto>
@@ -19922,7 +20099,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLuint</ptype> <name>program</name></param>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint64</ptype> *<name>values</name></param>
+ <param len="count">const <ptype>GLuint64</ptype> *<name>values</name></param>
</command>
<command>
<proto>void <name>glProgramUniformHandleui64vNV</name></proto>
@@ -20314,6 +20491,13 @@ typedef unsigned int GLhandleARB;
<param len="16"><ptype>GLint</ptype> *<name>exponent</name></param>
</command>
<command>
+ <proto>void <name>glQueryObjectParameteruiAMD</name></proto>
+ <param><ptype>GLenum</ptype> <name>target</name></param>
+ <param><ptype>GLuint</ptype> <name>id</name></param>
+ <param><ptype>GLenum</ptype> <name>pname</name></param>
+ <param group="OcclusionQueryEventMaskAMD"><ptype>GLuint</ptype> <name>param</name></param>
+ </command>
+ <command>
<proto>void <name>glRasterPos2d</name></proto>
<param group="CoordD"><ptype>GLdouble</ptype> <name>x</name></param>
<param group="CoordD"><ptype>GLdouble</ptype> <name>y</name></param>
@@ -20697,6 +20881,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
+ <alias name="glRenderbufferStorageMultisample"/>
</command>
<command>
<proto>void <name>glRenderbufferStorageOES</name></proto>
@@ -20998,7 +21183,7 @@ typedef unsigned int GLhandleARB;
</command>
<command>
<proto>void <name>glSampleMaski</name></proto>
- <param><ptype>GLuint</ptype> <name>index</name></param>
+ <param><ptype>GLuint</ptype> <name>maskNumber</name></param>
<param><ptype>GLbitfield</ptype> <name>mask</name></param>
</command>
<command>
@@ -22332,7 +22517,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glTexEnvxv</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexEnvxvOES</name></proto>
@@ -22386,7 +22571,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glTexGenfvOES</name></proto>
<param><ptype>GLenum</ptype> <name>coord</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfloat</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexGeni</name></proto>
@@ -22412,7 +22597,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glTexGenivOES</name></proto>
<param><ptype>GLenum</ptype> <name>coord</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLint</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexGenxOES</name></proto>
@@ -22534,7 +22719,8 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>border</name></param>
<param><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>pixels</name></param>
+ <param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param>
+ <alias name="glTexImage3D"/>
</command>
<command>
<proto>void <name>glTexImage4DSGIS</name></proto>
@@ -22635,7 +22821,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glTexParameterxv</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
<param><ptype>GLenum</ptype> <name>pname</name></param>
- <param>const <ptype>GLfixed</ptype> *<name>params</name></param>
+ <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param>
</command>
<command>
<proto>void <name>glTexParameterxvOES</name></proto>
@@ -22661,6 +22847,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>levels</name></param>
<param><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
+ <alias name="glTexStorage1D"/>
</command>
<command>
<proto>void <name>glTexStorage2D</name></proto>
@@ -22677,6 +22864,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLenum</ptype> <name>internalformat</name></param>
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
+ <alias name="glTexStorage2D"/>
</command>
<command>
<proto>void <name>glTexStorage2DMultisample</name></proto>
@@ -22704,6 +22892,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>width</name></param>
<param><ptype>GLsizei</ptype> <name>height</name></param>
<param><ptype>GLsizei</ptype> <name>depth</name></param>
+ <alias name="glTexStorage3D"/>
</command>
<command>
<proto>void <name>glTexStorage3DMultisample</name></proto>
@@ -22821,7 +23010,8 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>depth</name></param>
<param><ptype>GLenum</ptype> <name>format</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
- <param>const void *<name>pixels</name></param>
+ <param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param>
+ <alias name="glTexSubImage3D"/>
</command>
<command>
<proto>void <name>glTexSubImage4DSGIS</name></proto>
@@ -23377,7 +23567,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform2i64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*2)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform2iARB</name></proto>
@@ -23415,7 +23605,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform2ui64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*2)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*2">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform2uiEXT</name></proto>
@@ -23496,7 +23686,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform3i64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*3)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform3iARB</name></proto>
@@ -23537,7 +23727,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform3ui64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*3)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*3">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform3uiEXT</name></proto>
@@ -23624,7 +23814,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform4i64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*4)">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform4iARB</name></proto>
@@ -23668,7 +23858,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniform4ui64vNV</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param len="COMPSIZE(count*4)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
+ <param len="count*4">const <ptype>GLuint64EXT</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniform4uiEXT</name></proto>
@@ -23718,7 +23908,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glUniformHandleui64vARB</name></proto>
<param><ptype>GLint</ptype> <name>location</name></param>
<param><ptype>GLsizei</ptype> <name>count</name></param>
- <param>const <ptype>GLuint64</ptype> *<name>value</name></param>
+ <param len="count">const <ptype>GLuint64</ptype> *<name>value</name></param>
</command>
<command>
<proto>void <name>glUniformHandleui64vNV</name></proto>
@@ -23837,7 +24027,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsizei</ptype> <name>count</name></param>
<param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param>
<param len="6">const <ptype>GLfloat</ptype> *<name>value</name></param>
- <alias name="glUniformMatrix3x2"/>
+ <alias name="glUniformMatrix3x2fv"/>
</command>
<command>
<proto>void <name>glUniformMatrix3x4dv</name></proto>
@@ -23962,6 +24152,7 @@ typedef unsigned int GLhandleARB;
<command>
<proto><ptype>GLboolean</ptype> <name>glUnmapBufferOES</name></proto>
<param><ptype>GLenum</ptype> <name>target</name></param>
+ <alias name="glUnmapBuffer"/>
</command>
<command>
<proto group="Boolean"><ptype>GLboolean</ptype> <name>glUnmapNamedBufferEXT</name></proto>
@@ -24027,7 +24218,7 @@ typedef unsigned int GLhandleARB;
<param>const void *<name>getProcAddress</name></param>
</command>
<command>
- <proto>void <name>glVDPAUIsSurfaceNV</name></proto>
+ <proto><ptype>GLboolean</ptype> <name>glVDPAUIsSurfaceNV</name></proto>
<param group="vdpauSurfaceNV"><ptype>GLvdpauSurfaceNV</ptype> <name>surface</name></param>
</command>
<command>
@@ -25312,6 +25503,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glVertexAttribDivisorANGLE</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>divisor</name></param>
+ <alias name="glVertexAttribDivisor"/>
</command>
<command>
<proto>void <name>glVertexAttribDivisorARB</name></proto>
@@ -25329,6 +25521,7 @@ typedef unsigned int GLhandleARB;
<proto>void <name>glVertexAttribDivisorNV</name></proto>
<param><ptype>GLuint</ptype> <name>index</name></param>
<param><ptype>GLuint</ptype> <name>divisor</name></param>
+ <alias name="glVertexAttribDivisor"/>
</command>
<command>
<proto>void <name>glVertexAttribFormat</name></proto>
@@ -26439,6 +26632,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLsync</ptype> <name>sync</name></param>
<param><ptype>GLbitfield</ptype> <name>flags</name></param>
<param><ptype>GLuint64</ptype> <name>timeout</name></param>
+ <alias name="glWaitSync"/>
</command>
<command>
<proto>void <name>glWeightPathsNV</name></proto>
@@ -26459,7 +26653,7 @@ typedef unsigned int GLhandleARB;
<param><ptype>GLint</ptype> <name>size</name></param>
<param><ptype>GLenum</ptype> <name>type</name></param>
<param><ptype>GLsizei</ptype> <name>stride</name></param>
- <param>const void *<name>pointer</name></param>
+ <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param>
</command>
<command>
<proto>void <name>glWeightbvARB</name></proto>
@@ -30173,6 +30367,12 @@ typedef unsigned int GLhandleARB;
</require>
<require comment="Reuse tokens from ARB_shading_language_packing (none)">
</require>
+ <require comment="Reuse tokens from ARB_texture_compression_bptc">
+ <enum name="GL_COMPRESSED_RGBA_BPTC_UNORM"/>
+ <enum name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/>
+ <enum name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/>
+ </require>
<require comment="Reuse tokens from ARB_texture_storage">
<enum name="GL_TEXTURE_IMMUTABLE_FORMAT"/>
</require>
@@ -32158,6 +32358,17 @@ typedef unsigned int GLhandleARB;
<command name="glIsNameAMD"/>
</require>
</extension>
+ <extension name="GL_AMD_occlusion_query_event" supported="gl">
+ <require>
+ <enum name="GL_OCCLUSION_QUERY_EVENT_MASK_AMD"/>
+ <enum name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/>
+ <enum name="GL_QUERY_ALL_EVENT_BITS_AMD"/>
+ <command name="glQueryObjectParameteruiAMD"/>
+ </require>
+ </extension>
<extension name="GL_AMD_performance_monitor" supported="gl|gles2">
<require>
<enum name="GL_COUNTER_TYPE_AMD"/>
@@ -36779,7 +36990,7 @@ typedef unsigned int GLhandleARB;
<command name="glUseProgramStagesEXT"/>
<command name="glValidateProgramPipelineEXT"/>
</require>
- <require api="gles2" comment="Depends on OpenGL ES 3.0">
+ <require api="gles2" comment="Depends on OpenGL ES 3.0 or GL_NV_non_square_matrices">
<command name="glProgramUniform1uiEXT"/>
<command name="glProgramUniform2uiEXT"/>
<command name="glProgramUniform3uiEXT"/>
@@ -37840,6 +38051,40 @@ typedef unsigned int GLhandleARB;
<command name="glTexCoordPointervINTEL"/>
</require>
</extension>
+ <extension name="GL_INTEL_performance_query" supported="gl|gles2">
+ <require>
+ <enum name="GL_PERFQUERY_SINGLE_CONTEXT_INTEL"/>
+ <enum name="GL_PERFQUERY_GLOBAL_CONTEXT_INTEL"/>
+ <enum name="GL_PERFQUERY_WAIT_INTEL"/>
+ <enum name="GL_PERFQUERY_FLUSH_INTEL"/>
+ <enum name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_EVENT_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_RAW_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL"/>
+ <enum name="GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL"/>
+ <enum name="GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL"/>
+ <enum name="GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL"/>
+ <command name="glBeginPerfQueryINTEL"/>
+ <command name="glCreatePerfQueryINTEL"/>
+ <command name="glDeletePerfQueryINTEL"/>
+ <command name="glEndPerfQueryINTEL"/>
+ <command name="glGetFirstPerfQueryIdINTEL"/>
+ <command name="glGetNextPerfQueryIdINTEL"/>
+ <command name="glGetPerfCounterInfoINTEL"/>
+ <command name="glGetPerfQueryDataINTEL"/>
+ <command name="glGetPerfQueryIdByNameINTEL"/>
+ <command name="glGetPerfQueryInfoINTEL"/>
+ </require>
+ </extension>
<extension name="GL_KHR_debug" supported="gl|glcore|gles2">
<require api="gl" comment="KHR extensions *mandate* suffixes for ES, unlike for GL">
<enum name="GL_DEBUG_OUTPUT_SYNCHRONOUS"/>
@@ -38077,6 +38322,15 @@ typedef unsigned int GLhandleARB;
<command name="glEndConditionalRenderNVX"/>
</require>
</extension>
+ <extension name="GL_NVX_gpu_memory_info" supported="gl">
+ <require>
+ <enum name="GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX"/>
+ <enum name="GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX"/>
+ <enum name="GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX"/>
+ <enum name="GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX"/>
+ <enum name="GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX"/>
+ </require>
+ </extension>
<extension name="GL_NV_bindless_multi_draw_indirect" supported="gl">
<require>
<command name="glMultiDrawArraysIndirectBindlessNV"/>
@@ -38101,21 +38355,10 @@ typedef unsigned int GLhandleARB;
</require>
</extension>
<extension name="GL_NV_blend_equation_advanced" supported="gl|gles2">
- <require api="gles2" comment="Really only required for ES 2.0, not ES 3.0">
- <enum name="GL_BLUE_NV"/>
- <enum name="GL_GREEN_NV"/>
- <enum name="GL_RED_NV"/>
- <enum name="GL_XOR_NV"/>
- </require>
- <require api="gl" comment="GL has these enums in core">
- <enum name="GL_BLUE"/>
- <enum name="GL_GREEN"/>
- <enum name="GL_RED"/>
- <enum name="GL_XOR"/>
- </require>
<require>
<enum name="GL_BLEND_OVERLAP_NV"/>
<enum name="GL_BLEND_PREMULTIPLIED_SRC_NV"/>
+ <enum name="GL_BLUE_NV"/>
<enum name="GL_COLORBURN_NV"/>
<enum name="GL_COLORDODGE_NV"/>
<enum name="GL_CONJOINT_NV"/>
@@ -38129,6 +38372,7 @@ typedef unsigned int GLhandleARB;
<enum name="GL_DST_OUT_NV"/>
<enum name="GL_DST_OVER_NV"/>
<enum name="GL_EXCLUSION_NV"/>
+ <enum name="GL_GREEN_NV"/>
<enum name="GL_HARDLIGHT_NV"/>
<enum name="GL_HARDMIX_NV"/>
<enum name="GL_HSL_COLOR_NV"/>
@@ -38151,6 +38395,7 @@ typedef unsigned int GLhandleARB;
<enum name="GL_PLUS_CLAMPED_NV"/>
<enum name="GL_PLUS_DARKER_NV"/>
<enum name="GL_PLUS_NV"/>
+ <enum name="GL_RED_NV"/>
<enum name="GL_SCREEN_NV"/>
<enum name="GL_SOFTLIGHT_NV"/>
<enum name="GL_SRC_ATOP_NV"/>
@@ -38160,6 +38405,7 @@ typedef unsigned int GLhandleARB;
<enum name="GL_SRC_OVER_NV"/>
<enum name="GL_UNCORRELATED_NV"/>
<enum name="GL_VIVIDLIGHT_NV"/>
+ <enum name="GL_XOR_NV"/>
<enum name="GL_ZERO"/>
<command name="glBlendParameteriNV"/>
<command name="glBlendBarrierNV"/>
@@ -40239,6 +40485,26 @@ typedef unsigned int GLhandleARB;
<enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/>
<enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/>
<enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_3x3x3_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_4x3x3_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x3_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x4_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_5x4x4_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x4_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x5_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_6x5x5_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x5_OES"/>
+ <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x6_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES"/>
+ <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES"/>
</require>
</extension>
<extension name="GL_OES_texture_cube_map" supported="gles1">
diff --git a/xorg-server/hw/xwin/glx/indirect.c b/xorg-server/hw/xwin/glx/indirect.c
index 32d227b31..908786b73 100644
--- a/xorg-server/hw/xwin/glx/indirect.c
+++ b/xorg-server/hw/xwin/glx/indirect.c
@@ -1784,7 +1784,7 @@ glxWinCreateContext(__GLXscreen * screen,
glxWinReleaseTexImage
};
- context = (__GLXWinContext *) calloc(1, sizeof(__GLXWinContext));
+ context = calloc(1, sizeof(__GLXWinContext));
if (!context)
return NULL;
diff --git a/xorg-server/hw/xwin/glx/reg.py b/xorg-server/hw/xwin/glx/reg.py
index de28323d5..1bbe0a052 100644
--- a/xorg-server/hw/xwin/glx/reg.py
+++ b/xorg-server/hw/xwin/glx/reg.py
@@ -1,6 +1,6 @@
#!/usr/bin/python3 -i
#
-# Copyright (c) 2013 The Khronos Group Inc.
+# Copyright (c) 2013-2014 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
diff --git a/xorg-server/hw/xwin/glx/wgl.xml b/xorg-server/hw/xwin/glx/wgl.xml
index 8e0315308..102185a03 100644
--- a/xorg-server/hw/xwin/glx/wgl.xml
+++ b/xorg-server/hw/xwin/glx/wgl.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<!--
- Copyright (c) 2013 The Khronos Group Inc.
+ Copyright (c) 2013-2014 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
diff --git a/xorg-server/hw/xwin/glx/wglext.h b/xorg-server/hw/xwin/glx/wglext.h
index dc73a01aa..cf9781ddd 100644
--- a/xorg-server/hw/xwin/glx/wglext.h
+++ b/xorg-server/hw/xwin/glx/wglext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2013 The Khronos Group Inc.
+** Copyright (c) 2013-2014 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -33,7 +33,7 @@ extern "C" {
** used to make the header, and the header can be found at
** http://www.opengl.org/registry/
**
-** Khronos $Revision: 23649 $ on $Date: 2013-10-23 00:21:49 -0700 (Wed, 23 Oct 2013) $
+** Khronos $Revision: 25401 $ on $Date: 2014-02-18 15:43:24 -0800 (Tue, 18 Feb 2014) $
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -41,7 +41,7 @@ extern "C" {
#include <windows.h>
#endif
-#define WGL_WGLEXT_VERSION 20130916
+#define WGL_WGLEXT_VERSION 20140203
/* Generated C header for:
* API: wgl
diff --git a/xorg-server/hw/xwin/win.h b/xorg-server/hw/xwin/win.h
index 63a92f5e3..47e8f36eb 100644
--- a/xorg-server/hw/xwin/win.h
+++ b/xorg-server/hw/xwin/win.h
@@ -716,7 +716,7 @@ Bool
winAllocatePrivates(ScreenPtr pScreen);
Bool
- winInitCmapPrivates(ColormapPtr pCmap, int index);
+ winInitCmapPrivates(ColormapPtr pCmap, int i);
Bool
winAllocateCmapPrivates(ColormapPtr pCmap);
@@ -1024,12 +1024,12 @@ Bool
winScreenInit(ScreenPtr pScreen, int argc, char **argv);
Bool
- winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv);
+ winFinishScreenInitFB(int i, ScreenPtr pScreen, int argc, char **argv);
#if defined(XWIN_NATIVEGDI)
Bool
-winFinishScreenInitNativeGDI(int index,
+winFinishScreenInitNativeGDI(int i,
ScreenPtr pScreen, int argc, char **argv);
#endif
diff --git a/xorg-server/hw/xwin/winallpriv.c b/xorg-server/hw/xwin/winallpriv.c
index 248d03658..0bbac20cd 100644
--- a/xorg-server/hw/xwin/winallpriv.c
+++ b/xorg-server/hw/xwin/winallpriv.c
@@ -56,7 +56,7 @@ winAllocatePrivates(ScreenPtr pScreen)
}
/* Allocate memory for the screen private structure */
- pScreenPriv = (winPrivScreenPtr) malloc(sizeof(winPrivScreenRec));
+ pScreenPriv = malloc(sizeof(winPrivScreenRec));
if (!pScreenPriv) {
ErrorF("winAllocateScreenPrivates - malloc () failed\n");
return FALSE;
@@ -144,7 +144,7 @@ winAllocateCmapPrivates(ColormapPtr pCmap)
}
/* Allocate memory for our private structure */
- pCmapPriv = (winPrivCmapPtr) malloc(sizeof(winPrivCmapRec));
+ pCmapPriv = malloc(sizeof(winPrivCmapRec));
if (!pCmapPriv) {
ErrorF("winAllocateCmapPrivates - malloc () failed\n");
return FALSE;
diff --git a/xorg-server/hw/xwin/winclipboardinit.c b/xorg-server/hw/xwin/winclipboardinit.c
index 90fcf0086..45cf5e048 100644
--- a/xorg-server/hw/xwin/winclipboardinit.c
+++ b/xorg-server/hw/xwin/winclipboardinit.c
@@ -80,7 +80,7 @@ winInitClipboard(void)
}
/*
- * Create the Windows window that we use to recieve Windows messages
+ * Create the Windows window that we use to receive Windows messages
*/
HWND
diff --git a/xorg-server/hw/xwin/winclipboardxevents.c b/xorg-server/hw/xwin/winclipboardxevents.c
index 4aff0659b..15ee0ab18 100644
--- a/xorg-server/hw/xwin/winclipboardxevents.c
+++ b/xorg-server/hw/xwin/winclipboardxevents.c
@@ -267,7 +267,7 @@ winClipboardFlushXEvents(HWND hwnd,
(LPCWSTR) pszGlobalData,
-1, NULL, 0, NULL, NULL);
/* NOTE: iConvertDataLen includes space for null terminator */
- pszConvertData = (char *) malloc(iConvertDataLen);
+ pszConvertData = malloc(iConvertDataLen);
WideCharToMultiByte(CP_UTF8,
0,
(LPCWSTR) pszGlobalData,
@@ -606,8 +606,7 @@ winClipboardFlushXEvents(HWND hwnd,
pszReturnData, -1, NULL, 0);
/* Allocate memory for the Unicode string */
- pwszUnicodeStr
- = (wchar_t *) malloc(sizeof(wchar_t) * (iUnicodeLen + 1));
+ pwszUnicodeStr = malloc(sizeof(wchar_t) * (iUnicodeLen + 1));
if (!pwszUnicodeStr) {
ErrorF("winClipboardFlushXEvents - SelectionNotify "
"malloc failed for pwszUnicodeStr, aborting.\n");
diff --git a/xorg-server/hw/xwin/wincursor.c b/xorg-server/hw/xwin/wincursor.c
index d55ff5bde..55c304f04 100644
--- a/xorg-server/hw/xwin/wincursor.c
+++ b/xorg-server/hw/xwin/wincursor.c
@@ -254,10 +254,8 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
bi.bV4BlueMask = 0x000000FF;
bi.bV4AlphaMask = 0xFF000000;
- lpBits =
- (uint32_t *) calloc(pScreenPriv->cursor.sm_cx *
- pScreenPriv->cursor.sm_cy,
- sizeof(uint32_t));
+ lpBits = calloc(pScreenPriv->cursor.sm_cx * pScreenPriv->cursor.sm_cy,
+ sizeof(uint32_t));
if (lpBits) {
int y;
@@ -301,9 +299,7 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen)
pbmiColors[2].rgbBlue = pCursor->foreBlue >> 8;
pbmiColors[2].rgbReserved = 0;
- lpBits =
- (uint32_t *) calloc(pScreenPriv->cursor.sm_cx *
- pScreenPriv->cursor.sm_cy, sizeof(char));
+ lpBits = calloc(pScreenPriv->cursor.sm_cx * pScreenPriv->cursor.sm_cy, 1);
pCur = (unsigned char *) lpBits;
if (lpBits) {
diff --git a/xorg-server/hw/xwin/wingc.c b/xorg-server/hw/xwin/wingc.c
index aba398d0a..aba398d0a 100755..100644
--- a/xorg-server/hw/xwin/wingc.c
+++ b/xorg-server/hw/xwin/wingc.c
diff --git a/xorg-server/hw/xwin/winkeybd.c b/xorg-server/hw/xwin/winkeybd.c
index e74672529..d76ed005e 100644
--- a/xorg-server/hw/xwin/winkeybd.c
+++ b/xorg-server/hw/xwin/winkeybd.c
@@ -128,7 +128,7 @@ winKeybdBell(int iPercent, DeviceIntPtr pDeviceInt, void *pCtrl, int iClass)
* sound on systems with a sound card or it will beep the PC speaker
* on systems that do not have a sound card.
*/
- MessageBeep(MB_OK);
+ if (iPercent > 0) MessageBeep(MB_OK);
}
/* Change some keyboard configuration parameters */
diff --git a/xorg-server/hw/xwin/winmonitors.h b/xorg-server/hw/xwin/winmonitors.h
index 8201e47f4..5fe3ecd52 100644
--- a/xorg-server/hw/xwin/winmonitors.h
+++ b/xorg-server/hw/xwin/winmonitors.h
@@ -40,4 +40,4 @@ struct GetMonitorInfoData {
HMONITOR monitorHandle;
};
-Bool QueryMonitor(int index, struct GetMonitorInfoData *data);
+Bool QueryMonitor(int i, struct GetMonitorInfoData *data);
diff --git a/xorg-server/hw/xwin/winmultiwindowwm.c b/xorg-server/hw/xwin/winmultiwindowwm.c
index 2b619a2b6..8518147a6 100644
--- a/xorg-server/hw/xwin/winmultiwindowwm.c
+++ b/xorg-server/hw/xwin/winmultiwindowwm.c
@@ -114,6 +114,7 @@ typedef struct _WMInfo {
WMMsgQueueRec wmMsgQueue;
Atom atmWmProtos;
Atom atmWmDelete;
+ Atom atmWmTakeFocus;
Atom atmPrivMap;
#ifdef XWIN_MULTIWINDOWINTWM
Bool fAllowOtherWM;
@@ -372,7 +373,7 @@ Xutf8TextPropertyToString(Display * pDisplay, XTextProperty * xtp)
for (i = 0; i < nNum; i++)
iLen += strlen(ppList[i]);
- pszReturnData = (char *) malloc(iLen + 1);
+ pszReturnData = malloc(iLen + 1);
pszReturnData[0] = '\0';
for (i = 0; i < nNum; i++)
strcat(pszReturnData, ppList[i]);
@@ -380,7 +381,7 @@ Xutf8TextPropertyToString(Display * pDisplay, XTextProperty * xtp)
XFreeStringList(ppList);
}
else {
- pszReturnData = (char *) malloc(1);
+ pszReturnData = malloc(1);
pszReturnData[0] = '\0';
}
@@ -416,6 +417,27 @@ GetWindowName(Display * pDisplay, Window iWin, char **ppWindowName)
}
/*
+ * Does the client support the specified WM_PROTOCOLS protocol?
+ */
+
+static Bool
+IsWmProtocolAvailable(Display * pDisplay, Window iWindow, Atom atmProtocol)
+{
+ int i, n, found = 0;
+ Atom *protocols;
+
+ if (XGetWMProtocols(pDisplay, iWindow, &protocols, &n)) {
+ for (i = 0; i < n; ++i)
+ if (protocols[i] == atmProtocol)
+ ++found;
+
+ XFree(protocols);
+ }
+
+ return found > 0;
+}
+
+/*
* Send a message to the X server from the WM thread
*/
@@ -500,7 +522,7 @@ UpdateName(WMInfoPtr pWMInfo, Window iWindow)
int iLen =
MultiByteToWideChar(CP_UTF8, 0, pszWindowName, -1, NULL, 0);
wchar_t *pwszWideWindowName =
- (wchar_t *) malloc(sizeof(wchar_t) * (iLen + 1));
+ malloc(sizeof(wchar_t)*(iLen + 1));
MultiByteToWideChar(CP_UTF8, 0, pszWindowName, -1,
pwszWideWindowName, iLen);
@@ -743,21 +765,10 @@ winMultiWindowWMProc(void *pArg)
case WM_WM_KILL:
winDebug ("\tWM_WM_KILL\n");
{
- int i, n, found = 0;
- Atom *protocols;
-
- /* --- */
- if (XGetWMProtocols(pWMInfo->pDisplay,
- pNode->msg.iWindow, &protocols, &n)) {
- for (i = 0; i < n; ++i)
- if (protocols[i] == pWMInfo->atmWmDelete)
- ++found;
-
- XFree(protocols);
- }
-
/* --- */
- if (found)
+ if (IsWmProtocolAvailable(pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ pWMInfo->atmWmDelete))
SendXMessage(pWMInfo->pDisplay,
pNode->msg.iWindow,
pWMInfo->atmWmProtos, pWMInfo->atmWmDelete);
@@ -768,11 +779,39 @@ winMultiWindowWMProc(void *pArg)
case WM_WM_ACTIVATE:
winDebug ("\tWM_WM_ACTIVATE\n");
-
/* Set the input focus */
- XSetInputFocus(pWMInfo->pDisplay,
- pNode->msg.iWindow,
- RevertToPointerRoot, CurrentTime);
+
+ /*
+ ICCCM 4.1.7 is pretty opaque, but it appears that the rules are
+ actually quite simple:
+ -- the WM_HINTS input field determines whether the WM should call
+ XSetInputFocus()
+ -- independently, the WM_TAKE_FOCUS protocol determines whether
+ the WM should send a WM_TAKE_FOCUS ClientMessage.
+ */
+ {
+ Bool neverFocus = FALSE;
+ XWMHints *hints = XGetWMHints(pWMInfo->pDisplay, pNode->msg.iWindow);
+
+ if (hints) {
+ if (hints->flags & InputHint)
+ neverFocus = !hints->input;
+ XFree(hints);
+ }
+
+ if (!neverFocus)
+ XSetInputFocus(pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ RevertToPointerRoot, CurrentTime);
+
+ if (IsWmProtocolAvailable(pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ pWMInfo->atmWmTakeFocus))
+ SendXMessage(pWMInfo->pDisplay,
+ pNode->msg.iWindow,
+ pWMInfo->atmWmProtos, pWMInfo->atmWmTakeFocus);
+
+ }
break;
case WM_WM_NAME_EVENT:
@@ -1177,9 +1216,9 @@ winInitWM(void **ppWMInfo,
pthread_mutex_t * ppmServerStarted,
int dwScreen, HWND hwndScreen, BOOL allowOtherWM)
{
- WMProcArgPtr pArg = (WMProcArgPtr) malloc(sizeof(WMProcArgRec));
- WMInfoPtr pWMInfo = (WMInfoPtr) malloc(sizeof(WMInfoRec));
- XMsgProcArgPtr pXMsgArg = (XMsgProcArgPtr) malloc(sizeof(XMsgProcArgRec));
+ WMProcArgPtr pArg = malloc(sizeof(WMProcArgRec));
+ WMInfoPtr pWMInfo = malloc(sizeof(WMInfoRec));
+ XMsgProcArgPtr pXMsgArg = malloc(sizeof(XMsgProcArgRec));
/* Bail if the input parameters are bad */
if (pArg == NULL || pWMInfo == NULL || pXMsgArg == NULL) {
@@ -1332,6 +1371,8 @@ winInitMultiWindowWM(WMInfoPtr pWMInfo, WMProcArgPtr pProcArg)
"WM_PROTOCOLS", False);
pWMInfo->atmWmDelete = XInternAtom(pWMInfo->pDisplay,
"WM_DELETE_WINDOW", False);
+ pWMInfo->atmWmTakeFocus = XInternAtom(pWMInfo->pDisplay,
+ "WM_TAKE_FOCUS", False);
pWMInfo->atmPrivMap = XInternAtom(pWMInfo->pDisplay,
WINDOWSWM_NATIVE_HWND, False);
@@ -1358,7 +1399,7 @@ winSendMessageToWM(void *pWMInfo, winWMMessagePtr pMsg)
winDebug("winSendMessageToWM ()\n");
- pNode = (WMMsgNodePtr) malloc(sizeof(WMMsgNodeRec));
+ pNode = malloc(sizeof(WMMsgNodeRec));
if (pNode != NULL) {
memcpy(&pNode->msg, pMsg, sizeof(winWMMessageRec));
PushMessage(&((WMInfoPtr) pWMInfo)->wmMsgQueue, pNode);
diff --git a/xorg-server/hw/xwin/winnativegdi.c b/xorg-server/hw/xwin/winnativegdi.c
index 3cd565313..e0916bb8a 100644
--- a/xorg-server/hw/xwin/winnativegdi.c
+++ b/xorg-server/hw/xwin/winnativegdi.c
@@ -342,8 +342,7 @@ winCreateDIBNativeGDI(int iWidth, int iHeight, int iDepth,
}
/* Allocate bitmap info header */
- pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER)
- + 256 * sizeof(RGBQUAD));
+ pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
if (pbmih == NULL) {
ErrorF("winCreateDIBNativeGDI - malloc () failed\n");
return FALSE;
diff --git a/xorg-server/hw/xwin/winprefslex.l b/xorg-server/hw/xwin/winprefslex.l
index 66d12ede7..ff4459fda 100644
--- a/xorg-server/hw/xwin/winprefslex.l
+++ b/xorg-server/hw/xwin/winprefslex.l
@@ -43,7 +43,7 @@ extern int yyparse(void);
static char *makestr(char *str)
{
char *ptr;
- ptr = (char*)malloc (strlen(str)+1);
+ ptr = malloc(strlen(str)+1);
if (!ptr)
{
ErrorF ("winMultiWindowLex:makestr() out of memory\n");
@@ -88,6 +88,7 @@ ALWAYSONTOP { return ALWAYSONTOP; }
DEBUG { return DEBUGOUTPUT; }
RELOAD { return RELOAD; }
TRAYICON { return TRAYICON; }
+FORCEEXIT { return FORCEEXIT; }
SILENTEXIT { return SILENTEXIT; }
"{" { return LB; }
"}" { return RB; }
diff --git a/xorg-server/hw/xwin/winprefsyacc.y b/xorg-server/hw/xwin/winprefsyacc.y
index ff051f233..73fb5d56e 100644
--- a/xorg-server/hw/xwin/winprefsyacc.y
+++ b/xorg-server/hw/xwin/winprefsyacc.y
@@ -315,10 +315,9 @@ static void
AddMenuLine (char *text, MENUCOMMANDTYPE cmd, char *param)
{
if (menu.menuItem==NULL)
- menu.menuItem = (MENUITEM*)malloc(sizeof(MENUITEM));
+ menu.menuItem = malloc(sizeof(MENUITEM));
else
- menu.menuItem = (MENUITEM*)
- realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
+ menu.menuItem = realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX);
menu.menuItem[menu.menuItems].text[MENU_MAX] = 0;
@@ -343,10 +342,9 @@ CloseMenu (void)
}
if (pref.menuItems)
- pref.menu = (MENUPARSED*)
- realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
+ pref.menu = realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
else
- pref.menu = (MENUPARSED*)malloc (sizeof(MENUPARSED));
+ pref.menu = malloc (sizeof(MENUPARSED));
memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED));
pref.menuItems++;
@@ -369,10 +367,9 @@ static void
AddIconLine (char *matchstr, char *iconfile)
{
if (pref.icon==NULL)
- pref.icon = (ICONITEM*)malloc(sizeof(ICONITEM));
+ pref.icon = malloc(sizeof(ICONITEM));
else
- pref.icon = (ICONITEM*)
- realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
+ pref.icon = realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX);
pref.icon[pref.iconItems].match[MENU_MAX] = 0;
@@ -405,10 +402,9 @@ static void
AddStyleLine (char *matchstr, unsigned long style)
{
if (pref.style==NULL)
- pref.style = (STYLEITEM*)malloc(sizeof(STYLEITEM));
+ pref.style = malloc(sizeof(STYLEITEM));
else
- pref.style = (STYLEITEM*)
- realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1));
+ pref.style = realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1));
strncpy(pref.style[pref.styleItems].match, matchstr, MENU_MAX);
pref.style[pref.styleItems].match[MENU_MAX] = 0;
@@ -438,10 +434,9 @@ static void
AddSysMenuLine (char *matchstr, char *menuname, int pos)
{
if (pref.sysMenu==NULL)
- pref.sysMenu = (SYSMENUITEM*)malloc(sizeof(SYSMENUITEM));
+ pref.sysMenu = malloc(sizeof(SYSMENUITEM));
else
- pref.sysMenu = (SYSMENUITEM*)
- realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
+ pref.sysMenu = realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX);
pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0;
diff --git a/xorg-server/hw/xwin/winshadgdi.c b/xorg-server/hw/xwin/winshadgdi.c
index d2a357f8e..7d41369db 100644
--- a/xorg-server/hw/xwin/winshadgdi.c
+++ b/xorg-server/hw/xwin/winshadgdi.c
@@ -183,8 +183,7 @@ winQueryRGBBitsAndMasks(ScreenPtr pScreen)
}
/* Allocate a bitmap header and color table */
- pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER)
- + 256 * sizeof(RGBQUAD));
+ pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
if (pbmih == NULL) {
ErrorF("winQueryRGBBitsAndMasks - malloc failed\n");
return FALSE;
@@ -531,8 +530,7 @@ winInitScreenShadowGDI(ScreenPtr pScreen)
pScreenPriv->hdcShadow = CreateCompatibleDC(pScreenPriv->hdcScreen);
/* Allocate bitmap info header */
- pScreenPriv->pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER)
- + 256 * sizeof(RGBQUAD));
+ pScreenPriv->pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD));
if (pScreenPriv->pbmih == NULL) {
ErrorF("winInitScreenShadowGDI - malloc () failed\n");
return FALSE;
diff --git a/xorg-server/hw/xwin/winwin32rootless.c b/xorg-server/hw/xwin/winwin32rootless.c
index 7ea7f0c4d..024458063 100644
--- a/xorg-server/hw/xwin/winwin32rootless.c
+++ b/xorg-server/hw/xwin/winwin32rootless.c
@@ -183,8 +183,8 @@ InitWin32RootlessEngine(win32RootlessWindowPtr pRLWinPriv)
/* Allocate bitmap info header */
pRLWinPriv->pbmihShadow =
- (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER)
- + 256 * sizeof(RGBQUAD));
+ malloc(sizeof(BITMAPINFOHEADER)
+ + 256 * sizeof(RGBQUAD));
if (pRLWinPriv->pbmihShadow == NULL) {
ErrorF("InitWin32RootlessEngine - malloc () failed\n");
return;
@@ -211,8 +211,7 @@ winMWExtWMCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
winDebug("winMWExtWMCreateFrame %d %d - %d %d\n",
newX, newY, pFrame->width, pFrame->height);
- pRLWinPriv =
- (win32RootlessWindowPtr) malloc(sizeof(win32RootlessWindowRec));
+ pRLWinPriv = malloc(sizeof(win32RootlessWindowRec));
pRLWinPriv->pFrame = pFrame;
pRLWinPriv->pfb = NULL;
pRLWinPriv->hbmpShadow = NULL;
diff --git a/xorg-server/hw/xwin/winwindow.c b/xorg-server/hw/xwin/winwindow.c
index c67a1a610..d00a312c1 100644
--- a/xorg-server/hw/xwin/winwindow.c
+++ b/xorg-server/hw/xwin/winwindow.c
@@ -146,7 +146,7 @@ winCopyWindowNativeGDI(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
nbox = RegionNumRects(prgnDst);
/* Allocate source points for each box */
- if (!(pptSrc = (DDXPointPtr) malloc(nbox * sizeof(DDXPointRec))))
+ if (!(pptSrc = malloc(nbox * sizeof(DDXPointRec))))
return;
/* Set an iterator pointer */
diff --git a/xorg-server/hw/xwin/winwindowswm.c b/xorg-server/hw/xwin/winwindowswm.c
index c61f5b79e..26dfa7e6f 100755..100644
--- a/xorg-server/hw/xwin/winwindowswm.c
+++ b/xorg-server/hw/xwin/winwindowswm.c
@@ -162,7 +162,7 @@ ProcWindowsWMSelectInput(ClientPtr client)
}
/* build the entry */
- pNewEvent = (WMEventPtr) malloc(sizeof(WMEventRec));
+ pNewEvent = malloc(sizeof(WMEventRec));
if (!pNewEvent)
return BadAlloc;
pNewEvent->next = 0;
@@ -183,7 +183,7 @@ ProcWindowsWMSelectInput(ClientPtr client)
* done through the resource database.
*/
if (!pHead) {
- pHead = (WMEventPtr *) malloc(sizeof(WMEventPtr));
+ pHead = malloc(sizeof(WMEventPtr));
if (!pHead ||
!AddResource(eventResource, eventResourceType, (void *) pHead))
{
diff --git a/xorg-server/include/gc.h b/xorg-server/include/gc.h
index 1e69b5c3d..1e69b5c3d 100755..100644
--- a/xorg-server/include/gc.h
+++ b/xorg-server/include/gc.h
diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h
index fd3e209e5..bd947dab3 100644
--- a/xorg-server/include/input.h
+++ b/xorg-server/include/input.h
@@ -95,8 +95,8 @@ SOFTWARE.
#define NO_AXIS_LIMITS -1
-#define MAP_LENGTH 256
-#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
+#define MAP_LENGTH MAX_BUTTONS
+#define DOWN_LENGTH (MAX_BUTTONS/8) /* 256/8 => number of bytes to hold 256 bits */
#define NullGrab ((GrabPtr)NULL)
#define PointerRootWin ((WindowPtr)PointerRoot)
#define NoneWin ((WindowPtr)None)
@@ -221,12 +221,12 @@ typedef struct _InputOption InputOption;
typedef struct _XI2Mask XI2Mask;
typedef struct _InputAttributes {
- const char *product;
- const char *vendor;
- const char *device;
- const char *pnp_id;
- const char *usb_id;
- const char **tags; /* null-terminated */
+ char *product;
+ char *vendor;
+ char *device;
+ char *pnp_id;
+ char *usb_id;
+ char **tags; /* null-terminated */
uint32_t flags;
} InputAttributes;
diff --git a/xorg-server/include/inputstr.h b/xorg-server/include/inputstr.h
index dfcf7c383..f6cfb049d 100644
--- a/xorg-server/include/inputstr.h
+++ b/xorg-server/include/inputstr.h
@@ -542,7 +542,7 @@ typedef struct _DeviceIntRec {
GrabInfoRec deviceGrab; /* grab on the device */
int type; /* MASTER_POINTER, MASTER_KEYBOARD, SLAVE */
Atom xinput_type;
- const char *name;
+ char *name;
int id;
KeyClassPtr key;
ValuatorClassPtr valuator;
diff --git a/xorg-server/include/misc.h b/xorg-server/include/misc.h
index 660200558..19e71035c 100644
--- a/xorg-server/include/misc.h
+++ b/xorg-server/include/misc.h
@@ -256,7 +256,7 @@ padding_for_int32(const int bytes)
}
-extern const char **xstrtokenize(const char *str, const char *separators);
+extern char **xstrtokenize(const char *str, const char *separators);
extern void FormatInt64(int64_t num, char *string);
extern void FormatUInt64(uint64_t num, char *string);
extern void FormatUInt64Hex(uint64_t num, char *string);
diff --git a/xorg-server/include/xkbrules.h b/xorg-server/include/xkbrules.h
index 956eade0b..ab5b4b266 100644
--- a/xorg-server/include/xkbrules.h
+++ b/xorg-server/include/xkbrules.h
@@ -30,11 +30,11 @@
/***====================================================================***/
typedef struct _XkbRMLVOSet {
- const char *rules;
- const char *model;
- const char *layout;
- const char *variant;
- const char *options;
+ char *rules;
+ char *model;
+ char *layout;
+ char *variant;
+ char *options;
} XkbRMLVOSet;
typedef struct _XkbRF_VarDefs {
diff --git a/xorg-server/include/xkbsrv.h b/xorg-server/include/xkbsrv.h
index 111b3fe6b..7b3db0f86 100644
--- a/xorg-server/include/xkbsrv.h
+++ b/xorg-server/include/xkbsrv.h
@@ -738,6 +738,14 @@ extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ ,
XkbEventCausePtr /* cause */
);
+extern _X_EXPORT void XkbInitRules(XkbRMLVOSet * /* rmlvo */,
+ const char * /* rules */,
+ const char * /* model */,
+ const char * /* layout */,
+ const char * /* variant */,
+ const char * /* options */
+ ) ;
+
extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet * /* rmlvo */
);
diff --git a/xorg-server/mi/mieq.c b/xorg-server/mi/mieq.c
index 284bdac8b..dbd5a47ac 100644
--- a/xorg-server/mi/mieq.c
+++ b/xorg-server/mi/mieq.c
@@ -286,7 +286,7 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e)
else if (miEventQueue.dropped % QUEUE_DROP_BACKTRACE_FREQUENCY == 0 &&
miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY <=
QUEUE_DROP_BACKTRACE_MAX) {
- ErrorFSigSafe("[mi] EQ overflow continuing. %u events have been "
+ ErrorFSigSafe("[mi] EQ overflow continuing. %zu events have been "
"dropped.\n", miEventQueue.dropped);
if (miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY ==
QUEUE_DROP_BACKTRACE_MAX) {
diff --git a/xorg-server/os/access.c b/xorg-server/os/access.c
index 62c3d9925..62c3d9925 100755..100644
--- a/xorg-server/os/access.c
+++ b/xorg-server/os/access.c
diff --git a/xorg-server/os/log.c b/xorg-server/os/log.c
index 97b93632b..67c27eefa 100644
--- a/xorg-server/os/log.c
+++ b/xorg-server/os/log.c
@@ -201,7 +201,9 @@ LogInit(const char *fname, const char *backup)
char *logFileName = NULL;
if (fname && *fname) {
+#if __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 2
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
if (asprintf(&logFileName, fname, display) == -1)
FatalError("Cannot allocate space for the log file name\n");
@@ -212,7 +214,9 @@ LogInit(const char *fname, const char *backup)
char *suffix;
char *oldLog;
+#if __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 2
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+#endif
if ((asprintf(&suffix, backup, display) == -1) ||
(asprintf(&oldLog, "%s%s", logFileName, suffix) == -1))
FatalError("Cannot allocate space for the log file name\n");
diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c
index d73ef1903..cbd5c7ad5 100644
--- a/xorg-server/os/utils.c
+++ b/xorg-server/os/utils.c
@@ -2031,10 +2031,10 @@ CheckUserAuthorization(void)
* Tokenize a string into a NULL terminated array of strings. Always returns
* an allocated array unless an error occurs.
*/
-const char **
+char **
xstrtokenize(const char *str, const char *separators)
{
- const char **list, **nlist;
+ char **list, **nlist;
char *tok, *tmp;
unsigned num = 0, n;
@@ -2062,7 +2062,7 @@ xstrtokenize(const char *str, const char *separators)
error:
free(tmp);
for (n = 0; n < num; n++)
- free((void *) list[n]);
+ free(list[n]);
free(list);
return NULL;
}
diff --git a/xorg-server/os/xdmcp.c b/xorg-server/os/xdmcp.c
index bc7dcb3df..bc7dcb3df 100755..100644
--- a/xorg-server/os/xdmcp.c
+++ b/xorg-server/os/xdmcp.c
diff --git a/xorg-server/randr/rrcrtc.c b/xorg-server/randr/rrcrtc.c
index c18241848..76d24f60a 100644
--- a/xorg-server/randr/rrcrtc.c
+++ b/xorg-server/randr/rrcrtc.c
@@ -523,9 +523,19 @@ RRCrtcSet(RRCrtcPtr crtc,
ScreenPtr pScreen = crtc->pScreen;
Bool ret = FALSE;
Bool recompute = TRUE;
+ Bool crtcChanged;
+ int o;
rrScrPriv(pScreen);
+ crtcChanged = FALSE;
+ for (o = 0; o < numOutputs; o++) {
+ if (outputs[o] && outputs[o]->crtc != crtc) {
+ crtcChanged = TRUE;
+ break;
+ }
+ }
+
/* See if nothing changed */
if (crtc->mode == mode &&
crtc->x == x &&
@@ -533,7 +543,8 @@ RRCrtcSet(RRCrtcPtr crtc,
crtc->rotation == rotation &&
crtc->numOutputs == numOutputs &&
!memcmp(crtc->outputs, outputs, numOutputs * sizeof(RROutputPtr)) &&
- !RRCrtcPendingProperties(crtc) && !RRCrtcPendingTransform(crtc)) {
+ !RRCrtcPendingProperties(crtc) && !RRCrtcPendingTransform(crtc) &&
+ !crtcChanged) {
recompute = FALSE;
ret = TRUE;
}
@@ -605,7 +616,6 @@ RRCrtcSet(RRCrtcPtr crtc,
#endif
}
if (ret) {
- int o;
RRTellChanged(pScreen);
diff --git a/xorg-server/test/Makefile.am b/xorg-server/test/Makefile.am
index 2852bb3e0..f8aa65950 100644
--- a/xorg-server/test/Makefile.am
+++ b/xorg-server/test/Makefile.am
@@ -36,7 +36,7 @@ fixes_LDADD=$(TEST_LDADD)
xfree86_LDADD=$(TEST_LDADD)
touch_LDADD=$(TEST_LDADD)
signal_logging_LDADD=$(TEST_LDADD)
-hashtabletest_LDADD=$(TEST_LDADD) $(top_srcdir)/Xext/hashtable.c
+hashtabletest_LDADD=$(TEST_LDADD)
os_LDADD=$(TEST_LDADD)
libxservertest_la_LIBADD = $(XSERVER_LIBS)
diff --git a/xorg-server/test/input.c b/xorg-server/test/input.c
index aaa7a69d3..9b5db8991 100644
--- a/xorg-server/test/input.c
+++ b/xorg-server/test/input.c
@@ -1101,7 +1101,7 @@ xi_unregister_handlers(void)
static void
cmp_attr_fields(InputAttributes * attr1, InputAttributes * attr2)
{
- const char **tags1, **tags2;
+ char **tags1, **tags2;
assert(attr1 && attr2);
assert(attr1 != attr2);
@@ -1180,50 +1180,54 @@ cmp_attr_fields(InputAttributes * attr1, InputAttributes * attr2)
static void
dix_input_attributes(void)
{
- InputAttributes orig = { 0 };
+ InputAttributes *orig;
InputAttributes *new;
- const char *tags[4] = { "tag1", "tag2", "tag2", NULL };
new = DuplicateInputAttributes(NULL);
assert(!new);
- new = DuplicateInputAttributes(&orig);
- assert(memcmp(&orig, new, sizeof(InputAttributes)) == 0);
+ orig = calloc(1, sizeof(InputAttributes));
+ assert(orig);
- orig.product = "product name";
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ new = DuplicateInputAttributes(orig);
+ assert(memcmp(orig, new, sizeof(InputAttributes)) == 0);
+
+ orig->product = xnfstrdup("product name");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.vendor = "vendor name";
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->vendor = xnfstrdup("vendor name");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.device = "device path";
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->device = xnfstrdup("device path");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.pnp_id = "PnPID";
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->pnp_id = xnfstrdup("PnPID");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.usb_id = "USBID";
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->usb_id = xnfstrdup("USBID");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.flags = 0xF0;
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->flags = 0xF0;
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
- orig.tags = tags;
- new = DuplicateInputAttributes(&orig);
- cmp_attr_fields(&orig, new);
+ orig->tags = xstrtokenize("tag1 tag2 tag3", " ");
+ new = DuplicateInputAttributes(orig);
+ cmp_attr_fields(orig, new);
FreeInputAttributes(new);
+
+ FreeInputAttributes(orig);
}
static void
@@ -1386,8 +1390,8 @@ dix_valuator_alloc(void)
assert(v->numAxes == num_axes);
#if !defined(__i386__) && !defined(__m68k__) && !defined(__sh__)
/* must be double-aligned on 64 bit */
- assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0);
- assert(((void *) v->axes - (void *) v) % sizeof(double) == 0);
+ assert(offsetof(struct _ValuatorClassRec, axisVal) % sizeof(double) == 0);
+ assert(offsetof(struct _ValuatorClassRec, axes) % sizeof(double) == 0);
#endif
num_axes++;
}
diff --git a/xorg-server/test/os.c b/xorg-server/test/os.c
index 2d005a0d4..d85dcffbe 100644
--- a/xorg-server/test/os.c
+++ b/xorg-server/test/os.c
@@ -150,10 +150,10 @@ static void block_sigio_test_nested(void)
tail guard must be hit.
*/
void (*old_handler)(int);
- old_handler = signal(SIGIO, sighandler);
+ old_handler = OsSignal(SIGIO, sighandler);
expect_signal = 1;
assert(raise(SIGIO) == 0);
- assert(signal(SIGIO, old_handler) == sighandler);
+ assert(OsSignal(SIGIO, old_handler) == sighandler);
#endif
}
diff --git a/xorg-server/test/signal-logging.c b/xorg-server/test/signal-logging.c
index d894373f0..88b37c14e 100644
--- a/xorg-server/test/signal-logging.c
+++ b/xorg-server/test/signal-logging.c
@@ -346,7 +346,11 @@ static void logging_format(void)
ptr = 1;
do {
char expected[30];
+#ifdef __sun /* Solaris doesn't autoadd "0x" to %p format */
+ sprintf(expected, "(EE) 0x%p\n", (void*)ptr);
+#else
sprintf(expected, "(EE) %p\n", (void*)ptr);
+#endif
LogMessageVerbSigSafe(X_ERROR, -1, "%p\n", (void*)ptr);
read_log_msg(logmsg);
assert(strcmp(logmsg, expected) == 0);
diff --git a/xorg-server/test/touch.c b/xorg-server/test/touch.c
index df1db11de..981c694b6 100644
--- a/xorg-server/test/touch.c
+++ b/xorg-server/test/touch.c
@@ -40,7 +40,7 @@ touch_grow_queue(void)
int i;
memset(&dev, 0, sizeof(dev));
- dev.name = "test device";
+ dev.name = xnfstrdup("test device");
dev.id = 2;
dev.valuator = &val;
val.numAxes = 5;
@@ -82,6 +82,8 @@ touch_grow_queue(void)
assert(t->client_id == 0);
assert(t->ddx_id == 0);
}
+
+ free(dev.name);
}
static void
@@ -95,7 +97,7 @@ touch_find_ddxid(void)
int i;
memset(&dev, 0, sizeof(dev));
- dev.name = "test device";
+ dev.name = xnfstrdup("test device");
dev.id = 2;
dev.valuator = &val;
val.numAxes = 5;
@@ -150,6 +152,8 @@ touch_find_ddxid(void)
ProcessWorkQueue();
ti = TouchFindByDDXID(&dev, 40, TRUE);
assert(ti == &dev.last.touches[size]);
+
+ free(dev.name);
}
static void
@@ -164,7 +168,7 @@ touch_begin_ddxtouch(void)
int size = 5;
memset(&dev, 0, sizeof(dev));
- dev.name = "test device";
+ dev.name = xnfstrdup("test device");
dev.id = 2;
dev.valuator = &val;
val.numAxes = 5;
@@ -195,6 +199,8 @@ touch_begin_ddxtouch(void)
assert(ti->client_id > last_client_id);
assert(!ti->emulate_pointer);
last_client_id = ti->client_id;
+
+ free(dev.name);
}
static void
@@ -212,7 +218,7 @@ touch_begin_touch(void)
screenInfo.screens[0] = &screen;
memset(&dev, 0, sizeof(dev));
- dev.name = "test device";
+ dev.name = xnfstrdup("test device");
dev.id = 2;
memset(&sprite, 0, sizeof(sprite));
@@ -237,6 +243,8 @@ touch_begin_touch(void)
assert(ti->emulate_pointer);
assert(touch.num_touches == 1);
+
+ free(dev.name);
}
static void
@@ -251,7 +259,7 @@ touch_init(void)
screenInfo.screens[0] = &screen;
memset(&dev, 0, sizeof(dev));
- dev.name = "test device";
+ dev.name = xnfstrdup("test device");
memset(&sprite, 0, sizeof(sprite));
dev.spriteInfo = &sprite;
@@ -264,6 +272,8 @@ touch_init(void)
rc = InitTouchClassDeviceStruct(&dev, 1, XIDirectTouch, 2);
assert(rc == TRUE);
assert(dev.touch);
+
+ free(dev.name);
}
int
diff --git a/xorg-server/test/xkb.c b/xorg-server/test/xkb.c
index 955e72dff..9047f594c 100644
--- a/xorg-server/test/xkb.c
+++ b/xorg-server/test/xkb.c
@@ -82,15 +82,17 @@ xkb_get_rules_test(void)
static void
xkb_set_rules_test(void)
{
- XkbRMLVOSet rmlvo = {
- .rules = "test-rules",
- .model = "test-model",
- .layout = "test-layout",
- .variant = "test-variant",
- .options = "test-options"
- };
+ XkbRMLVOSet rmlvo;
XkbRMLVOSet rmlvo_new = { NULL };
+ XkbInitRules(&rmlvo, "test-rules", "test-model", "test-layout",
+ "test-variant", "test-options");
+ assert(rmlvo.rules);
+ assert(rmlvo.model);
+ assert(rmlvo.layout);
+ assert(rmlvo.variant);
+ assert(rmlvo.options);
+
XkbSetRulesDflts(&rmlvo);
XkbGetRulesDflts(&rmlvo_new);
@@ -106,6 +108,8 @@ xkb_set_rules_test(void)
assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0);
assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 0);
assert(strcmp(rmlvo.options, rmlvo_new.options) == 0);
+
+ XkbFreeRMLVOSet(&rmlvo, FALSE);
}
/**
diff --git a/xorg-server/xkb/xkbInit.c b/xorg-server/xkb/xkbInit.c
index d3bcbc9f2..acabd8e7b 100644
--- a/xorg-server/xkb/xkbInit.c
+++ b/xorg-server/xkb/xkbInit.c
@@ -129,11 +129,11 @@ XkbFreeRMLVOSet(XkbRMLVOSet * rmlvo, Bool freeRMLVO)
if (!rmlvo)
return;
- free((void *) rmlvo->rules);
- free((void *) rmlvo->model);
- free((void *) rmlvo->layout);
- free((void *) rmlvo->variant);
- free((void *) rmlvo->options);
+ free(rmlvo->rules);
+ free(rmlvo->model);
+ free(rmlvo->layout);
+ free(rmlvo->variant);
+ free(rmlvo->options);
if (freeRMLVO)
free(rmlvo);
@@ -206,6 +206,21 @@ XkbWriteRulesProp(ClientPtr client, void *closure)
return TRUE;
}
+void
+XkbInitRules(XkbRMLVOSet *rmlvo,
+ const char *rules,
+ const char *model,
+ const char *layout,
+ const char *variant,
+ const char *options)
+{
+ rmlvo->rules = rules ? xnfstrdup(rules) : NULL;
+ rmlvo->model = model ? xnfstrdup(model) : NULL;
+ rmlvo->layout = layout ? xnfstrdup(layout) : NULL;
+ rmlvo->variant = variant ? xnfstrdup(variant) : NULL;
+ rmlvo->options = options ? xnfstrdup(options) : NULL;
+}
+
static void
XkbSetRulesUsed(XkbRMLVOSet * rmlvo)
{
diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in
index 198b3a7be..c924edf6d 100644
--- a/xorg-server/xkeyboard-config/rules/base.xml.in
+++ b/xorg-server/xkeyboard-config/rules/base.xml.in
@@ -4412,7 +4412,7 @@
<variant>
<configItem>
<name>yz</name>
- <_description>Serbian (Cyrillic, Z and ZHE swapped)</_description>
+ <_description>Serbian (Cyrillic, ZE and ZHE swapped)</_description>
</configItem>
</variant>
<variant>
diff --git a/xorg-server/xkeyboard-config/symbols/ara b/xorg-server/xkeyboard-config/symbols/ara
index e677aaab1..d048b0090 100644
--- a/xorg-server/xkeyboard-config/symbols/ara
+++ b/xorg-server/xkeyboard-config/symbols/ara
@@ -94,7 +94,7 @@ xkb_symbols "azerty" {
key <AE11> { [ parenright, degree ] };
};
-partial alphanumeric_keys
+partial hidden alphanumeric_keys
xkb_symbols "digits_KP" {
name[Group1]= "Arabic (digits_KP)";
diff --git a/xorg-server/xkeyboard-config/symbols/cz b/xorg-server/xkeyboard-config/symbols/cz
index 083cc7674..97ab3cf68 100644
--- a/xorg-server/xkeyboard-config/symbols/cz
+++ b/xorg-server/xkeyboard-config/symbols/cz
@@ -1,117 +1,118 @@
default partial alphanumeric_keys
xkb_symbols "basic" {
- // This layout conforms to a new cz compromise standard designed
- // to satisfy most unix, windows and mac users.
- // 2001 by Kamil Toman <ktoman@email.cz>
+ // This layout conforms to a new Czech compromise standard
+ // designed to satisfy most Unix, Windows and Mac users.
+ // 2001 by Kamil Toman <ktoman@email.cz>
include "latin"
-
name[Group1]= "Czech";
- key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, dead_tilde ] };
- key <AE02> { [ ecaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ rcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot] };
- key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
- key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
- key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
-
- key <AD01> { [ q, Q, backslash, NoSymbol ] };
- key <AD02> { [ w, W, bar, Nosymbol ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
- key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
- key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
- key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
-
- key <AD11> { [ uacute, slash, bracketleft, division ] };
- key <AD12> { [parenright, parenleft, bracketright, multiply ] };
-
- key <AC01> { [ a, A, asciitilde, NoSymbol ] };
- key <AC02> { [ s, S, dstroke, NoSymbol ] };
- key <AC03> { [ d, D, Dstroke, NoSymbol ] };
- key <AC04> { [ f, F, bracketleft, NoSymbol ] };
- key <AC05> { [ g, G, bracketright, NoSymbol ] };
- key <AC06> { [ h, H, grave, NoSymbol ] };
- key <AC07> { [ j, J, apostrophe, NoSymbol ] };
- key <AC08> { [ k, K, lstroke, NoSymbol ] };
- key <AC09> { [ l, L, Lstroke, NoSymbol ] };
-
- key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] };
- key <AC11> { [ section, exclam, apostrophe, ssharp ] };
- key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
- key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] };
-
- key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
- key <AB01> { [ y, Y, degree, NoSymbol ] };
- key <AB02> { [ x, X, numbersign, Nosymbol ] };
- key <AB03> { [ c, C, ampersand, NoSymbol ] };
- key <AB04> { [ v, V, at, NoSymbol ] };
- key <AB05> { [ b, B, braceleft, NoSymbol ] };
- key <AB06> { [ n, N, braceright, NoSymbol ] };
- key <AB07> { [ m, M, asciicircum, NoSymbol ] };
- key <AB08> { [ comma, question, less, NoSymbol ] };
- key <AB09> { [ period, colon, greater, NoSymbol ] };
- key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
-
- key <SPCE> { [ space, space, space, space ] };
+ key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, dead_tilde ] };
+ key <AE02> { [ ecaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ rcaron, 5, percent, dead_abovering]};
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot] };
+ key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis]};
+ key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, backslash, NoSymbol ] };
+ key <AD02> { [ w, W, bar, Nosymbol ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
+ key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
+ key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+
+ key <AD11> { [ uacute, slash, bracketleft, division ] };
+ key <AD12> { [parenright, parenleft, bracketright, multiply ] };
+
+ key <AC01> { [ a, A, asciitilde, NoSymbol ] };
+ key <AC02> { [ s, S, dstroke, NoSymbol ] };
+ key <AC03> { [ d, D, Dstroke, NoSymbol ] };
+ key <AC04> { [ f, F, bracketleft, NoSymbol ] };
+ key <AC05> { [ g, G, bracketright, NoSymbol ] };
+ key <AC06> { [ h, H, grave, NoSymbol ] };
+ key <AC07> { [ j, J, apostrophe, NoSymbol ] };
+ key <AC08> { [ k, K, lstroke, NoSymbol ] };
+ key <AC09> { [ l, L, Lstroke, NoSymbol ] };
+
+ key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] };
+ key <AC11> { [ section, exclam, apostrophe, ssharp ] };
+ key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
+ key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] };
+
+ key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
+ key <AB01> { [ y, Y, degree, NoSymbol ] };
+ key <AB02> { [ x, X, numbersign, Nosymbol ] };
+ key <AB03> { [ c, C, ampersand, NoSymbol ] };
+ key <AB04> { [ v, V, at, NoSymbol ] };
+ key <AB05> { [ b, B, braceleft, NoSymbol ] };
+ key <AB06> { [ n, N, braceright, NoSymbol ] };
+ key <AB07> { [ m, M, asciicircum, NoSymbol ] };
+ key <AB08> { [ comma, question, less, NoSymbol ] };
+ key <AB09> { [ period, colon, greater, NoSymbol ] };
+ key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
+
+ key <SPCE> { [ space, space, space, space ] };
include "level3(ralt_switch)"
};
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
xkb_symbols "bksl" {
+
+ // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key).
+
include "cz(basic)"
name[Group1]= "Czech (with <\|> key)";
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
};
partial alphanumeric_keys
xkb_symbols "qwerty" {
- // This layout represent actual keyboard layout. It complies with symbols
- // printed on keys.
- // -----------------------------------------------------------------------
- // This layout was created in 2011 by Lukáš Mojžíš <lmojzis@grenames.cz>
+ // This layout represents the actual Czech keyboards;
+ // it complies with the symbols printed on the keys.
+ // 2011 by Lukáš Mojžíš <lmojzis@grenames.cz>
include "cz(basic)"
name[Group1]= "Czech (qwerty)";
- key <AB01> { [ z, Z, degree, NoSymbol ] };
- key <AC10> { [ uring, quotedbl, semicolon, colon ] };
- key <AC11> { [ section, exclam, apostrophe, ssharp ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
- key <AD11> { [ uacute, slash, bracketleft, braceleft ] };
- key <AD12> { [parenright, parenleft, bracketright, braceright ] };
- key <AE09> { [ iacute, 9, parenleft, dead_acute ] };
- key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
+ key <AB01> { [ z, Z, degree, NoSymbol ] };
+ key <AC10> { [ uring, quotedbl, semicolon, colon ] };
+ key <AC11> { [ section, exclam, apostrophe, ssharp ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+ key <AD11> { [ uacute, slash, bracketleft, braceleft ] };
+ key <AD12> { [parenright, parenleft, bracketright, braceright ] };
+ key <AE09> { [ iacute, 9, parenleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
};
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
xkb_symbols "qwerty_bksl" {
- include "cz(qwerty)"
+ // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key).
+
+ include "cz(qwerty)"
name[Group1]= "Czech (qwerty, extended Backslash)";
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
};
partial alphanumeric_keys alternate_group
xkb_symbols "ucw" {
- // This layout is usually used as the second group, it contains
- // accented characters only, no 'latin' set.
+ // This layout is usually used as the second group,
+ // it contains accented characters only, no 'latin' set.
// 2008 by Milan Vancura <mvancura@suse.cz>
name[Group1]= "Czech (UCW layout, accented letters only)";
@@ -149,10 +150,10 @@ xkb_symbols "ucw" {
partial alphanumeric_keys
xkb_symbols "dvorak-ucw" {
- // US Dvorak layout extend with UCW - AltGr produces accented characters
+ // US Dvorak layout extended with UCW,
+ // AltGr produces accented characters.
include "us(dvorak)"
-
name[Group1]= "Czech (US Dvorak with CZ UCW support)";
key <AB03> { [ j, J, eacute, Eacute ] };
diff --git a/xorg-server/xkeyboard-config/symbols/es b/xorg-server/xkeyboard-config/symbols/es
index 749a86d71..ab29a05df 100644
--- a/xorg-server/xkeyboard-config/symbols/es
+++ b/xorg-server/xkeyboard-config/symbols/es
@@ -26,7 +26,7 @@ xkb_symbols "basic" {
include "level3(ralt_switch)"
};
-partial alphanumeric
+partial alphanumeric_keys
xkb_symbols "winkeys" {
include "es(basic)"
diff --git a/xorg-server/xkeyboard-config/symbols/il b/xorg-server/xkeyboard-config/symbols/il
index 24028a867..48452d620 100644
--- a/xorg-server/xkeyboard-config/symbols/il
+++ b/xorg-server/xkeyboard-config/symbols/il
@@ -299,7 +299,7 @@ xkb_symbols "biblicalSIL" {
key <AC01> { [ U05B7, U05B8, U05C7, U05B2 ] }; //patah Qamats Qam. Qatan hat. patah
key <AC02> { [ hebrew_samech, U05E9 ] }; //Samech, shin no dot - -
key <AC03> { [ hebrew_dalet ] }; //dalet - - -
- key <AC04> { [ UFB2B, hebrew_sin, U05C2 ] }; //UCSv6 Sin sin (nodot) sindot -
+ key <AC04> { [ UFB2B, hebrew_shin, U05C2 ] }; //UCSv6 Sin shin (nodot) sindot -
key <AC05> { [ hebrew_gimel, VoidSymbol, U25E6, U2022 ] }; //gimel - bullet(DSS) bulletfill (DSS)
key <AC06> { [ hebrew_he, VoidSymbol, U0336, U030A ] };//he - strikeout(DSS) Ring Above(DSS)
key <AC07> { [ UFB2A, hebrew_shin, U05C1] }; //UCSv6 Shin shin (nodot) shindot -
diff --git a/xorg-server/xkeyboard-config/symbols/in b/xorg-server/xkeyboard-config/symbols/in
index 054671513..04c35a200 100644
--- a/xorg-server/xkeyboard-config/symbols/in
+++ b/xorg-server/xkeyboard-config/symbols/in
@@ -1230,7 +1230,7 @@ xkb_symbols "tam_TSCII" {
key <AB06> { [ 0x10000b6, 0x10000aa ] }; // au
key <AB07> { [ 0x10000ab, 0x10000ac ] }; // a, A
key <AB08> { [ 0x10000fe, 0x10000ae ] }; // i, I
-
+};
partial alphanumeric_keys
xkb_symbols "tam_TAB" {
@@ -1392,7 +1392,7 @@ xkb_symbols "guru" {
key <AE08> { [ U0A6e ] };
key <AE09> { [ U0A6F, parenleft ] };
key <AE10> { [ U0A66, parenright ] };
- key <AE11> { [ gur_visarga ] };
+ key <AE11> { [ U0A03 ] };
key <AE12> { [ equal, plus ] };
// Mainly long vowels
@@ -1638,7 +1638,7 @@ xkb_symbols "hin-wx" {
key <AB01> { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] };
key <AB02> { [ 0x1000926, 0x1000927 ] };
key <AB03> { [ 0x100091A, 0x100091B ] };
- key <AB04> { [ 0x1000935, dead_V ] };
+ key <AB04> { [ 0x1000935 ] };
key <AB05> { [ 0x100092C, 0x100092D ] };
key <AB06> { [ 0x1000928, 0x1000923 ] };
key <AB07> { [ 0x100092E, 0x1000902 ] };
diff --git a/xorg-server/xkeyboard-config/symbols/it b/xorg-server/xkeyboard-config/symbols/it
index 8dd4365de..e9d0f306b 100644
--- a/xorg-server/xkeyboard-config/symbols/it
+++ b/xorg-server/xkeyboard-config/symbols/it
@@ -61,7 +61,7 @@ xkb_symbols "nodeadkeys" {
key <BKSL> { [ ugrave, section, grave, breve ] };
};
-partial alphanueric_keys
+partial alphanumeric_keys
xkb_symbols "winkeys" {
include "it(basic)"
diff --git a/xorg-server/xkeyboard-config/symbols/kz b/xorg-server/xkeyboard-config/symbols/kz
index 9f6260238..4f807d182 100644
--- a/xorg-server/xkeyboard-config/symbols/kz
+++ b/xorg-server/xkeyboard-config/symbols/kz
@@ -69,8 +69,6 @@ key.type[group1] = "ALPHABETIC";
key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-
-key.type[group1]="TWO_LEVEL";
};
// Kikkarin KZ1
diff --git a/xorg-server/xkeyboard-config/symbols/lv b/xorg-server/xkeyboard-config/symbols/lv
index 8b0e9d719..f1b831605 100644
--- a/xorg-server/xkeyboard-config/symbols/lv
+++ b/xorg-server/xkeyboard-config/symbols/lv
@@ -408,7 +408,7 @@ xkb_symbols "minuskeydvorak" {
name[Group1]= "Latvian (US Dvorak, minus variant)";
- key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, mimus, underscore]};
+ key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]};
key <SPCE> {[space, space, minus, underscore]};
modifier_map Mod5 { <AR11> };
@@ -467,7 +467,7 @@ xkb_symbols "minuskeydvorakprogr" {
name[Group1]= "Latvian (programmer US Dvorak, minus variant)";
- key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, mimus, underscore]};
+ key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]};
key <SPCE> {[space, space, minus, underscore]};
modifier_map Mod5 { <AC11> };
diff --git a/xorg-server/xkeyboard-config/symbols/ru b/xorg-server/xkeyboard-config/symbols/ru
index 782a3d75a..2b34a4d52 100644
--- a/xorg-server/xkeyboard-config/symbols/ru
+++ b/xorg-server/xkeyboard-config/symbols/ru
@@ -1,5 +1,4 @@
-// based on
-// russian standard keyboard
+// Keyboard layouts for Russia.
// AEN <aen@logic.ru>
// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
@@ -7,83 +6,84 @@
// Windows layout
default partial alphanumeric_keys
xkb_symbols "winkeys" {
- include "ru(common)"
+ include "ru(common)"
name[Group1]= "Russian";
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
- key <AB10> { [ period, comma ] };
- key <BKSL> { [ backslash, slash ] };
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
};
partial hidden alphanumeric_keys
xkb_symbols "common" {
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, asterisk ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, bar ] };
- key <AB10> { [ slash, question ] };
- key <LSGT> { [ slash, bar ] };
-
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key.type[group1]="TWO_LEVEL";
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <AB10> { [ slash, question ] };
+ key <LSGT> { [ slash, bar ] };
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
include "kpdl(comma)"
};
partial alphanumeric_keys
xkb_symbols "legacy" {
- include "ru(common)"
+ include "ru(common)"
name[Group1]= "Russian (legacy)";
};
@@ -92,118 +92,121 @@ xkb_symbols "olpc" {
include "ru(common)"
- key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð
- key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„–
- key <AE04> { [ 4, dollar, semicolon ] };
- key <AE06> { [ 6, asciicircum, colon ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE09> { [ 9, parenleft, acute ] };
- key <AC12> { [ backslash, bar, slash ] };
+ key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð
+ key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„–
+ key <AE04> { [ 4, dollar, semicolon ] };
+ key <AE06> { [ 6, asciicircum, colon ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE09> { [ 9, parenleft, acute ] };
+ key <AC12> { [ backslash, bar, slash ] };
include "group(olpc)"
};
partial alphanumeric_keys
xkb_symbols "typewriter" {
+
include "ru(common)"
name[Group1]= "Russian (typewriter)";
- key <TLDE> { [ bar, plus ] };
- key <AE01> { [ numerosign, 1 ] };
- key <AE02> { [ minus, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ quotedbl, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
- key <AE11> { [ exclam, equal ] };
- key <AE12> { [ semicolon, backslash ] };
-
- key <BKSL> { [ parenright, parenleft ] };
-
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+
+ key <TLDE> { [ bar, plus ] };
+ key <AE01> { [ numerosign, 1 ] };
+ key <AE02> { [ minus, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ quotedbl, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+ key <AE11> { [ exclam, equal ] };
+ key <AE12> { [ semicolon, backslash ] };
+
+ key <BKSL> { [ parenright, parenleft ] };
+
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
};
partial alphanumeric_keys
xkb_symbols "typewriter-legacy" {
+
include "ru(common)"
name[Group1]= "Russian (typewriter, legacy)";
- key <TLDE> { [ apostrophe, quotedbl ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ numerosign, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
- key <BKSL> { [ parenleft, parenright ] };
-
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+
+ key <TLDE> { [ apostrophe, quotedbl ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ numerosign, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+
+ key <BKSL> { [ parenleft, parenright ] };
+
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
};
partial alphanumeric_keys
xkb_symbols "phonetic" {
- name[Group1]= "Russian (phonetic)";
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, Cyrillic_io ] };
- key <AE04> { [ 4, Cyrillic_IO ] };
- key <AE05> { [ 5, Cyrillic_hardsign ] };
- key <AE06> { [ 6, Cyrillic_HARDSIGN ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
-
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <AB08> { [ comma, less ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <LSGT> { [ bar, brokenbar ] };
-
- key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
-
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <BKSL> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, Cyrillic_io ] };
+ key <AE04> { [ 4, Cyrillic_IO ] };
+ key <AE05> { [ 5, Cyrillic_hardsign ] };
+ key <AE06> { [ 6, Cyrillic_HARDSIGN ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <AB08> { [ comma, less ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <LSGT> { [ bar, brokenbar ] };
+
+ key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <BKSL> { [ Cyrillic_e, Cyrillic_E ] };
};
partial alphanumeric_keys
@@ -212,146 +215,128 @@ xkb_symbols "phonetic_winkeys" {
include "ru(phonetic)"
name[Group1]= "Russian (phonetic WinKeys)";
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
-
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
};
partial alphanumeric_keys
xkb_symbols "tt" {
+
include "ru(winkeys)"
name[Group1]= "Tatar";
key.type[group1]="FOUR_LEVEL";
- key <TLDE> { [ 0x010004bb, 0x010004ba,
- Cyrillic_io, Cyrillic_IO ] };
- key <AD02> { [ 0x010004e9, 0x010004e8,
- Cyrillic_tse, Cyrillic_TSE ] };
- key <AD09> { [ 0x010004d9, 0x010004d8,
- Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD12> { [ 0x010004af, 0x010004ae,
- Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
- key <AC10> { [ 0x010004a3, 0x010004a2,
- Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AB07> { [ 0x01000497, 0x01000496,
- Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <TLDE> { [ 0x010004bb, 0x010004ba, Cyrillic_io, Cyrillic_IO ] };
+ key <AD02> { [ 0x010004e9, 0x010004e8, Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD09> { [ 0x010004d9, 0x010004d8, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD12> { [ 0x010004af, 0x010004ae, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <AC10> { [ 0x010004a3, 0x010004a2, Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB07> { [ 0x01000497, 0x01000496, Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
include "level3(ralt_switch)"
-
};
partial alphanumeric_keys
xkb_symbols "os_legacy" {
- include "ru(common)"
+ include "ru(common)"
name[Group1]= "Ossetian (legacy)";
- key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
- key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
};
partial alphanumeric_keys
xkb_symbols "os_winkeys" {
- include "ru(winkeys)"
+ include "ru(winkeys)"
name[Group1]= "Ossetian (WinKeys)";
- key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
- key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
};
partial alphanumeric_keys
xkb_symbols "cv" {
- include "ru(winkeys)"
+ include "ru(winkeys)"
name[Group1]= "Chuvash";
key.type[group1]="FOUR_LEVEL";
- key <AD03> { [ Cyrillic_u, Cyrillic_U,
- U04F3, U04F2 ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE,
- U04D7, U04D6 ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A,
- U04D1, U04D0 ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES,
- U04AB, U04AA ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F3, U04F2 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U04D7, U04D6 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D1, U04D0 ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, U04AB, U04AA ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "udm" {
- include "ru(winkeys)"
+ include "ru(winkeys)"
name[Group1]= "Udmurt";
key.type[group1]="FOUR_LEVEL";
- key <AE01> { [ question, exclam, 1, 1 ] };
- key <AE02> { [ parenleft, quotedbl, 2, 2 ] };
- key <AE03> { [ parenright, numerosign, 3, 3 ] };
- key <AE04> { [ colon, semicolon, 4, 4 ] };
- key <AE05> { [ asterisk, percent, 5, 5 ] };
- key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] };
- key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] };
- key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] };
- key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] };
- key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] };
+ key <AE01> { [ question, exclam, 1, 1 ] };
+ key <AE02> { [ parenleft, quotedbl, 2, 2 ] };
+ key <AE03> { [ parenright, numerosign, 3, 3 ] };
+ key <AE04> { [ colon, semicolon, 4, 4 ] };
+ key <AE05> { [ asterisk, percent, 5, 5 ] };
+ key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] };
+ key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] };
+ key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] };
+ key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] };
+ key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] };
include "level3(ralt_switch)"
};
partial alphanumeric_keys
xkb_symbols "cv_latin" {
- include "us(alt-intl)"
+ include "us(alt-intl)"
name[Group1]= "Chuvash (Latin)";
key.type[group1]="FOUR_LEVEL";
- key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] };
- key <AD02> { [ w, W, udiaeresis, Udiaeresis ] };
- key <AD03> { [ e, E, 0x01000115, 0x01000114 ] };
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
- key <AC01> { [ a, A, abreve, Abreve ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC05> { [ g, G, gbreve, Gbreve ] };
- key <AC07> { [ j, J, 0x01000131, 0x01000130 ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] };
+ key <AD02> { [ w, W, udiaeresis, Udiaeresis ] };
+ key <AD03> { [ e, E, 0x01000115, 0x01000114 ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AC01> { [ a, A, abreve, Abreve ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC05> { [ g, G, gbreve, Gbreve ] };
+ key <AC07> { [ j, J, 0x01000131, 0x01000130 ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
include "level3(ralt_switch)"
-
};
// Komi language layout
-// based on
-// russian standard keyboard
// Vlad Shakhov <lumpen.intellectual@gmail.com>
-// Last Changes 2007/10/23 by Vlad Shakhov <lumpen.intellectual@gmail.com>
-
+// last changes 2007/10/23
partial alphanumeric_keys
xkb_symbols "kom" {
include "ru(winkeys)"
-
name[Group1]= "Komi";
key.type[group1]="FOUR_LEVEL_ALPHABETIC";
-// cyrilllic o with diaeresis
- key <AC07> { [ Cyrillic_o, Cyrillic_O,
- U04E7, U04E6 ] };
+ // cyrilllic o with diaeresis
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] };
-// hard I as additional key for soft Cyrillic_I
- key <AB05> { [ Cyrillic_i, Cyrillic_I,
- Ukrainian_i, Ukrainian_I ] };
+ // hard I as additional key for soft Cyrillic_I
+ key <AB05> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] };
include "level3(ralt_switch)"
};
@@ -364,37 +349,23 @@ partial alphanumeric_keys
xkb_symbols "sah" {
include "ru(winkeys)"
-
name[Group1]= "Yakut";
key.type[group1]="FOUR_LEVEL_ALPHABETIC";
- key <TLDE> { [ Cyrillic_io, Cyrillic_IO,
- U04EB, U04EA ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI,
- U048B, U048A ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U,
- Cyrillic_u_straight, Cyrillic_U_straight ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA,
- U04C4, U04C3 ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN,
- U04A5, U04A4 ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE,
- U0495, U0494 ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE,
- U04E1, U04E0 ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA,
- Cyrillic_shha, Cyrillic_SHHA ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O,
- Cyrillic_o_bar, Cyrillic_O_bar ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE,
- U0461, U0460 ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE,
- Cyrillic_u_macron, Cyrillic_U_macron ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM,
- U04C8, U04C7 ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I,
- Cyrillic_i_macron, Cyrillic_I_macron ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO, U04EB, U04EA ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U048B, U048A ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U04C4, U04C3 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U0495, U0494 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U0461, U0460 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_u_macron, Cyrillic_U_macron ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM, U04C8, U04C7 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I, Cyrillic_i_macron, Cyrillic_I_macron ] };
include "level3(ralt_switch)"
};
@@ -404,38 +375,37 @@ xkb_symbols "sah" {
//based on the Kalmyk language layout: http://soft.oyrat.org/
//Nikolay Korneev <halmg@oyrat.org>
//Toli Miron <mirontoli@gmail.com>
-
partial alphanumeric_keys
xkb_symbols "xal" {
- include "ru(winkeys)"
+ include "ru(winkeys)"
name[Group1]= "Kalmyk";
key.type[group1]="FOUR_LEVEL";
- key <AE01> { [ question, exclam, 1 ] };
- key <AE02> { [ numerosign, quotedbl, 2 ] };
- key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] };
- key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] };
- key <AE05> { [ asterisk, percent, 5 ] };
- key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] };
- key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] };
- key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] };
- key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] };
- key <AE10> { [ semicolon, colon, 0 ] };
-
- key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
-
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] };
- key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] };
+ key <AE01> { [ question, exclam, 1 ] };
+ key <AE02> { [ numerosign, quotedbl, 2 ] };
+ key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] };
+ key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] };
+ key <AE05> { [ asterisk, percent, 5 ] };
+ key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] };
+ key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] };
+ key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] };
+ key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] };
+ key <AE10> { [ semicolon, colon, 0 ] };
+
+ key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
+
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] };
include "level3(ralt_switch)"
};
@@ -444,84 +414,84 @@ partial alphanumeric_keys
xkb_symbols "dos" {
include "ru(common)"
-
name[Group1]= "Russian (DOS)";
- key <TLDE> { [ parenright, parenleft ] };
- key <AE04> { [ 4, currency ] };
- key <AE09> { [ 9, question ] };
- key <AE10> { [ 0, percent ] };
+ key <TLDE> { [ parenright, parenleft ] };
+ key <AE04> { [ 4, currency ] };
+ key <AE09> { [ 9, question ] };
+ key <AE10> { [ 0, percent ] };
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
};
partial alphanumeric_keys
xkb_symbols "bak" {
- include "ru(winkeys)"
+ include "ru(winkeys)"
name[Group1]= "Bashkirian";
+
key.type[group1]="FOUR_LEVEL";
- key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] };
- key <AE01> { [ exclam, quotedbl, 1, 1 ] };
- key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
- key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
- key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
- key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
- key <AE06> { [ colon, semicolon, 6, 6 ] };
- key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
- key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
- key <AE09> { [ question, parenleft, 9, 9 ] };
- key <AE10> { [ numerosign, parenright, 0, 0 ] };
- key <AE11> { [ minus, percent, minus, underscore ]};
- key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]};
- key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]};
+ key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] };
+ key <AE01> { [ exclam, quotedbl, 1, 1 ] };
+ key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
+ key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
+ key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
+ key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
+ key <AE06> { [ colon, semicolon, 6, 6 ] };
+ key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
+ key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
+ key <AE09> { [ question, parenleft, 9, 9 ] };
+ key <AE10> { [ numerosign, parenright, 0, 0 ] };
+ key <AE11> { [ minus, percent, minus, underscore ] };
+ key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ] };
+ key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ] };
include "level3(ralt_switch)"
};
-// Serbian charecters added as third level symbols to Russian keyboard layout.
-
+// Serbian characters are added as third-level symbols to Russian keyboard layout.
partial alphanumeric_keys
xkb_symbols "srp" {
- include "ru(common)"
- include "level3(ralt_switch)"
+ include "ru(common)"
name[Group1]= "Serbian (Russia)";
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AB10> { [ period, comma ] };
- key <BKSL> { [ backslash, slash ] };
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] };
+
+ include "level3(ralt_switch)"
};
// Mari language layout
-// based on Russian standard keyboard
// http://www.marlamuter.ru/
partial alphanumeric_keys
xkb_symbols "chm" {
- include "ru(common)"
+ include "ru(common)"
name[Group1]= "Mari";
key.type[group1]="FOUR_LEVEL_ALPHABETIC";
- key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] };
- key <AC02> { [ Cyrillic_ui, Cyrillic_UI, U04F9, U04F8 ] };
- key <AD06> { [ Cyrillic_n, Cyrillic_N, U04A5, U04A4 ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] };
- key <AC10> { [ Cyrillic_zh, Cyrillic_ZH, U04EB, U04EA ] };
- key <AC01> { [ Cyrillic_f, Cyrillic_F, UF537, UF536 ] };
+
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, U04F9, U04F8 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U04EB, U04EA ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF, UF537, UF536 ] };
include "level3(ralt_switch)"
};
@@ -529,71 +499,73 @@ xkb_symbols "chm" {
// EXTRAS:
// Church Slavonic language layout
-// based on
-// russian standard keyboard
-// Aleksandr Andreev and Yuri Shardt
-// Last Changes 2010/08/01. Contact <aleksandr.andreev@gmail.com>
-
+// based on the Russian standard keyboard
+// by Aleksandr Andreev and Yuri Shardt
+// last changes 2010/08/01; contact <aleksandr.andreev@gmail.com>
partial alphanumeric_keys
-xkb_symbols "chu"
-{
- name[Group1]= "Church Slavonic";
- key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
- key <AE01> { [ U0461, U0460, U047D, U047C] }; // ѡ Ѡ ѽ Ѽ
- key <AE02> { [ U0454, U0404, U0465, U0464] }; // є Є ѥ Ѥ
- key <AE03> { [ U046F, U046E, U0469, U0468] }; // ѯ Ѯ ѩ Ѩ
- key <AE04> { [ U0471, U0470, U046D, U046C] }; // ѱ Ѱ ѭ Ѭ
- key <AE05> { [ U0473, U0472, UA657, UA656] }; // ѳ Ѳ iotified A
- key <AE06> { [ U0475, U0474, U0477, U0476] }; // ѵ Ѵ ѷ Ѷ
- key <AE07> { [ U047B, U047A, UA64D, UA64C] }; // ѻ Ѻ ꙍ Ꙍ
- key <AE08> { [ U047F, U047E, U046B, U046A] }; // ѿ Ѿ ѫ Ѫ
- key <AE09> { [ U0455, U0405, parenleft, U002A ] }; // ѕ Ѕ ( *
- key <AE10> { [ Cyrillic_u, Cyrillic_U, parenright, U0488 ] }; // у У ) NB: for diagraph Ouk, use Cyrillic_o + Cyrillic_u
- key <AE11> { [ U0483, U0486, U0487, U005F] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore)
- key <AE12> { [ U0301, U0300, U0484, UA67E] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka)
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] };
- key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)!
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] };
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok
- key <BKSL> { [backslash, slash, colon, question] }; // \ / : ? (note, for Slavonic question use semicolon
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] };
- key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat
- key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] };
- key <AB10> { [ period, comma, semicolon, exclam ] };
+xkb_symbols "chu" {
+
+ name[Group1]= "Church Slavonic";
+
+ key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
+ key <AE01> { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ
+ key <AE02> { [ U0454, U0404, U0465, U0464 ] }; // є Є ѥ Ѥ
+ key <AE03> { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ
+ key <AE04> { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ
+ key <AE05> { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A
+ key <AE06> { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ
+ key <AE07> { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ
+ key <AE08> { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ
+ key <AE09> { [ U0455, U0405,parenleft,U002A ] }; // ѕ Ѕ ( *
+ key <AE10> { [Cyrillic_u,Cyrillic_U,parenright,U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u
+ key <AE11> { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore)
+ key <AE12> { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka)
+
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] };
+ key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)!
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok
+ key <BKSL> { [ backslash, slash, colon, question ] }; // \ / : ? NB: for Slavonic question, use semicolon
+
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] };
+ key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat
+
+ key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] };
+ key <AB10> { [ period, comma, semicolon, exclam ] };
};
// RUU (Russian-Ukrainian United keyboard layout).
-// Modified Russian standart keyboard with third level contains Ukrainian
-// and Belorusian alphabetic letters and commonly used Unicode symbols.
-// Description http://wiki.opennet.ru/RUU [russian]
+// This is a modified Russian standard keyboard, with the third level containing
+// Ukrainian and Belorusian alphabetic letters and commonly used Unicode symbols.
+// For a description see http://wiki.opennet.ru/RUU [in Russian].
// Vasyĺ V. Vercynśkyj <fuckel@ukr.net>
-// Last Changes 2011/05/11
+// last changes 2011/05/11
//
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
// │ ' ~ │ ! ≈ │ " ∞ │ № ₴ │ ; € │ % ‰ │ : ≤ │ ? ≥ │ * × │ ( { │ ) } │ _ – │ + ± ┃ ⌫ ┃
@@ -611,43 +583,43 @@ xkb_symbols "chu"
// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
-
-
-
partial alphanumeric_keys
xkb_symbols "ruu" {
- include "ru(common)"
+ include "ru(common)"
name[Group1]= "Russian (with Ukrainian-Belorussian layout)";
- key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
- key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To
- key <AE02> { [ 2, quotedbl, currency, infinity ] };
- key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
- key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
- key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign
- key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To
- key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To
- key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign
- key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
- key <AE10> { [ 0, parenright, bracketright, braceright ] };
- key <AE11> { [ minus, underscore, emdash, endash ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
- key <AD07> { [Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign
- key <AD12> { [Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie,Ukrainian_IE ] };
- key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
- key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
- key <AB10> { [ period, comma, slash, ellipsis ] };
+ key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
+ key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To
+ key <AE02> { [ 2, quotedbl, currency, infinity ] };
+ key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
+ key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign
+ key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To
+ key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To
+ key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign
+ key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
+ key <AE10> { [ 0, parenright, bracketright, braceright ] };
+ key <AE11> { [ minus, underscore, emdash, endash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] };
+
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] };
+ key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar
+
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
+ key <AB10> { [ period, comma, slash, ellipsis ] };
include "level3(ralt_switch)"
};
@@ -660,18 +632,18 @@ partial alphanumeric_keys
// Apple layout
partial alphanumeric_keys
xkb_symbols "mac" {
-include "ru(common)"
+ include "ru(common)"
name[Group1]= "Russian (Macintosh)";
- key <LSGT> { [ less, greater ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, percent ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <TLDE> { [ bracketright, bracketleft ] };
- key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <LSGT> { [ less, greater ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, percent ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <TLDE> { [ bracketright, bracketleft ] };
+ key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] };
};
diff --git a/xorg-server/xkeyboard-config/symbols/se b/xorg-server/xkeyboard-config/symbols/se
index 320a1861d..be07cadf9 100644
--- a/xorg-server/xkeyboard-config/symbols/se
+++ b/xorg-server/xkeyboard-config/symbols/se
@@ -309,3 +309,54 @@ partial alphanumeric_keys
xkb_symbols "sun_type6" {
include "sun_vndr/se(sun_type6)"
};
+
+partial alphanumeric_keys
+xkb_symbols "dvorak_a5" {
+
+ include "se(basic)"
+
+ name[Group1]="Swedish (Dvorak A5)";
+
+ key <AE12> { [ dead_acute, dead_grave, plusminus, none ] };
+
+ key <AD01> { [ aring, Aring, braceleft, none ] };
+ key <AD02> { [ adiaeresis, Adiaeresis, braceright, none ] };
+ key <AD03> { [ odiaeresis, Odiaeresis, bracketleft, none ] };
+ key <AD04> { [ p, P, bracketright, none ] };
+ key <AD05> { [ y, Y, dollar, none ] };
+ key <AD06> { [ f, F, quotedbl, none ] };
+ key <AD07> { [ g, G, question, none ] };
+ key <AD08> { [ c, C, ampersand, none ] };
+ key <AD09> { [ r, R, less, none ] };
+ key <AD10> { [ l, L, greater, none ] };
+ key <AD11> { [ comma, semicolon, dead_cedilla, none ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ] };
+
+ key <AC01> { [ a, A, semicolon, none ] };
+ key <AC02> { [ o, O, slash, none ] };
+ key <AC03> { [ e, E, parenleft, none ] };
+ key <AC04> { [ u, U, parenright, none ] };
+ key <AC05> { [ i, I, bar, none ] };
+ key <AC06> { [ d, D, numbersign, none ] };
+ key <AC07> { [ h, H, asciicircum, none ] };
+ key <AC08> { [ t, T, numbersign, none ] };
+ key <AC09> { [ n, N, quotedbl, none ] };
+ key <AC10> { [ s, S, asciitilde, none ] };
+ key <AC11> { [ minus, underscore, grave, none ] };
+
+ key <AB01> { [ period, colon, colon, none ] };
+ key <AB02> { [ q, Q, equal, none ] };
+ key <AB03> { [ j, J, at, none ] };
+ key <AB04> { [ k, K, exclam, none ] };
+ key <AB05> { [ x, X, backslash, none ] };
+ key <AB06> { [ b, B, percent, none ] };
+ key <AB07> { [ m, M, grave, none ] };
+ key <AB08> { [ w, W, lstroke, none ] };
+ key <AB09> { [ v, V, leftdoublequotemark, none ] };
+ key <AB10> { [ z, Z, guillemotleft, none ] };
+
+ key <BKSL> { [ apostrophe, asterisk, asterisk, none ] };
+
+};
+
+
diff --git a/xorg-server/xkeyboard-config/symbols/sk b/xorg-server/xkeyboard-config/symbols/sk
index 2162d533d..3be0b92e8 100644
--- a/xorg-server/xkeyboard-config/symbols/sk
+++ b/xorg-server/xkeyboard-config/symbols/sk
@@ -1,105 +1,105 @@
default partial alphanumeric_keys
xkb_symbols "basic" {
- // This layout conforms to a new sk compromise standard designed
- // to satisfy most unix, windows and mac users.
- // 2001 by Kamil Toman <ktoman@email.cz>
+ // This layout conforms to a new Slovak compromise standard
+ // designed to satisfy most Unix, Windows and Mac users.
+ // 2001 by Kamil Toman <ktoman@email.cz>
include "latin"
-
name[Group1] = "Slovak";
- key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, dead_tilde ] };
- key <AE02> { [ lcaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ tcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
- key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
- key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] };
- key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
-
- key <AD01> { [ q, Q, backslash, NoSymbol ] };
- key <AD02> { [ w, W, bar, Nosymbol ] };
- key <AD03> { [ e, E, EuroSign, NoSymbol ] };
- key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
- key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
- key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
- key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
- key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
- key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
- key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
-
- key <AD11> { [ uacute, slash, bracketleft, division ] };
- key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] };
-
- key <AC01> { [ a, A, asciitilde, NoSymbol ] };
- key <AC02> { [ s, S, dstroke, NoSymbol ] };
- key <AC03> { [ d, D, Dstroke, NoSymbol ] };
- key <AC04> { [ f, F, bracketleft, NoSymbol ] };
- key <AC05> { [ g, G, bracketright, NoSymbol ] };
- key <AC06> { [ h, H, grave, NoSymbol ] };
- key <AC07> { [ j, J, apostrophe, NoSymbol ] };
- key <AC08> { [ k, K, lstroke, NoSymbol ] };
- key <AC09> { [ l, L, Lstroke, NoSymbol ] };
-
- key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] };
- key <AC11> { [ section, exclam, apostrophe, ssharp ] };
- key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
- key <BKSL> { [ ncaron, parenright, backslash, bar ] };
-
- key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
- key <AB01> { [ y, Y, degree, NoSymbol ] };
- key <AB02> { [ x, X, numbersign, Nosymbol ] };
- key <AB03> { [ c, C, ampersand, NoSymbol ] };
- key <AB04> { [ v, V, at, NoSymbol ] };
- key <AB05> { [ b, B, braceleft, NoSymbol ] };
- key <AB06> { [ n, N, braceright, NoSymbol ] };
- key <AB07> { [ m, M, asciicircum, NoSymbol ] };
- key <AB08> { [ comma, question, less, NoSymbol ] };
- key <AB09> { [ period, colon, greater, NoSymbol ] };
- key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
+ key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, dead_tilde ] };
+ key <AE02> { [ lcaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ tcaron, 5, percent, dead_abovering]};
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, dead_grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot] };
+ key <AE09> { [ iacute, 9, braceleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis]};
+ key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, backslash, NoSymbol ] };
+ key <AD02> { [ w, W, bar, Nosymbol ] };
+ key <AD03> { [ e, E, EuroSign, NoSymbol ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol ] };
+ key <AD06> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol ] };
+ key <AD09> { [ o, O, NoSymbol, NoSymbol ] };
+ key <AD10> { [ p, P, NoSymbol, NoSymbol ] };
+
+ key <AD11> { [ uacute, slash, bracketleft, division ] };
+ key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] };
+
+ key <AC01> { [ a, A, asciitilde, NoSymbol ] };
+ key <AC02> { [ s, S, dstroke, NoSymbol ] };
+ key <AC03> { [ d, D, Dstroke, NoSymbol ] };
+ key <AC04> { [ f, F, bracketleft, NoSymbol ] };
+ key <AC05> { [ g, G, bracketright, NoSymbol ] };
+ key <AC06> { [ h, H, grave, NoSymbol ] };
+ key <AC07> { [ j, J, apostrophe, NoSymbol ] };
+ key <AC08> { [ k, K, lstroke, NoSymbol ] };
+ key <AC09> { [ l, L, Lstroke, NoSymbol ] };
+
+ key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] };
+ key <AC11> { [ section, exclam, apostrophe, ssharp ] };
+ key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] };
+ key <BKSL> { [ ncaron, parenright, backslash, bar ] };
+
+ key <LSGT> { [ backslash, bar, slash, NoSymbol ] };
+ key <AB01> { [ y, Y, degree, NoSymbol ] };
+ key <AB02> { [ x, X, numbersign, Nosymbol ] };
+ key <AB03> { [ c, C, ampersand, NoSymbol ] };
+ key <AB04> { [ v, V, at, NoSymbol ] };
+ key <AB05> { [ b, B, braceleft, NoSymbol ] };
+ key <AB06> { [ n, N, braceright, NoSymbol ] };
+ key <AB07> { [ m, M, asciicircum, NoSymbol ] };
+ key <AB08> { [ comma, question, less, NoSymbol ] };
+ key <AB09> { [ period, colon, greater, NoSymbol ] };
+ key <AB10> { [ minus, underscore, asterisk, NoSymbol ] };
key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
include "level3(ralt_switch)"
};
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
xkb_symbols "bksl" {
- include "sk(basic)"
+ // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key).
+
+ include "sk(basic)"
name[Group1] = "Slovak (extended Backslash)";
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
};
partial alphanumeric_keys
xkb_symbols "qwerty" {
- // This layout should work exactly as a sk with the exception
- // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped).
+ // This layout works exactly as the basic Slovak one with the exception
+ // of the 'Z' and 'Y' keys, which are in Qwerty style (i.e. swapped).
// 2001 by Kamil Toman <ktoman@email.cz>
include "sk(basic)"
-
name[Group1] = "Slovak (qwerty)";
- key <AB01> { [ z, Z, degree, NoSymbol ] };
- key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
+ key <AB01> { [ z, Z, degree, NoSymbol ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol ] };
};
-// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key)
xkb_symbols "qwerty_bksl" {
- include "sk(qwerty)"
+ // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key).
+
+ include "sk(qwerty)"
name[Group1] = "Slovak (qwerty, extended Backslash)";
- key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
+ key <BKSL> { [ backslash, bar, slash, NoSymbol ] };
};
// EXTRAS:
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
index d5a7f5b04..15e96ef15 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
@@ -40,7 +40,7 @@ xkb_symbols "sun_type6" {
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicirum ] };
+ key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
index 18696bb3f..0d161a7f0 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
@@ -34,7 +34,7 @@ xkb_symbols "sun_type6" {
include "sun_vndr/us(sun_type6)"
- key <TLDE> { [ semicolon, dead_abovering, grave asciitilde ] };
+ key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] };
key <AE01> { [ plus, 1, exclam, asciitilde ] };
key <AE02> { [ lcaron, 2, at, dead_caron ] };
key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
diff --git a/xorg-server/xkeyboard-config/symbols/tr b/xorg-server/xkeyboard-config/symbols/tr
index 1c288524b..15dd59ca6 100644
--- a/xorg-server/xkeyboard-config/symbols/tr
+++ b/xorg-server/xkeyboard-config/symbols/tr
@@ -1,9 +1,8 @@
-// based on
-// Turkish keyboard symbols for PC and xkb
-// This file distributed without any expressed or implied warranty
+// Keyboard layouts for Turkey.
+// This file distributed without any expressed or implied warranty.
// Nilgün Belma Bugüner <nilgun@belgeler.org>, 2005
-//Default Layout (Turkish Q)
+// Turkish Q layout
default partial
xkb_symbols "basic" {
@@ -11,54 +10,54 @@ xkb_symbols "basic" {
name[Group1]="Turkish";
- key <AE01> { [ 1, exclam, greater, exclamdown ] };
- key <AE02> { [ 2, apostrophe, sterling, twosuperior ] };
- key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
- key <AE04> { [ 4, plus, dollar, onequarter ] };
- key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { [ 7, slash, braceleft, VoidSymbol ] };
- key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ asterisk, question, backslash, questiondown ] };
- key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
-
- key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
- key <AD05> { [ t, T, trademark, VoidSymbol ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
- [ idotless, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
- key <AD11> { [ gbreve, Gbreve ] };
- key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] };
-
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, section, VoidSymbol ] };
- key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
- key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] };
- key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ i, Iabovedot, apostrophe, dead_caron ] };
- key <TLDE> { [ quotedbl, eacute, less, degree ] };
-
- key <BKSL> { [ comma, semicolon, grave, dead_grave ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
- key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
- key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] };
+ key <AE01> { [ 1, exclam, greater, exclamdown ] };
+ key <AE02> { [ 2, apostrophe, sterling, twosuperior ] };
+ key <AE03> { [ 3,asciicircum, numbersign, threesuperior ] };
+ key <AE04> { [ 4, plus, dollar, onequarter ] };
+ key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { [ 7, slash, braceleft, VoidSymbol ] };
+ key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ asterisk, question, backslash, questiondown ] };
+ key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
+
+ key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
+ key <AD05> { [ t, T, trademark, VoidSymbol ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
+ [ idotless, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
+ key <AD11> { [ gbreve, Gbreve ] };
+ key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] };
+
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, section, VoidSymbol ] };
+ key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
+ key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] };
+ key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ i, Iabovedot, apostrophe, dead_caron ] };
+ key <TLDE> { [ quotedbl, eacute, less, degree ] };
+
+ key <BKSL> { [ comma, semicolon, grave, dead_grave ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
+ key <AB09> { [ ccedilla, Ccedilla,periodcentered, division ] };
+ key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] };
include "kpdl(comma)"
include "level3(ralt_switch)"
};
-// Turkish F Layout
+// Turkish F layout
partial
xkb_symbols "f" {
@@ -66,64 +65,64 @@ xkb_symbols "f" {
name[Group1]="Turkish (F)";
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] };
- key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] };
- key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] };
- key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] };
- key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ slash, question, backslash, questiondown ] };
- key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
-
- key <AD01> { [ f, F, at, VoidSymbol ] };
- key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] };
- key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ idotless, I, paragraph, VoidSymbol ] };
- key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD06> { [ d, D, yen, VoidSymbol ] };
- key <AD07> { [ r, R, registered, VoidSymbol ] };
- key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] };
- key <AD09> { [ h, H, degree, VoidSymbol ] };
- key <AD10> { [ p, P, sterling, VoidSymbol ] };
- key <AD11> { [ q, Q, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ w, W, asciitilde, dead_breve ] };
-
- key <AC01> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
- [ i, Iabovedot, icircumflex, Icircumflex ] };
- key <AC03> { [ e, E, EuroSign, VoidSymbol ] };
- key <AC04> { [ a, A, acircumflex, Acircumflex ] };
- key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] };
- key <AC06> { [ t, T, trademark, VoidSymbol ] };
- key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ m, M, mu, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ y, Y, acute, dead_acute ] };
- key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] };
- key <TLDE> { [ plus, asterisk, notsign, plusminus ] };
-
- key <BKSL> { [ x, X, grave, dead_grave ] };
- key <AB01> { [ j, J, guillemotleft, VoidSymbol ] };
- key <AB02> { [odiaeresis, Odiaeresis, guillemotright, VoidSymbol ] };
- key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] };
- key <AB04> { [ c, C, cent, copyright ] };
- key <AB05> { [ ccedilla, Ccedilla, rightdoublequotemark, VoidSymbol] };
- key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] };
- key <AB07> { [ s, S, section, VoidSymbol ] };
- key <AB08> { [ b, B, multiply, nobreakspace ] };
- key <AB09> { [ period, colon, division, dead_abovedot] };
- key <AB10> { [ comma, semicolon, periodcentered, VoidSymbol ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] };
+ key <AE03> { [ 3,asciicircum, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] };
+ key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] };
+ key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ slash, question, backslash, questiondown ] };
+ key <AE12> { [ minus, underscore, bar, VoidSymbol ] };
+
+ key <AD01> { [ f, F, at, VoidSymbol ] };
+ key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] };
+ key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ idotless, I, paragraph, VoidSymbol ] };
+ key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD06> { [ d, D, yen, VoidSymbol ] };
+ key <AD07> { [ r, R, registered, VoidSymbol ] };
+ key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] };
+ key <AD09> { [ h, H, degree, VoidSymbol ] };
+ key <AD10> { [ p, P, sterling, VoidSymbol ] };
+ key <AD11> { [ q, Q,dead_diaeresis,dead_abovering ] };
+ key <AD12> { [ w, W, asciitilde, dead_breve ] };
+
+ key <AC01> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC",
+ [ i, Iabovedot, icircumflex, Icircumflex ] };
+ key <AC03> { [ e, E, EuroSign, VoidSymbol ] };
+ key <AC04> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] };
+ key <AC06> { [ t, T, trademark, VoidSymbol ] };
+ key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ m, M, mu, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ y, Y, acute, dead_acute ] };
+ key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] };
+ key <TLDE> { [ plus, asterisk, notsign, plusminus ] };
+
+ key <BKSL> { [ x, X, grave, dead_grave ] };
+ key <AB01> { [ j, J, guillemotleft, VoidSymbol ] };
+ key <AB02> { [odiaeresis, Odiaeresis,guillemotright, VoidSymbol ] };
+ key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] };
+ key <AB04> { [ c, C, cent, copyright ] };
+ key <AB05> { [ ccedilla, Ccedilla,rightdoublequotemark, VoidSymbol ] };
+ key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] };
+ key <AB07> { [ s, S, section, VoidSymbol ] };
+ key <AB08> { [ b, B, multiply, nobreakspace ] };
+ key <AB09> { [ period, colon, division, dead_abovedot ] };
+ key <AB10> { [ comma, semicolon,periodcentered, VoidSymbol ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
include "kpdl(comma)"
include "level3(ralt_switch)"
};
-// Turkish Alt-Q Layout
+// Turkish Alt-Q layout
partial
xkb_symbols "alt" {
@@ -135,19 +134,19 @@ xkb_symbols "alt" {
key <AE08> { [ 8, asterisk, leftt, topt ] };
key <AE09> { [ 9, parenleft, rightt, bott ] };
key <AE10> { [ 0, parenright, lowrightcorner, uprightcorner ] };
- key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] };
- key <AE12> { [ equal, plus, crossinglines ] };
+ key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] };
+ key <AE12> { [ equal, plus, crossinglines ] };
- key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
-// key <AD05> { [ t, T, trademark, VoidSymbol >
- key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AD08> { [ i, I, idotless, Iabovedot ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, scedilla, Scedilla ] };
- key <AC05> { [ g, G, gbreve, Gbreve ] };
+ key <AD03> { [ e, E, EuroSign, VoidSymbol ] };
+// key <AD05> { [ t, T, trademark, VoidSymbol >
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, idotless, Iabovedot ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC05> { [ g, G, gbreve, Gbreve ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
include "level3(ralt_switch)"
};
@@ -155,26 +154,18 @@ xkb_symbols "alt" {
partial alphanumeric_keys
xkb_symbols "Sundeadkeys" {
-
- // For naming consistency
include "tr(basic)"
-
};
partial alphanumeric_keys
xkb_symbols "sundeadkeys" {
-
- // For naming consistency
include "tr(Sundeadkeys)"
-
name[Group1]="Turkish (Sun dead keys)";
};
-// Kurdish Q Layout
+// Kurdish Q layout
// Erdal Ronahi <erdal.ronahi@gmail.com>, 2006
// http://ferheng.org
-// http://www.pckurd.net
-
partial
xkb_symbols "ku" {
@@ -182,14 +173,14 @@ xkb_symbols "ku" {
name[Group1]="Kurdish (Turkey, Latin Q)";
- key <AD08> { [ i, I, idotless, I ] };
- key <AD11> { [ x, X, gbreve, Gbreve ] };
- key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron] };
- key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] };
- key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
+ key <AD08> { [ i, I, idotless, I ] };
+ key <AD11> { [ x, X, gbreve, Gbreve ] };
+ key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron ] };
+ key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] };
+ key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
};
-// Kurdish F Layout
+// Kurdish F layout
partial
xkb_symbols "ku_f" {
@@ -197,18 +188,17 @@ xkb_symbols "ku_f" {
name[Group1]="Kurdish (Turkey, F)";
- key <AD03> { [ x, X, gbreve, Gbreve] };
- key <AD04> { [ i, I, paragraph, VoidSymbol ] };
- key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
-
- key <AC01> { [ ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] };
- key <AC02> { [ icircumflex, Icircumflex, i, Iabovedot ] };
- key <AC05> { [ u, U, udiaeresis, Udiaeresis ] };
- key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
+ key <AD03> { [ x, X, gbreve, Gbreve ] };
+ key <AD04> { [ i, I, paragraph, VoidSymbol ] };
+ key <AD05> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AC01> { [ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] };
+ key <AC02> { [icircumflex, Icircumflex, i, Iabovedot ] };
+ key <AC05> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] };
};
-// Kurdish Alt-Q Layout
+// Kurdish Alt-Q layout
partial
xkb_symbols "ku_alt" {
@@ -216,56 +206,61 @@ xkb_symbols "ku_alt" {
name[Group1]="Kurdish (Turkey, Latin Alt-Q)";
- key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
};
-// Turkish international Q Layout
+// Turkish international Q layout
// Alexis Pellicier <alexis.pellicier@nds.k12.tr>, 2007
partial
xkb_symbols "intl" {
+
include "latin"
name[Group1]="Turkish (international with dead keys)";
- key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] };
- key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] };
- key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] };
- key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] };
- key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] };
- key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] };
- key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] };
- key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] };
- key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] };
- key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD05> { [ t, T, trademark, VoidSymbol ] };
- key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
- key <AD08> { [ idotless, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
- key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
- key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] };
- key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] };
- key <AC01> { [ a, A, acircumflex, Acircumflex ] };
- key <AC02> { [ s, S, section, VoidSymbol ] };
- key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
- key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
- key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
- key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
- key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
- key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] };
- key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] };
- key <TLDE> { type[group1] = "FOUR_LEVEL",[ quotedbl, eacute, plusminus, degree ] };
- key <BKSL> { type[group1] = "FOUR_LEVEL",[ comma, semicolon, dead_grave, dead_grave ] };
- key <LSGT> { type[group1] = "FOUR_LEVEL",[ less, greater, bar, brokenbar ] };
- key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
- key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
- key <AB10> { type[group1] = "FOUR_LEVEL",[ period, colon, dead_abovedot, dead_abovedot ] };
+ key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] };
+ key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] };
+ key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] };
+ key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] };
+ key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] };
+ key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] };
+ key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] };
+ key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] };
+ key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] };
+
+ key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD05> { [ t, T, trademark, VoidSymbol ] };
+ key <AD07> { [ u, U, ucircumflex, Ucircumflex ] };
+ key <AD08> { [ idotless, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, ocircumflex, Ocircumflex ] };
+ key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] };
+ key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] };
+ key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, section, VoidSymbol ] };
+ key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] };
+ key <AC04> { [ f, F, ordfeminine, VoidSymbol ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] };
+ key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] };
+ key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] };
+ key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] };
+ key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] };
+ key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] };
+
+ key <TLDE> { type[group1] = "FOUR_LEVEL", [ quotedbl, eacute, plusminus, degree ] };
+ key <BKSL> { type[group1] = "FOUR_LEVEL", [ comma, semicolon, dead_grave, dead_grave ] };
+ key <LSGT> { type[group1] = "FOUR_LEVEL", [ less, greater, bar, brokenbar ] };
+
+ key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] };
+ key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] };
+ key <AB10> { type[group1] = "FOUR_LEVEL", [ period, colon, dead_abovedot, dead_abovedot ] };
include "nbsp(level3)"
include "level3(ralt_switch)"
@@ -274,36 +269,36 @@ xkb_symbols "intl" {
partial alphanumeric_keys
xkb_symbols "olpc" {
- name[Group1]= "Turkish";
- include "tr(intl)"
-
- key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] };
- key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] };
- key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, bar, VoidSymbol ] };
+ include "tr(intl)"
- key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] };
- key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] };
- key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] };
- key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] };
+ name[Group1]= "Turkish";
- key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] };
- key <AB10> { [ period, colon, division, dead_abovedot ] };
+ key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] };
+ key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] };
+ key <AE12> { type[group1] = "FOUR_LEVEL",
+ [ minus, underscore, bar, VoidSymbol ] };
- key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] };
+ key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] };
+ key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] };
+ key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] };
+ key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] };
+ key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] };
+ key <AB10> { [ period, colon, division, dead_abovedot ] };
+ key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] };
};
// Crimean Tatar (Crimean Turkish) layouts.
// First released (by Ubuntu): 2009-02-24.
-// These layouts are not yet standard. In particular, the mapping of
-// letter 'x' might change in the future. This letter is not used in the
-// current official alphabet, but is included in the layouts for foreign words
-// and shortcuts.
+// These layouts are not yet standard. In particular, the mapping of
+// the letter 'x' might change in the future. This letter is not used
+// in the current official alphabet, but is included in the layouts for
+// foreign words and for shortcuts.
// Reşat SABIQ <tilde.birlik @ gmail . com>, 2009
// Özgür Qarahan <qarahan @ gmail . com>, 2009
-// Crimean Tatar (Crimean Turkish) Q Layout
+// Crimean Tatar (Crimean Turkish) Q layout
partial
xkb_symbols "crh" {
@@ -311,16 +306,16 @@ xkb_symbols "crh" {
name[Group1]="Crimean Tatar (Turkish Q)";
- key <AE11> { [ x, X, asterisk, question ] };
+ key <AE11> { [ x, X, asterisk, question ] };
- key <AC04> { [ f, F, iacute, Iacute ] };
- key <AC07> { [ j, J, ibreve, Ibreve ] };
- key <TLDE> { [ quotedbl, backslash, less, degree ] };
+ key <AC04> { [ f, F, iacute, Iacute ] };
+ key <AC07> { [ j, J, ibreve, Ibreve ] };
+ key <TLDE> { [ quotedbl, backslash, less, degree ] };
- key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] };
+ key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] };
};
-// Crimean Tatar (Crimean Turkish) F Layout
+// Crimean Tatar (Crimean Turkish) F layout
partial
xkb_symbols "crh_f" {
@@ -328,18 +323,18 @@ xkb_symbols "crh_f" {
name[Group1]="Crimean Tatar (Turkish F)";
- key <AE11> { [ x, X, slash, question ] };
+ key <AE11> { [ x, X, slash, question ] };
- key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
- [ idotless, I, iacute, Iacute ] };
+ key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC",
+ [ idotless, I, iacute, Iacute ] };
- key <AC07> { [ k, K, ibreve, Ibreve ] };
- key <TLDE> { [ plus, asterisk, backslash, plusminus ] };
+ key <AC07> { [ k, K, ibreve, Ibreve ] };
+ key <TLDE> { [ plus, asterisk, backslash, plusminus ] };
- key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] };
+ key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] };
};
-// Crimean Tatar (Crimean Turkish) Alt-Q Layout
+// Crimean Tatar (Crimean Turkish) Alt-Q layout
partial
xkb_symbols "crh_alt" {
@@ -347,10 +342,10 @@ xkb_symbols "crh_alt" {
name[Group1]="Crimean Tatar (Turkish Alt-Q)";
- key <AC04> { [ f, F, iacute, Iacute ] };
- key <AC07> { [ j, J, ibreve, Ibreve ] };
+ key <AC04> { [ f, F, iacute, Iacute ] };
+ key <AC07> { [ j, J, ibreve, Ibreve ] };
- key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
};
// EXTRAS:
diff --git a/xorg-server/xkeyboard-config/symbols/ua b/xorg-server/xkeyboard-config/symbols/ua
index 81d696ec4..8852b9243 100644
--- a/xorg-server/xkeyboard-config/symbols/ua
+++ b/xorg-server/xkeyboard-config/symbols/ua
@@ -1,44 +1,45 @@
-// based on
-// ukrainian standard keyboard
+// Keyboard layouts for the Ukraine.
// AEN <aen@logic.ru> & Leon Kanter <leon@geon.donetsk.ua>
-// Last Changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com>
+// last changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com>
-// Unicode - 3d level added with some Unicode symbols (typographic quotes, m-dash, n-dash etc),
-// some often used cyrillics from other slavic languages and some ASCII symbols used often (slash, brackets...)
+// The legacy WinKeys layout extended on the third and fourth level with
+// some Unicode symbols (typographic quotes, m-dash, n-dash, ...), some
+// often-used Cyrillics from other Slavic languages, and some often-used
+// ASCII symbols (slash, brackets, ...).
default partial alphanumeric_keys
xkb_symbols "unicode" {
- include "ua(winkeys)"
+ include "ua(winkeys)"
name[Group1]= "Ukrainian";
- key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
- key <AE01> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
- key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
- key <AE05> { [ 5, percent, degree ] };
- key <AE06> { [ 6, colon, less ] };
- key <AE07> { [ 7, question, greater ] };
- key <AE08> { [ 8, asterisk, enfilledcircbullet ] };
- key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
- key <AE10> { [ 0, parenright, bracketright, braceright] };
- key <AE11> { [ minus, underscore, emdash, endash ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]};
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
- key <AD12> { [ Ukrainian_yi,Ukrainian_YI, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
- key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] };
- key <AC11> { [ Ukrainian_ie,Ukrainian_IE, Cyrillic_e, Cyrillic_E ] };
-
- key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] };
-
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
- key <AB10> { [ period, comma, slash, ellipsis ] };
+ key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
+ key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent, degree ] };
+ key <AE06> { [ 6, colon, less ] };
+ key <AE07> { [ 7, question, greater ] };
+ key <AE08> { [ 8, asterisk, enfilledcircbullet ] };
+ key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
+ key <AE10> { [ 0, parenright, bracketright, braceright ] };
+ key <AE11> { [ minus, underscore, emdash, endash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD12> { [ Ukrainian_yi, Ukrainian_YI, Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC11> { [ Ukrainian_ie, Ukrainian_IE, Cyrillic_e, Cyrillic_E ] };
+
+ key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] };
+
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
+ key <AB10> { [ period, comma, slash, ellipsis ] };
include "level3(ralt_switch)"
};
@@ -48,262 +49,262 @@ xkb_symbols "legacy" {
name[Group1]= "Ukrainian (legacy)";
- key <TLDE> { [ apostrophe, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, asterisk ] };
- key <AE05> { [ 5, colon ] };
- key <AE06> { [ 6, comma ] };
- key <AE07> { [ 7, period ] };
- key <AE08> { [ 8, semicolon ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ Ukrainian_i, Ukrainian_I ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] };
-
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AB10> { [ slash, question ] };
-
- key <LSGT> { [ slash, bar ] };
+ key <TLDE> { [ apostrophe, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] };
+
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB07> {[Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AB10> { [ slash, question ] };
+
+ key <LSGT> { [ slash, bar ] };
};
partial alphanumeric_keys
xkb_symbols "winkeys" {
- include "ua(legacy)"
+ include "ua(legacy)"
name[Group1]= "Ukrainian (WinKeys)";
- key <AE03> { [ 3, numerosign ] };
- key <AE04> { [ 4, semicolon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, colon ] };
- key <AE07> { [ 7, question ] };
- key <AE08> { [ 8, asterisk ] };
- key <AB10> { [ period, comma ] };
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AB10> { [ period, comma ] };
};
partial alphanumeric_keys
xkb_symbols "typewriter" {
- include "ua(legacy)"
+ include "ua(legacy)"
name[Group1]= "Ukrainian (typewriter)";
- key <TLDE> { [ apostrophe, quotedbl ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ numerosign, 2 ] };
- key <AE03> { [ slash, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ underscore, 8 ] };
- key <AE09> { [ question, 9 ] };
- key <AE10> { [ percent, 0 ] };
-
- key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <TLDE> { [ apostrophe, quotedbl ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ numerosign, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
- key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <BKSL> { [ parenleft, parenright ] };
+ key <BKSL> { [ parenleft, parenright ] };
};
partial alphanumeric_keys
xkb_symbols "phonetic" {
- include "ua(legacy)"
+ include "ua(legacy)"
name[Group1]= "Ukrainian (phonetic)";
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
-
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] };
- key <AB10> { [ slash, question ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] };
+ key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] };
+ key <AB10> { [ slash, question ] };
};
-// ukrainian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
+// Ukrainian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny).
// Andrew Porokhnyak <aop@porokhnyak.org>
partial alphanumeric_keys
xkb_symbols "rstu" {
- include "ua(legacy)"
+ include "ua(legacy)"
name[Group1]= "Ukrainian (standard RSTU)";
- key <TLDE> { [ apostrophe, question ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ numbersign, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ asterisk, 8 ] };
- key <AE09> { [ parenleft, 9 ] };
- key <AE10> { [ parenright, 0 ] };
+ key <TLDE> { [ apostrophe, question ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ numbersign, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ asterisk, 8 ] };
+ key <AE09> { [ parenleft, 9 ] };
+ key <AE10> { [ parenright, 0 ] };
- key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AC02> { [ Cyrillic_i, Cyrillic_I ] };
- key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AB05> { [ Ukrainian_i, Ukrainian_I ] };
+ key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
- key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] };
-
- key <BKSL> { [ slash, percent ] };
+ key <BKSL> { [ slash, percent ] };
};
-// russian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny)
+// Russian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny).
// Andrew Porokhnyak <aop@porokhnyak.org>
partial alphanumeric_keys
xkb_symbols "rstu_ru" {
+
include "ru(common)"
name[Group1]= "Russian (Ukraine, standard RSTU)";
- key <TLDE> { [ apostrophe, question ] };
- key <AE01> { [ exclam, 1 ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ numbersign, 3 ] };
- key <AE04> { [ semicolon, 4 ] };
- key <AE05> { [ colon, 5 ] };
- key <AE06> { [ comma, 6 ] };
- key <AE07> { [ period, 7 ] };
- key <AE08> { [ asterisk, 8 ] };
- key <AE09> { [ parenleft, 9 ] };
- key <AE10> { [ parenright, 0 ] };
- key <BKSL> { [ slash, percent ] };
-
-key.type[group1]="ALPHABETIC";
-
- key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <TLDE> { [ apostrophe, question ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ numbersign, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ asterisk, 8 ] };
+ key <AE09> { [ parenleft, 9 ] };
+ key <AE10> { [ parenright, 0 ] };
+ key <BKSL> { [ slash, percent ] };
+
+ key.type[group1]="ALPHABETIC";
+
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
};
-//Homophonic keyboard layout (Tomas Marko Miljenović)
-//Based on Ukrainian National Transliteration, commonly used phonetic layouts for Mac and Win.
-//Existing layout "phonetic" used as template.
+// Homophonic keyboard layout (by Tomas Marko Miljenović),
+// based on the Ukrainian National Transliteration,
+// commonly used phonetic layouts for Mac and Win.
partial alphanumeric_keys
xkb_symbols "homophonic" {
+
include "ua(legacy)"
name[Group1]= "Ukrainian (homophonic)";
- key <TLDE> { [ grave, underscore ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, semicolon ] };
- key <AE04> { [ 4, colon ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, apostrophe ] };
- key <AE07> { [ 7, quotedbl ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] };
- key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] };
-
- key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
- key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] };
- key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
- key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
- key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
- key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
- key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
- key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
- key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
- key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
- key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] };
- key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
-
- key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
- key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
- key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
- key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
- key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
- key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] };
- key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
- key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
- key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
- key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
- key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
-
- key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
- key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
- key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
- key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
- key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
- key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
- key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
+ key <TLDE> { [ grave, underscore ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, semicolon ] };
+ key <AE04> { [ 4, colon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, apostrophe ] };
+ key <AE07> { [ 7, quotedbl ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] };
+ key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] };
+
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatY> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatI> { [ Ukrainian_i, Ukrainian_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
};
// EXTRAS: