Mesa (gallium-compute): 101 new commits

Francisco Jerez currojerez at kemper.freedesktop.org
Tue Apr 10 12:49:35 UTC 2012


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f1d1f4e40e4ec73b9f82dbb6ee53e6db639efdd5
Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Tue Apr 10 14:19:43 2012 +0200

    clover: Assorted build fixes.
    
    Contains the following patches squashed in:
    
    commit 9fff1dc0875f7c9591550fa3ebbe1ba7a18483fa
    Author: Tom Stellard <thomas.stellard at amd.com>
    Date:   Tue Mar 20 23:20:03 2012 +0100
    
        configure.ac: Build gallium loader when OpenCL is enabled
    
    commit 542111cb02957418c6a285cb6ef2924e49adc66e
    Author: Tom Stellard <thomas.stellard at amd.com>
    Date:   Tue Mar 20 23:30:29 2012 +0100
    
        configure.ac: Add sw/null to GALLIUM_WINSYS_DIRS for gallium loader
    
    commit 876f8de46062dde76b6075be3b6628f969b16648
    Author: Tom Stellard <thomas.stellard at amd.com>
    Date:   Thu Feb 9 11:26:05 2012 -0500
    
        configure.ac: Require gcc > 4.6.0 for clover
    
    commit 99049d50fa3d9a23297ae658189c19c89dca1766
    Author: Tom Stellard <thomas.stellard at amd.com>
    Date:   Tue Mar 20 23:32:06 2012 +0100
    
        configure.ac: Require Gallium drm loader when gallium loader is enabled
    
        No longer silently exclude this when building OpenCL drivers
        for nouveau and r600.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c04717636d354fcd4e8e31e65ad278c0ecf7d99
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 27 01:35:37 2012 +0200

    clover: Import OpenCL state tracker.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5adf7696ee2f4844b874280da8a57e6d7085a6e9
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 23:41:09 2012 +0100

    gallium/tests/trivial: Import compute unit tests.
    
    Add a test program that tries to exercise some of the language
    features commonly used by compute programs at the Gallium API level:
    
       - Correctness of the values returned by the grid parameters.
       - Proper functioning of resource LOADs and STOREs.
       - Subroutine calls.
       - Argument passing to the compute parameter through the INPUT
         memory space.
       - Mapping of buffer objects to the GLOBAL memory space.
       - Proper functioning of the PRIVATE and LOCAL memory spaces.
       - Texture sampling and constant buffers.
       - Support for multiple kernels in the same program.
       - Indirect resource indexing.
       - Formatted resource loads and stores (i.e. with channel conversion
         and scaling) using several different formats.
       - Proper functioning of work-group barriers.
       - Atomicity and semantics of the atomic opcodes.
    
    As of now all of them seem to pass on my nvA8.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a8ba5c3593ee4dd386aa41fb2cff2703da2c17a
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 6 20:29:43 2012 +0100

    gallium/gbm: Switch to auxiliary/pipe-loader.
    
    Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b3a0314fe49fc64490bdb2b8b2b82b39597f912f
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Apr 1 13:13:52 2012 +0200

    gallium/tests/trivial: Switch to the pipe loader.
    
    It simplifies things slightly, and besides, it makes possible to
    execute the trivial tests on a hardware device instead of being
    limited to software rendering.
    
    Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d61db6fec380712117dc17fec4c6539625de0ca1
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri Nov 25 14:26:00 2011 +0100

    gallium: Add "pipe-loader" target.
    
    This target generates pipe driver modules intended to be consumed by
    auxiliary/pipe-loader.  Most of it was taken from the "gbm" target --
    the duplicated code will be replaced with references to this target in
    a future commit.
    
    Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c0af9cfa72ffcfb0290277e153edd663aefb760
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Apr 1 13:13:05 2012 +0200

    gallium: Add pipe loader for device enumeration and driver multiplexing.
    
    The goal is to have a uniform interface to create winsys and
    pipe_screen instances for any driver, exposing the device enumeration
    capabilities that might be supported by the operating system (for now
    there's a "drm" back-end using udev and a "sw" back-end that always
    returns the same built-in devices).
    
    The typical use case of this library will be:
    >
    > struct pipe_loader_device devs[n];
    > struct pipe_screen *screen;
    >
    > pipe_loader_probe(&devs, n);
    >[pick some device from the array...]
    >
    > screen = pipe_loader_create_screen(dev, library_search_path);
    >[do something with screen...]
    >
    > screen->destroy(screen);
    > pipe_loader_release(&devs, N);
    >
    
    A part of the code was taken from targets/gbm/pipe_loader.c, which
    will be removed and replaced with calls into this library by a future
    commit.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b4b0fd4e529cc93205cbbcb5dab93618a389fa6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 22:46:11 2012 +0100

    gallium/tgsi/text: Replace open-coded integer parsing with parse_int().

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e9321655bd6bdf4f9a167624094847fd8e07b0e
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 22:39:29 2012 +0100

    gallium/tgsi/text: Parse immediates of non-float data types.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a9df8583b301f9febbed177383c9c22358f297bf
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 21:29:36 2012 +0100

    gallium/tgsi: Fix tgsi_build_full_immediate() for non-float data types.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ac905bddc37ddb6fd745e78cc9b64c79ef5f7f7
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Mar 26 17:56:29 2012 +0200

    gallium/tgsi/text: Make label parsing optional for branch instructions.
    
    Structured branch instructions like IF, ELSE, BGNLOOP, ENDLOOP no
    longer require a label argument, make it optional for them.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=71b5fbfc838218b701c4cf3617c3a80830b3ce06
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Dec 8 18:05:25 2011 +0100

    st/mesa: Use local temporary registers.
    
    Local makes more sense in most places because non-inline function
    calls are unimplemented anyway.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=08f36c75d95e0cf13f6913b7fb6fab24c2e385ec
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Mar 26 17:55:30 2012 +0200

    gallium/tgsi/ureg: Support local temporary emission.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff0c11b048a77933801d34bb17e0c233eabbe69c
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Dec 8 18:00:17 2011 +0100

    gallium/tgsi/ureg: Lift the restriction on releasing temporaries over UREG_MAX_TEMP.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d1e5562e2865f6a0a46cee108aaa71933ae68a1
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri Nov 25 14:37:07 2011 +0100

    gallium/util: Define util_strchrnul.
    
    Reviewed-by: Jakob Bornecrantz <jakob at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d5295fdbb7d2bc3d94ddeb756ef152c21d785439
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 23:59:33 2012 +0100

    gallium/compute: Drop TGSI dependency.
    
    This is mainly to accomodate AMD's LLVM compiler back-end by letting
    it bypass the TGSI representation.  Other drivers will keep using the
    common TGSI instruction set for compute shaders.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1aeab6b45e7da8e488521e28930df46dcf4840a
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 19:21:36 2012 +0100

    gallium/tgsi: Introduce the "LOCAL" register declaration modifier.
    
    This change will be useful to implement function parameter passing on
    top of TGSI.  As we don't have a proper stack, a register-based
    calling convention will be used instead, which isn't necessarily a bad
    thing given that GPUs often have plenty of registers to spare.
    
    Using the same register space for local temporaries and
    inter-procedural communication caused some inefficiencies, because in
    some cases the register allocator would lose the freedom to merge
    temporary values together into the same physical register, leading to
    suboptimal register (and sometimes, as a side effect, instruction)
    usage.
    
    The LOCAL declaration modifier specifies that the value isn't intended
    for parameter passing and as a result the compiler doesn't have to
    give any guarantees of it being preserved across function boundaries.
    
    Ignoring the LOCAL flag doesn't change the semantics of a valid
    program in any way, because local variables are just supposed to get a
    more relaxed treatment.  IOW, this should be a backwards-compatible
    change.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab390b57e9d768526a5ef18c5e93593035e438d1
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 6 20:52:25 2012 +0100

    gallium/tgsi: Add support for atomic opcodes.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=36f3bb489cab84bf30941d52d986e8c2e2004141
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 6 20:50:46 2012 +0100

    gallium/tgsi: Add support for barriers.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4252aa611ed21483b14e8ba39e0b6fce4c06d89c
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 18:13:29 2012 +0100

    gallium/tgsi: Define system values used to query the compute grid parameters.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3679b58249d082ddba964c4327f0823d46837583
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 18:14:11 2012 +0100

    gallium/tgsi: Add resource write-back support.
    
    Define a new STORE opcode with a role dual to the LOAD opcode, and add
    flags to specify that a resource, sampler view, or shader resource
    binding point is intended for writing.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d6d760f6cf4485291b4235297422b43f418cab9
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 19:14:24 2012 +0100

    gallium/tgsi: Add support for raw resources.
    
    Normal resource access (e.g. the LOAD TGSI opcode) is supposed to
    perform a series of conversions to turn the texture data as it's found
    in memory into the data format that was specified in the resource
    declaration.
    
    In compute programs it's often the case that we only want to access
    the raw bits as they're stored in some buffer object, and any kind of
    channel conversion and scaling is harmful or inefficient, especially
    in implementations that lack proper hardware support to take care of
    it -- in those cases the conversion has to be implemented in software
    and it's likely to result in a performance hit even if the pipe_buffer
    and declaration data types are set up in a way that would just pass
    the data through.
    
    Add a declaration flag that marks a resource as typeless.  No channel
    conversion will be performed in that case, and the X coordinate of the
    address vector will be interpreted in byte units instead of elements
    for obvious reasons.
    
    This is similar to D3D11's ByteAddressBuffer, and will be used to
    implement OpenCL's constant arguments.  The remaining four compute
    memory spaces can also be understood as raw resources.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1ec238b4aaf7f5fbbc9dbf5746177fec02377cc7
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 19:14:05 2012 +0100

    gallium/tgsi: Define the TGSI_BUFFER texture target.
    
    This texture type was already referred to by the documentation but it
    was never defined.  Define it as 0 to match the pipe_texture_target
    enumeration values.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e529d509e881ff6d740d4cc405580e4817f53448
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 19:09:18 2012 +0100

    gallium/tgsi: Introduce the compute processor.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=33fcdbd82eb36b76cf942179b0f115f9e3d0b545
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 19:21:12 2012 +0100

    gallium/tgsi: Move interpolation info from tgsi_declaration to a separate token.
    
    Move Interpolate, Centroid and CylindricalWrap from tgsi_declaration
    to a separate token -- they only make sense for FS inputs and we need
    room for other flags in the top-level declaration token.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2585d1c52eb25c2774319a68e2903bef84ea8d6
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue Mar 20 18:12:19 2012 +0100

    gallium: Basic compute interface.
    
    Define an interface that exposes the minimal functionality required to
    implement some of the popular compute APIs.  This commit adds entry
    points to set the grid layout and other state required to keep track
    of the usual address spaces employed in compute APIs, to bind a
    compute program, and execute it on the device.
    
    Reviewed-by: Marek Olšák <maraeo at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=70d038e46eb877ffa922003c78630eb7eb76c0f3
Author: Vinson Lee <vlee at freedesktop.org>
Date:   Sun Apr 8 22:28:34 2012 -0700

    st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.
    
    Fixes uninitialized member defects reported by Coverity.
    
    NOTE: This is a candidate for the 8.0 branch.
    
    Signed-off-by: Vinson Lee <vlee at freedesktop.org>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=36fef005b191fcd3fa858abb5f2aa6e7229e2c60
Author: Chad Versace <chad.versace at linux.intel.com>
Date:   Mon Apr 9 13:59:03 2012 -0700

    main: Fix memory leak in _mesa_make_extension_string()
    
    I forgot to free the string returned by strdup().
    
    Note: This is a candidate for the stable branches.
    CC: Johannes Obermayr <johannesobermayr at gmx.de>
    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=783e4da72aa203a645737dec81b001341951a942
Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Tue Apr 10 00:44:52 2012 +0400

    r600g: check gpr count limit
    
    This should help to prevent gpu lockups.
    See https://bugs.freedesktop.org/show_bug.cgi?id=48472
    
    NOTE: This is a candidate for the stable branches.
    
    Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b06280ea34ce0e2ef9ec36df792c28c3828eabd
Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Thu Apr 5 05:07:03 2012 +0400

    glsl: fix variable ordering in the output_read_remover
    
    Use the hash of the variable name instead of the pointer value.
    
    Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a07cf3397e332388d3599c83e50ac45511972890
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 27 09:37:40 2012 -0700

    i965: Add support for sampling texture buffer objects on gen7+.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b3729c987065883c6ff65a5c5288e852dd5b26a
