Difference between revisions of "NV2A/Surface Formats"

From xboxdevwiki
Jump to: navigation, search
(Created page with " == Texture formats == == Framebuffer formats ==")
 
(Dummy info about O and Z fields, and list of formats (should link to nouveau or XQEMU instead in future))
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
== Texture formats ==
 
== Texture formats ==
 +
 +
* [http://download.nvidia.com/developer/OpenGL_Texture_Formats/nv_ogl_texture_formats.pdf List of implemented texture formats, according to NVIDIA]
 +
 +
=== Texture decoding / sampling ===
 +
 +
The textures are sampled by the texture shader portion of [[NV2A/Pixel_Combiner]].
 +
 +
==== Texture signedness ====
 +
 +
Each component of the texture can be either signed (two's-complement) or unsigned.[https://github.com/xqemu/xqemu/issues/75]{{FIXME|reason=Research and collect information here}}.
 +
 +
==== Texture filtering ====
 +
 +
The GPU implements the standard texture filters as known from OpenGL.
 +
In addition, it supports convolution filters[https://github.com/xqemu/xqemu/issues/238]{{FIXME|reason=Research and collect information here}}.
 +
 
== Framebuffer formats ==
 
== Framebuffer formats ==
 +
 +
Surfaces are rendertargets of the GPU, they can be swizzled or linear.
 +
Additionally, they can be optimized using tiling{{FIXME|reason=Document tiling}}.
 +
 +
{{FIXME|reason=Link to nouveau documentation instead; this section shouldn't be here}}
 +
 +
=== Color ===
 +
 +
Z and O stand for Zero and One respectively. These fields will always be cleared (Zero) or all bis will be set (One).
 +
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X1R5G5B5_Z1R5G5B5
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X1R5G5B5_O1R5G5B5
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_R5G6B5
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X8R8G8B8_Z8R8G8B8
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X8R8G8B8_O8R8G8B8
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X1A7R8G8B8_Z1A7R8G8B8
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_X1A7R8G8B8_O1A7R8G8B8
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_A8R8G8B8
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_B8 (not suitable for displaying)
 +
* NV097_SET_SURFACE_FORMAT_COLOR_LE_G8B8 (not suitable for displaying)
 +
 +
=== Depth ===
 +
 +
The depth buffer can be configured to be fixed point or floating point.
 +
 +
Additionally, the GPU allows hardware Z-Buffer compression{{FIXME|reason=Document compression}}.
 +
 +
* NV097_SET_SURFACE_FORMAT_ZETA_Z16
 +
* NV097_SET_SURFACE_FORMAT_ZETA_Z24S8
 +
 +
[[Category:NV2A]]

Latest revision as of 20:28, 27 June 2019


Texture formats

Texture decoding / sampling

The textures are sampled by the texture shader portion of NV2A/Pixel_Combiner.

Texture signedness

Each component of the texture can be either signed (two's-complement) or unsigned.[1][FIXME].

Texture filtering

The GPU implements the standard texture filters as known from OpenGL. In addition, it supports convolution filters[2][FIXME].

Framebuffer formats

Surfaces are rendertargets of the GPU, they can be swizzled or linear. Additionally, they can be optimized using tiling[FIXME].

[FIXME]

Color

Z and O stand for Zero and One respectively. These fields will always be cleared (Zero) or all bis will be set (One).

  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X1R5G5B5_Z1R5G5B5
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X1R5G5B5_O1R5G5B5
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_R5G6B5
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X8R8G8B8_Z8R8G8B8
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X8R8G8B8_O8R8G8B8
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X1A7R8G8B8_Z1A7R8G8B8
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_X1A7R8G8B8_O1A7R8G8B8
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_A8R8G8B8
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_B8 (not suitable for displaying)
  • NV097_SET_SURFACE_FORMAT_COLOR_LE_G8B8 (not suitable for displaying)

Depth

The depth buffer can be configured to be fixed point or floating point.

Additionally, the GPU allows hardware Z-Buffer compression[FIXME].

  • NV097_SET_SURFACE_FORMAT_ZETA_Z16
  • NV097_SET_SURFACE_FORMAT_ZETA_Z24S8