瀏覽代碼

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.
tags/mesa-7.9-rc1
Luca Barbieri 15 年之前
父節點
當前提交
72b3e3fee3
共有 3 個檔案被更改,包括 45 行新增1 行删除
  1. 1
    0
      src/gallium/docs/source/index.rst
  2. 41
    0
      src/gallium/docs/source/resources.rst
  3. 3
    1
      src/gallium/include/pipe/p_defines.h

+ 1
- 0
src/gallium/docs/source/index.rst 查看文件

@@ -15,6 +15,7 @@ Contents:
debugging
tgsi
screen
resources
context
cso
distro

+ 41
- 0
src/gallium/docs/source/resources.rst 查看文件

@@ -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

+ 3
- 1
src/gallium/include/pipe/p_defines.h 查看文件

@@ -135,13 +135,15 @@ enum pipe_error {
#define PIPE_STENCIL_OP_DECR_WRAP 6
#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 {
PIPE_BUFFER = 0,
PIPE_TEXTURE_1D = 1,
PIPE_TEXTURE_2D = 2,
PIPE_TEXTURE_3D = 3,
PIPE_TEXTURE_CUBE = 4,
PIPE_TEXTURE_RECT = 5,
PIPE_MAX_TEXTURE_TYPES
};


Loading…
取消
儲存