Author: Eric Anholt <eric at anholt.net>
Date:   Wed Mar 28 09:38:57 2012 -0700

    i965: Add real support for texturing/rendering with MESA_FORMAT_RGBA8888_REV.
    
    This was hacked in in one place for EGL image stuff, but the right
    thing to do was just to provide the mapping from the mesa format to
    the native hardware format, which includes render target support.
    
    This turns out to be required for GL_ARB_texture_buffer_object, which
    sees data in this layout.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=aa8ce1be4a30e7c8224af52f83f1e50d251b01d4
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 27 14:03:26 2012 -0700

    i965/gen7: Fix the /* ignored */ comment on constant surface setup.
    
    It turns out this field *is* used, and it's the stride between samples
    from the buffer.  Discovered during TBO debugging.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bf82ce3c66507e5e1722fccff0df47cf9dcdb2d4
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 27 15:48:21 2012 -0700

    mesa: Add support for the GL 3.1 R/RG formats in texture buffer objects.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=664355f05b39303fa0995b72160c82f5bf50e95e
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 27 10:29:04 2012 -0700

    mesa: Track a gl_format for the texture buffer format.
    
    There was a function full of unused mappings from the GLenum to
    datatype/comps, but that wasn't all the information a driver would
    want, which includes the other fields that a gl_format has.  Given
    that all the texture buffer formats were represented in gl_format,
    just use that as our description.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dcf42dbd066fe633c28afa36820da9e9430038df
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 27 09:51:24 2012 -0700

    mesa: Handle updating texture state for buffer textures.
    
    We have to skip some work that wants to look at texture images, since
    buffer textures don't have any of that complexity.
    
    Reviewed-by: Dave Airlie <airlied at redhat.com>
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=18c2ee0df5fa6679996e40c574d37475be230bd7
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Mar 26 16:49:23 2012 -0700

    mesa: Create the default (name==0) buffer texture.
    
    All that should be needed is that it exists.  Fixes segfaults on first
    _mesa_update_context() with a samplerBuffer-using shader active but
    without a particular buffer texture enabled.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb430ced7fb2aa26007637a0907d886716e8ddd6
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Mar 26 14:04:48 2012 -0700

    glsl: Add texelFetch(*samplerBuffer) entrypoints to GLSL 1.40.
    
    Fix texelFetch(sampler2DRect) and textureSize(samplerBuffer)
    generation to not reference a LOD at the same time because it's easier
    than not fixing it.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=659855252107debc47dbac8ec7985e1024d7ab5c
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Mar 26 14:13:17 2012 -0700

    glsl: Add support for parsing [iu]samplerBuffer types in GLSL 1.40.
    
    The samplerBuffer type will be undefined in !glsl 1.40, and the
    keyword is marked as reserved.  The [iu]samplerBuffer types are not
    marked as reserved pre-1.40, so they don't have separate tokens and
    fall through to normal type handling.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d0f5684c1aa1b3563af8ae3db35ff0916a7b922
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 20 16:52:30 2012 -0700

    mesa: Set the correct initial value of the texture buffer object format.
    
    Fixes piglit GL_ARB_texture_buffer_object/get
    
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=44f2cee0fdda6186c3a0b12996bcd5adb92cceb1
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 20 16:31:21 2012 -0700

    mesa: Set up glTexBuffer{,ARB} for display list compile.
    
    We're supposed to just immediately call it.  Fixes piglit
    GL_ARB_texture_buffer_object/dlist
    
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=62bdb187f82871a9f8ea6f62235da82106cddd33
Author: Eric Anholt <eric at anholt.net>
Date:   Wed Mar 28 10:27:39 2012 -0700

    glapi: regen for TBO change.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0be44a35418d3b258c20f73d11eb2862cc56e823
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Mar 20 16:50:51 2012 -0700

    glapi: Mark TexBuffer as an alias of TexBufferARB.
    
    This is set correctly in gl.spec, but was missed in Mesa.  As a
    result, only one of the two was hooked up in Mesa.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb7a71dea78152142b456f29e4881c4d3aeb56b6
Author: Eric Anholt <eric at anholt.net>
Date:   Thu Mar 29 23:17:32 2012 -0700

    glsl: Drop the round-trip through ast_type_specifier for many builtin types.
    
    We have lexer recognition of a bunch of our types based on the
    handling.  This code was mapping those recognized tokens to an enum
    and then to a string of their name.  Just drop the enums and provide
    the string directly in the parser.
    
    Reviewed-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=b2c0df2b60a77b043d461f265c85d8b5b066a008
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Mar 29 23:17:31 2012 -0700

    glsl: Use (const char *) in AST nodes rather than plain (char *).
    
    Nothing actually relied on them being mutable, and there was at least
    one cast which discarded const qualifiers.  The next patch would have
    introduced many more.
    
    Casting away const qualifiers should be avoided if at all possible.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68b99be409eb2d4f20198cfdb2c8fea75d754e0b
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Mar 19 16:02:06 2012 -0700

    ff_fragment_shader: Remove some dead fields.
    
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=430562a980578410127aac534e11c30ac025e749
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Apr 2 14:53:00 2012 -0700

    x86-64: Don't print "Initializing x86-64 optimizations" in debug builds.
    
    In "release" builds, Mesa would print this message if the MESA_DEBUG
    variable was set.  Make it so for debug builds as well.
    
    I build debug builds all the time, but I'm not debugging this.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=781e2d5cfae37c24180c0c622467f656582af9f5
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Apr 2 13:29:37 2012 -0700

    ir_to_mesa: Remove pretense of support for function calls.
    
    While ir_to_mesa contains code that attempts to support functions, I
    honestly doubt it's been tested and have little confidence that it
    works.
    
    The comment in visit(ir_function *ir) doesn't inspire confidence:
    /* Ignore function bodies other than main() -- we shouldn't see calls to
     * them since they should all be inlined before we get to ir_to_mesa.
     */
    
    Furthermore, hardware drivers such as i915, i965, and (AFAICT) r200
    don't support the BGNSUB/ENDSUB/CAL opcodes anyway.  Only swrast does.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f78f48b6d2c4034a62ab11a558c95901d2245c4a
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Apr 2 14:03:08 2012 -0700

    i965: Remove vestiges of function call support from the old VS backend.
    
    This never worked.  brwProgramStringNotify also explicitly rejects
    programs that use CAL and RET.  So there's no need for this to exist.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c6532875493ffe7de9c37924c70ebf6d0472e23d
Author: Yuanhan Liu <yuanhan.liu at linux.intel.com>
Date:   Sat Mar 17 10:48:23 2012 +0800

    i915: set SPRITE_POINT_ENABLE bit correctly
    
    When SPRITE_POINT_ENABLE bit is set, the texture coord would be
    replaced, and this is only needed when we called something like
    glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE).
    
    And more,  we currently handle varying inputs as texture coord,
    we would be careful when setting this bit and set it just when
    needed, or you will find the value of varying input is not right
    and changed.
    
    Thus we do set SPRITE_POINT_ENABLE bit only when all enabled tex
    coord units need do CoordReplace. Or fallback is needed to make
    sure the rendering is right.
    
    With handling the bit setup at i915_update_sprite_point_enable(),
    we don't need the relative code at i915Enable then.
    
    This patch would _really_ fix the webglc point-size.html test case and
    of course, not regress piglit point-sprite and glean-pointSprite
    testcase.
    
    NOTE: This is a candidate for stable release branches.
    
    v2: fallback just when all enabled tex coord units need do
        CoordReplace (Eric)
    v3: move the sprite point validate code at I915InvalidateState (Eric)
    v4: sprite point enable bit update based on _NEW_PROGRAM, too
        add relative _NEW-state comments to show what state is being used(Eric)
    
    Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b5b3b93d73d80a54d12d0d7a6a74fb97b27bf8a
