Mesa (gles3): 81 new commits

Matt Turner mattst88 at kemper.freedesktop.org
Mon Dec 3 18:02:48 UTC 2012


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b513cb0879f18a6f69cc9db77f7e521a63e235c
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Tue Nov 20 13:43:11 2012 -0800

    egl/dri2: Add plumbing for EGL_OPENGL_ES3_BIT_KHR
    
    Fixes error EGL_BAD_ATTRIBUTE in the tests below on Intel Sandybridge:
        * piglit egl-create-context-verify-gl-flavor, testcase OpenGL ES 3.0
        * gles3conform, revision 19700, when runnning GL3Tests with -fbo
    
    This plumbing is added in order to comply with the EGL_KHR_create_context
    spec. According to the EGL_KHR_create_context spec, it is illegal to call
    eglCreateContext(EGL_CONTEXT_MAJOR_VERSION_KHR=3) with a config whose
    EGL_RENDERABLE_TYPE does not contain the EGL_OPENGL_ES3_BIT_KHR. The
    pertinent
    portion of the spec is quoted below; the key word is "respectively".
    
      * If <config> is not a valid EGLConfig, or does not support the
        requested client API, then an EGL_BAD_CONFIG error is generated
        (this includes requesting creation of an OpenGL ES 1.x, 2.0, or
        3.0 context when the EGL_RENDERABLE_TYPE attribute of <config>
        does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or
        EGL_OPENGL_ES3_BIT_KHR respectively).
    
    To create this patch, I searched for all the ES2 bit plumbing by calling
    `git grep "ES2_BIT\|DRI_API_GLES2" src/egl`, and then at each location
    added a case for ES3.
    
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=80b76ed954761164a875fe585a249c2ae40b2f93
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Wed Nov 21 16:55:43 2012 -0800

    intel: Expose support for DRI_API_GLES3
    
    If the hardware/driver combo supports GLES3, then set the GLES3 bit in
    intel_screen's bitmask of supported DRI API's.  Neither the EGL nor GLX
    layer uses the bit yet.
    
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=26e876af034258de52c03b294b580d15449877ee
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Tue Nov 20 13:27:14 2012 -0800

    dri: Define enum __DRI_API_GLES3
    
    This enum corresponds to EGL_OPENGL_ES3_BIT_KHR.
    Neither the GLX nor EGL layer use the enum yet.
    
    I don't like the GLES bits. I'd prefer that all GLES APIs be exposed
    through a single API bit, as is done in GLX_EXT_create_context_es_profile.
    But, we need this GLES3 enum in order to do the plumbing necessary to
    correctly support EGL_OPENGL_ES3_BIT_KHR as required by the
    EGL_KHR_create_context spec.
    
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=77b3fdaa0ea08ce0585ce9b55264ef9ac1220bb7
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Wed Nov 21 16:22:19 2012 -0800

    intel: Move validation of context version into intelInitContext
    
    Each driver (i830, i915, i965) used independent but similar code to
    validate the requested context version. With the rececnt arrival of GLES3,
    that logic has needed an update. Rather than apply identical updates to
    each drivers validation code, let's just move the validation into the
    shared routine intelInitContext.
    
    This refactor required some incidental changes to functions
    i830CreateContext and intelInitContext. For each function, this patch:
        - Adds context version parameters to the signature.
        - Adds a DRI_CTX_ERROR out param to the signature.
        - Sets the DRI_CTX_ERROR at each early return.
    
    Tested against gen6 with piglit egl-create-context-verify-gl-flavor.
    Verified that this patch does not change the set of exposed EGL context
    flavors.
    
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c42fdc7490a8d2dc7a3522fa4aff2e903bdd823
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Wed Nov 21 15:08:27 2012 -0800

    intel: Set screen's api mask according to hw capabilities (v3)
    
    Before this patch, intelInitScreen2 set DRIScreen::api_mask with the hacky
    heuristic below:
    
        if (gen >= 3)
            api_mask = GL | GLES1 | GLES2;
        else
            api_mask = 0;
    
    This hack was likely broken on gen2 (i830), but I don't care enough to
    properly investigate. It appears that every EGLConfig on i830 has
    EGL_RENDERABLE_TYPE=0, and thus eglCreateContext will never succeed.
    Anyway, moving on to living drivers...
    
    With the arrival of EGL_OPENGL_ES3_BIT_KHR, this heuristic is now
    insufficient. We must enable the GLES3 bit if and only if the driver is
    capable of creating a GLES3 context. This requires us to determine the
    maximum supported context version supported by the hardware/driver for
    each api *during initialization of intel_screen*.
    
    Therefore, this patch adds four new fields to intel_screen which indicate
    the maximum supported context version for each api:
      max_gl_core_version
      max_gl_compat_version
      max_gl_es1_version
      max_gl_es2_version
    
    The api mask is now correctly set as:
    
        api_mask = GL;
        if (max_gl_es1_version > 0)
            api_mask |= GLES1;
        if (max_gl_es2_version > 0)
            api_mask |= GLES2;
    
    Tested against gen6 with piglit egl-create-context-verify-gl-flavor.
    Verified that this patch does not change the set of exposed EGL context
    flavors.
    
    v2:
      - Replace the if-tree on gen with a switch, for Ian.
      - Unconditionally enable the DRI_API_OPENGL bit, for Ian.
    
    v3:
      - Drop max gl version to 1.4 on gen3 if !has_occlusion_query,
        because occlusion queries entered core in 1.5. For Ian.
    
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
    Reviewed-by: Ian Romanick <ian.d.romanick.intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=76d2d22b97e0d6094425a42276c35bd3bea202d0
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Nov 26 15:00:05 2012 -0800

    glcpp: Make undefined macros illegal in #if and #elif for GLES3
    
    Simply emitting a nicely-formatted error message if any undefined macro is
    encountered in a parser context expecting an expression.
    
    With this commit, the following piglit test now passes:
    
    	spec/glsl-es-3.00/compiler/undefined-macro.vert
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=08b139b8adde9afb799cc2e2a950275ea6edd846
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Nov 26 14:53:54 2012 -0800

    glcpp: Add a flag to the parser state to indicate GLES.
    
    This can be triggered either by creation of a GLES context (with
    api == API_OPENGLES2) or else by a #version directive with version
    value 100 or with a string of "es" following the version value.
    
    There's no behavioral change with this commit—just preparation for ES-specific
    behavior in the preprocessor in the future.
    
    Reviewed-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6977582d7676bd4a180aadb0c7b171dce44081b3
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Nov 20 13:01:04 2012 -0800

    mesa: Rename and wire-up GetInteger64i_v
    
    The function was named badly and wasn't in the dispatch table,
    making it hard to find.
    
    Fixes transform_feedback2_states and gets a few other transform
    feedback tests closer to working in es3conform.
    
    Reviewed-by Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=44dbe4556d69f3a65b9b0500ceb1cca023f0177c
Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Nov 20 12:56:52 2012 -0800

    mesa: Correct glGet{Boolean,Integer}i_v names
    
    Reviewed-by Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c6e3304487f056e56029648cdc53e3609cb788a
Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Nov 21 15:06:10 2012 -0800

    mesa: Allow glGet* queries on EXT_texture_lod_bias data in ES 3
    
    Fixes the remaining 4 texture_lod_bias failures in es3conform.
    
    Tested-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd28afe2566ca05690d2961eb8513dbb1c6d9400
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Tue Nov 20 17:04:45 2012 -0800

    mesa: Support more glGet enums for ES3
    
    For glGetIntegerv, add support for the following in an OpenGL ES 3.0
    context:
        GL_MAJOR_VERSION
        GL_MINOR_VERSION
        GL_NUM_EXTENSIONS
    
    See Table 6.29 of the OpenGL ES 3.0 spec.
    
    Fixes error GL_INVALID_ENUM in piglit egl-create-context-verify-gl-flavor,
    testcase for OpenGL ES 3.0.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8290b1cf8afed281931247d42b8880d19661ea82
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Nov 19 21:59:59 2012 -0800

    meta: Use #version 300 es for _mesa_glsl_Clear's integer shaders on ES3.
    
    Fixes es3conform's color_buffer_float_clamp_(fixed|on|off) tests.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d57a2421d1829761bc729bbb799b6561e1a5b75
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Nov 19 21:51:25 2012 -0800

    meta: Use #version 300 es in GenerateMipmap shaders on ES3.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9542fa8628f59e3a4e0e4282b93863499f8d3102
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Fri Nov 16 13:40:59 2012 -0800

    mesa: assert if driver did not compute the version
    
    Make sure drivers initialize the version before:
     * _mesa_initialize_exec_table is called
     * _mesa_initialize_exec_table_vbo is called
     * A context is made current
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b051a8374ddaf36085aac55f743e016464a31e8e
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Mon Nov 19 11:21:05 2012 -0800

    mesa: don't initialize VBO vtxfmt in _vbo_CreateContext
    
    The driver should call _mesa_initialize_vbo_vtxfmt after
    computing the context version.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=adef7c366e67a8bf67452a83f1303df7adf07f60
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Fri Nov 16 10:42:02 2012 -0800

    mesa: don't initialize exec dispatch tables in _mesa_initialize_context
    
    Drivers must compute the context version, and then call
    _mesa_initialize_exec_table themselves.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=53d304c1654fb0f060ed59893d259cd2d2cb4f4f
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Fri Nov 16 18:25:35 2012 -0800

    mesa dispatch_sanity: call new functions to initialize exec table
    
    In a future patch the exec functions will no longer set up
    by _mesa_initialize_context and _vbo_CreateContext.
    
    Therefore we must call _mesa_initialize_exec_table and
    _mesa_initialize_exec_table_vbo.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a4ec68c7470cf60c8f9195eef23f05fb2c14553
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Fri Nov 16 10:30:19 2012 -0800

    drivers: compute version and then initialize exec table
    
    This change forces the context version to be computed before
    initilizing the exec dispatch tables.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=43d65db357427ef13b652bf973a4b3ac32c29535
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Mon Nov 19 11:17:39 2012 -0800

    vbo: add _mesa_initialize_vbo_vtxfmt
    
    This function initializes the exec/save dispatch tables
    for VBO vtxfmt.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=14e12179ec37f113dc58fad579f5e303685d1182
