VkShaderEXT object type which represents a single compiled shader stage. Shader objects provide a more flexible alternative to VkPipeline objects, which may be helpful in certain use cases.
Example 1
Create linked pair of vertex and fragment shaders.
// Logical device created with the shaderObject feature enabled
VkDevice device;
// SPIR-V shader code for a vertex shader, along with its size in bytes
void* pVertexSpirv;
size_t vertexSpirvSize;
// SPIR-V shader code for a fragment shader, along with its size in bytes
void* pFragmentSpirv;
size_t fragmentSpirvSize;
// Descriptor set layout compatible with the shaders
VkDescriptorSetLayout descriptorSetLayout;
VkShaderCreateInfoEXT shaderCreateInfos[2] =
{
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
.nextStage = VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize,
.pCode = pVertexSpirv,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize,
.pCode = pFragmentSpirv,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
}
};
VkResult result;
VkShaderEXT shaders[2];
result = vkCreateShadersEXT(device, 2, &shaderCreateInfos, NULL, shaders);
if (result != VK_SUCCESS)
{
// Handle error
}
Later, during command buffer recording, bind the linked shaders and draw.
// Command buffer in the recording state
VkCommandBuffer commandBuffer;
// Vertex and fragment shader objects created above
VkShaderEXT shaders[2];
// Assume vertex buffers, descriptor sets, etc. have been bound, and existing
// state setting commands have been called to set all required state
const VkShaderStageFlagBits stages[2] =
{
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_FRAGMENT_BIT
};
// Bind linked shaders
vkCmdBindShadersEXT(commandBuffer, 2, stages, shaders);
// Equivalent to the previous line. Linked shaders can be bound one at a time,
// in any order:
// vkCmdBindShadersEXT(commandBuffer, 1, &stages[1], &shaders[1]);
// vkCmdBindShadersEXT(commandBuffer, 1, &stages[0], &shaders[0]);
// The above is sufficient to draw if the device was created with the
// tessellationShader and geometryShader features disabled. Otherwise, since
// those stages should not execute, vkCmdBindShadersEXT() must be called at
// least once with each of their stages in pStages before drawing:
const VkShaderStageFlagBits unusedStages[3] =
{
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT
};
// NULL pShaders is equivalent to an array of stageCount VK_NULL_HANDLE values,
// meaning no shaders are bound to those stages, and that any previously bound
// shaders are unbound
vkCmdBindShadersEXT(commandBuffer, 3, unusedStages, NULL);
// Graphics shader objects may only be used to draw inside dynamic render pass
// instances begun with vkCmdBeginRendering(), assume one has already been begun
// Draw a triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
Example 2
Create unlinked vertex, geometry, and fragment shaders.
// Logical device created with the shaderObject feature enabled
VkDevice device;
// SPIR-V shader code for vertex shaders, along with their sizes in bytes
void* pVertexSpirv[2];
size_t vertexSpirvSize[2];
// SPIR-V shader code for a geometry shader, along with its size in bytes
void pGeometrySpirv;
size_t geometrySpirvSize;
// SPIR-V shader code for fragment shaders, along with their sizes in bytes
void* pFragmentSpirv[2];
size_t fragmentSpirvSize[2];
// Descriptor set layout compatible with the shaders
VkDescriptorSetLayout descriptorSetLayout;
VkShaderCreateInfoEXT shaderCreateInfos[5] =
{
// Stage order does not matter
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_GEOMETRY_BIT,
.nextStage = VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = pGeometrySpirv,
.pCode = geometrySpirvSize,
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
.nextStage = VK_SHADER_STAGE_GEOMETRY_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize[0],
.pCode = pVertexSpirv[0],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize[0],
.pCode = pFragmentSpirv[0],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.nextStage = 0,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = fragmentSpirvSize[1],
.pCode = pFragmentSpirv[1],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
},
{
.sType = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
// Suppose we want this vertex shader to be able to be followed by
// either a geometry shader or fragment shader:
.nextStage = VK_SHADER_STAGE_GEOMETRY_BIT | VK_SHADER_STAGE_FRAGMENT_BIT,
.codeType = VK_SHADER_CODE_TYPE_SPIRV_EXT,
.codeSize = vertexSpirvSize[1],
.pCode = pVertexSpirv[1],
.pName = "main",
.setLayoutCount = 1,
.pSetLayouts = &descriptorSetLayout;
.pushConstantRangeCount = 0,
.pPushConstantRanges = NULL,
.pSpecializationInfo = NULL
}
};
VkResult result;
VkShaderEXT shaders[5];
result = vkCreateShadersEXT(device, 5, &shaderCreateInfos, NULL, shaders);
if (result != VK_SUCCESS)
{
// Handle error
}
Later, during command buffer recording, bind the linked shaders in different combinations and draw.
// Command buffer in the recording state
VkCommandBuffer commandBuffer;
// Vertex, geometry, and fragment shader objects created above
VkShaderEXT shaders[5];
// Assume vertex buffers, descriptor sets, etc. have been bound, and existing
// state setting commands have been called to set all required state
const VkShaderStageFlagBits stages[3] =
{
// Any order is allowed
VK_SHADER_STAGE_FRAGMENT_BIT,
VK_SHADER_STAGE_VERTEX_BIT,
VK_SHADER_STAGE_GEOMETRY_BIT,
};
VkShaderEXT bindShaders[3] =
{
shaders[2], // FS
shaders[1], // VS
shaders[0] // GS
};
// Bind unlinked shaders
vkCmdBindShadersEXT(commandBuffer, 3, stages, bindShaders);
// Assume the tessellationShader feature is disabled, so vkCmdBindShadersEXT()
// need not have been called with either tessellation stage
// Graphics shader objects may only be used to draw inside dynamic render pass
// instances begun with vkCmdBeginRendering(), assume one has already been begun
// Draw a triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
// Bind a different unlinked fragment shader
const VkShaderStageFlagBits fragmentStage = VK_SHADER_STAGE_FRAGMENT_BIT;
vkCmdBindShadersEXT(commandBuffer, 1, &fragmentStage, &shaders[3]);
// Draw another triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
// Bind a different unlinked vertex shader
const VkShaderStageFlagBits vertexStage = VK_SHADER_STAGE_VERTEX_BIT;
vkCmdBindShadersEXT(commandBuffer, 1, &vertexStage, &shaders[4]);
// Draw another triangle
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
VK_EXT_shader_objectVK_KHR_get_physical_device_properties2 or Version 1.1 and VK_KHR_dynamic_rendering or Version 1.3VK_EXT_extended_dynamic_stateVK_EXT_extended_dynamic_state2VK_EXT_extended_dynamic_state3VK_EXT_vertex_input_dynamic_state| Modifier and Type | Field and Description |
|---|---|
| public static final int | VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT
Extends |
| public static final String | VK_EXT_SHADER_OBJECT_EXTENSION_NAME
The extension name. |
| public static final int | VK_EXT_SHADER_OBJECT_SPEC_VERSION
The extension specification version. |
| public static final int | VK_OBJECT_TYPE_SHADER_EXT
Extends |
| public static final int | VK_SHADER_CODE_TYPE_BINARY_EXT
VkShaderCodeTypeEXT - Indicate a shader code type Description
|
| public static final int | VK_SHADER_CODE_TYPE_SPIRV_EXT
VkShaderCodeTypeEXT - Indicate a shader code type Description
|
| public static final int | VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
Extends |
| public static final int | VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT
Extends |
| public static final int | VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
Extends |
| public static final int | VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT
Extends |
| public static final int | VK_SHADER_CREATE_LINK_STAGE_BIT_EXT
VkShaderCreateFlagBitsEXT - Bitmask controlling how a shader object is created Description
|
| public static final int | VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT
Extends |
| public static final int | VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
Extends |
| public static final int | VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
Extends |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public static void | nvkCmdBindShadersEXT(VkCommandBuffer commandBuffer, int
the length of the stageCount, long pStages, long pShaders)pStages and pShaders arrays.Unsafe version of: |
| public static void | nvkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, int firstBinding, int
the number of vertex input bindings whose state is updated by the command. bindingCount, long pBuffers, long pOffsets, long pSizes, long pStrides)Unsafe version of: |
| public static void | nvkCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer, int firstAttachment, int
the number of attachmentCount, long pColorBlendAdvanced)VkColorBlendAdvancedEXT elements in the pColorBlendAdvanced array.Unsafe version of: |
| public static void | nvkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, int firstAttachment, int
the number of color blending enables in the attachmentCount, long pColorBlendEnables)pColorBlendEnables array.Unsafe version of: |
| public static void | nvkCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer, int firstAttachment, int
the number of attachmentCount, long pColorBlendEquations)VkColorBlendEquationEXT elements in the pColorBlendEquations array.Unsafe version of: |
| public static void | nvkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, int firstAttachment, int
the number of attachmentCount, long pColorWriteMasks)VkColorComponentFlags values in the pColorWriteMasks array.Unsafe version of: |
| public static void | nvkCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer, int
specifies the number of elements in coverageModulationTableCount, long pCoverageModulationTable)pCoverageModulationTable.Unsafe version of: |
| public static void | nvkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, int samples, long pSampleMask)
Unsafe version of: |
| public static void | nvkCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, int
specifies the scissor count. scissorCount, long pScissors)Unsafe version of: |
| public static void | nvkCmdSetVertexInputEXT(VkCommandBuffer commandBuffer, int
the number of vertex binding descriptions provided in vertexBindingDescriptionCount, long pVertexBindingDescriptions, int pVertexBindingDescriptions.the number of vertex attribute descriptions provided in vertexAttributeDescriptionCount, long pVertexAttributeDescriptions)pVertexAttributeDescriptions.Unsafe version of: |
| public static void | nvkCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer, int firstViewport, int
the number of viewports whose parameters are updated by the command. viewportCount, long pViewportSwizzles)Unsafe version of: |
| public static void | nvkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, int
specifies the viewport count. viewportCount, long pViewports)Unsafe version of: |
| public static int | nvkCreateShadersEXT(VkDevice device, int
the length of the createInfoCount, long pCreateInfos, long pAllocator, long pShaders)pCreateInfos and pShaders arrays.Unsafe version of: |
| public static void | nvkDestroyShaderEXT(VkDevice device, long shader, long pAllocator)
Unsafe version of: |
| public static int | nvkGetShaderBinaryDataEXT(VkDevice device, long shader, long
a pointer to a pDataSize, long pData)size_t value related to the size of the binary shader code, as described below.Unsafe version of: |
| public static void | vkCmdBindShadersEXT(VkCommandBuffer
the command buffer that the shader object will be bound to. commandBuffer, IntBuffer a pointer to an array of pStages, LongBuffer VkShaderStageFlagBits values specifying one stage per array index that is affected by the corresponding value in the pShaders array.a pointer to an array of pShaders)VkShaderEXT handles and/or NULL_HANDLE values describing the shader binding operations to be performed on each stage in pStages.Bind shader objects to a command buffer. |
| public static void | vkCmdBindShadersEXT(VkCommandBuffer commandBuffer, int[] pStages, long[] pShaders)
Array version of: |
| public static void | vkCmdBindVertexBuffers2EXT(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, int the index of the first vertex input binding whose state is updated by the command. firstBinding, LongBuffer a pointer to an array of buffer handles. pBuffers, LongBuffer a pointer to an array of buffer offsets. pOffsets, LongBuffer NULL or a pointer to an array of the size in bytes of vertex data bound from pBuffers.NULL or a pointer to an array of buffer strides. |
| public static void | vkCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, int firstBinding, long[] pBuffers, long[] pOffsets, long[] pSizes, long[] pStrides)
Array version of: |
| public static void | vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the alphaToCoverageEnable)alphaToCoverageEnable state.Specify the alpha to coverage enable state dynamically for a command buffer. |
| public static void | vkCmdSetAlphaToOneEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the alphaToOneEnable)alphaToOneEnable state.Specify the alpha to one enable state dynamically for a command buffer. |
| public static void | vkCmdSetColorBlendAdvancedEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int the first color attachment the advanced blend parameters apply to. firstAttachment, VkColorBlendAdvancedEXT.an array of pColorBlendAdvancedVkColorBlendAdvancedEXT structs that specify the advanced color blend parameters for the corresponding attachments.Specify the advanced color blend state dynamically for a command buffer. |
| public static void | vkCmdSetColorBlendEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int the first color attachment the color blending enable applies. firstAttachment, IntBuffer an array of booleans to indicate whether color blending is enabled for the corresponding attachment. pColorBlendEnables)Specify the |
| public static void | vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, int firstAttachment, int[] pColorBlendEnables)
Array version of: |
| public static void | vkCmdSetColorBlendEquationEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int the first color attachment the color blend factors and operations apply to. firstAttachment, VkColorBlendEquationEXT.an array of pColorBlendEquationsVkColorBlendEquationEXT structs that specify the color blend factors and operations for the corresponding attachments.Specify the blend factors and operations dynamically for a command buffer. |
| public static void | vkCmdSetColorWriteMaskEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int the first color attachment the color write masks apply to. firstAttachment, IntBuffer an array of pColorWriteMasks)VkColorComponentFlags values that specify the color write masks of the corresponding attachments.Specify the color write masks for each attachment dynamically for a command buffer. |
| public static void | vkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, int firstAttachment, int[] pColorWriteMasks)
Array version of: |
| public static void | vkCmdSetConservativeRasterizationModeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the conservativeRasterizationMode)conservativeRasterizationMode state.Specify the conservative rasterization mode dynamically for a command buffer. |
| public static void | vkCmdSetCoverageModulationModeNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the coverageModulationMode)coverageModulationMode state.Specify the coverage modulation mode dynamically for a command buffer. |
| public static void | vkCmdSetCoverageModulationTableEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the coverageModulationTableEnable)coverageModulationTableEnable state.Specify the coverage modulation table enable state dynamically for a command buffer. |
| public static void | vkCmdSetCoverageModulationTableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, FloatBuffer specifies the table of modulation factors containing a value for each number of covered samples. pCoverageModulationTable)Specify the coverage modulation table dynamically for a command buffer. |
| public static void | vkCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer, float[] pCoverageModulationTable)
Array version of: |
| public static void | vkCmdSetCoverageReductionModeNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the coverageReductionMode)coverageReductionMode state.Specify the coverage reduction mode dynamically for a command buffer. |
| public static void | vkCmdSetCoverageToColorEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the coverageToColorEnable)coverageToColorEnable state.Specify the coverage to color enable state dynamically for a command buffer. |
| public static void | vkCmdSetCoverageToColorLocationNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the coverageToColorLocation)coverageToColorLocation state.Specify the coverage to color location dynamically for a command buffer. |
| public static void | vkCmdSetCullModeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the cull mode property to use for drawing. cullMode)See |
| public static void | vkCmdSetDepthBiasEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean controls whether to bias fragment depth values. depthBiasEnable) |
| public static void | vkCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies if the depth bounds test is enabled. depthBoundsTestEnable) |
| public static void | vkCmdSetDepthClampEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies whether depth clamping is enabled. depthClampEnable)Specify dynamically whether depth clamping is enabled in the command buffer. |
| public static void | vkCmdSetDepthClipEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies whether depth clipping is enabled. depthClipEnable)Specify dynamically whether depth clipping is enabled in the command buffer. |
| public static void | vkCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the negativeOneToOne)negativeOneToOne state.Specify the negative one to one depth clip mode dynamically for a command buffer. |
| public static void | vkCmdSetDepthCompareOpEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int a depthCompareOp)VkCompareOp value specifying the comparison operator used for the Depth Comparison step of the depth test.See |
| public static void | vkCmdSetDepthTestEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies if the depth test is enabled. depthTestEnable) |
| public static void | vkCmdSetDepthWriteEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies if depth writes are enabled. depthWriteEnable) |
| public static void | vkCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, float specifies the extraPrimitiveOverestimationSize)extraPrimitiveOverestimationSize.Specify the conservative rasterization extra primitive overestimation size dynamically for a command buffer. |
| public static void | vkCmdSetFrontFaceEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int a frontFace)VkFrontFace value specifying the front-facing triangle orientation to be used for culling.See |
| public static void | vkCmdSetLineRasterizationModeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the lineRasterizationMode)lineRasterizationMode state.Specify the line rasterization mode dynamically for a command buffer. |
| public static void | vkCmdSetLineStippleEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the stippledLineEnable)stippledLineEnable state.Specify the line stipple enable dynamically for a command buffer. |
| public static void | vkCmdSetLogicOpEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies whether logical operations are enabled. logicOpEnable)Specify dynamically whether logical operations are enabled for a command buffer. |
| public static void | vkCmdSetLogicOpEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the logical operation to apply for blend state. logicOp)Select which logical operation to apply for blend state dynamically for a command buffer. |
| public static void | vkCmdSetPatchControlPointsEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the number of control points per patch. patchControlPoints)Specify the number of control points per patch dynamically for a command buffer. |
| public static void | vkCmdSetPolygonModeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies polygon mode. polygonMode)Specify polygon mode dynamically for a command buffer. |
| public static void | vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean controls whether a special vertex index value is treated as restarting the assembly of primitives. It behaves in the same way as primitiveRestartEnable)VkPipelineInputAssemblyStateCreateInfo::primitiveRestartEnable |
| public static void | vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the primitive topology to use for drawing. primitiveTopology) |
| public static void | vkCmdSetProvokingVertexModeEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the provokingVertexMode)provokingVertexMode state.Specify the provoking vertex mode dynamically for a command buffer. |
| public static void | vkCmdSetRasterizationSamplesEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies rasterizationSamples)rasterizationSamples.Specify the rasterization samples dynamically for a command buffer. |
| public static void | vkCmdSetRasterizationStreamEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the rasterizationStream)rasterizationStream state.Specify the rasterization stream dynamically for a command buffer. |
| public static void | vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean controls whether primitives are discarded immediately before the rasterization stage. rasterizerDiscardEnable) |
| public static void | vkCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the representativeFragmentTestEnable)representativeFragmentTestEnable state.Specify the representative fragment test enable dynamically for a command buffer. |
| public static void | vkCmdSetSampleLocationsEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the sampleLocationsEnable)sampleLocationsEnable state.Specify the samples locations enable state dynamically for a command buffer. |
| public static void | vkCmdSetSampleMaskEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the number of sample bits in the samples, IntBuffer pSampleMask.a pointer to an array of pSampleMask)VkSampleMask values, where the array size is based on the samples parameter.Specify the sample mask dynamically for a command buffer. |
| public static void | vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, int samples, int[] pSampleMask)
Array version of: |
| public static void | vkCmdSetScissorWithCountEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, VkRect2D.specifies the scissors to use for drawing. pScissors |
| public static void | vkCmdSetShadingRateImageEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the shadingRateImageEnable)shadingRateImageEnable state.Specify the shading rate image enable state dynamically for a command buffer. |
| public static void | vkCmdSetStencilOpEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int a bitmask of faceMask, int VkStencilFaceFlagBits specifying the set of stencil state for which to update the stencil operation.a failOp, int VkStencilOp value specifying the action performed on samples that fail the stencil test.a passOp, int VkStencilOp value specifying the action performed on samples that pass both the depth and stencil tests.a depthFailOp, int VkStencilOp value specifying the action performed on samples that pass the stencil test and fail the depth test.a compareOp)VkCompareOp value specifying the comparison operator used in the stencil test.See |
| public static void | vkCmdSetStencilTestEnableEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies if the stencil test is enabled. stencilTestEnable) |
| public static void | vkCmdSetTessellationDomainOriginEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int specifies the origin of the tessellation domain space. domainOrigin)Specify the origin of the tessellation domain space dynamically for a command buffer. |
| public static void | vkCmdSetVertexInputEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, VkVertexInputBindingDescription2EXT.a pointer to an array of pVertexBindingDescriptions,VkVertexInputBindingDescription2EXT structures.a pointer to an array of pVertexAttributeDescriptionsVkVertexInputAttributeDescription2EXT structures.Set the vertex input state dynamically for a command buffer. |
| public static void | vkCmdSetViewportSwizzleNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, int the index of the first viewport whose parameters are updated by the command. firstViewport, VkViewportSwizzleNV.a pointer to an array of pViewportSwizzlesVkViewportSwizzleNV structures specifying viewport swizzles.Specify the viewport swizzle state dynamically for a command buffer. |
| public static void | vkCmdSetViewportWithCountEXT(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, VkViewport.specifies the viewports to use for drawing. pViewports |
| public static void | vkCmdSetViewportWScalingEnableNV(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, boolean specifies the viewportWScalingEnable)viewportWScalingEnable state.Specify the viewport W scaling enable state dynamically for a command buffer. |
| public static int | vkCreateShadersEXT(VkDevice
the logical device that creates the shader objects. device, VkShaderCreateInfoEXT.a pointer to an array of pCreateInfos,VkShaderCreateInfoEXT structures.controls host memory allocation as described in the Memory Allocation chapter. pAllocator, LongBuffer a pointer to an array of pShaders)VkShaderEXT handles in which the resulting shader objects are returned.Create one or more new shaders. |
| public static int | vkCreateShadersEXT(VkDevice device, VkShaderCreateInfoEXT.
Array version of: |
| public static void | vkDestroyShaderEXT(VkDevice
the logical device that destroys the shader object. device, long the handle of the shader object to destroy. shader, VkAllocationCallbacks controls host memory allocation as described in the Memory Allocation chapter. pAllocator)Destroy a shader object. |
| public static int | vkGetShaderBinaryDataEXT(VkDevice
the logical device that shader object was created from. device, long the shader object to retrieve binary shader code from. shader, PointerBuffer a pointer to a pDataSize, ByteBuffer size_t value related to the size of the binary shader code, as described below.either pData)NULL or a pointer to a buffer.Get the binary shader code from a shader object. |