Author: Yuanhan Liu <yuanhan.liu at linux.intel.com>
Date:   Wed Mar 28 10:09:55 2012 +0800

    glx: fix compile warnings
    
    Fix 'set but not used' warnings; gl_version, gl_versions_profiles and
    glx_extensions variables are used just only HAVE_XCB_GLX_CREATE_CONTEXT
    is defined. Thus those warnings are shown when that macro isn't defined.
    
    Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7bb1c784a30124a7259a2cc30356f7d88d27a767
Author: Johannes Obermayr <johannesobermayr at gmx.de>
Date:   Sat Apr 7 20:31:41 2012 +0200

    st/xa: Link with -Wl,-r instead of -r.
    
    This is required to link with clang:
      /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400160.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a50d695ac20d894278b8e4bc1e0e8a159cd08a1d
Author: Johannes Obermayr <johannesobermayr at gmx.de>
Date:   Mon Mar 5 19:37:39 2012 +0100

    tgsi: Fix conflict with fortify printf redirect in glibc.
    
     Fixes clang error:
    
       tgsi/tgsi_dump.c:72:12: error: no member named '__printf_chk' in 'struct dump_ctx'
             ctx->printf( ctx, "%u", e );
             ~~~  ^
       /usr/include/bits/stdio2.h:109:3: note: expanded from macro 'printf'
         __printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
         ^
    
     Idea stolen from:
       http://www.mail-archive.com/pld-cvs-commit@lists.pld-linux.org/msg210998.html
    
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=299c9052e832712654865af8dbd0ed4bf055d124
Author: Brian Paul <brianp at vmware.com>
Date:   Mon Apr 2 20:05:16 2012 +0200

    st/mesa: fix max_offset computation for base vertex
    
    Add the maximum base vertex offset to max_index for computing the
    buffer size.  Fixes a failed assertion in the u_upload_mgr.c code with
    the VMware svga driver.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=48141
    
    v2: incorporate Marek's suggestions.
    
    NOTE: This is a candidate for the 8.0 branch.
    
    Reviewed-by: Marek Olšák <maraeo at gmail.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ecc480524bf56076e05291529f65dc996114aa90
Author: Brian Paul <brianp at vmware.com>
Date:   Thu Apr 5 15:28:09 2012 -0600

    svga: add missing cases for PIPE_CAP_x queries
    
    Return 0 for features we don't support.  Added debug_printf()
    warnings when we fail to handle a new PIPE_CAP_x case.  That will
    alert us to interfaces changes in the future.  We don't want to
    just ignore new PIPE_CAPs and possibly miss something important.
    
    Reviewed-by: José Fonseca <jfonseca at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7707ef5a554ca0a1ec17b9491055e8c8db570c4
Author: Brian Paul <brianp at vmware.com>
Date:   Wed Apr 4 16:04:00 2012 -0600

    svga: return 1 for PIPE_CAP_VERTEX_COLOR_UNCLAMPED query
    
    Before, we weren't clamping the vertex colors produced by ARB vertex
    programs.  This could result in some rendering being too bright (in
    ETQW, for example).
    
    Also add cases for PIPE_CAP_VERTEX_COLOR_CLAMPED and
    PIPE_CAP_FRAGMENT_COLOR_CLAMPED with comments to be complete.
    
    Reviewed-by: José Fonseca <jfonseca at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0adc5d9cfdd94bc5cbc3d45b9ada3d13ac4adb7c
Author: Brian Paul <brianp at vmware.com>
Date:   Mon Apr 2 20:05:50 2012 +0200

    svga: handle TGSI_SEMANTIC_CLIPDIST/VERTEX semantics
    
    We can't support these vertex attributes, but don't die in an assertion.
    Issue a warning instead.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=48142

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0cd68001f8844a8bb78d4071da3562c1b3ee7653
Author: Brian Paul <brianp at vmware.com>
Date:   Fri Mar 30 09:41:42 2012 -0600

    gallium/docs: fix typos

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2a80a1e2a702228501fd298b9b176efa8c2c6258
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Apr 4 16:48:21 2012 -0700

    i965: Actually upload sampler state pointers for the VS unit on Gen6.
    
    We already program all the sampler state correctly, we just didn't give
    the GPU a pointer to it for the VS stage.  Thus, any texturing other
    than texelFetch() wouldn't work.
    
    Fixes piglit test vs-textureLod-miplevels and 99 of oglconform's
    glsl-bif-tex subtests.
    
    NOTE: This is a candidate for the 8.0 branch.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf68959f99f372ef1c4f647e7a7438ab478314c9
Author: James Benton <jbenton at vmware.com>
Date:   Thu Apr 5 20:34:11 2012 +0100

    gallivm: Updated lp_build_log2_approx to use a more accurate polynomial.
    
    Tested with lp_test_arit with 100% passes and piglit tests with 100%
    pass for log but some tests still fail for pow.
    
    Signed-off-by: José Fonseca <jfonseca at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c639feb2f6697b5da94e81e7901436ce1620c66