Author: Jordan Justen <jordan.l.justen at intel.com>
Date:   Fri Nov 16 10:27:13 2012 -0800

    mesa: separate exec allocation from initialization
    
    In glapi/gl_genexec.py:
    * Remove _mesa_alloc_dispatch_table call
    
    In glapi/gl_genexec.py and api_exec.h:
    * Rename _mesa_create_exec_table to _mesa_initialize_exec_table
    
    In context.c:
    * Call _mesa_alloc_dispatch_table instead of _mesa_create_exec_table
    * Call _mesa_initialize_exec_table (this is temporary)
    
    Once all drivers have been modified to call
    _mesa_initialize_exec_table, then the call to
    _mesa_initialize_context can be removed from context.c.
    
    Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=78410af720f9bee1eecc18780a0d54b5c91de9e0
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Wed Nov 21 09:28:36 2012 -0800

    i965: Bump maximum supported ES2 context version to 3.0
    
    Since patch "i965: Validate requested GLES context version in
    brwCreateContext", we have been able to create ES 3.0 contexts due to the
    max version check.  So...bump the max version.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Signed-off-by: Chad Versace <chad.versace at linux.intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=311a976ce011ab09df45a600b807ca7e03c77622
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Nov 17 17:39:35 2012 -0800

    mesa: Allow glGet* queries on EXT_framebuffer_blit data in ES 3
    
    Fixes 2 framebuffer_blit es3conform tests.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0eae9ad7e63289427cf49ee4b66f266ae839723
Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Nov 17 16:38:05 2012 -0800

    mesa: Allow glGet* queries on ARB_fragment/vertex_shader data in ES 3
    
    Fixes uniform_buffer_object_implementation_dependent_limits in
    es3conform.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1950062a590237977366107be743ffe331f7138
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 22:13:48 2012 -0800

    mesa: Allow GL_DEPTH_STENCIL_ATTACHMENT in ES 3
    
    Fixes framebuffer_srgb_default_encoding_fbo and 5 packed_depth_stencil
    tests from es3conform.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a1fb0141bc81c1a7db1ee0915075e015f89d0a5
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 22:05:27 2012 -0800

    mesa: Allow glGet* queries on ARB_framebuffer_object data in ES 3
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8185b95ebf3dc8f0faa533bc1c9820c10125f98d
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 21:55:05 2012 -0800

    mesa: Allow glGet* queries on ARB_transform_feedback2 data in ES 3
    
    Fixes the transform_feedback2_init_defaults test from es3conform.
    
    The ES 3 spec lists these as TRANSFORM_FEEDBACK_PAUSED and
    TRANSFORM_FEEDBACK_ACTIVE.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a33d8f82df966e3d0d71984b0075c5aa1d26b0b
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 21:41:14 2012 -0800

    mesa: Allow glGet* queries on EXT_transform_feedback data in ES 3
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2a039f4e55bf9dcd841bc622f7bd4bbeafec5af7
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 21:19:01 2012 -0800

    mesa: Allow glGet* queries on ARB_sync data in ES 3
    
    Fixes the sync_coverage_max_server_wait_timeout test in es3conform.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e42314676a9fd4b95df5f8aac8b21ec074a184a2
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 15:57:16 2012 -0800

    mesa: Allow glGet* queries of EXT_pbo data in ES 3
    
    Fixes pixel_buffer_object_default_binding and gets other tests in
    es3conform closer to passing.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1b4252e77dcd11c01729967101bbbd88fa679212
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 15:40:32 2012 -0800

    mesa: Allow glGet* queries of select ARB_ubo data in ES 3
    
    Fixes 5 uniform_buffer_object tests in es3conform
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a672f060ac61ea67e37729b5b2bba8bd1dcd197b
Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Nov 15 15:47:18 2012 -0800

    mesa: Add ES 3 handling to get.c
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fce818027e11bbf80557ff37b436a86b892809ac
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Sat Nov 17 21:23:28 2012 -0800

    mesa: Fix default value of BUFFER_ACCESS_FLAGS.
    
    According to both the GL 3.0 and ES 3.0 specifications (table 2.7 for GL
    and table 2.8 for ES), the default value of BUFFER_ACCESS_FLAGS is
    supposed to be zero.
    
    Note that there are two related quantities: the obsolete BUFFER_ACCESS
    enum and the new BUFFER_ACCESS_FLAGS bitfield.
    
    BUFFER_ACCESS can only be GL_READ_ONLY, GL_WRITE_ONLY, or GL_READ_WRITE;
    BUFFER_ACCESS_FLAGS can easily represent all three via GL_MAP_WRITE_BIT,
    GL_MAP_READ_BIT, and their logical or.  It also supports more flags.
    
    Thus, Mesa only stores the bitfield, and simply computes the old enum
    when queried, via simplified_access_mode(bufObj->AccessFlags).
    
    The tricky part is that, while BUFFER_ACCESS_FLAGS defaults to 0,
    BUFFER_ACCESS defaults to GL_READ_WRITE for desktop [GL 3.0, table 2.8]
    and GL_WRITE_ONLY_OES for ES [the GL_EXT_map_buffer_range extension].
    
    Mesa tried to implement this by setting the default AccessFlags to
    GL_MAP_READ_BIT | GL_MAP_WRITE_BIT on desktop, and GL_MAP_WRITE_BIT on
    ES.  But in all specifications, it needs to be 0.
    
    This patch moves that logic into simplified_access_mode(): when
    AccessFlags == 0, it now returns GL_READ_WRITE for desktop and
    GL_WRITE_ONLY for ES 1/2.  (BUFFER_ACCESS doesn't exist on ES 3.0,
    so it's irrelevant there.)
    
    With that in place, it changes the AccessFlags default to 0.
    
    Fixes three es3conform tsets:
    - copy_buffer_defaults
    - map_buffer_range_modify_indices
    - pixel_buffer_object_default_parameters

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=657ffdcfee5bbb1ae86012952f683e50d359e1d4
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Fri Nov 16 14:52:01 2012 -0800

    mesa: Rework crazy error code rules in glDrawBuffers().
    
    Perhaps most importantly, this patch adds comments quoting the relevant
    spec paragraphs above each error condition.
    
    It also makes three changes:
    - For FBOs, GL_COLOR_ATTACHMENTm where m >= MaxDrawBuffers is supposed
      to generate INVALID_OPERATION (not INVALID_ENUM).
    - Constants that refer to multiple buffers (such as FRONT, BACK, LEFT,
      RIGHT, and FRONT_AND_BACK) are supposed to generate INVALID_OPERATION,
      not INVALID_ENUM.
    - In ES 3.0, for FBOs, buffers[i] must be NONE or GL_COLOR_ATTACHMENTi
      or else INVALID_OPERATION occurs.  (This is a new restriction.)
    
    Fixes es3conform's draw-buffers-api test.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=607e3ccb42f0b69c67a3031ab9f40dad2437e10f
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Nov 9 10:23:30 2012 -0800

    i965: Add support for GL_ANY_SAMPLES_PASSED_CONSERVATIVE
    
    We just treat this as an alias for GL_ANY_SAMPLES_PASSED.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=79972a82515e5fb09cc9db8e9f874aba848e111d
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Sep 17 14:52:10 2012 -0700

    intel: Enable ETC2 support on intel hardware
    
    This patch enables support for ETC2 compressed textures on
    all intel hardware. At present, ETC2 texture decoding is not
    available on intel hardware. So, compressed ETC2 texture data
    is decoded in software and stored in a suitable uncompressed
    MESA_FORMAT at the time of glCompressedTexImage2D. Currently,
    ETC2 formats are only exposed in OpenGL ES 3.0.
    
    V2: Use single etc_wraps variable for both etc1 and etc2.
    V3: Remove redundant code and use just one intel_miptree_map_etc()
        and intel_miptree_unmap_etc() function.
        Choose MESA_FORMAT_SIGNED_{R16, GR1616} for ETC2 signed-{r11, rg11}
        formats
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Tested-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=82068c94c87acd353abb27bd33f0fd5ddb885be9
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Tue Oct 23 12:22:20 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
    
    Data in GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 format is decoded and stored
    in MESA_FORMAT_SARGB.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb71bb0b885b9d169385ced0305ce94647e2cd66
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Oct 22 13:34:30 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
    
    Data in GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 format is decoded and stored
    in MESA_FORMAT_RGBA8888_REV.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=212fcdfc693850b4f9b135ac58beeb87eaf06a65
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Wed Oct 10 13:46:20 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_SIGNED_RG11_EAC
    
    Data in GL_COMPRESSED_SIGNED_RG11_EAC format is decoded and stored in
    MESA_FORMAT_SIGNED_GR1616.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f59d580dbd8f5adbf657ba7a5c4dcad07eeef2b5
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Tue Oct 9 17:02:37 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_SIGNED_R11_EAC
    
    Data in GL_COMPRESSED_SIGNED_R11_EAC format is decoded and stored in
    MESA_FORMAT_SIGNED_R16.
    
    v2:
    16 bit signed data is converted to 16 bit unsigned data by
    adding 2 ^ 15 and stored in an unsigned texture format.
    
    v3:
    1. Handle a corner case when base code word value is -128. As per
    OpenGL ES 3.0 specification -128 is not an allowed value and should
    be truncated to -127.
    2. Converting a decoded 16 bit signed data to 16 bit unsigned data by
    adding 2 ^ 15 gives us an output which matches the decompressed image
    (.ppm) generated by ericsson's etcpack tool. ericsson is also doing this
    conversion in their tool because .ppm image files don't support signed
    data. But gles 3.0 specification doesn't suggest this conversion. We
    need to keep the decoded data in signed format. Both signed format
    tests in gles3 conformance pass with these changes.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Tested-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ade9a38d817285bbbb54065cc92fd7b921c1915f
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 12 16:32:08 2012 -0800

    mesa: Add decoding functions for GL_COMPRESSED_RG11_EAC
    
    Data in GL_COMPRESSED_RG11_EAC format is decoded and stored in
    MESA_FORMAT_RG1616.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=130cbfbf11cd9e5ce263f9d72407da0413c4a789
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 12 16:28:07 2012 -0800

    mesa: Add decoding functions for GL_COMPRESSED_R11_EAC
    
    Data in GL_COMPRESSED_R11_EAC format is decoded and stored in
    MESA_FORMAT_R16.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f876a0692d865f44c4240cdea3e7973649f5a30e
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 12 16:13:25 2012 -0800

    mesa: Add decoding functions for GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
    
    Data in GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC format is decoded and stored
    in MESA_FORMAT_SARGB8.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9a12f8916bf4e2174fd8dd5e1cc02dba3f6d8bfe
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 12 15:58:25 2012 -0800

    mesa: Add decoding functions for GL_COMPRESSED_RGBA8_ETC2_EAC
    
    Data in GL_COMPRESSED_RGBA8_ETC2_EAC format is decoded and stored
    in MESA_FORMAT_RGBA8888_REV.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e88d75ea7518110a4d95eb705cc0e6f9794d5cb9
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Thu Sep 27 17:05:24 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_SRGB8_ETC2
    
    Data in GL_COMPRESSED_SRGB8_ETC2 format is decoded and stored
    in MESA_FORMAT_SARGB8.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=138da70af03241d155bff64694ce421a5f7eccbd
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Sep 17 14:47:56 2012 -0700

    mesa: Add decoding functions for GL_COMPRESSED_RGB8_ETC2
    
    Data in GL_COMPRESSED_RGB8_ETC2 format is decoded and stored in
    MESA_FORMAT_RGBX8888_REV.
    
    v2: Use CLAMP macro and stdbool.h
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7981bfad50c0368752d01015d214825147128be7
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 12 17:58:46 2012 -0800

    mesa: Make nonlinear_to_linear() function available outside file
    
    This patch changes nonlinear_to_linear() function to non static inline
    and makes it available outside format_unpack.c. Also, removes the
    duplicate copies in other files.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6ab2d1cc5308b535ed1c570b88cb59f199fe058
Author: Anuj Phogat <anuj.phogat at gmail.com>
Date:   Mon Nov 5 17:45:18 2012 -0800

    mesa: Add new MESA_FORMATs for ETC2 compressed textures
    
    It is required by OpenGL ES 3.0 to support ETC2 textures.
    This patch adds new MESA_FORMATs for following etc2 texture
    formats:
     GL_COMPRESSED_RGB8_ETC2
     GL_COMPRESSED_SRGB8_ETC2
     GL_COMPRESSED_RGBA8_ETC2_EAC
     GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
     GL_COMPRESSED_R11_EAC
     GL_COMPRESSED_RG11_EAC
     GL_COMPRESSED_SIGNED_R11_EAC
     GL_COMPRESSED_SIGNED_RG11_EAC
     MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1
     MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1
    
    Above formats are currently available in only gles 3.0.
    
    v2: Add entries in texfetch_funcs[] array.
    
    Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>
    
    v3 (Paul Berry <stereotype441 at gmail.com>): comment out symbols that
    are not implemented yet, so that this commit compiles on its own;
    future commits will uncomment the symbols as they become available.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=67aeeafabd34d1209bcbebffd192a18ca8d36343
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Tue Aug 7 12:39:30 2012 -0700

    i965/Gen6+: Enable ARB_ES3_compatibility extension
    
    IMPORTANT: this patch should not be pushed to master until ES3 support
    is fully implemented on i965/Gen6+.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7cfa2392725f4157c06b0c1de1251263695afefd
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Wed Aug 8 15:25:00 2012 -0700

    mesa/es3: Enable ES 3.0 API and shading language version
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=60ae4e8991a9c76d66aba447512e63457e3ebcef
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Aug 10 22:28:27 2012 -0700

    mesa/es3: Add support for GL_PRIMITIVE_RESTART_FIXED_INDEX
    
    This requires some derived state.  The cut vertex used is either the
    value specified by glPrimitiveRestartIndex or it's hard-coded to ~0.
    The derived state gl_array_attrib::_RestartIndex captures this value.
    In addition, the derived state gl_array_attrib::_PrimitiveRestart is set
    whenever either gl_array_attrib::PrimitiveRestart or
    gl_array_attrib::PrimitiveRestartFixedIndex is set.
    
    v2: Use _mesa_is_gles3.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=45315b711a31863474c94124d435d7a43354bd04
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 8 11:30:42 2012 -0700

    Set es_version to false when using FF fragment shading in meta ops

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e57d346484f100a049deeba3f9a1b0c8731c5b5c
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Aug 10 21:38:21 2012 -0700

    mesa/es3: Add support for GL_ANY_SAMPLES_PASSED_CONSERVATIVE query target
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=29b23659a81b5951201992b5999f8d315ef30394
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Wed Aug 8 13:11:32 2012 -0700

    mesa/es3: Allow transpose matrix uniforms in GLES3
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=17e66f98586495f276c7fbb4b863763ce7c4bf73
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Nov 19 22:36:28 2012 -0800

    glsl: Add missing semicolon in the grammar
    
    This may not be strictly necessary, but every other rule in the grammar ends
    with a semicolon.  It also appears that this was supposed to be commited with
    the original patch that changed this rule, but the wrong version of the patch
    was accidentally pushed.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cdd3818986561df5d7e715f01e7d67aad5300303
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Nov 9 12:26:42 2012 -0800

    glsl: Allow layout qualifiers in GLSL 3.00 ES
    
    Note that while 'packed' is a reserved word in GLSL ES, row_major is not.
    This means that we have to use the string-based matching for that.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b08f32e8f87f916cc73ea9a61743b92a6b7f98e0
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Aug 4 15:42:33 2012 -0700

    glsl: Create builtin function profiles for GLSL 3.00 ES.
    
    Nearly all of the builtin functions in GLSL 3.00 ES are already
    implemented in Mesa; this patch enables them.
    
    A few functions are not implemented yet; those have been commented
    out, with a FIXME comment to act as a reminder of what still needs to
    be implemented.  Here is the complete list: packSnorm2x16,
    unpackSnorm2x16, packUnorm2x16, unpackUnorm2x16, packHalf2x16,
    unpackHalf2x16.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf2560f72fb74ca057685d115f6a00e34dc941eb
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Mon Aug 6 14:36:31 2012 -0700

    glsl: add determinant() functions.
    
    These functions are defined in GLSL 1.50 and GLES 3.00 ES.
    
    The formulas have been extracted from the existing implementation of
    inverse().
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=60cd8923364bad34860e651607a17475082aff3d
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Aug 4 10:43:53 2012 -0700

    glsl: Make builtin function profiles for GLSL ES use "es" in the filename.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dce94bf381854452e0445d5b3ad7305b34ee5ead
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Aug 4 10:29:49 2012 -0700

    glsl: Add builtin variables for GLSL 3.00 ES.
    
    This patch also adds assertions so that when we add new GLSL versions,
    we'll notice that we need to update the builtin variables.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3e26326ee151f2048a94875c666edcec07471b1
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 13:38:57 2012 -0700

    glsl: Populate built-in types correctly for GLSL 3.00 ES.
    
    This patch implements all of the built-in types for GLSL 3.00 ES.
    This is almost exactly the same as the set of built-in types for GLSL
    1.30, except ate 1D samplers are skipped, and samplerCubeShadow is
    added.
    
    This patch also addes an assertion so that when we add new GLSL
    versions, we'll notice that we need to update the types.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3f87af99dec73b51d4aab0339146434c2003e260
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sat Aug 4 10:00:20 2012 -0700

    glsl: Make {Min,Max}ProgramTexelOffset available to compiler.
    
    These constants need to be made available to shaders in GLSL 3.00 ES.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=691b7385f176a8e34537a43546648e2c24d2cddc
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 17:51:02 2012 -0700

    glsl: Fix linker checks for GLSL ES 3.00.
    
    This patch updates the following linker checks to do the right thing
    in GLSL 3.00 ES:
    
    - Failing to write to gl_Position is allowed in GLSL 1.40+ as well as
      GLSL 3.00 ES.
    
    - It is an error to write to both gl_ClipVertex and gl_ClipDistance in
      GLSL 1.30+.  This does not apply to GLSL 3.00 ES.
    
    - GLSL 3.00 ES uses the same varying counting rules as GLSL 1.00 ES.
    
    - In GLSL 1.30 and GLSL 3.00 ES, "discard" terminates the shader.
    
    - In GLSL 1.00 ES and GLSL 3.00 ES, both a fragment and a vertex
      shader must be present.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d77f327fe98a11499d7c067b52cdfb70c38233d
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 17:50:43 2012 -0700

    glsl: Record in gl_shader_program whether the program uses GLSL ES.
    
    Previously we recorded just the GLSL version (or the max version, if
    GLSL 1.10 and GLSL 1.20 programs were linked together).
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=51788c5bc9d12bf202306e0777dbdb062054344d
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 17:49:44 2012 -0700

    glsl: Clean up shading language mixing check for GLSL 3.00 ES.
    
    Previously, we prohibited mixing of shading language versions if
    min_version == 100 or max_version >= 130.  This was technically
    correct (since desktop GLSL 1.30 and beyond prohibit mixing of shading
    language versions, as does GLSL 1.00 ES), but it was confusing.  Also,
    we asserted that all shading language versions were between 1.00 and
    1.40, which was unnecessary (since the parser already checks shading
    language versions) and doesn't work for GLSL 3.00 ES.
    
    This patch changes the code to explicitly check that (a) ES shaders
    aren't mixed with desktop shaders, (b) shaders aren't mixed between ES
    versions, and (c) shaders aren't mixed between desktop GLSL versions
    when at least one shader is GLSL 1.30 or greater.  Also, it removes
    the unnecessary assertion.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fa91bdc0bac5cbf5dc4d10c50281abe8ce531d33
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 17:47:49 2012 -0700

    glsl: Record in gl_shader whether the shader uses GLSL ES.
    
    Previously we recorded just the GLSL version, with the knowledge that
    100 means GLSL 1.00 ES.  With the advent of GLSL 3.00 ES, this is
    going to get more complex, and eventually will probably become
    ambiguous (GLSL 4.00 already exists, and GLSL 4.00 ES is likely to be
    created some day).
    
    To reduce confusion, this patch simply records whether the shader is
    GLSL ES as an explicit boolean.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6a61c6fe25a70c3a66fbea35be2117c64b7b4f7
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 11:17:30 2012 -0700

    glsl/parser: Handle "#version 300 es" directive.
    
    Note that GLSL 1.00 is selected using "#version 100", so "#version 100
    es" is prohibited.
    
    v2: Check for GLES3 before allowing '#version 300 es'
    
    v3: Make sure a correct language_version is set in
    _mesa_glsl_parse_state::process_version_directive.
    
    Signed-off-by: Paul Berry <stereotype441 at gmail.com>
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c691e43310405f3709f2923fcc424da4590c4a0
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 11:02:55 2012 -0700

    glsl/parser: Extract version directive processing into a function.
    
    Version directive handling is going to have to be used within two
    parser rules, one for desktop-style version directives (e.g. "#version
    130") and one for the new ES-style version directive (e.g. "#version
    300 es"), so this patch moves it to a function that can be called from
    both rules.
    
    No functional change.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=04441562b37bac7eb97a757fd64dc7ef209a5de9
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 13:21:54 2012 -0700

    glsl/preprocessor: Handle "#version 300 es" directive.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d738b29d128996d38597225750cf352d2c9d4a36
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 13:06:45 2012 -0700

    glsl/preprocessor: Extract version directive processing into a function.
    
    Version directive handling is going to have to be used within two
    parser rules, one for desktop-style version directives (e.g. "#version
    130") and one for the new ES-style version directive (e.g. "#version
    300 es"), so this patch moves it to a function that can be called from
    both rules.
    
    No functional change.
    
    [mattst88] v2: Use intmax_t instead of int for version argument. Would
    otherwise write garbage after #version since PRIiMAX was reading 64-bits
    instead of 32.
    
    [idr] v3: A later commit fixes the caller of
    _glcpp_parser_handle_version_declaration to pass the correct number of
    parameters.  Fix it in the patch that changes the interface instead.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c2a974e68ff787df7382bf998c113ad58f765923
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 08:18:12 2012 -0700

    glsl: Enable GLSL ES 3.00 features inherited from desktop GLSL.
    
    This patch turns on the following features for GLSL ES 3.00:
    
    - Array constructors, whole array assignment, and array comparisons.
    - Second and third operands of ?: may be arrays.
    - Use of "in" and "out" qualifiers on globals.
    - Bitwise and modulus operators.
    - Integral vertex shader inputs.
    - Range-checking of literal integers.
    - array.length method.
    - Function calls may be constant expressions.
    - Integral varyings must be qualified with "flat".
    - Interpolation and centroid qualifiers may not be applied to vertex
      shader inputs.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7fd8e39cb4fad5d43e0b8c9fa102d4ab00fb80b3
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 08:17:55 2012 -0700

    glsl: parse GLSL ES 3.00 keywords correctly.
    
    GLSL ES 3.00 adds the following keywords over GLSL 1.00: uint,
    uvec[2-4], matNxM, centroid, flat, smooth, various samplers, layout,
    switch, default, and case.
    
    Additionally, it reserves a large number of keywords, some of which
    were already reserved in versions of desktop GL that Mesa supports,
    some of which are new to Mesa.
    
    A few of the reserved keywords in GLSL ES 3.00 are keywords that are
    supported in all other versions of GLSL: attribute, varying,
    sampler1D, sampler1DShador, sampler2DRect, and sampler2DRectShadow.
    
    This patch updates the lexer to handle all of the new keywords
    correctly when the language being parsed is GLSL 3.00 ES.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc8f79c440a9cb73679b56262690c86ca18c368c
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 1 19:04:59 2012 -0700

    glsl: Rework lexer keyword handling in preparation for GLSL 3.00 ES.
    
    This patch expands the lexer KEYWORD macro to take two additional
    arguments: the GLSL ES versions in which the given keyword was first
    reserved, and supported, respectively.  This will allow us to
    trivially add support for GLSL 3.00 ES keywords, even though the set
    of GLSL 3.00 ES keywords is neither a subset or a superset of the
    keywords corresponding to any desktop GLSL version.
    
    The new KEYWORD macro makes use of the
    _mesa_glsl_parse_state::is_version() function, so it accepts 0 as
    meaning "unsupported" (rather than 999, which we used previously).
    
    Note that a few keywords ("packed" and "row_major") are supported
    *either* when GLSL 1.40 is in use or when ARB_uniform_buffer_obj
    support is enabled.  Previously, we handled these by cleverly taking
    advantage of the fact that the KEYWORD macro didn't parenthesize its
    arguments in the usual way.  Now they are handled more
    straightforwardly, with a new macro, KEYWORD_WITH_ALT.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e3b5357ccd17c3847ab5c0e5d904912e4d8f945
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Sun Aug 5 09:57:01 2012 -0700

    glsl: Make use of new _mesa_glsl_parse_state::check_version() function.
    
    Previous to this patch, we were not very consistent about the errors
    we generate when a shader tried to use a feature that is prohibited in
    the current GLSL version.  Some error messages failed to mention the
    GLSL version currently in use (or did so inaccurately), and some error
    messages failed to mention the first GLSL version in which the given
    feature is allowed.
    
    This patch reworks all of the error checks to use the check_version()
    function, which produces error messages in a standard form
    (approximately "$FEATURE forbidden in $CURRENT_GLSL_VERSION
    ($REQUIRED_GLSL_VERSION required).").
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4e800cf9ec30710bbd2e5051bed6dc9260faff37
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 1 14:50:05 2012 -0700

    glsl: Make use of new _mesa_glsl_parse_state::is_version() function.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cd1208edaa7e6086c33ee100a1aa07ab8208f068
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 1 19:09:24 2012 -0700

    glsl: Add GLSL version query functions.
    
    With the advent of GLSL 3.00 ES, the version checks we perform in the
    GLSL compiler (to determine which language features are present) will
    become more complicated.  To reduce the complexity, this patch adds
    functions check_version() and is_version() to _mesa_glsl_parse_state.
    These functions take two version numbers: a desktop GLSL version and a
    GLSL ES version, and return a boolean indicating whether the GLSL
    version being compiled is at least the required version.  So, for
    example, is_version(130, 300) returns true if the GLSL version being
    compiled is at least desktop GLSL 1.30 or GLSL 3.00.
    
    The check_version() function additionally produces an error message if
    the version check fails, informing the user of which GLSL version(s)
    support the given feature.
    
    [v2, idr]: Add PRINTFLIKE annotation to the new method.  The numbering of th
    parameters is correct because GCC is silly.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0cec05ea689bf083d39c4846cff211a8c56fb980
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Thu Aug 2 06:45:30 2012 -0700

    glsl: Compute version_string on the fly.
    
    Fixes a bug where version_string would be left uninitialized if no
    GLSL "#version" directive was used.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=69f604be2d6630e6850933d3d85032a931acc602
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 1 18:36:57 2012 -0700

    glsl: Make a function to express a GLSL version ir human-readable form.
    
    This will be useful in generating more helpful error messages,
    especially with the addition of GLSL 3.00 ES support.
    
    [v2, idr]: Rename ctx parameter to mem_ctx
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6656749a2d2aa2d5f41cf4d920e89572c6ec1d49
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Wed Aug 1 17:44:02 2012 -0700

    glsl: Simplify symbol table version checking.
    
    Previously, we stored the GLSL language version in the
    glsl_symbol_table struct.  But this was unnecessary--all
    glsl_symbol_table needs to know is whether functions and variables
    have separate namespaces (they do in GLSL 1.10 only).
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=824f4dce2d1709e6a337b9f6c06cc87ec6f695a1
Author: Paul Berry <stereotype441 at gmail.com>
Date:   Mon Aug 6 10:22:44 2012 -0700

    mesa: Add ARB_ES3_compatibility flag.
    
    Adding this now makes it easier to develop and test GLES3 features, since we
    can do initial development and testing using desktop GL.  Later GLSL compiler
    patches check for either ctx->Extensions.ARB_ES3_compatibility or
    _mesa_is_gles3 to allow certain features (i.e., "#version 300 es").
    
    [v2, idr]: Just edits to the commit message.
    
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d26e676327c992eb68c05c439a02fc6efe0ff8c
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Aug 17 18:09:09 2012 -0700

    i965: Don't maintain programs for ff state when there is no ff
    
    NOTE: This is a candidate for the 9.0 branch.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6132af5277e0ea172dd782e5b463941eae56e15d
Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Aug 17 18:08:39 2012 -0700

    mesa: Don't muck about with ff state when there is no ff
    
    NOTE: This is a candidate for the 9.0 branch.
    
    Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>




More information about the mesa-commit mailing list