mesa/src/gallium/docs/source/screen.rst

119 lines
3.3 KiB
ReStructuredText
Raw Normal View History

2009-12-20 23:28:00 +00:00
Screen
======
A screen is an object representing the context-independent part of a device.
Useful Flags
------------
.. _pipe_buffer_usage:
PIPE_BUFFER_USAGE
^^^^^^^^^^^^^^^^^
These flags control buffer creation. Buffers may only have one role, so
care should be taken to not allocate a buffer with the wrong usage.
* ``PIXEL``: This is the flag to use for all textures.
* ``VERTEX``: A vertex buffer.
* ``INDEX``: An element buffer.
* ``CONSTANT``: A buffer of shader constants.
Buffers are inevitably abstracting the pipe's underlying memory management,
so many of their usage flags can be used to direct the way the buffer is
handled.
* ``CPU_READ``, ``CPU_WRITE``: Whether the user will map and, in the case of
the latter, write to, the buffer. The convenience flag ``CPU_READ_WRITE`` is
available to signify a read/write buffer.
* ``GPU_READ``, ``GPU_WRITE``: Whether the driver will internally need to
read from or write to the buffer. The latter will only happen if the buffer
is made into a render target.
* ``DISCARD``: When set on a map, the contents of the map will be discarded
beforehand. Cannot be used with ``CPU_READ``.
* ``DONTBLOCK``: When set on a map, the map will fail if the buffer cannot be
mapped immediately.
* ``UNSYNCHRONIZED``: When set on a map, any outstanding operations on the
buffer will be ignored. The interaction of any writes to the map and any
operations pending with the buffer are undefined. Cannot be used with
``CPU_READ``.
* ``FLUSH_EXPLICIT``: When set on a map, written ranges of the map require
explicit flushes using :ref:`buffer_flush_mapped_range`. Requires
``CPU_WRITE``.
.. _pipe_texture_usage:
PIPE_TEXTURE_USAGE
^^^^^^^^^^^^^^^^^^
These flags determine the possible roles a texture may be used for during its
lifetime. Texture usage flags are cumulative and may be combined to create a
texture that can be used as multiple things.
* ``RENDER_TARGET``: A colorbuffer or pixelbuffer.
* ``DISPLAY_TARGET``: A sharable buffer that can be given to another process.
* ``PRIMARY``: A frontbuffer or scanout buffer.
* ``DEPTH_STENCIL``: A depthbuffer, stencilbuffer, or Z buffer. Gallium does
not explicitly provide for stencil-only buffers, so any stencilbuffer
validated here is implicitly also a depthbuffer.
* ``SAMPLER``: A texture that may be sampled from in a fragment or vertex
shader.
* ``DYNAMIC``: A texture that will be mapped frequently.
2009-12-20 23:28:00 +00:00
Methods
-------
2009-12-21 03:41:50 +00:00
XXX moar; got bored
get_name
^^^^^^^^
Returns an identifying name for the screen.
get_vendor
^^^^^^^^^^
Returns the screen vendor.
get_param
^^^^^^^^^
Get an integer/boolean screen parameter.
get_paramf
^^^^^^^^^^
Get a floating-point screen parameter.
is_format_supported
^^^^^^^^^^^^^^^^^^^
See if a format can be used in a specific manner.
**usage** is a bitmask of :ref:`PIPE_TEXTURE_USAGE` flags.
Returns TRUE if all usages can be satisfied.
.. note::
``PIPE_TEXTURE_USAGE_DYNAMIC`` is not a valid usage.
.. _texture_create:
2009-12-21 03:41:50 +00:00
texture_create
^^^^^^^^^^^^^^
Given a template of texture setup, create a buffer and texture.
texture_blanket
^^^^^^^^^^^^^^^
Like :ref:`texture_create`, but use a supplied buffer instead of creating a
new one.
texture_destroy
^^^^^^^^^^^^^^^
Destroy a texture. The buffer backing the texture is destroyed if it has no
more references.