Author: James Benton <jbenton at vmware.com>
Date:   Thu Apr 5 20:32:51 2012 +0100

    gallivm: Updated lp_build_polynomial to compute odd and even terms separately to decrease data dependency for faster runtime.
    
    Signed-off-by: José Fonseca <jfonseca at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=129d5138d63697a9812d531895293313dfad6d57
Author: Alexandre Demers <alexandre.f.demers at gmail.com>
Date:   Thu Apr 5 00:18:25 2012 -0400

    xatracker: fix the build of a 32bit lib on a 64bit os
    
    we were missing cflags.
    
    Signed-off-by: Zack Rusin <zackr at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=34e53adc51ade8d53d74b6ae35bec90f1a6b9b29
Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Apr 2 03:01:01 2012 +0200

    r600g: inline r600_upload_index_buffer

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9abb2cd6e93681504fbcf323c790e3950304734
Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Apr 2 02:45:27 2012 +0200

    r600g: inline r600_upload_const_buffer

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=82a7fe6f5c93e6787f99124974af0dbcafef5fb1
Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Apr 2 06:08:58 2012 +0200

    r600g: handle DISCARD_WHOLE_RESOURCE for buffers
    
    This should prevent stalls and therefore increase perfomance in some cases.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c7d0e9ec32edfbb6c77715d51170608deb41f1b7
Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Apr 2 05:01:20 2012 +0200

    r600g: invalidate caches at the beginning of CS
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a633d82ce352a69fd54a2b0e262a91f27f478119
Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Apr 2 00:33:52 2012 +0200

    r600g: remove dead code after the rework
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68bbfc1afe210d82acfb14a78b0fd8c436a8f78c
Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Apr 1 22:03:15 2012 +0200

    r600g: rework state emission of constant buffers
    
    Framerate in ipers:
      before: 43.6 FPS
      after:  46.6 FPS
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c76462b45f1e3a0aa2ee7971191e30e8a5f52015
Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Mar 30 23:52:45 2012 +0200

    r600g: rework state emission of vertex buffers
    
    This reduces a little of CPU overhead.
    The idea is to translate pipe vertex buffers directly into the CS
    and not using any intermediate representations.
    
    Framerate in Torcs:
      before: 32.2
      after:  34.6
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c03d1fa0fbe130153a2e4c937f684c680ca20b2
Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Mar 30 23:39:55 2012 +0200

    r600g: kill off the fallback for crazy src_offset values
    
    st/mesa doesn't allow src_offset to be greater than stride and the maximum
    stride r600 supports is 2047.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3ea3695b0495a56d9946a292e0e7cad4e0fb2fe0
Author: Alexandre Demers <alexandre.f.demers at gmail.com>
Date:   Wed Apr 4 10:54:56 2012 +0200

    st/xvmc: fix library installation dir
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=47878
    
    v2: some reordering and while at it also fix the
        comment in Makefile.xvmc
    
    Signed-off-by: Christian König <deathsimple at vodafone.de>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=75f8990547903f7dde5d98319cc813f94a15aa78
Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Apr 4 03:55:42 2012 +0200

    r300g/swtcl: fix crash when back color is present in vertex shader
    
    The shader transformation code sometimes produced invalid TGSI.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba86e03167c161e6f5d0d320571240ed55699ac0
Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Apr 4 02:07:55 2012 +0200

    r300g/swtcl: initialize some Draw options

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3481f341021c87c86a69bcf892447e55b0687e9
Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Apr 4 01:46:31 2012 +0200

    r300g/swtcl: fix polygon offset

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b8fe06eb629f887071d5fbe2bc50b7a0c516a25
Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 3 23:00:18 2012 +0200

    r300g/swtcl: don't expose shader subroutine support
    
    RET in the main function doesn't work. This should be fixed in Draw, but meh.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6bede55241d8f672ba3d845e2ce1c00c7d65837e
Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 3 22:12:35 2012 +0200

    r300g: initialize state & render functions before creating u_vbuf & u_blitter

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=da2123051c3923a2953cdd96f05ad684e7d3c8c3
Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Mar 31 22:17:19 2012 +0200

    r300g/swtcl: don't enter u_vbuf_mgr

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5ce0598a034179eaacff96f39eaebf0ba0f30d4c
Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 3 22:37:30 2012 +0200

    r300g/swtcl: don't print an error when getting ClipVertex
    
    Draw can do it just fine.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ba3cecaa02eba07bc6456c441126e4e2e823da5
Author: Benjamin Franzke <benjaminfranzke at googlemail.com>
Date:   Tue Apr 3 20:20:49 2012 +0200

    st/egl: Update to the new wl_shm_pool interface

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=900be21e0943d417a5d149e5b3c2635cb7cc90f9
Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 3 19:58:48 2012 +0200

    u_blitter: don't use user buffers

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4f513002f65c629576252b34efedf3c8c4531dfd
Author: Vinson Lee <vlee at freedesktop.org>
Date:   Mon Apr 2 22:14:15 2012 -0700

    gallivm: Pass in a MCInstrInfo to createMCInstPrinter on llvm-3.1.
    
    llvm-3.1svn r153860 makes MCInstrInfo available to the MCInstPrinter.
    
    Signed-off-by: Vinson Lee <vlee at freedesktop.org>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=24ca588ce66233a92e95dc70deb983c97dc24e55
