#include <nvapi.h>
NvU32 NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC_V1::flags |
A combination of flags from NV_FASTGS_FLAGS.
[optional] Array of 16 coordinate swizzle modes, one per viewport. NULL if not used.
The output x, y, z, and w coordinates of all vertices can be set to any of the coordinates or their negated versions i.e. {x, y, z, w, -x, -y, -z, -w}. Coordinates are swizzled before any viewport operation occurs i.e. before frustum clipping, scaling, and viewport clipping. And after last of vertex/tesselation/geometry shader stage, stream-out and viewport broadcast expansion (see NV_FASTGS_USE_VIEWPORT_MASK) pCoordinateSwizzling[i] sets the swizzle-mode of each component for viewport i.
See NV_SWIZZLE_MODE for values of allowed swizzle modes.
See NV_SWIZZLE_OFFSET for bit offset from where NV_SWIZZLE_MODE to be set for each component.
For example :
- To set swizzle for viewport 0 such that - w and z are unchanged and values of x and y are swapped :
pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) |
(NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) |
(NV_SWIZZLE_POS_X << NV_SWIZZLE_OFFSET_Y) |
(NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_X);
- To set swizzle for viewport 0 such that - w, z and y are unchanged and value of x is negated :
pCoordinateSwizzling[0] = (NV_SWIZZLE_POS_W << NV_SWIZZLE_OFFSET_W) |
(NV_SWIZZLE_POS_Z << NV_SWIZZLE_OFFSET_Z) |
(NV_SWIZZLE_POS_Y << NV_SWIZZLE_OFFSET_Y) |
(NV_SWIZZLE_NEG_X << NV_SWIZZLE_OFFSET_X);
Need to set some valid combination of swizzle-modes for all viewports, irrespective of whether that viewport is set.
Invalid swizzle-mode for any viewport (even if that viewport is not set) may result in removal of device.
NvU32 NVAPI_D3D12_PSO_CREATE_FASTGS_EXPLICIT_DESC_V1::version |
ALWAYS == NV_FASTGS_EXPLICIT_PSO_EXTENSION_VER.
The documentation for this struct was generated from the following file: