Difference between revisions of "NV2A/Surface Formats"
From xboxdevwiki
(Dummy info about O and Z fields, and list of formats (should link to nouveau or XQEMU instead in future)) |
|||
(One intermediate revision 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]] | [[Category:NV2A]] |
Latest revision as of 20:28, 27 June 2019
Contents
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