Author: Christian König <deathsimple at vodafone.de>
Date:   Thu Mar 29 15:53:28 2012 +0200

    st/vdpau: fix deadlock in PresentationQueueQuerySurfaceStatus
    
    Signed-off-by: Christian König <deathsimple at vodafone.de>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7f2156c9bd35893a82eff92ae780ca97e52f389d
Author: Marek Olšák <maraeo at gmail.com>
Date:   Tue Apr 3 17:09:47 2012 +0200

    r600g: remove dead code in r600_update_derived_state

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5db9d76a6a498c029133a8c2544c4c7c25eebf80
Author: James Benton <jbenton at vmware.com>
Date:   Mon Apr 2 16:29:34 2012 +0100

    gallivm: Maximum loop iterations
    
    Limits maximum loop iterations in a TGSI shader to prevent infinite
    loops from occurring, any iteration in any loop counts towards this
    limit
    
    Signed-off-by: José Fonseca <jfonseca at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d312b224b6759fd9b206d4c19450f6a4dfe53311
Author: José Fonseca <jfonseca at vmware.com>
Date:   Tue Apr 3 09:10:53 2012 +0100

    gallivm: Simplify/reorder minimax helper.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=431b458f24f05db612e276e12528ce0e62707b65
Author: Vinson Lee <vlee at freedesktop.org>
Date:   Sat Mar 31 23:11:42 2012 -0700

    swrast: Fix memory leaks in blit_linear.
    
    Fixes Coverity resource leak defects.
    
    NOTE: This is a candidate for the 8.0 branch.
    
    Signed-off-by: Vinson Lee <vlee at freedesktop.org>
    Reviewed-by: Brian Paul <brianp at vmware.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f75c2d53146ea14f8dfedcc5b7a4704278ba0792
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Sep 20 17:58:45 2011 -0700

    glsl: Demote 'type' from ir_instruction to ir_rvalue and ir_variable.
    
    Variables have types, expression trees have types, but statements don't.
    Rather than have a nonsensical field that stays NULL in the base class,
    just move it to where it makes sense.
    
    Fix up a few places that lazily used ir_instruction even though they
    actually knew the particular subclass.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=82065fa20ee3f2880a070f1f4f75509b910cedde
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Sep 20 18:08:11 2011 -0700

    glsl: Remove ir_call::get_callee() and set_callee().
    
    Previously, set_callee() performed some assertions about the type of the
    ir_call; protecting the bare pointer ensured these checks would be run.
    
    However, ir_call no longer has a type, so the getter and setter methods
    don't actually do anything useful.  Remove them in favor of accessing
    callee directly, as is done with most other fields in our IR.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d884f60861f270cdcf7d9d47765efcf1e1de30b6
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Mar 20 15:56:37 2012 -0700

    glsl: Convert ir_call to be a statement rather than a value.
    
    Aside from ir_call, our IR is cleanly split into two classes:
    - Statements (typeless; used for side effects, control flow)
    - Values (deeply nestable, pure, typed expression trees)
    
    Unfortunately, ir_call confused all this:
    - For void functions, we placed ir_call directly in the instruction
      stream, treating it as an untyped statement.  Yet, it was a subclass
      of ir_rvalue, and no other ir_rvalue could be used in this way.
    - For functions with a return value, ir_call could be placed in
      arbitrary expression trees.  While this fit naturally with the source
      language, it meant that expressions might not be pure, making it
      difficult to transform and optimize them.  To combat this, we always
      emitted ir_call directly in the RHS of an ir_assignment, only using
      a temporary variable in expression trees.  Many passes relied on this
      assumption; the acos and atan built-ins violated it.
    
    This patch makes ir_call a statement (ir_instruction) rather than a
    value (ir_rvalue).  Non-void calls now take a ir_dereference of a
    variable, and store the return value there---effectively a call and
    assignment rolled into one.  They cannot be embedded in expressions.
    
    All expression trees are now pure, without exception.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=622eed075092a0325e0927bf2f9ef29f20bbf416
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Sep 22 14:29:53 2011 -0700

    glsl: Split out ir_reader's ability to read ir_dereference_variables.
    
    Most of the time, we just want to read an ir_dereference, so there's no
    need to have these in separate functions.  However, the next patch will
    want to read an ir_dereference_variable directly.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0fa0cb52cebdcd0ca483b9cd7af6be2f228b8dc
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Sep 20 00:14:05 2011 -0700

    glsl: Move constant expression handling from calls to signatures.
    
    When translating a call from AST to HIR, we need to decide whether it
    can be evaluated to a constant before emitting any code (namely, the
    temporary declaration, assignment, and call.)
    
    Soon, ir_call will become a statement taking a dereference of where to
    store the return value, rather than an rvalue to be used on the RHS of
    an assignment.  It will be more convenient to try evaluation before
    creating a call.  ir_function_signature seems like a reasonable place.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=807e967c615dc80a264af5a89af7649f95481744
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Sep 22 15:04:56 2011 -0700

    glsl: Use ir_rvalue to represent generic error_type values.
    
    Currently, ir_call can be used as either a statement (for void
    functions) or a value (for non-void functions).  This is rather awkward,
    as it's the only class that can be used in both forms.
    
    A number of places use ir_call::get_error_instruction() to construct a
    generic value of error_type.  If ir_call is to become a statement, it
    can no longer serve this purpose.
    
    Unfortunately, none of our classes are particularly well suited for
    this, and creating a new one would be rather aggrandizing.  So, this
    patch introduces ir_rvalue::error_value(), a static method that creates
    an instance of the base class, ir_rvalue.  This has the nice property
    that you can't accidentally try and access uninitialized fields (as it
    doesn't have any).  The downside is that the base class is no longer
    abstract.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac0f8bae8d39ca9f5e873ba8411472e2962890cd
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Mar 28 19:24:45 2012 -0700

    glsl: Combine AST-level and IR-level parameter mode checking loops.
    
    generate_call() and ast_function_expression::hir() both tried to verify
    that 'out' and 'inout' parameters used l-values.  Irritatingly, it
    turned out that this was not redundant; both checks caught -some- cases.
    
    This patch combines the two into a single "complete" function that does
    all the parameter mode checking.  It also adds a comment clarifying why
    AST-level checking is necessary in the first place.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=909e8899671a45bcc865fe303a8cb697a25634aa
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Mar 28 15:57:50 2012 -0700

    glsl: Split up function matching and call generation a bit more.
    
    We used to have one big function, match_signature_by_name, which found
    a matching signature, performed out-parameter conversions, and generated
    the ir_call.  As the code for matching against built-in functions became
    more complicated, I split it internally, creating generate_call().
    
    However, I left the same awkward interface.  This patch splits it into
    three functions:
    1. match_signature_by_name()
    
       This now takes a name, a list of parameters, the symbol table, and
       returns an ir_function_signature.  Simple and one purpose: matching.
    
    2. no_matching_function_error()
    
       Generate the "no matching function" error and list of prototypes.
       This was complex enough that I felt it deserved its own function.
    
    3. generate_call()
    
       Do the out-parameter conversion and generate the ir_call.  This
       could probably use more splitting.
    
    The caller now has a more natural workflow: find a matching signature,
    then either generate an error or a call.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0405bd08ca0e01ebc68891ee1ff47d320983f775
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Mar 28 14:00:42 2012 -0700

    glsl: Don't trust loop analysis in the presence of function calls.
    
    Function calls may have side effects that alter variables used inside
    the loop.  In the fragment shader, they may even terminate the shader.
    This means our analysis about loop-constant or induction variables may
    be completely wrong.
    
    In general it's impossible to determine whether they actually do or not
    (due to the halting problem), so we'd need to perform conservative
    static analysis.  For now, it's not worth the complexity: most functions
    will be inlined, at which point we can unroll them successfully.
    
    Fixes Piglit tests:
    - shaders/glsl-fs-unroll-out-param
    - shaders/glsl-fs-unroll-side-effect
    
    NOTE: This is a candidate for release branches.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=252d3118dd40e9e3c577702b4c65a2d6cfd343b6
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Thu Mar 29 23:37:09 2012 -0700

    i965/aub: Dump a final bitmap from DestroyContext.
    
    Certain applications don't call SwapBuffers before exiting.  Yet, we'd
    really like to see a bitmap containing the final rendered image even if
    they choose never to present it.
    
    In particular, Piglit tests (at least with -auto -fbo) fall into this
    category.  Many of them failed to dump any images at all.
    
    Dumping one final image at context destruction time seems to work.
    We may wish to pursue a more elegant solution later.
    
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Eric Anholt <eric at anholt.net>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=42bc0b9b9dc31a15c08d409d14d25ccf19501255
Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Apr 1 19:19:21 2012 +0200

    r600g: unduplicate code for PS partial flush

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc95152f1d3bf0dbf79d81e6b9956fd60198e3df
Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Mar 31 23:44:31 2012 +0200

    r600g: determine in advance if hw has vertex cache

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=669d8766ff3403938794eb80d7769347b6e52174
Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Mar 31 01:31:47 2012 +0200

    r600g: optimize r600_resource_va
    
    Avoid calling get_radeon_bo and inline it.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68e4c83ffa9319c934a96ca1daf25e81b78a6d90
Author: Marcin Slusarz <marcin.slusarz at gmail.com>
Date:   Sun Apr 1 17:31:51 2012 +0200

    targets/{xvmc,vdpau,va}: remove all objects on make clean

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a45247fb1b8c30c5be21c3baf84943920ae17bfb
Author: Eugeni Dodonov <eugeni.dodonov at intel.com>
Date:   Sat Mar 31 12:38:59 2012 -0300

    intel: add PCI IDs for Ivy Bridge GT2 server variant
    
    Those IDs are used by Bromolow.
    
    Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
    Signed-off-by: Eugeni Dodonov <eugeni.dodonov at intel.com>




More information about the mesa-commit mailing list