## C Specification

The VkViewport structure is defined as:

typedef struct VkViewport {
float    x;
float    y;
float    width;
float    height;
float    minDepth;
float    maxDepth;
} VkViewport;

## Members

• x and y are the viewport’s upper left corner (x,y).

• width and height are the viewport’s width and height, respectively.

• minDepth and maxDepth are the depth range for the viewport. It is valid for minDepth to be greater than or equal to maxDepth.

## Description

The framebuffer depth coordinate zf may be represented using either a fixed-point or floating-point representation. However, a floating-point representation must be used if the depth/stencil attachment has a floating-point depth component. If an m-bit fixed-point representation is used, we assume that it represents each value $$\frac{k}{2^m - 1}$$, where k ∈ { 0, 1, …​, 2m-1 }, as k (e.g. 1.0 is represented in binary as a string of all ones).

The viewport parameters shown in the above equations are found from these values as

ox = x + width / 2

oy = y + height / 2

oz = minDepth

px = width

py = height

pz = maxDepth - minDepth.

The width and height of the implementation-dependent maximum viewport dimensions must be greater than or equal to the width and height of the largest image which can be created and attached to a framebuffer.

The floating-point viewport bounds are represented with an implementation-dependent precision.

Valid Usage
• width must be greater than 0.0

• width must be less than or equal to VkPhysicalDeviceLimits::maxViewportDimensions[0]

• height must be greater than 0.0

• The absolute value of height must be less than or equal to VkPhysicalDeviceLimits::maxViewportDimensions[1]

• x must be greater than or equal to viewportBoundsRange[0]

• (x + width) must be less than or equal to viewportBoundsRange[1]

• y must be greater than or equal to viewportBoundsRange[0]

• (y + height) must be less than or equal to viewportBoundsRange[1]

• minDepth must be between 0.0 and 1.0, inclusive

• maxDepth must be between 0.0 and 1.0, inclusive