Mesa (master): 30 new commits

Francisco Jerez currojerez at kemper.freedesktop.org
Fri May 11 12:06:21 UTC 2012


URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=60e7b08101295099618a3c1f879440b257265253
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri May 4 15:02:21 2012 +0200

    clover: Implement CL_MEM_COPY_HOST_PTR.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=19eae45e012d917b682758abeaf4fb7074c00839
Author: Alexey Shvetsov <alexxy at gentoo.org>
Date:   Wed Apr 11 01:11:56 2012 +0300

    gallium/targets/pipe-loader: Prepend DESTDIR to the installation directory.
    
    Signed-off-by: Alexey Shvetsov <alexxy at gentoo.org>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=79d77b38b85aa8e906d602dd106264a8010724f1
Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Fri Apr 20 16:56:46 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=c6db1b3396384186aab5b685fe1fd540e17b3a62
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri Apr 20 16:56:19 2012 +0200

    clover: Import OpenCL state tracker.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=309a186987cea7f62dfd41fef66fac6d79fca96c
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=b52a0f22813c8e09747ece41173c21f22d4fc369
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Fri Apr 20 16:31:23 2012 +0200

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

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=66f7fd99fa1d8c8e3b09fadd5624db9968b67506
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Apr 25 22:16:26 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=317be33d73228fe8b340de8e029ff24b6e0d95b5
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=e1364530622a26f11c79694429cf84418a0b7ef7
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Apr 25 22:16:00 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=2faf01c8403514dda15ab8b1a2309d5529dd06ba
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=40123dae4371ab62530d15020ca97208e206d359
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=e9072863b18e4a8cf78e72bf25abbb433de1b486
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=a426b0d5bce24659a19c72af27a5aa4871782f9d
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=49468a1b2a241d5a6a1155f79b48fa6562524206
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=b52e374ad3b568fc1eb35df80e90a39b4cb99289
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=1b8aecc797b72a84c4a571639e952fe1f84e0fa5
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=0a62af3bcc530a6d09130368055c64263ba48848
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=57c048f291ffcb97d7df3177d92f9634e510dcc0
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Sun Mar 18 23:59:33 2012 +0100

    gallium/compute: Drop TGSI dependency.
    
    Add a shader cap for specifying the preferred shader representation.
    Right now the only supported value is TGSI, other enum values will be
    added as they are needed.
    
    This is mainly to accommodate AMD's LLVM compiler back-end by letting
    it bypass the TGSI representation for compute programs.  Other drivers
    will keep using the common TGSI instruction set.
    
    Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2644952bd4dfa3b75112dee8dfd287a12d770705
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=c2d31a83a8104acba05f92b025bc9b145ca34974
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 20:22:23 2012 +0200

    gallium/tgsi: Add support for atomic opcodes.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e550c34237898385c07af2cbb2da76670ed994e
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 20:21:38 2012 +0200

    gallium/tgsi: Add support for barriers.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=581ddbcf93ea8111e71ef43e90fa6937cf46a2cb
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=b8e808f1ef9462af8545999df514fddbbff34345
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 20:20:29 2012 +0200

    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 shader resource is intended for writing.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=82c90b2da8e236bc134cb2bd0ec4e09551b12164
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 19:08:55 2012 +0200

    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 target data type.
    
    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=a4ebb04214bab1cd9bd41967232ec89441e31744
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 18:28:36 2012 +0200

    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=63428372cadc73a7124f4e7d383eb86a0c7affd7
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=1279923d72942ee201fcc6ad40d552143f651f03
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Mon Apr 30 18:27:52 2012 +0200

    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=5f55cbc7d93c6568566893f9345e43fff311a32b
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue May 1 02:47:03 2012 +0200

    gallium: Add context hooks for binding shader resources.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a5f44cc8c2ce0916809ce5da5a2490ad000ef099
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Tue May 1 02:38:51 2012 +0200

    gallium/tgsi: Split sampler views from shader resources.
    
    This commit splits the current concept of resource into "sampler
    views" and "shader resources":
    
    "Sampler views" are textures or buffers that are bound to a given
    shader stage and can be read from in conjunction with a sampler
    object.  They are analogous to OpenGL texture objects or Direct3D
    SRVs.
    
    "Shader resources" are textures or buffers that can be read and
    written from a shader.  There's no support for floating point
    coordinates, address wrap modes or filtering, and, unlike sampler
    views, shader resources are global for the whole graphics pipeline.
    They are analogous to OpenGL image objects (as in
    ARB_shader_image_load_store) or Direct3D UAVs.
    
    Most hardware is likely to implement shader resources and sampler
    views as separate objects, so, having the distinction at the API level
    simplifies things slightly for the driver.
    
    This patch introduces the SVIEW register file with a declaration token
    and syntax analogous to the already existing RES register file.  After
    this change, the SAMPLE_* opcodes no longer accept a resource as
    input, but rather a SVIEW object.  To preserve the functionality of
    reading from a sampler view with integer coordinates, the
    SAMPLE_I(_MS) opcodes are introduced which are similar to LOAD(_MS)
    but take a SVIEW register instead of a RES register as argument.

URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d9d82dcd006c124e6569789c90390c43c1360c06
Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Apr 25 22:15:16 2012 +0200

    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>




More information about the mesa-commit mailing list