www.khronos.org/vulkan©2016 Khronos Group - Rev. 1216
Vulkan 1.0 Quick ReferencePage 3
Render Pass (connued)
typedef struct VkAachmentDescripon {
VkAachmentDescriponFlags ags;
VkFormat format;
P.11
VkSampleCountFlagBits samples;
P.12
VkAachmentLoadOp loadOp;
VkAachmentStoreOp storeOp;
VkAachmentLoadOp stencilLoadOp;
VkAachmentStoreOp stencilStoreOp;
VkImageLayout inialLayout;
P.11
VkImageLayout nalLayout;
P.11
} VkAachmentDescripon;
loadOp, stencilLoadOp: VK_ATTACHMENT_LOAD_OP_X
where X is LOAD, CLEAR, DONT_CARE
storeOp, stencilStoreOp: VK_ATTACHMENT_STORE_OP_X
where X is STORE, DONT_CARE
ags: VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
typedef struct VkSubpassDescripon {
VkSubpassDescriponFlags ags;
= 0
VkPipelineBindPoint pipelineBindPoint;
uint32_t inputAachmentCount;
const VkAachmentReference* pInputAachments;
uint32_t colorAachmentCount;
const VkAachmentReference* pColorAachments;
const VkAachmentReference*
pResolveAachments;
const VkAachmentReference*
pDepthStencilAachment;
uint32_t preserveAachmentCount;
const uint32_t* pPreserveAachments;
} VkSubpassDescripon;
pipelineBindPoint: VK_PIPELINE_BIND_POINT_GRAPHICS
typedef struct VkAachmentReference {
uint32_t aachment;
VkImageLayout layout;
P.11
} VkAachmentReference;
typedef struct VkSubpassDependency {
uint32_t srcSubpass;
uint32_t dstSubpass;
VkPipelineStageFlags srcStageMask;
P.10
VkPipelineStageFlags dstStageMask;
P.10
VkAccessFlags srcAccessMask;
P.10
VkAccessFlags dstAccessMask;
P.10
VkDependencyFlags dependencyFlags;
} VkSubpassDependency;
void vkDestroyRenderPass(
VkDevice device,
VkRenderPass renderPass,
const VkAllocaonCallbacks* pAllocator);
P.10
Framebuers [7.3]
VkResult vkCreateFramebuer(
VkDevice device,
const VkFramebuerCreateInfo* pCreateInfo,
const VkAllocaonCallbacks* pAllocator,
P.10
VkFramebuer* pFramebuer);
typedef struct VkFramebuerCreateInfo {
VkStructureType sType;
const void* pNext;
VkFramebuerCreateFlags ags;
= 0
VkRenderPass renderPass;
uint32_t aachmentCount;
const VkImageView* pAachments;
uint32_t width;
uint32_t height;
uint32_t layers;
} VkFramebuerCreateInfo;
void vkDestroyFramebuer(
VkDevice device,
VkFramebuer framebuer,
const VkAllocaonCallbacks* pAllocator);
P.10
Render Pass Commands [7.4]
void vkCmdBeginRenderPass(
VkCommandBuer commandBuer,
const VkRenderPassBeginInfo* pRenderPassBegin,
VkSubpassContents contents);
contents: VK_SUBPASS_CONTENTS_X where X is INLINE,
SECONDARY_COMMAND_BUFFERS
typedef struct VkRenderPassBeginInfo {
VkStructureType sType;
const void* pNext;
VkRenderPass renderPass;
VkFramebuer framebuer;
VkRect2D renderArea;
P.12
uint32_t clearValueCount;
const VkClearValue* pClearValues;
P.10
} VkRenderPassBeginInfo;
void vkGetRenderAreaGranularity(
VkDevice device,
VkRenderPass renderPass,
VkExtent2D* pGranularity);
P.10
void vkCmdNextSubpass(
VkCommandBuer commandBuer,
VkSubpassContents contents);
contents: VK_SUBPASS_CONTENTS_X where X is
INLINE, SECONDARY_COMMAND_BUFFERS
void vkCmdEndRenderPass(
VkCommandBuer commandBuer);
Pipelines [9]
Processing pipelines are either compute or graphics pipelines.
Compute Pipelines [9.1]
Compute pipelines consist of a single stac compute shader
stage and the pipeline layout.
VkResult vkCreateComputePipelines(
VkDevice device,
VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocaonCallbacks* pAllocator,
P.10
VkPipeline* pPipelines);
typedef struct VkComputePipelineCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineCreateFlags ags;
VkPipelineShaderStageCreateInfo stage;
P.12
VkPipelineLayout layout;
VkPipeline basePipelineHandle;
int32_t basePipelineIndex;
} VkComputePipelineCreateInfo;
ags: Combinaon of VK_PIPELINE_CREATE_X_BIT
where X is DISABLE_OPTIMIZATION,
ALLOW_DERIVATIVES, DERIVATIVE
Graphics Pipelines [9.2]
VkResult vkCreateGraphicsPipelines(
VkDevice device,
VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkGraphicsPipelineCreateInfo* pCreateInfos,
const VkAllocaonCallbacks* pAllocator,
P.10
VkPipeline* pPipelines);
In VkGraphicsPipelineCreateInfo below, replace X with
VkPipeline and replace Y with StateCreateInfo.
typedef struct VkGraphicsPipelineCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineCreateFlags ags;
uint32_t stageCount;
const VkPipelineShaderStageCreateInfo* pStages;
P.12
const XVertexInputY* pVertexInputState;
const XInputAssemblyY* pInputAssemblyState;
const XTessellaonY* pTessellaonState;
const XViewportY* pViewportState;
const XRasterizaonY* pRasterizaonState;
const XMulsampleY* pMulsampleState;
const XDepthStencilY* pDepthStencilState;
const XColorBlendY* pColorBlendState;
const XDynamicY* pDynamicState;
VkPipelineLayout layout;
VkRenderPass renderPass;
uint32_t subpass;
VkPipeline basePipelineHandle;
int32_t basePipelineIndex;
} VkGraphicsPipelineCreateInfo;
ags: VK_PIPELINE_CREATE_Z_BIT where Z is
DISABLE_OPTIMIZATION, ALLOW_DERIVATIVES,
DERIVATIVE
typedef struct VkPipelineVertexInputStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineVertexInputStateCreateFlags ags;
= 0
uint32_t vertexBindingDescriponCount;
const VkVertexInputBindingDescripon*
pVertexBindingDescripons;
uint32_t vertexAributeDescriponCount;
const VkVertexInputAributeDescripon*
pVertexAributeDescripons;
} VkPipelineVertexInputStateCreateInfo;
typedef struct VkVertexInputBindingDescripon {
uint32_t binding;
uint32_t stride;
VkVertexInputRate inputRate;
} VkVertexInputBindingDescripon;
inputRate:
VK_VERTEX_INPUT_RATE_{VERTEX, INSTANCE}
typedef struct VkVertexInputAributeDescripon {
uint32_t locaon;
uint32_t binding;
VkFormat format;
P.11
uint32_t oset;
} VkVertexInputAributeDescripon;
typedef struct VkPipelineInputAssemblyStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineInputAssemblyStateCreateFlags ags;
= 0
VkPrimiveTopology topology;
VkBool32 primiveRestartEnable;
} VkPipelineInputAssemblyStateCreateInfo;
topology
: VK_PRIMITIVE_TOPOLOGY_X where X is
POINT_LIST, LINE_LIST, LINE_STRIP, TRIANGLE_LIST,
TRIANGLE_STRIP, TRIANGLE_FAN,
LINE_{LIST, STRIP}_WITH_ADJACENCY,
TRIANGLE_{LIST, STRIP}_WITH_ADJACENCY, PATCH_LIST
Connued on next page >
Shaders [8]
Shader Modules [8.1]
VkResult vkCreateShaderModule(
VkDevice device,
const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocaonCallbacks* pAllocator,
P.10
VkShaderModule* pShaderModule);
typedef struct VkShaderModuleCreateInfo {
VkStructureType sType;
const void* pNext;
VkShaderModuleCreateFlags ags;
= 0
size_t codeSize;
const uint32_t* pCode;
} VkShaderModuleCreateInfo;
void vkDestroyShaderModule(
VkDevice device,
VkShaderModule shaderModule,
const VkAllocaonCallbacks* pAllocator);
P.10
Built-in Variables [14.6]
The built-in variables listed below are accessed in shaders by
declaring the variable using a BuiltIn decoraon.
Decoraon Type
ClipDistance Array of 32-bit oat values
CullDistance Array of 32-bit oat values
FragCoord Four-component vector of 32-bit oat
values
FragDepth Scalar 32-bit oat value
FrontFacing Scalar 32-bit integer
GlobalInvocaonID Three-component vector of 32-bit ints
HelperInvocaon Scalar 32-bit integer
InvocaonID Scalar 32-bit integer
InstanceIndex Scalar 32-bit integer
Layer Scalar 32-bit integer
LocalInvocaonID Three-component vector of 32-bit ints
NumWorkGroups Three-component vector of 32-bit ints
PatchVerces Scalar 32-bit integer
PointCoord Two-component vector of 32-bit oat
values
PointSize Scalar 32-bit oat value
Posion Four-component vector of 32-bit oat
values
PrimiveID Scalar 32-bit integer
SampleID Scalar 32-bit integer
SampleMask Array of 32-bit integers
SamplePosion Two-component vector of oat values
TessellaonCoord Three-component vector of 32-bit oat
values
TessellaonLevelOuter Array of size two, containing 32-bit oat
values
TessellaonLevelInner Array of size four, containing 32-bit oat
values
VertexIndex 32-bit integer
ViewportIndex 32-bit integer
WorkgroupID Three-component vector of 32-bit ints