gallium: add PIPE_TEXTURE_RECT target
This allows to properly support OpenGL rectangle textures in a well defined way, especially on drivers that don't expose PIPE_CAP_NPOT_TEXTURES.
This commit is contained in:
parent
9b3362932d
commit
72b3e3fee3
|
@ -15,6 +15,7 @@ Contents:
|
||||||
debugging
|
debugging
|
||||||
tgsi
|
tgsi
|
||||||
screen
|
screen
|
||||||
|
resources
|
||||||
context
|
context
|
||||||
cso
|
cso
|
||||||
distro
|
distro
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
Resources
|
||||||
|
=========
|
||||||
|
|
||||||
|
Resources represent objects that hold data: textures and buffers.
|
||||||
|
|
||||||
|
They are mostly modelled after the resources in Direct3D 10/11, but with a
|
||||||
|
different transfer/update mechanism, and more features for OpenGL support.
|
||||||
|
|
||||||
|
Resource targets
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Resource targets determine the type of a resource.
|
||||||
|
|
||||||
|
Note that drivers may not actually have the restrictions listed regarding
|
||||||
|
coordinate normalization and wrap modes, and in fact efficient OpenCL
|
||||||
|
support will probably require drivers that don't have any of them, which
|
||||||
|
will probably be advertised with an appropriate cap.
|
||||||
|
|
||||||
|
TODO: document all targets. Note that both 3D and cube have restrictions
|
||||||
|
that depend on the hardware generation.
|
||||||
|
|
||||||
|
TODO: can buffers have a non-R8 format?
|
||||||
|
|
||||||
|
PIPE_TEXTURE_RECT
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
2D surface with OpenGL GL_TEXTURE_RECTANGLE semantics.
|
||||||
|
|
||||||
|
depth must be 1
|
||||||
|
- last_level must be 0
|
||||||
|
- Must use unnormalized coordinates
|
||||||
|
- Must use a clamp wrap mode
|
||||||
|
|
||||||
|
PIPE_TEXTURE_2D
|
||||||
|
^^^^^^^^^^^^^^^
|
||||||
|
2D surface accessed with normalized coordinates.
|
||||||
|
|
||||||
|
- If PIPE_CAP_NPOT_TEXTURES is not supported,
|
||||||
|
width and height must be powers of two
|
||||||
|
- Mipmaps can be used
|
||||||
|
- Must use normalized coordinates
|
||||||
|
- No special restrictions on wrap modes
|
|
@ -135,13 +135,15 @@ enum pipe_error {
|
||||||
#define PIPE_STENCIL_OP_DECR_WRAP 6
|
#define PIPE_STENCIL_OP_DECR_WRAP 6
|
||||||
#define PIPE_STENCIL_OP_INVERT 7
|
#define PIPE_STENCIL_OP_INVERT 7
|
||||||
|
|
||||||
/** Texture types */
|
/** Texture types.
|
||||||
|
* See the documentation for info on PIPE_TEXTURE_RECT vs PIPE_TEXTURE_2D */
|
||||||
enum pipe_texture_target {
|
enum pipe_texture_target {
|
||||||
PIPE_BUFFER = 0,
|
PIPE_BUFFER = 0,
|
||||||
PIPE_TEXTURE_1D = 1,
|
PIPE_TEXTURE_1D = 1,
|
||||||
PIPE_TEXTURE_2D = 2,
|
PIPE_TEXTURE_2D = 2,
|
||||||
PIPE_TEXTURE_3D = 3,
|
PIPE_TEXTURE_3D = 3,
|
||||||
PIPE_TEXTURE_CUBE = 4,
|
PIPE_TEXTURE_CUBE = 4,
|
||||||
|
PIPE_TEXTURE_RECT = 5,
|
||||||
PIPE_MAX_TEXTURE_TYPES
|
PIPE_MAX_TEXTURE_TYPES
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue