gallium: Add context hooks for binding shader resources.
This commit is contained in:
parent
a5f44cc8c2
commit
5f55cbc7d9
|
@ -120,6 +120,22 @@ to the array index which is used for sampling.
|
|||
* ``sampler_view_destroy`` destroys a sampler view and releases its reference
|
||||
to associated texture.
|
||||
|
||||
Shader Resources
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
Shader resources are textures or buffers that may be read or written
|
||||
from a shader without an associated sampler. This means that they
|
||||
have no support for floating point coordinates, address wrap modes or
|
||||
filtering.
|
||||
|
||||
Shader resources are specified for all the shader stages at once using
|
||||
the ``set_shader_resources`` method. When binding texture resources,
|
||||
the ``level``, ``first_layer`` and ``last_layer`` pipe_surface fields
|
||||
specify the mipmap level and the range of layers the texture will be
|
||||
constrained to. In the case of buffers, ``first_element`` and
|
||||
``last_element`` specify the range within the buffer that will be used
|
||||
by the shader resource.
|
||||
|
||||
Surfaces
|
||||
^^^^^^^^
|
||||
|
||||
|
@ -575,7 +591,9 @@ The compute program has access to four special resources:
|
|||
|
||||
These resources use a byte-based addressing scheme, and they can be
|
||||
accessed from the compute program by means of the LOAD/STORE TGSI
|
||||
opcodes.
|
||||
opcodes. Additional resources to be accessed using the same opcodes
|
||||
may be specified by the user with the ``set_compute_resources``
|
||||
method.
|
||||
|
||||
In addition, normal texture sampling is allowed from the compute
|
||||
program: ``bind_compute_sampler_states`` may be used to set up texture
|
||||
|
|
|
@ -249,6 +249,10 @@ resources might be created and handled quite differently.
|
|||
process.
|
||||
* ``PIPE_BIND_GLOBAL``: A buffer that can be mapped into the global
|
||||
address space of a compute program.
|
||||
* ``PIPE_BIND_SHADER_RESOURCE``: A buffer or texture that can be
|
||||
bound to the graphics pipeline as a shader resource.
|
||||
* ``PIPE_BIND_COMPUTE_RESOURCE``: A buffer or texture that can be
|
||||
bound to the compute program as a shader resource.
|
||||
|
||||
.. _pipe_usage:
|
||||
|
||||
|
|
|
@ -229,6 +229,22 @@ struct pipe_context {
|
|||
unsigned start_slot, unsigned num_views,
|
||||
struct pipe_sampler_view **);
|
||||
|
||||
/**
|
||||
* Bind an array of shader resources that will be used by the
|
||||
* graphics pipeline. Any resources that were previously bound to
|
||||
* the specified range will be unbound after this call.
|
||||
*
|
||||
* \param first first resource to bind.
|
||||
* \param count number of consecutive resources to bind.
|
||||
* \param resources array of pointers to the resources to bind, it
|
||||
* should contain at least \a count elements
|
||||
* unless it's NULL, in which case no new
|
||||
* resources will be bound.
|
||||
*/
|
||||
void (*set_shader_resources)(struct pipe_context *,
|
||||
unsigned start, unsigned count,
|
||||
struct pipe_surface **resources);
|
||||
|
||||
void (*set_vertex_buffers)( struct pipe_context *,
|
||||
unsigned num_buffers,
|
||||
const struct pipe_vertex_buffer * );
|
||||
|
@ -441,6 +457,22 @@ struct pipe_context {
|
|||
void (*bind_compute_state)(struct pipe_context *, void *);
|
||||
void (*delete_compute_state)(struct pipe_context *, void *);
|
||||
|
||||
/**
|
||||
* Bind an array of shader resources that will be used by the
|
||||
* compute program. Any resources that were previously bound to
|
||||
* the specified range will be unbound after this call.
|
||||
*
|
||||
* \param first first resource to bind.
|
||||
* \param count number of consecutive resources to bind.
|
||||
* \param resources array of pointers to the resources to bind, it
|
||||
* should contain at least \a count elements
|
||||
* unless it's NULL, in which case no new
|
||||
* resources will be bound.
|
||||
*/
|
||||
void (*set_compute_resources)(struct pipe_context *,
|
||||
unsigned start, unsigned count,
|
||||
struct pipe_surface **resources);
|
||||
|
||||
/**
|
||||
* Bind an array of buffers to be mapped into the address space of
|
||||
* the GLOBAL resource. Any buffers that were previously bound
|
||||
|
|
|
@ -305,6 +305,8 @@ enum pipe_transfer_usage {
|
|||
#define PIPE_BIND_CURSOR (1 << 16) /* mouse cursor */
|
||||
#define PIPE_BIND_CUSTOM (1 << 17) /* state-tracker/winsys usages */
|
||||
#define PIPE_BIND_GLOBAL (1 << 18) /* set_global_binding */
|
||||
#define PIPE_BIND_SHADER_RESOURCE (1 << 19) /* set_shader_resources */
|
||||
#define PIPE_BIND_COMPUTE_RESOURCE (1 << 20) /* set_compute_resources */
|
||||
|
||||
/* The first two flags above were previously part of the amorphous
|
||||
* TEXTURE_USAGE, most of which are now descriptions of the ways a
|
||||
|
|
|
@ -62,6 +62,7 @@ extern "C" {
|
|||
#define PIPE_MAX_GEOMETRY_SAMPLERS 16
|
||||
#define PIPE_MAX_SHADER_INPUTS 32
|
||||
#define PIPE_MAX_SHADER_OUTPUTS 32
|
||||
#define PIPE_MAX_SHADER_SAMPLER_VIEWS 32
|
||||
#define PIPE_MAX_SHADER_RESOURCES 32
|
||||
#define PIPE_MAX_TEXTURE_LEVELS 16
|
||||
#define PIPE_MAX_SO_BUFFERS 4
|
||||
|
|
Loading…
Reference in New Issue