OSDN Git Service

gallium/util: add u_transfer_helper
authorRob Clark <robdclark@gmail.com>
Tue, 28 Nov 2017 15:47:06 +0000 (10:47 -0500)
committerRob Clark <robdclark@gmail.com>
Fri, 15 Dec 2017 13:09:44 +0000 (08:09 -0500)
commite94eb5e6000e293d73452b76a95754a3734f5065
tree528c74507ac9c4d1528f6318e2cfb228ced6fa9e
parenteac1aad6249da0479a5bf75f72025bc134c9a6cc
gallium/util: add u_transfer_helper

Add a new helper that drivers can use to emulate various things that
need special handling in particular in transfer_map:

 1) z32_s8x24.. gl/gallium treats this as a single buffer with depth
    and stencil interleaved but hardware frequently treats this as
    separate z32 and s8 buffers.  Special pack/unpack handling is
    needed in transfer_map/unmap to pack/unpack the exposed buffer

 2) fake RGTC.. GPUs designed with GLES in mind, but which can other-
    wise do GL3, if native RGTC is not supported it can be emulated
    by converting to uncompressed internally, but needs pack/unpack
    in transfer_map/unmap

 3) MSAA resolves in the transfer_map() case

v2: add MSAA resolve based on Eric's "gallium: Add helpers for MSAA
    resolves in pipe_transfer_map()/unmap()." patch; avoid wrapping
    pipe_resource, to make it possible for drivers to use both this
    and threaded_context.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/auxiliary/Makefile.sources
src/gallium/auxiliary/meson.build
src/gallium/auxiliary/util/u_transfer_helper.c [new file with mode: 0644]
src/gallium/auxiliary/util/u_transfer_helper.h [new file with mode: 0644]
src/gallium/include/pipe/p_screen.h