Ссылка на API Vulkan
Команды Vulkan
vkAllocateCommandBuffers(3)
Имя
vkAllocateCommandBuffers - Выделение буферов команд из существующего пула команд
Спецификация C
Для выделения буферов команд вызовите:
VkResult vkAllocateCommandBuffers(
VkDevice device,
const VkCommandBufferAllocateInfo* pAllocateInfo,
VkCommandBuffer* pCommandBuffers); Параметры
-
device- это логическое устройство, которому принадлежит пул команд. -
pAllocateInfo- это указатель на экземпляр структурыVkCommandBufferAllocateInfo, описывающий параметры выделения. -
pCommandBuffers- это указатель на массив дескрипторовVkCommandBuffer, в котором возвращаются результирующие объекты буфера команд. Массив должен иметь длину не менее, чем указано в элементеcommandBufferCountструктурыpAllocateInfo. Каждый выделенный буфер команд начинается в начальном состоянии.
Описание
Когда буферы команд впервые выделяются, они находятся в начальном состоянии.
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepAllocateInfoдолжен быть указателем на допустимую структуруVkCommandBufferAllocateInfopCommandBuffersдолжен быть указателем на массив дескрипторовpAllocateInfo::commandBufferCountVkCommandBuffer
Синхронизация узла
- Доступ узла к
pAllocateInfo::commandPool должен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkCommandBuffer, VkCommandBufferAllocateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkAllocateCommandBuffers
vkAllocateDescriptorSets(3)
Имя
vkAllocateDescriptorSets - Выделение одного или нескольких наборов дескрипторов
Спецификация C
Для выделения наборов дескрипторов из пула дескрипторов вызовите:
VkResult vkAllocateDescriptorSets(
VkDevice device,
const VkDescriptorSetAllocateInfo* pAllocateInfo,
VkDescriptorSet* pDescriptorSets); Параметры
-
device- это логическое устройство, которому принадлежит пул дескрипторов. -
pAllocateInfo- это указатель на экземпляр структуры VkDescriptorSetAllocateInfo , описывающий параметры выделения. -
pDescriptorSets- это указатель на массив дескрипторовVkDescriptorSet, в котором возвращаются результирующие объекты набора дескрипторов. Массив должен иметь длину не менее, чем указано в элементеdescriptorSetCountструктурыpAllocateInfo.
Описание
Выделенные наборы дескрипторов возвращаются в pDescriptorSets.
При выделении набора дескрипторов начальное состояние в значительной степени неинициализировано, и все дескрипторы не определены. Однако набор дескрипторов может быть привязан в буфер команд без вызова ошибок или исключений. Все записи, которые статически используются конвейером в команде рисования или отправки, должны быть заполнены до того, как набор дескрипторов будет привязан для использования этой командой. Записи, которые не используются конвейером статически, могут иметь неинициализированные дескрипторы или дескрипторы ресурсов, которые были уничтожены, и выполнение команды рисования или отправки с таким привязанным набором дескрипторов не вызывает неопределенного поведения. Это означает, что приложениям не нужно заполнять неиспользуемые записи фиктивными дескрипторами.
Если выделение завершается неудачей из-за фрагментации, возвращается неопределенная ошибка с неуказанным кодом ошибки. Любая возвращаемая ошибка, кроме VK_ERROR_FRAGMENTED_POOL, не подразумевает своего обычного значения: приложения должны предполагать, что выделение завершилось неудачей из-за фрагментации и создать новый пул дескрипторов.
Примечание
Приложения должны проверять наличие отрицательного значения возврата при выделении новых наборов дескрипторов, предполагать, что любая ошибка фактически означает
VK_ERROR_FRAGMENTED_POOL, и попытаться создать новый пул дескрипторов. ЕслиVK_ERROR_FRAGMENTED_POOLявляется фактическим значением возврата, это добавляет уверенности в этом решении.Причина этого в том, что
VK_ERROR_FRAGMENTED_POOLбыл добавлен только в более поздней редакции спецификации 1.0, поэтому драйверы могут возвращать другие ошибки, если они были написаны для более ранних редакций. Для обеспечения полной совместимости с более ранними исправлениями допускаются эти другие ошибки.
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepAllocateInfoдолжен быть указателем на допустимую структуруVkDescriptorSetAllocateInfopDescriptorSetsдолжен быть указателем на массив дескрипторовpAllocateInfo::descriptorSetCountVkDescriptorSet
Синхронизация узла
- Доступ узла к
pAllocateInfo::descriptorPool должен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_FRAGMENTED_POOL
См. также
VkDescriptorSet, VkDescriptorSetAllocateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkAllocateDescriptorSets
vkAllocateMemory(3)
Имя
vkAllocateMemory - Выделение памяти GPU
Спецификация C
Для выделения объектов памяти вызовите:
VkResult vkAllocateMemory(
VkDevice device,
const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator,
VkDeviceMemory* pMemory); Параметры
-
device- это логическое устройство, которому принадлежит память. -
pAllocateInfo- это указатель на экземпляр структуры VkMemoryAllocateInfo , описывающий параметры выделения. Успешное выделение должно использовать запрошенные параметры — замена не допускается реализацией. -
pAllocatorуправляет выделением памяти узла, как описано в главе Выделение памяти . -
pMemory- это указатель на дескрипторVkDeviceMemory, в котором возвращается информация о выделенной памяти.
Описание
Выделения, возвращаемые vkAllocateMemory, гарантированно удовлетворяют любым требованиям к выравниванию со стороны реализации. Например, если реализация требует 128-байтового выравнивания для изображений и 64-байтового выравнивания для буферов, память устройства, возвращаемая через этот механизм, будет выровнена по 128 байтам. Это гарантирует, что приложения могут правильно распределять объекты разных типов (с потенциально различными требованиями к выравниванию) в одном объекте памяти.
Когда память выделяется, ее содержимое не определено.
Существует зависящее от реализации максимальное количество выделений памяти, которые могут быть одновременно созданы на устройстве. Это указано членом maxMemoryAllocationCount структуры VkPhysicalDeviceLimits. Если maxMemoryAllocationCount превышен, vkAllocateMemory вернет VK_ERROR_TOO_MANY_OBJECTS.
Примечание
Некоторые платформы могут иметь ограничение на максимальный размер одного выделения. Например, некоторые системы могут не создавать выделения размером больше или равным 4 ГБ. Такое ограничение зависит от реализации, и если произойдет такой сбой, то должна быть возвращена ошибка
VK_ERROR_OUT_OF_DEVICE_MEMORY.
Правильное использование
- Количество текущих допустимых объектов памяти, выделенных из
device, должно быть меньше, чемVkPhysicalDeviceLimits::maxMemoryAllocationCount
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepAllocateInfoдолжен быть указателем на допустимую структуруVkMemoryAllocateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspMemoryдолжен быть указателем на дескрипторVkDeviceMemory
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_TOO_MANY_OBJECTS
См. также
VkAllocationCallbacks, VkDevice, VkDeviceMemory, VkMemoryAllocateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkAllocateMemory
vkBeginCommandBuffer(3)
Имя
vkBeginCommandBuffer - Начало записи буфера команд
Спецификация C
Для начала записи буфера команд вызовите:
VkResult vkBeginCommandBuffer(
VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo* pBeginInfo); Параметры
-
commandBufferis the handle of the command buffer which is to be put in the recording state. -
pBeginInfois an instance of theVkCommandBufferBeginInfostructure, which defines additional information about how the command buffer begins recording.
Описание
Правильное использование
commandBufferдолжен не находиться в состоянии записи или ожидания.- Если
commandBufferбыл выделен из VkCommandPool, у которого не был установлен флагVK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,commandBufferдолжен находиться в начальном состоянии.- Если
commandBufferявляется вторичным буфером команд, членpInheritanceInfoструктурыpBeginInfoдолжен быть допустимой структуройVkCommandBufferInheritanceInfo- Если
commandBufferявляется вторичным буфером команд и либо членocclusionQueryEnableчленаpInheritanceInfoструктурыpBeginInfoравенVK_FALSE, либо функция точных запросов на затенение не включена, членqueryFlagsчленаpInheritanceInfoструктурыpBeginInfoне должен содержатьVK_QUERY_CONTROL_PRECISE_BIT
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpBeginInfoдолжен быть указателем на допустимую структуруVkCommandBufferBeginInfo
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkCommandBuffer, VkCommandBufferBeginInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkBeginCommandBuffer
vkBindBufferMemory(3)
Имя
vkBindBufferMemory - Привязка памяти устройства к объекту буфера
C Спецификация
Чтобы прикрепить память к объекту буфера, вызовите:
VkResult vkBindBufferMemory(
VkDevice device,
VkBuffer buffer,
VkDeviceMemory memory,
VkDeviceSize memoryOffset); Параметры
-
device- это логическое устройство, которому принадлежит буфер и память. -
buffer- это буфер, который будет прикреплен к памяти. -
memory- это объектVkDeviceMemory, описывающий память устройства для прикрепления. -
memoryOffset- это начальный смещение областиmemory, которая должна быть привязана к буферу. Количество байтов, возвращаемое в членеVkMemoryRequirements::sizeструктурыmemory, начиная сmemoryOffsetбайтов, будет привязано к указанному буферу.
Описание
Правильное использование
bufferне должен уже поддерживаться объектом памятиbufferне должен быть создан с какими-либо флагами привязки разреженной памятиmemoryOffsetдолжен быть меньше размераmemory- Если
bufferбыл создан сVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITилиVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,memoryOffsetдолжен быть кратнымVkPhysicalDeviceLimits::minTexelBufferOffsetAlignment- Если
bufferбыл создан сVK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,memoryOffsetдолжен быть кратнымVkPhysicalDeviceLimits::minUniformBufferOffsetAlignment- Если
bufferбыл создан сVK_BUFFER_USAGE_STORAGE_BUFFER_BIT,memoryOffsetдолжен быть кратнымVkPhysicalDeviceLimits::minStorageBufferOffsetAlignmentmemoryдолжен быть выделен с использованием одного из типов памяти, разрешенных в членеmemoryTypeBitsструктурыVkMemoryRequirements, возвращаемой вызовомvkGetBufferMemoryRequirementsсbuffermemoryOffsetдолжен быть целым кратным членуalignmentструктурыVkMemoryRequirements, возвращаемой вызовомvkGetBufferMemoryRequirementsсbuffer- Член
sizeструктурыVkMemoryRequirements, возвращаемой вызовомvkGetBufferMemoryRequirementsсbuffer, должен быть меньше или равен размеруmemoryминусmemoryOffset
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicebufferдолжен быть допустимой дескрипторомVkBuffermemoryдолжен быть допустимой дескрипторомVkDeviceMemorybufferдолжен быть создан, выделен или получен изdevicememoryдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
bufferдолжен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkBuffer, VkDevice, VkDeviceMemory, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkBindBufferMemory
vkBindImageMemory(3)
Имя
vkBindImageMemory - Привязка памяти устройства к объекту изображения
C Спецификация
Чтобы прикрепить память к объекту изображения, вызовите:
VkResult vkBindImageMemory(
VkDevice device,
VkImage image,
VkDeviceMemory memory,
VkDeviceSize memoryOffset); Параметры
-
device- это логическое устройство, которому принадлежит изображение и память. -
image- это изображение. -
memory- это объектVkDeviceMemory, описывающий память устройства для прикрепления. -
memoryOffset- это начальный смещение областиmemory, которая должна быть привязана к изображению. Количество байтов, возвращаемое в членеVkMemoryRequirements::sizeструктурыmemory, начиная сmemoryOffsetбайтов, будет привязано к указанному изображению.
Описание
Правильное использование
imageне должен уже поддерживаться объектом памятиimageне должен быть создан с какими-либо флагами привязки разреженной памятиmemoryOffsetдолжен быть меньше размераmemorymemoryдолжен быть выделен с использованием одного из типов памяти, разрешенных в членеmemoryTypeBitsструктурыVkMemoryRequirements, возвращаемой вызовомvkGetImageMemoryRequirementsсimagememoryOffsetдолжен быть целым кратным членуalignmentструктурыVkMemoryRequirements, возвращаемой вызовомvkGetImageMemoryRequirementsсimage- Член
sizeструктурыVkMemoryRequirements, возвращаемой вызовомvkGetImageMemoryRequirementsсimage, должен быть меньше или равен размеруmemoryминусmemoryOffset
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceimageдолжен быть допустимой дескрипторомVkImagememoryдолжен быть допустимой дескрипторомVkDeviceMemoryimageдолжен быть создан, выделен или получен изdevicememoryдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
imageдолжен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkDevice, VkDeviceMemory, VkDeviceSize, VkImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
END_OF_DOCUMENT_MARKERhttps://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkBindImageMemory
vkCmdBeginQuery(3)
Имя
vkCmdBeginQuery - Начать запрос
C Спецификация
Для начала запроса, вызовите:
void vkCmdBeginQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query,
VkQueryControlFlags flags); Параметры
-
commandBuffer- буфер команд, в который будет записана эта команда. -
queryPool- пул запросов, который будет управлять результатами запроса. -
query- индекс запроса в пуле запросов, который будет содержать результаты. -
flags- это битовая маска VkQueryControlFlagBits, указывающая ограничения на типы запросов, которые можно выполнить.
Описание
Если queryType пула равен VK_QUERY_TYPE_OCCLUSION и flags содержит VK_QUERY_CONTROL_PRECISE_BIT, реализация должна вернуть результат, соответствующий фактическому количеству переданных выборок. Это описано более подробно в Запросы на затенение.
После начала запроса этот запрос считается активным в буфере команд, в котором он был вызван, до тех пор, пока этот же запрос не будет завершен. Запросы, активные в основном буфере команд при выполнении вторичных буферов команд, считаются активными для этих вторичных буферов команд.
Допустимое использование
- Запрос, идентифицированный
queryPoolиquery, не должен быть активным в данный момент- Запрос, идентифицированный
queryPoolиquery, должен быть недоступен- Если функция точных запросов на затенение не включена, или
queryType, используемый для созданияqueryPool, не былVK_QUERY_TYPE_OCCLUSION,flagsне должен содержатьVK_QUERY_CONTROL_PRECISE_BITqueryPoolдолжен быть создан сqueryType, отличным от любого другого запроса, который был сделан активным и в настоящее время всё ещё активен вcommandBufferqueryдолжен быть меньше числа запросов вqueryPool- Если
queryType, используемый для созданияqueryPool, былVK_QUERY_TYPE_OCCLUSION, тоVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Если
queryType, используемый для созданияqueryPool, былVK_QUERY_TYPE_PIPELINE_STATISTICSи любой изpipelineStatisticsуказывает на графические операции, тоVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Если
queryType, используемый для созданияqueryPool, былVK_QUERY_TYPE_PIPELINE_STATISTICSи любой изpipelineStatisticsуказывает на вычислительные операции, тоVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать вычислительные операции
Допустимое использование (Неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferqueryPoolдолжен быть допустимой дескрипторомVkQueryPoolflagsдолжен быть допустимым сочетанием значений VkQueryControlFlagBitscommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- И
commandBuffer, иqueryPoolдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительный
См. также
VkCommandBuffer, VkQueryControlFlags, VkQueryPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBeginQuery
vkCmdBeginRenderPass(3)
Имя
vkCmdBeginRenderPass - Начать новый проход отрисовки
C Спецификация
Для начала экземпляра прохода отрисовки, вызовите:
void vkCmdBeginRenderPass(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
VkSubpassContents contents); Параметры
-
commandBuffer- буфер команд, в котором необходимо записать команду. -
pRenderPassBegin- указатель на структуру VkRenderPassBeginInfo (определена ниже), которая указывает проход отрисовки, для которого нужно начать экземпляр, и фреймбуфер, который использует экземпляр. -
contents- значение VkSubpassContents, указывающее, как будут предоставлены команды в первом подпроходе.
Описание
После начала экземпляра прохода отрисовки буфер команд готов к записи команд для первого подпрохода этого прохода отрисовки.
Правильное использование
- Если любой из членов
initialLayoutилиfinalLayoutструктурVkAttachmentDescriptionили членlayoutструктурVkAttachmentReferenceуказанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, являетсяVK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, тогда соответствующий подресурс изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin, должен был быть создан с установленнымVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- Если любой из членов
initialLayoutилиfinalLayoutструктурVkAttachmentDescriptionили членlayoutструктурVkAttachmentReferenceуказанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, являетсяVK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMALилиVK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, тогда соответствующий подресурс изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin, должен был быть создан с установленнымVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Если любой из членов
initialLayoutилиfinalLayoutструктурVkAttachmentDescriptionили членlayoutструктурVkAttachmentReferenceуказанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, являетсяVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, тогда соответствующий подресурс изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin, должен был быть создан с установленнымVK_IMAGE_USAGE_SAMPLED_BITилиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- Если любой из членов
initialLayoutилиfinalLayoutструктурVkAttachmentDescriptionили членlayoutструктурVkAttachmentReferenceуказанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, являетсяVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, тогда соответствующий подресурс изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin, должен был быть создан с установленнымVK_IMAGE_USAGE_TRANSFER_SRC_BIT- Если любой из членов
initialLayoutилиfinalLayoutструктурVkAttachmentDescriptionили членlayoutструктурVkAttachmentReferenceуказанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, являетсяVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, тогда соответствующий подресурс изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin, должен был быть создан с установленнымVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если любой из членов
initialLayoutструктурVkAttachmentDescription, указанных при создании прохода рендеринга, указанного в членеrenderPasspRenderPassBegin, не являетсяVK_IMAGE_LAYOUT_UNDEFINED, то каждый такойinitialLayoutдолжен быть равен текущей компоновке соответствующего подресурса изображения вложения буфера кадра, указанного в членеframebufferpRenderPassBegin- Члены
srcStageMaskиdstStageMaskлюбого элемента членаpDependenciesVkRenderPassCreateInfo, используемого для созданияrenderpass, должны поддерживаться возможностями семейства очередей, идентифицированного членомqueueFamilyIndexVkCommandPoolCreateInfo, используемого для создания пула команд, из которого был выделенcommandBuffer.
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторной ссылкойVkCommandBufferpRenderPassBeginдолжен быть указателем на допустимую структуруVkRenderPassBeginInfocontentsдолжен быть допустимым значением VkSubpassContentscommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
commandBufferдолжен быть первичнымVkCommandBuffer
Синхронизация узла
- Доступ узла к
commandBufferдолжен быть внешне синхронизирован- Доступ узла к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область действия прохода рендеринга Поддерживаемые типы очередей Тип конвейера Первичный
Вне
Графический
Графический
См. также
VkCommandBuffer, VkRenderPassBeginInfo, VkSubpassContents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBeginRenderPass
vkCmdBindDescriptorSets(3)
Имя
vkCmdBindDescriptorSets - Привязывает наборы дескрипторов к буферу команд
C-спецификация
Чтобы привязать один или несколько наборов дескрипторов к буферу команд, вызовите:
void vkCmdBindDescriptorSets(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipelineLayout layout,
uint32_t firstSet,
uint32_t descriptorSetCount,
const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount,
const uint32_t* pDynamicOffsets); Параметры
-
commandBuffer- это буфер команд, к которому будут привязаны наборы дескрипторов. -
pipelineBindPoint- это VkPipelineBindPoint, указывающий, будут ли дескрипторы использоваться графическими конвейерами или конвейерами вычислений. Для графических и вычислительных конвейеров существует отдельный набор точек привязки, поэтому привязка одной не влияет на другую. -
layout- это объектVkPipelineLayout, используемый для программирования привязок. -
firstSet- это номер набора первого набора дескрипторов, который будет привязан. -
descriptorSetCount- это количество элементов в массивеpDescriptorSets. -
pDescriptorSets- это массив дескрипторных ссылок на объектыVkDescriptorSet, описывающие наборы дескрипторов для записи. -
dynamicOffsetCount- это количество динамических смещений в массивеpDynamicOffsets. -
pDynamicOffsets- это указатель на массив значенийuint32_t, указывающих динамические смещения.
Описание
vkCmdBindDescriptorSets приводит к тому, что наборы с номерами [firstSet.. firstSet+descriptorSetCount-1] будут использовать привязки, хранящиеся в pDescriptorSets[0..descriptorSetCount-1] для последующих команд рендеринга (либо вычислений, либо графики, в зависимости от pipelineBindPoint). Любые привязки, которые были применены ранее с помощью этих наборов, больше недействительны.
После привязки набор дескрипторов влияет на рендеринг последующих графических или вычислительных команд в буфере команд, пока не будет привязан другой набор к тому же номеру набора, или пока набор не будет нарушен, как описано в Совместимость компоновки конвейера.
Совместимый набор дескрипторов должен быть привязан для всех номеров наборов, к которым обращаются любые шейдеры в конвейере, в момент записи команды отрисовки или отправки для выполнения с использованием этого конвейера. Однако, если ни один из шейдеров в конвейере статически не использует привязки с определенным номером набора, то никакой набор дескрипторов не должен быть привязан для этого номера набора, даже если компоновка конвейера включает в себя нетривиальную компоновку набора дескрипторов для этого номера набора.
Если любой из привязываемых наборов включает динамические униформные или буферы хранилища, то pDynamicOffsets включает один элемент для каждого элемента массива в каждой привязке к динамическому типу дескриптора в каждом наборе. Значения берутся из pDynamicOffsets в таком порядке, что все записи для набора N идут перед набором N+1; внутри набора записи упорядочены по номерам привязки в компоновках наборов дескрипторов; и внутри массива привязок элементы упорядочены. dynamicOffsetCount должен быть равен общему количеству динамических дескрипторов в привязываемых наборах.
Эффективное смещение, используемое для динамических униформных и буферных привязок хранилища, представляет собой сумму относительного смещения, взятого из pDynamicOffsets, и базового адреса буфера плюс базовое смещение в наборе дескрипторов. Длина динамических униформных и буферных привязок хранилища — это диапазон буфера, как указано в наборе дескрипторов.
Каждый из pDescriptorSets должен быть совместим с компоновкой конвейера, указанной layout. Компоновка, используемая для программирования привязок, также должна быть совместима с конвейером, используемым в последующих графических или вычислительных командах, как определено в разделе Совместимость компоновки конвейера.
Содержимое набора дескрипторов, привязанное вызовом к vkCmdBindDescriptorSets, может быть использовано во время выполнения команды узлом или во время выполнения шейдера результирующих отрисовок, или в любое время между ними. Таким образом, содержимое не должно изменяться (перезаписываться командой обновления или освобождаться) между моментом записи команды и моментом завершения выполнения команды в очереди. Содержимое pDynamicOffsets используется немедленно во время выполнения vkCmdBindDescriptorSets. После завершения всех ожидающих использований разрешено обновлять и повторно использовать набор дескрипторов.
Допустимое использование
- Любой заданный элемент
pDescriptorSetsдолжен быть выделен с помощьюVkDescriptorSetLayout, который соответствует (является таким же, как или идентично определен как)VkDescriptorSetLayoutв наборе n вlayout, где n — это суммаfirstSetи индекса вpDescriptorSetsdynamicOffsetCountдолжно быть равно общему числу динамических дескрипторов вpDescriptorSets- Сумма
firstSetиdescriptorSetCountдолжна быть меньше или равнаVkPipelineLayoutCreateInfo::setLayoutCount, предоставленная при созданииlayoutpipelineBindPointдолжна поддерживаться семейством очередей родительскогоVkCommandPoolcommandBuffer- Любой заданный элемент
pDynamicOffsetsдолжен удовлетворять требуемому выравниванию для типа дескриптора соответствующего связывания дескриптора
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторной переменнойVkCommandBufferpipelineBindPointдолжно быть допустимым значением VkPipelineBindPointlayoutдолжен быть допустимой дескрипторной переменнойVkPipelineLayoutpDescriptorSetsдолжен быть указателем на массив допустимых дескрипторных переменныхVkDescriptorSetdescriptorSetCount- Если
dynamicOffsetCountне0,pDynamicOffsetsдолжен быть указателем на массив значенийuint32_tdynamicOffsetCountcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операцииdescriptorSetCountдолжно быть больше0- Каждый из
commandBuffer,layoutи элементовpDescriptorSetsдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительный
См. также
VkCommandBuffer, VkDescriptorSet, VkPipelineBindPoint, VkPipelineLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBindDescriptorSets
vkCmdBindIndexBuffer(3)
Название
vkCmdBindIndexBuffer - Привязка буфера индексов к буферу команд
Спецификация C
Для привязки буфера индексов к буферу команд вызовите:
void vkCmdBindIndexBuffer(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkIndexType indexType); Параметры
-
commandBuffer— это буфер команд, в который записывается команда. -
buffer— это привязываемый буфер. -
offset— это начальное смещение в байтах внутриbuffer, используемое в вычислениях адреса буфера индексов. -
indexType— это значение VkIndexType, указывающее, обрабатываются ли индексы как 16-битные или 32-битные.
Описание
Допустимое использование
offsetдолжно быть меньше размераbuffer- Сумма
offsetи адреса диапазона объектаVkDeviceMemory, который поддерживаетbuffer, должна быть кратна типу, указанномуindexTypebufferдолжен быть создан с флагомVK_BUFFER_USAGE_INDEX_BUFFER_BIT- Если
bufferне является разреженным, то он должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemory
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторной переменнойVkCommandBufferbufferдолжен быть допустимой дескрипторной переменнойVkBufferindexTypeдолжно быть допустимым значением VkIndexTypecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- И
buffer, иcommandBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize, VkIndexType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBindIndexBuffer
vkCmdBindPipeline(3)
Название
vkCmdBindPipeline - Привязка объекта конвейера к буферу команд
Спецификация C
После создания конвейера его можно привязать к буферу команд с помощью команды:
void vkCmdBindPipeline(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline); Параметры
-
commandBuffer— это буфер команд, к которому будет привязан конвейер. -
pipelineBindPoint— это значение VkPipelineBindPoint, указывающее, следует ли привязывать к вычислительной или графической точке привязки. Привязка одной точки не влияет на другую. -
pipeline— это привязываемый конвейер.
Описание
После привязки привязка конвейера влияет на последующие графические или вычислительные команды в буфере команд, пока к точке привязки не будет привязан другой конвейер. Конвейер, привязанный к VK_PIPELINE_BIND_POINT_COMPUTE, управляет поведением vkCmdDispatch и vkCmdDispatchIndirect. Конвейер, привязанный к VK_PIPELINE_BIND_POINT_GRAPHICS, управляет поведением vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndirect и vkCmdDrawIndexedIndirect. На другие команды состояние конвейера не влияет.
Допустимое использование
- Если
pipelineBindPointестьVK_PIPELINE_BIND_POINT_COMPUTE, тоVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать вычислительные операции- Если
pipelineBindPointестьVK_PIPELINE_BIND_POINT_GRAPHICS, тоVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Если
pipelineBindPointестьVK_PIPELINE_BIND_POINT_COMPUTE,pipelineдолжен быть вычислительным конвейером- Если
pipelineBindPointестьVK_PIPELINE_BIND_POINT_GRAPHICS,pipelineдолжен быть графическим конвейером- Если функция variable multisample rate не поддерживается,
pipelineявляется графическим конвейером, текущий подпроход не имеет вложений, и это не первый вызов этой функции с графическим конвейером после перехода к текущему подпроходу, то количество выборок, указанное этим конвейером, должно совпадать с тем, которое было установлено в предыдущем конвейере
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpipelineBindPointдолжен быть допустимым значением VkPipelineBindPointpipelineдолжен быть допустимой дескрипторомVkPipelinecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- И
commandBuffer, иpipelineдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительный
См. также
VkCommandBuffer, VkPipeline, VkPipelineBindPoint
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBindPipeline
vkCmdBindVertexBuffers(3)
Имя
vkCmdBindVertexBuffers - Привязка буферов вершин к буферу команд
C-спецификация
Для привязки буферов вершин к буферу команд для использования в последующих командах отрисовки, вызовите:
void vkCmdBindVertexBuffers(
VkCommandBuffer commandBuffer,
uint32_t firstBinding,
uint32_t bindingCount,
const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets); Параметры
-
commandBuffer- буфер команд, в который записывается команда. -
firstBinding- индекс первого привязывания входных данных вершин, состояние которого обновляется командой. -
bindingCount- количество привязываний входных данных вершин, состояние которых обновляется командой. -
pBuffers- указатель на массив дескрипторов буферов. -
pOffsets- указатель на массив смещений буферов.
Описание
Значения, взятые из элементов i pBuffers и pOffsets, заменяют текущее состояние для привязывания входных данных вершин firstBinding + i, для i в [0, bindingCount). Привязка входных данных вершин обновляется так, чтобы начинаться со смещения, указанного pOffsets[i] от начала буфера pBuffers[i]. Все атрибуты входных данных вершин, которые используют каждое из этих привязываний, будут использовать эти обновленные адреса в своих вычислениях адресов для последующих команд отрисовки.
Допустимое использование
firstBindingдолжен быть меньше, чемVkPhysicalDeviceLimits::maxVertexInputBindings- Сумма
firstBindingиbindingCountдолжна быть меньше или равнаVkPhysicalDeviceLimits::maxVertexInputBindings- Все элементы
pOffsetsдолжны быть меньше размера соответствующего элемента вpBuffers- Все элементы
pBuffersдолжны быть созданы с флагомVK_BUFFER_USAGE_VERTEX_BUFFER_BIT- Каждый элемент
pBuffers, который не является разреженным, должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemory
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpBuffersдолжен быть указателем на массивbindingCountдопустимых дескрипторовVkBufferpOffsetsдолжен быть указателем на массивbindingCountзначенийVkDeviceSizecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операцииbindingCountдолжен быть больше, чем0- И
commandBuffer, и элементыpBuffersдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBindVertexBuffers
vkCmdBlitImage(3)
Имя
vkCmdBlitImage - Копирование областей изображения, потенциально с преобразованием формата,
C-спецификация
Для копирования областей исходного изображения в целевое изображение, потенциально с преобразованием формата, произвольным масштабированием и фильтрацией, вызовите:
void vkCmdBlitImage(
VkCommandBuffer commandBuffer,
VkImage srcImage,
VkImageLayout srcImageLayout,
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageBlit* pRegions,
VkFilter filter); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
srcImage- исходное изображение. -
srcImageLayout- компоновка подресурсов исходного изображения для копирования. -
dstImage- целевое изображение. -
dstImageLayout- компоновка подресурсов целевого изображения для копирования. -
regionCount- количество областей для копирования. -
pRegions- указатель на массив структур VkImageBlit, указывающих области для копирования. -
filter- VkFilter, указывающий фильтр для применения, если копирование требует масштабирования.
Описание
vkCmdBlitImage не должен использоваться для многовыборочных исходных или целевых изображений. Используйте vkCmdResolveImage для этой цели.
Так как размеры исходных и целевых областей могут отличаться в любом измерении, тексели в исходной области масштабируются и фильтруются до целевого размера. Масштабирование происходит с помощью следующих операций:
-
Для каждого целевого текселя целочисленная координата этого текселя преобразуется в ненормализованную текстурную координату с использованием эффективного обратного преобразования уравнений, описанных в преобразовании из ненормализованных в целочисленные значения:
- ubase = i + ½
- vbase = j + ½
- wbase = k + ½
-
Затем к этим базовым координатам применяется смещение первого целевого смещения:
- uoffset = ubase - xdst0
- voffset = vbase - ydst0
- woffset = wbase - zdst0
- aoffset = a -
baseArrayCountdst
-
Масштаб определяется из исходных и целевых областей и применяется к смещенным координатам:
- scale_u = (xsrc1 - xsrc0) / (xdst1 - xdst0)
- scale_v = (ysrc1 - ysrc0) / (ydst1 - ydst0)
- scale_w = (zsrc1 - zsrc0) / (zdst1 - zdst0)
- uscaled = uoffset * scaleu
- vscaled = voffset * scalev
- wscaled = woffset * scalew
-
Наконец, к масштабированным координатам добавляется исходное смещение, чтобы определить окончательные ненормализованные координаты, используемые для выборки из
srcImage:- u = uscaled + xsrc0
- v = vscaled + ysrc0
- w = wscaled + zsrc0
- q =
mipLevel - a = aoffset +
baseArrayCountsrc
Эти координаты используются для выборки из исходного изображения, как описано в главе «Операции с изображениями», с режимом фильтрации, равным режиму filter, режимом mipmap VK_SAMPLER_MIPMAP_MODE_NEAREST и режимом адресации VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE. Реализации должны выполнять привязку к краю исходного изображения и могут дополнительно выполнять привязку к краю исходной области.
Примечание
Из-за допустимых ошибок округления при генерации координат исходной текстуры не всегда можно гарантировать, какие именно исходные тексели будут выбраны для данного blit. Поскольку ошибки округления зависят от реализации, точные результаты операции blit также зависят от реализации.
Операции blit выполняются послойно, начиная с элемента baseArrayLayer srcSubresource для источника и dstSubresource для назначения. layerCount слоёв копируется в целевое изображение.
Трехмерные текстуры копируются слой за слоем. Слои в исходной области, ограниченной srcOffsets[0].z и srcOffsets[1].z, копируются в слои в целевой области, ограниченной dstOffsets[0].z и dstOffsets[1].z. Для каждого целевого слоя координата z источника линейно интерполируется между srcOffsets[0].z и srcOffsets[1].z. Если параметр filter равен VK_FILTER_LINEAR, то значение, выбранное из исходного изображения, берется путем линейной фильтрации с использованием интерполированной координаты z. Если параметр filter равен VK_FILTER_NEAREST, то значение, выбранное из исходного изображения, берется из одного ближайшего слоя (с неопределенным режимом округления).
Применяются следующие правила фильтрации и преобразования:
- Целочисленные форматы могут быть преобразованы только в другие целочисленные форматы с той же знакостью.
- Преобразование форматов не поддерживается между изображениями глубины/трафарета. Форматы должны совпадать.
- Преобразования форматов для unorm, snorm, unscaled и packed float форматов скопированного аспекта изображения выполняются путем предварительного преобразования пикселей в значения с плавающей точкой.
- Для исходных форматов sRGB нелинейные значения RGB преобразуются в линейное представление перед фильтрацией.
- После фильтрации значения с плавающей точкой сначала ограничиваются, а затем преобразуются в формат целевого изображения. В случае формата sRGB назначения линейные значения RGB преобразуются в нелинейное представление перед записью пикселя в изображение.
Знаковые и беззнаковые целые числа преобразуются путем предварительного ограничения до представимого диапазона целевого формата, а затем преобразования значения.
Допустимое использование
- Исходная область, указанная данным элементом
pRegions, должна быть областью, которая содержится вsrcImage- Целевая область, указанная данным элементом
pRegions, должна быть областью, которая содержится вdstImage- Объединение всех целевых областей, указанных элементами
pRegions, не должно перекрываться в памяти с любым текселем, который может быть выбран во время операции blitsrcImageдолжен использовать формат, который поддерживаетVK_FORMAT_FEATURE_BLIT_SRC_BIT, что указываетсяVkFormatProperties::linearTilingFeatures(для линейно расположенных изображений) илиVkFormatProperties::optimalTilingFeatures(для оптимально расположенных изображений) - как возвращаетсяvkGetPhysicalDeviceFormatPropertiessrcImageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_SRC_BIT- Если
srcImageне разрежен, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorysrcImageLayoutдолжен указывать компоновку подобластей изображенияsrcImage, указанных вpRegions, в момент выполнения этой команды наVkDevicesrcImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMALилиVK_IMAGE_LAYOUT_GENERALdstImageдолжен использовать формат, который поддерживаетVK_FORMAT_FEATURE_BLIT_DST_BIT, что указываетсяVkFormatProperties::linearTilingFeatures(для линейно расположенных изображений) илиVkFormatProperties::optimalTilingFeatures(для оптимально расположенных изображений) - как возвращаетсяvkGetPhysicalDeviceFormatPropertiesdstImageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если
dstImageне разрежен, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorydstImageLayoutдолжен указывать компоновку подобластей изображенияdstImage, указанных вpRegions, в момент выполнения этой команды наVkDevicedstImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- Количество выборок
srcImageиdstImageдолжны быть равныVK_SAMPLE_COUNT_1_BIT- Если любой из
srcImageилиdstImageбыл создан с использованием знакового целого числа VkFormat, то другой также должен быть создан с использованием знакового целого числа VkFormat- Если любой из
srcImageилиdstImageбыл создан с использованием беззнакового целого числа VkFormat, то другой также должен быть создан с использованием беззнакового целого числа VkFormat- Если любой из
srcImageилиdstImageбыл создан с использованием формата глубины/трафарета, то другой должен иметь точно такой же формат- Если
srcImageбыл создан с использованием формата глубины/трафарета,filterдолжен бытьVK_FILTER_NEARESTsrcImageдолжен быть создан со значениемsamplesравнымVK_SAMPLE_COUNT_1_BITdstImageдолжен быть создан со значениемsamplesравнымVK_SAMPLE_COUNT_1_BIT- Если
filterравенVK_FILTER_LINEAR,srcImageдолжен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально расположенного изображения), возвращаемымvkGetPhysicalDeviceFormatProperties
Допустимое использование (Неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcImageдолжен быть допустимой дескрипторомVkImagesrcImageLayoutдолжен быть допустимым значением VkImageLayoutdstImageдолжен быть допустимой дескрипторомVkImagedstImageLayoutдолжен быть допустимым значением VkImageLayoutpRegionsдолжен быть указателем на массив изregionCountдопустимых структурVkImageBlitfilterдолжен быть допустимым значением VkFiltercommandBufferдолжен находиться в состоянии записи- Пул команд
VkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstImageиsrcImageдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, который был выделен изcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буферов команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнешний
Графический
Передача
См. также
VkCommandBuffer, VkFilter, VkImage, VkImageBlit, VkImageLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdBlitImage
vkCmdClearAttachments(3)
Имя
vkCmdClearAttachments - Очистка областей внутри текущих связанных вложений фреймбуфера
Спецификация C
Чтобы очистить одну или несколько областей цветных и глубинно-трафаретных вложений внутри экземпляра прохода отрисовки, вызовите:
void vkCmdClearAttachments(
VkCommandBuffer commandBuffer,
uint32_t attachmentCount,
const VkClearAttachment* pAttachments,
uint32_t rectCount,
const VkClearRect* pRects); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
attachmentCount- это число записей в массивеpAttachments. -
pAttachments- это указатель на массив структур VkClearAttachment, определяющих вложения для очистки и используемые значения очистки. -
rectCount- это число записей в массивеpRects. -
pRectsуказывает на массив структур VkClearRect, определяющих области внутри каждого выбранного вложения для очистки.
Описание
vkCmdClearAttachments может очищать несколько областей каждого вложения, используемого в текущем подпроходе экземпляра прохода отрисовки. Эта команда должна вызываться только внутри экземпляра прохода отрисовки и неявно выбирает изображения для очистки на основе текущих вложений фреймбуфера и параметров команды.
Допустимое использование
- Если член
aspectMaskлюбого данного элементаpAttachmentsсодержитVK_IMAGE_ASPECT_COLOR_BIT, членcolorAttachmentэтих элементов должен ссылаться на допустимое цветное вложение в текущем подпроходе- Прямоугольная область, указанная данным элементом
pRects, должна находиться внутри области отрисовки текущего экземпляра прохода отрисовки- Слои, указанные данным элементом
pRects, должны находиться внутри каждого вложения, на которое ссылаетсяpAttachments
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpAttachmentsдолжен быть указателем на массивattachmentCountдопустимых структурVkClearAttachmentpRectsдолжен быть указателем на массивrectCountструктурVkClearRectcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода отрисовки
attachmentCountдолжен быть больше0rectCountдолжен быть больше0
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, который был выделен изcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буферов команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнутренний
Графический
Графический
См. также
VkClearAttachment, VkClearRect, VkCommandBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdClearAttachments
vkCmdClearColorImage(3)
Имя
vkCmdClearColorImage - Очистка областей цветного изображения
Спецификация C
Чтобы очистить один или несколько подобластей цветного изображения, вызовите:
void vkCmdClearColorImage(
VkCommandBuffer commandBuffer,
VkImage image,
VkImageLayout imageLayout,
const VkClearColorValue* pColor,
uint32_t rangeCount,
const VkImageSubresourceRange* pRanges); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
image- это изображение, которое будет очищено. -
imageLayoutуказывает текущий макет диапазонов подобластей изображения, которые будут очищены, и должен бытьVK_IMAGE_LAYOUT_GENERALилиVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL. -
pColor- это указатель на структуру VkClearColorValue, которая содержит значения, до которых будут очищены диапазоны подобластей изображения (см. html/vkspec.html#clears-values ниже). -
rangeCount- это число структур диапазона подобластей изображения вpRanges. -
pRangesуказывает на массив структур VkImageSubresourceRange, которые описывают диапазон уровней mipmap, слоев массива и аспектов, которые должны быть очищены, как описано в Представлениях изображений.aspectMaskвсех диапазонов подобластей изображения должен включать толькоVK_IMAGE_ASPECT_COLOR_BIT.
Описание
Каждый указанный диапазон в pRanges очищается до значения, указанного pColor.
Допустимое использование
imageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если
imageне разреженный, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemoryimageLayoutдолжен указывать на расположение диапазонов подобъектов изображенияimageуказанных вpRangesв момент выполнения этой команды наVkDeviceimageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- Члены VkImageSubresourceRange::
baseMipLevelэлементов массиваpRangesдолжны быть меньшеmipLevelsуказанного в VkImageCreateInfo при созданииimage- Если член VkImageSubresourceRange::
levelCountлюбого элемента массиваpRangesне равенVK_REMAINING_MIP_LEVELS, он должен быть не нулевым, и VkImageSubresourceRange::baseMipLevel+ VkImageSubresourceRange::levelCountдля этого элемента массиваpRangesдолжны быть меньше или равныmipLevelsуказанному в VkImageCreateInfo при созданииimage- Члены VkImageSubresourceRange::
baseArrayLayerэлементов массиваpRangesдолжны быть меньшеarrayLayersуказанного в VkImageCreateInfo при созданииimage- Если член VkImageSubresourceRange::
layerCountлюбого элемента массиваpRangesне равенVK_REMAINING_ARRAY_LAYERS, он должен быть не нулевым, и VkImageSubresourceRange::baseArrayLayer+ VkImageSubresourceRange::layerCountдля этого элемента массиваpRangesдолжны быть меньше или равныarrayLayersуказанному в VkImageCreateInfo при созданииimageimageне должен иметь сжатый или depth/stencil формат
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferimageдолжен быть допустимой дескрипторомVkImageimageLayoutдолжен быть допустимым значением VkImageLayoutpColorдолжен быть указателем на допустимый союзVkClearColorValuepRangesдолжен быть указателем на массивrangeCountдопустимых структурVkImageSubresourceRangecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
rangeCountдолжен быть больше0- И
commandBuffer, иimageдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очереди Тип конвейера Основной
ВторичныйВне
Графический
вычислительныйПередача
См. также
VkClearColorValue, VkCommandBuffer, VkImage, VkImageLayout, VkImageSubresourceRange
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdClearColorImage
vkCmdClearDepthStencilImage(3)
Имя
vkCmdClearDepthStencilImage - Заполнение областей объединенного изображения глубины/трафарета
C Спецификация
Чтобы очистить один или несколько подобластей изображения глубины/трафарета, вызовите:
void vkCmdClearDepthStencilImage(
VkCommandBuffer commandBuffer,
VkImage image,
VkImageLayout imageLayout,
const VkClearDepthStencilValue* pDepthStencil,
uint32_t rangeCount,
const VkImageSubresourceRange* pRanges); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
image- это изображение, которое будет очищено. -
imageLayoutуказывает текущее расположение диапазонов подобъектов изображения, которые будут очищены, и должен бытьVK_IMAGE_LAYOUT_GENERALилиVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL. -
pDepthStencil- это указатель на структуру VkClearDepthStencilValue, которая содержит значения, до которых будут очищены диапазоны подобъектов изображения глубины и трафарета (см. html/vkspec.html#clears-values ниже). -
rangeCount- это количество структур диапазонов подобъектов изображения вpRanges. -
pRangesуказывает на массив структур VkImageSubresourceRange, которые описывают диапазон уровней mipmap, слоев массива и аспектов, которые будут очищены, как описано в Представлениях изображений.aspectMaskкаждого диапазона подобъектов изображения вpRangesможет включатьVK_IMAGE_ASPECT_DEPTH_BIT, если формат изображения имеет компонент глубины, иVK_IMAGE_ASPECT_STENCIL_BIT, если формат изображения имеет компонент трафарета.pDepthStencil- это указатель на структуруVkClearDepthStencilValue, которая содержит значения, до которых будут очищены диапазоны подобъектов изображения (см. html/vkspec.html#clears-values ниже).
Описание
Допустимое использование
imageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если
imageне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemoryimageLayoutдолжен указывать макет диапазонов подобъектов изображенияimage, указанных вpRanges, в момент выполнения этой команды наVkDeviceimageLayoutдолжен быть одним изVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- Элементы VkImageSubresourceRange::
baseMipLevelэлементов массиваpRangesдолжны быть меньшеmipLevels, указанного в VkImageCreateInfo при созданииimage- Если элемент VkImageSubresourceRange::
levelCountлюбого элемента массиваpRangesне равенVK_REMAINING_MIP_LEVELS, он должен быть не нулевым, и VkImageSubresourceRange::baseMipLevel+ VkImageSubresourceRange::levelCountдля этого элемента массиваpRangesдолжны быть меньше или равныmipLevels, указанному в VkImageCreateInfo при созданииimage- Элементы VkImageSubresourceRange::
baseArrayLayerэлементов массиваpRangesдолжны быть меньшеarrayLayers, указанного в VkImageCreateInfo при созданииimage- Если элемент VkImageSubresourceRange::
layerCountлюбого элемента массиваpRangesне равенVK_REMAINING_ARRAY_LAYERS, он должен быть не нулевым, и VkImageSubresourceRange::baseArrayLayer+ VkImageSubresourceRange::layerCountдля этого элемента массиваpRangesдолжны быть меньше или равныarrayLayers, указанному в VkImageCreateInfo при созданииimageimageдолжен иметь формат глубины/трафарета
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferimageдолжен быть допустимой дескрипторомVkImageimageLayoutдолжен быть допустимым значением VkImageLayoutpDepthStencilдолжен быть указателем на допустимую структуруVkClearDepthStencilValuepRangesдолжен быть указателем на массив допустимых структурrangeCountVkImageSubresourceRangecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
rangeCountдолжен быть больше0- И
commandBuffer, иimageдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВне
Графический
Передача
См. также
VkClearDepthStencilValue, VkCommandBuffer, VkImage, VkImageLayout, VkImageSubresourceRange
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdClearDepthStencilImage
vkCmdCopyBuffer(3)
Имя
vkCmdCopyBuffer - Копирование данных между областями буфера
C-спецификация
Для копирования данных между объектами буфера вызовите:
void vkCmdCopyBuffer(
VkCommandBuffer commandBuffer,
VkBuffer srcBuffer,
VkBuffer dstBuffer,
uint32_t regionCount,
const VkBufferCopy* pRegions); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
srcBuffer- исходный буфер. -
dstBuffer- целевой буфер. -
regionCount- количество областей для копирования. -
pRegions- указатель на массив структур VkBufferCopy, указывающих области для копирования.
Описание
Каждый регион в pRegions копируется из исходного буфера в тот же регион целевого буфера. srcBuffer и dstBuffer могут быть одним и тем же буфером или псевдонимом одной и той же памяти, но результат не определен, если области копирования перекрываются в памяти.
Допустимое использование
- Элемент
sizeданного элементаpRegionsдолжен быть больше0- Элемент
srcOffsetданного элементаpRegionsдолжен быть меньше размераsrcBuffer- Элемент
dstOffsetданного элементаpRegionsдолжен быть меньше размераdstBuffer- Элемент
sizeданного элементаpRegionsдолжен быть меньше или равен размеруsrcBufferминусsrcOffset- Элемент
sizeданного элементаpRegionsдолжен быть меньше или равен размеруdstBufferминусdstOffset- Объединение исходных областей и объединение целевых областей, указанных элементами
pRegions, не должны перекрываться в памятиsrcBufferдолжен быть создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_SRC_BIT- Если
srcBufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorydstBufferдолжен быть создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_DST_BIT- Если
dstBufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcBufferдолжен быть допустимой дескрипторомVkBufferdstBufferдолжен быть допустимой дескрипторомVkBufferpRegionsдолжен быть указателем на массив структурregionCountVkBufferCopycommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstBufferиsrcBufferдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буфера команд Область действия прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнешний
Передача
графика
вычисленияПередача
См. также
VkBuffer, VkBufferCopy, VkCommandBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdCopyBuffer
vkCmdCopyBufferToImage(3)
Имя
vkCmdCopyBufferToImage - Копирование данных из буфера в изображение
C-спецификация
Для копирования данных из буферного объекта в объектный объект изображения вызовите:
void vkCmdCopyBufferToImage(
VkCommandBuffer commandBuffer,
VkBuffer srcBuffer,
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkBufferImageCopy* pRegions); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
srcBuffer- это исходный буфер. -
dstImage- это целевое изображение. -
dstImageLayout- это компоновка целевых подобъектов изображения для копирования. -
regionCount- это количество областей для копирования. -
pRegions- это указатель на массив структур VkBufferImageCopy, указывающих области для копирования.
Описание
Каждая область в pRegions копируется из указанной области исходного буфера в указанную область целевого изображения.
Допустимое использование
- Область буфера, указанная данным элементом
pRegions, должна быть областью, которая содержится вsrcBuffer- Область изображения, указанная данным элементом
pRegions, должна быть областью, которая содержится вdstImage- Объединение всех исходных областей и объединение всех целевых областей, указанных элементами
pRegions, не должны перекрываться в памятиsrcBufferдолжен был создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_SRC_BIT- Если
srcBufferне является разреженным, то он должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemorydstImageдолжен был создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если
dstImageне является разреженным, то он должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemorydstImageдолжен иметь количество выборок, равноеVK_SAMPLE_COUNT_1_BITdstImageLayoutдолжен указывать компоновку подобъектов изображенияdstImage, указанных вpRegions, в момент выполнения этой команды вVkDevicedstImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторной ссылкойVkCommandBuffersrcBufferдолжен быть допустимой дескрипторной ссылкойVkBufferdstImageдолжен быть допустимой дескрипторной ссылкойVkImagedstImageLayoutдолжен быть допустимым значением VkImageLayoutpRegionsдолжен быть указателем на массив изregionCountдопустимых структурVkBufferImageCopycommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstImageиsrcBufferдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буфера команд Область действия прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнешний
Передача
графика
вычисленияПередача
См. также
VkBuffer, VkBufferImageCopy, VkCommandBuffer, VkImage, VkImageLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdCopyBufferToImage
vkCmdCopyImage(3)
Имя
vkCmdCopyImage - Копирование данных между изображениями
C-спецификация
Для копирования данных между объектами изображения вызовите:
void vkCmdCopyImage(
VkCommandBuffer commandBuffer,
VkImage srcImage,
VkImageLayout srcImageLayout,
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageCopy* pRegions); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
srcImage- это исходное изображение. -
srcImageLayout- это текущая компоновка подобъекта исходного изображения. -
dstImage- это целевое изображение. -
dstImageLayout- это текущая компоновка подобъекта целевого изображения. -
regionCount- это количество областей для копирования. -
pRegions- это указатель на массив структур VkImageCopy, указывающих области для копирования.
Описание
Каждая область в pRegions копируется из исходного изображения в ту же область целевого изображения. srcImage и dstImage могут быть одним и тем же изображением или псевдонимом одной и той же памяти.
Форматы srcImage и dstImage должны быть совместимы. Форматы считаются совместимыми, если размер их элементов одинаков в обоих форматах. Например, VK_FORMAT_R8G8B8A8_UNORM совместим с VK_FORMAT_R32_UINT, поскольку оба текселя имеют размер 4 байта. Форматы глубины/трафарета должны точно совпадать.
vkCmdCopyImage позволяет копировать между совместимыми по размеру сжатыми и несжатыми внутренними форматами. Форматы совместимы по размеру, если размер элемента несжатого формата равен размеру элемента (размер блока сжатого текселя) сжатого формата. Такое копирование не выполняет сжатие или распаковку на лету. При копировании из несжатого формата в сжатый формат каждый тексель несжатых данных исходного изображения копируется как необработанное значение в соответствующий блок сжатого текселя целевого изображения. При копировании из сжатого формата в несжатый формат каждый блок сжатого текселя исходного изображения копируется как необработанное значение в соответствующий тексель несжатых данных в целевом изображении. Таким образом, например, допустимо копирование между 128-битным несжатым форматом и сжатым форматом, который имеет блок сжатого текселя размером 128 бит, представляющий 4×4 текселя (используя 8 бит на тексель), или между 64-битным несжатым форматом и сжатым форматом, который имеет блок сжатого текселя размером 64 бита, представляющий 4×4 текселя (используя 4 бита на тексель).
При копировании между сжатыми и несжатыми форматами члены extent представляют размеры текстурных элементов исходного изображения, а не целевого. При копировании из сжатого изображения в несжатое изображение размеры текстурных элементов изображения, записываемые в несжатое изображение, будут равны исходному размеру, деленному на размеры блока текстурных элементов сжатого изображения. При копировании из несжатого изображения в сжатое изображение размеры текстурных элементов изображения, записываемые в сжатое изображение, будут равны исходному размеру, умноженному на размеры блока текстурных элементов сжатого изображения. В обоих случаях количество прочитанных и количество записанных байтов будут одинаковыми.
Копирование в блокированные сжатые изображения или из них обычно выполняется кратно размеру блока текстурных элементов сжатого изображения. По этой причине extent должен быть кратным размеру блока текстурных элементов сжатого изображения. Существует одно исключение из этого правила, которое требуется для обработки сжатых изображений, созданных с размерами, не кратными размерам блока текстурных элементов сжатого изображения: если srcImage сжат, то:
- Если
extent.widthне кратен ширине блока текстурных элементов сжатого изображения, то (extent.width+srcOffset.x) должен быть равен ширине подуровня изображения. - Если
extent.heightне кратен высоте блока текстурных элементов сжатого изображения, то (extent.height+srcOffset.y) должен быть равен высоте подуровня изображения. - Если
extent.depthне кратен глубине блока текстурных элементов сжатого изображения, то (extent.depth+srcOffset.z) должен быть равен глубине подуровня изображения.
Аналогично, если dstImage сжат, то:
- Если
extent.widthне кратен ширине блока текстурных элементов сжатого изображения, то (extent.width+dstOffset.x) должен быть равен ширине подуровня изображения. - Если
extent.heightне кратен высоте блока текстурных элементов сжатого изображения, то (extent.height+dstOffset.y) должен быть равен высоте подуровня изображения. - Если
extent.depthне кратен глубине блока текстурных элементов сжатого изображения, то (extent.depth+dstOffset.z) должен быть равен глубине подуровня изображения.
Это позволяет включить последний сжатый блок текстурных элементов изображения в каждом измерении, не являющемся кратным, в качестве источника или назначения копии.
vkCmdCopyImage может использоваться для копирования данных изображения между многовыборочными изображениями, но оба изображения должны иметь одинаковое количество выборок.
Допустимое использование
- Область источника, указанная данным элементом
pRegions, должна быть областью, которая содержится вsrcImage- Область назначения, указанная данным элементом
pRegions, должна быть областью, которая содержится вdstImage- Объединение всех областей источника и объединение всех областей назначения, указанных элементами
pRegions, не должны перекрываться в памятиsrcImageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_SRC_BIT- Если
srcImageне разрежен, то он должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemorysrcImageLayoutдолжен указывать макет подуровней изображенияsrcImage, указанных вpRegions, в момент выполнения этой команды наVkDevicesrcImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMALилиVK_IMAGE_LAYOUT_GENERALdstImageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT- Если
dstImageне разрежен, то он должен быть полностью и непрерывно привязан к одному объектуVkDeviceMemorydstImageLayoutдолжен указывать макет подуровней изображенияdstImage, указанных вpRegions, в момент выполнения этой команды наVkDevicedstImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- VkFormat каждого из
srcImageиdstImageдолжен быть совместимым, как определено ниже- Количество выборок
srcImageиdstImageдолжно совпадать
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcImageдолжен быть допустимой дескрипторомVkImagesrcImageLayoutдолжен быть допустимым значением VkImageLayoutdstImageдолжен быть допустимой дескрипторомVkImagedstImageLayoutдолжен быть допустимым значением VkImageLayoutpRegionsдолжен быть указателем на массив изregionCountдопустимых структурVkImageCopycommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstImageиsrcImageдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация узла
- Доступ узла к
commandBufferдолжен быть внешне синхронизирован- Доступ узла к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВспомогательныйВнешняя
Передача
графика
вычисленияПередача
См. также
VkCommandBuffer, VkImage, VkImageCopy, VkImageLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdCopyImage
vkCmdCopyImageToBuffer(3)
Имя
vkCmdCopyImageToBuffer - Копирование данных изображения в буфер
C-спецификация
Для копирования данных из объекта изображения в объект буфера вызовите:
void vkCmdCopyImageToBuffer(
VkCommandBuffer commandBuffer,
VkImage srcImage,
VkImageLayout srcImageLayout,
VkBuffer dstBuffer,
uint32_t regionCount,
const VkBufferImageCopy* pRegions); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
srcImage- это исходное изображение. -
srcImageLayout- это макет подуровней исходного изображения для копирования. -
dstBuffer- это целевой буфер. -
regionCount- это количество областей для копирования. -
pRegions- это указатель на массив структур VkBufferImageCopy, указывающих области для копирования.
Описание
Каждая область в pRegions копируется из указанной области исходного изображения в указанную область целевого буфера.
Правильное использование
- Область изображения, заданная данным элементом
pRegions, должна быть областью, которая содержится вsrcImage- Область буфера, заданная данным элементом
pRegions, должна быть областью, которая содержится вdstBuffer- Объединение всех исходных областей и объединение всех областей назначения, заданных элементами
pRegions, не должны перекрываться в памятиsrcImageдолжен быть создан с флагом использованияVK_IMAGE_USAGE_TRANSFER_SRC_BIT- Если
srcImageне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorysrcImageдолжен иметь количество выборок, равноеVK_SAMPLE_COUNT_1_BITsrcImageLayoutдолжен указывать расположение подобъектов изображенияsrcImage, указанных вpRegions, в момент выполнения этой команды наVkDevicesrcImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMALилиVK_IMAGE_LAYOUT_GENERALdstBufferдолжен быть создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_DST_BIT- Если
dstBufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcImageдолжен быть допустимой дескрипторомVkImagesrcImageLayoutдолжен быть допустимым значением VkImageLayoutdstBufferдолжен быть допустимой дескрипторомVkBufferpRegionsдолжен быть указателем на массивregionCountдопустимых структурVkBufferImageCopycommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstBufferиsrcImageдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очереди Тип конвейера Основной
ВторичныйВне
Передача
графика
вычисленияПередача
См. также
VkBuffer, VkBufferImageCopy, VkCommandBuffer, VkImage, VkImageLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdCopyImageToBuffer
vkCmdCopyQueryPoolResults(3)
Имя
vkCmdCopyQueryPoolResults - Копирование результатов запросов в пуле запросов в объекте буфера
C Спецификация
Для копирования статусов запросов и числовых результатов непосредственно в память буфера, вызовите:
void vkCmdCopyQueryPoolResults(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize stride,
VkQueryResultFlags flags); Параметры
-
commandBuffer- буфер команд, в который будет записана эта команда. -
queryPool- пул запросов, управляющий запросами, содержащими нужные результаты. -
firstQuery- начальный индекс запроса. -
queryCount- количество запросов.firstQueryиqueryCountвместе определяют диапазон запросов. -
dstBuffer- объектVkBuffer, который получит результаты команды копирования. -
dstOffset- смещение вdstBuffer. -
stride- шаг в байтах между результатами для отдельных запросов внутриdstBuffer. Требуемый размер резервной памяти дляdstBufferопределяется, как описано выше для vkGetQueryPoolResults. -
flags- битовая маска VkQueryResultFlagBits, указывающая, как и когда возвращаются результаты.
Описание
vkCmdCopyQueryPoolResults гарантированно увидит эффект предыдущих использований vkCmdResetQueryPool в той же очереди без дополнительной синхронизации. Таким образом, результаты всегда будут отражать самое последнее использование запроса.
flags имеет те же возможные значения, которые описаны выше для параметра flags vkGetQueryPoolResults, но другой стиль выполнения приводит к некоторым тонким различиям в поведении. Поскольку vkCmdCopyQueryPoolResults выполняется в порядке относительно других команд запроса, существует меньше неоднозначности относительно того, какое использование запроса запрашивается.
Если в flags не установлены биты, результаты для всех запрошенных запросов в доступном состоянии записываются как 32-битные беззнаковые целые значения, и ничего не записывается для запросов в недоступном состоянии.
Если установлен VK_QUERY_RESULT_64_BIT, результаты записываются как массив 64-битных беззнаковых целых значений, как описано для vkGetQueryPoolResults.
Если установлен VK_QUERY_RESULT_WAIT_BIT, реализация будет ожидать, пока статус каждого запроса не станет доступным, прежде чем извлекать числовые результаты для этого запроса. Это гарантированно отражает самое последнее использование запроса в той же очереди, при условии, что запрос не используется одновременно другими очередями. Если запрос не станет доступным за конечное время (например, из-за отсутствия запроса с момента последнего сброса), может возникнуть ошибка VK_ERROR_DEVICE_LOST.
Аналогично, если установлен VK_QUERY_RESULT_WITH_AVAILABILITY_BIT и не установлен VK_QUERY_RESULT_WAIT_BIT, доступность гарантированно отражает самое последнее использование запроса в той же очереди, при условии, что запрос не используется одновременно другими очередями. Как и в случае с vkGetQueryPoolResults, реализации должны гарантировать, что если они возвращают ненулевое значение доступности, то числовые результаты действительны.
Если установлен VK_QUERY_RESULT_PARTIAL_BIT, не установлен VK_QUERY_RESULT_WAIT_BIT, и статус запроса недоступен, для этого запроса записывается промежуточное значение результата между нулем и конечным значением результата.
VK_QUERY_RESULT_PARTIAL_BIT не должен использоваться, если queryType пула равен VK_QUERY_TYPE_TIMESTAMP.
vkCmdCopyQueryPoolResults считается операцией передачи, и его записи в память буфера должны быть синхронизированы с помощью VK_PIPELINE_STAGE_TRANSFER_BIT и VK_ACCESS_TRANSFER_WRITE_BIT перед использованием результатов.
Правильное использование
dstOffsetдолжен быть меньше размераdstBufferfirstQueryдолжен быть меньше количества запросов вqueryPool- Сумма
firstQueryиqueryCountдолжна быть меньше или равна количеству запросов вqueryPool- Если
VK_QUERY_RESULT_64_BITне установлен вflags, тоdstOffsetиstrideдолжны быть кратными4- Если
VK_QUERY_RESULT_64_BITустановлен вflags, тоdstOffsetиstrideдолжны быть кратными8dstBufferдолжен иметь достаточно памяти, начиная сdstOffset, чтобы содержать результат каждого запроса, как описано здесьdstBufferдолжен быть создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_DST_BIT- Если
dstBufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory- Если
queryType, использованный для созданияqueryPool, былVK_QUERY_TYPE_TIMESTAMP,flagsне должен содержатьVK_QUERY_RESULT_PARTIAL_BIT
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferqueryPoolдолжен быть допустимой дескрипторомVkQueryPooldstBufferдолжен быть допустимой дескрипторомVkBufferflagsдолжен быть допустимым сочетанием значений VkQueryResultFlagBitscommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
- Каждый из
commandBuffer,dstBufferиqueryPoolдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очереди Тип конвейера Основной
ВторичныйВне
Графический
вычислительныйПередача
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize, VkQueryPool, VkQueryResultFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdCopyQueryPoolResults
vkCmdDispatch(3)
Имя
vkCmdDispatch - Отправка вычислительных рабочих элементов
Спецификация C
Для записи отправки вызовите:
void vkCmdDispatch(
VkCommandBuffer commandBuffer,
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
groupCountX- это количество локальных рабочих групп для отправки в измерении X. -
groupCountY- это количество локальных рабочих групп для отправки в измерении Y. -
groupCountZ- это количество локальных рабочих групп для отправки в измерении Z.
Описание
Когда команда выполняется, собирается глобальная рабочая группа, состоящая из groupCountX × groupCountY × groupCountZ локальных рабочих групп.
Правильное использование
groupCountXдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]groupCountYдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]groupCountZдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]- Для каждого набора n, который статически используется
VkPipeline, в настоящее время связанным сVK_PIPELINE_BIND_POINT_COMPUTE, набор дескрипторов должен быть связан с n вVK_PIPELINE_BIND_POINT_COMPUTE, сVkPipelineLayout, совместимым для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть допустимыми, если они статически используются текущим связанным объектомVkPipeline, указанным черезvkCmdBindPipeline- Должен быть связан допустимый вычислительный конвейер с текущим буфером команд с помощью
VK_PIPELINE_BIND_POINT_COMPUTE- Для каждой константы push, которая статически используется
VkPipeline, в настоящее время связанным сVK_PIPELINE_BIND_POINT_COMPUTE, значение константы push должно быть установлено дляVK_PIPELINE_BIND_POINT_COMPUTE, сVkPipelineLayout, совместимым для констант push с тем, который использовался для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанным сVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанным сVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их именах, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанным сVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которые включают смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция доступа к буферу с высокой устойчивостью не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время связанном сVK_PIPELINE_BIND_POINT_COMPUTE, обращается к буферу униформ, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Если функция доступа к буферу с высокой устойчивостью не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время связанном сVK_PIPELINE_BIND_POINT_COMPUTE, обращается к буферу хранения, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Любой
VkImageView, выборка из которого выполняется с помощьюVK_FILTER_LINEARв результате этой команды, должен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально чередующегося изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очереди Тип конвейера Основной
ВторичныйВне
Вычислительный
Вычислительный
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDispatch
vkCmdDispatchIndirect(3)
Имя
vkCmdDispatchIndirect - Отправка вычислительных рабочих элементов с использованием косвенных параметров
Спецификация C
Для записи косвенной отправки команд, вызовите:
void vkCmdDispatchIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset); Параметры
-
commandBuffer— буфер команд, в который будет записана команда. -
buffer— буфер, содержащий параметры отправки. -
offset— смещение в байтах вbuffer, где начинаются параметры.
Описание
vkCmdDispatchIndirect работает аналогично vkCmdDispatch, за исключением того, что параметры считываются устройством из буфера во время выполнения. Параметры отправки закодированы в структуре VkDispatchIndirectCommand, взятой из buffer начиная с offset.
Допустимое использование
- Если
bufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory- Для каждого набора n, который статически используется
VkPipeline, в настоящее время привязанным кVK_PIPELINE_BIND_POINT_COMPUTE, набор дескрипторов должен быть привязан к n вVK_PIPELINE_BIND_POINT_COMPUTE, сVkPipelineLayout, который совместим для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть действительными, если они статически используются текущим привязанным объектомVkPipeline, указанным черезvkCmdBindPipeline- Действительный конвейер вычислений должен быть привязан к текущему буферу команд с помощью
VK_PIPELINE_BIND_POINT_COMPUTEbufferдолжен быть создан с установленным битомVK_BUFFER_USAGE_INDIRECT_BUFFER_BIToffsetдолжен быть кратен4- Сумма
offsetи размерVkDispatchIndirectCommandдолжна быть меньше или равна размеруbuffer- Для каждой константы, передаваемой в функцию, которая статически используется
VkPipeline, в настоящее время привязанным кVK_PIPELINE_BIND_POINT_COMPUTE, значение константы, передаваемой в функцию, должно быть установлено дляVK_PIPELINE_BIND_POINT_COMPUTE, сVkPipelineLayout, который совместим для констант, передаваемых в функцию, с тем, который использовался для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Если любой объект
VkSampler, доступ к которому осуществляется из шейдераVkPipeline, в настоящее время привязанным кVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступ к которому осуществляется из шейдераVkPipeline, в настоящее время привязанным кVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их именах, в любой стадии шейдера- Если любой объект
VkSampler, доступ к которому осуществляется из шейдераVkPipeline, в настоящее время привязанным кVK_PIPELINE_BIND_POINT_COMPUTE, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которые включают смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция устойчивого доступа к буферу не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время привязанном кVK_PIPELINE_BIND_POINT_COMPUTE, обращается к буферу униформ, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем привязанном наборе дескрипторов- Если функция устойчивого доступа к буферу не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время привязанном кVK_PIPELINE_BIND_POINT_COMPUTE, обращается к буферу хранения, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем привязанном наборе дескрипторов- Любой
VkImageView, выборка которого производится с помощьюVK_FILTER_LINEARв результате этой команды, должен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально чередующегося изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties
Допустимое использование (неявное)
commandBufferдолжен быть действительной дескрипторомVkCommandBufferbufferдолжен быть действительной дескрипторомVkBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции вычислений- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
- И
buffer, иcommandBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВне
Вычисления
Вычисления
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDispatchIndirect
vkCmdDraw(3)
Имя
vkCmdDraw - Рисование примитивов
Спецификация C
Для записи неиндексированного вызова, вызовите:
void vkCmdDraw(
VkCommandBuffer commandBuffer,
uint32_t vertexCount,
uint32_t instanceCount,
uint32_t firstVertex,
uint32_t firstInstance); Параметры
-
commandBuffer— буфер команд, в который записывается команда. -
vertexCount— количество вершин для отрисовки. -
instanceCount— количество экземпляров для отрисовки. -
firstVertex— индекс первой вершины для отрисовки. -
firstInstance— ID экземпляра первого экземпляра для отрисовки.
Описание
Когда команда выполняется, примитивы собираются с использованием текущей топологии примитива и vertexCount последовательных индексов вершин, при этом первое значение vertexIndex равно firstVertex. Примитивы рисуются instanceCount раз с instanceIndex, начиная с firstInstance и увеличиваясь последовательно для каждого экземпляра. Собранные примитивы выполняют текущий привязанный графический конвейер.
Допустимое использование
- Текущий проход рендеринга должен быть совместим с членом
renderPassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Индекс подпрохода текущего прохода рендеринга должен быть равен члену
subpassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Для каждого набора n, статически используемого
VkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, набор дескрипторов должен быть связан с n вVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, совместимым для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Для каждой константы push, статически используемой
VkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, значение константы push должно быть установлено дляVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, совместимым для констант push, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть валидными, если они статически используются объектомVkPipeline, в данный момент связанным, указанным черезvkCmdBindPipeline- Все привязки входных данных вершин, доступные через переменные входных данных вершин, объявленные в интерфейсе точки входа вершинного шейдера, должны иметь привязанные валидные буферы
- Для данной привязки буфера вершин любые извлекаемые данные атрибутов должны полностью содержаться в соответствующей привязке буфера вершин, как описано в html/vkspec.html#fxvertex-input
- Валидный конвейер графики должен быть привязан к текущему буферу команд с
VK_PIPELINE_BIND_POINT_GRAPHICS- Если объект
VkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, требует любого динамического состояния, это состояние должно быть установлено в текущем буфере команд- Каждый входной вложение, используемый текущим подпроходом, должен быть привязан к конвейеру через набор дескрипторов
- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их имени, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которая включает смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция доступа к буферу robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу униформ, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Если функция доступа к буферу robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу хранения, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Любой
VkImageView, используемый сVK_FILTER_LINEARв результате этой команды, должен иметь формат, поддерживающий линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально чередуемого изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties- Подресурсы изображений, используемые в качестве вложений в текущем проходе рендеринга, не должны быть доступны каким-либо образом, кроме как в качестве вложения этой командой.
Допустимое использование (неявное)
commandBufferдолжен быть валидной дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода рендеринга
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область действия прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнутри
Графический
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDraw
vkCmdDrawIndexed(3)
Имя
vkCmdDrawIndexed - Выполнить индексированный проход в буфер команд
C-спецификация
Для записи индексированного прохода вызовите:
void vkCmdDrawIndexed(
VkCommandBuffer commandBuffer,
uint32_t indexCount,
uint32_t instanceCount,
uint32_t firstIndex,
int32_t vertexOffset,
uint32_t firstInstance); Параметры
-
commandBuffer- буфер команд, в который записывается команда. -
indexCount- количество вершин для отрисовки. -
instanceCount- количество экземпляров для отрисовки. -
firstIndex- базовый индекс в буфере индексов. -
vertexOffset- значение, добавляемое к индексу вершины перед индексированием в буфер вершин. -
firstInstance- идентификатор экземпляра первого экземпляра для отрисовки.
Описание
При выполнении команды примитивы собираются с использованием текущей топологии примитивов и indexCount вершин, индексы которых извлекаются из буфера индексов. Буфер индексов обрабатывается как массив плотно упакованных целых беззнаковых чисел размера, определенного параметром vkCmdBindIndexBuffer::indexType, с помощью которого буфер был привязан.
Первый индекс вершины находится со смещением firstIndex * indexSize + offset в пределах текущего связанного буфера индексов, где offset - смещение, указанное vkCmdBindIndexBuffer, а indexSize - размер в байтах типа, указанного indexType. Последующие значения индексов извлекаются из последовательных позиций в буфере индексов. Индексы сначала сравниваются со значением перезапуска примитива, затем расширяются до 32 бит (если indexType равно VK_INDEX_TYPE_UINT16) и к ним добавляется vertexOffset, прежде чем предоставляться в качестве значения vertexIndex.
Примитивы отрисовываются instanceCount раз с instanceIndex, начиная с firstInstance и увеличиваясь последовательно для каждого экземпляра. Собранные примитивы выполняют текущий связанный графический конвейер.
Допустимое использование
- Текущий проход рендеринга должен быть совместим с членом
renderPassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в настоящее время связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Индекс подпрохода текущего прохода рендеринга должен быть равен члену
subpassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в настоящее время связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Для каждого набора n, статически используемого
VkPipeline, в настоящее время связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, набор дескрипторов должен быть привязан к n вVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Для каждой константы push, статически используемой
VkPipeline, в настоящее время связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, значение константы push должно быть установлено дляVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для констант push, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть действительными, если они статически используются объектомVkPipeline, в настоящее время связанным, указанным черезvkCmdBindPipeline- Все привязки входных данных вершин, доступные через переменные входных данных вершин, объявленные в интерфейсе точки входа вершинного шейдера, должны иметь связанные действительные буферы
- Для данной привязки буфера вершин любые извлекаемые данные атрибутов должны полностью содержаться в соответствующей привязке буфера вершин, как описано в html/vkspec.html#fxvertex-input
- Действительный графический конвейер должен быть привязан к текущему буферу команд с помощью
VK_PIPELINE_BIND_POINT_GRAPHICS- Если объект
VkPipeline, в настоящее время связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, требует любого динамического состояния, это состояние должно быть установлено в текущем буфере команд- (
indexSize* (firstIndex+indexCount) +offset) должно быть меньше или равно размеру в настоящее время связанного буфера индексов, при этом indexSize основан на типе, указанномindexType, где буфер индексов,indexTypeиoffsetуказаны черезvkCmdBindIndexBuffer- Каждый входной вложение, используемый текущим подпроходом, должен быть привязан к конвейеру через набор дескрипторов
- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их имени, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в настоящее время связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которые включают смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция доступа к буферу robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу униформ, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в в настоящее время связанном наборе дескрипторов- Если функция доступа к буферу robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в настоящее время связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу хранения, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в в настоящее время связанном наборе дескрипторов- Любой
VkImageView, выборочно используемый сVK_FILTER_LINEARв результате этой команды, должен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально чередующегося изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties- Подресурсы изображений, используемые в качестве вложений в текущем проходе рендеринга, не должны быть доступны каким-либо образом, кроме как в качестве вложения этой командой.
Допустимое использование (неявное)
commandBufferдолжен быть действительной дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода рендеринга
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команд
Уровни буферов команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнутри
Графический
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDrawIndexed
vkCmdDrawIndexedIndirect(3)
Имя
vkCmdDrawIndexedIndirect - Выполнить косвенный индексированный проход
C-спецификация
Для записи косвенного индексированного прохода вызовите:
void vkCmdDrawIndexedIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride); Параметры
-
commandBuffer- это буфер команд, в который записывается команда. -
buffer- это буфер, содержащий параметры прохода. -
offset- это смещение в байтах вbuffer, где начинаются параметры. -
drawCount- это количество проходов для выполнения и может быть равно нулю. -
stride- это байтовый шаг между последовательными наборами параметров прохода.
Описание
vkCmdDrawIndexedIndirect ведет себя аналогично vkCmdDrawIndexed, за исключением того, что параметры считываются устройством из буфера во время выполнения. drawCount проходов выполняются командой, при этом параметры берутся из buffer, начиная с offset и увеличиваясь на stride байт для каждого последующего прохода. Параметры каждого прохода закодированы в массиве структур VkDrawIndexedIndirectCommand. Если drawCount меньше или равно единице, stride игнорируется.
Правильное использование
- Если
bufferне разрежен, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemoryoffsetдолжен быть кратным4- Если
drawCountбольше1,strideдолжен быть кратным4и должен быть больше или равен sizeof(VkDrawIndexedIndirectCommand)- Если функция multi-draw indirect не включена,
drawCountдолжен быть0или1- Если функция drawIndirectFirstInstance не включена, все члены
firstInstanceструктурVkDrawIndexedIndirectCommand, доступных этой команде, должны быть0- Текущий проход рендеринга должен быть совместим с членом
renderPassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Индекс подпрохода текущего прохода рендеринга должен быть равен члену
subpassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Для каждого набора n, который статически используется
VkPipeline, в данный момент связанным сVK_PIPELINE_BIND_POINT_GRAPHICS, набор дескрипторов должен быть связан с n вVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Для каждой константы push, которая статически используется
VkPipeline, в данный момент связанным сVK_PIPELINE_BIND_POINT_GRAPHICS, значение константы push должно быть установлено дляVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для констант push, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть валидными, если они статически используются текущим связанным объектомVkPipeline, указанным черезvkCmdBindPipeline- Все привязки входных данных вершин, доступные через переменные входных данных вершин, объявленные в интерфейсе точки входа вершинного шейдера, должны иметь связанные валидные буферы
- Валидный графический конвейер должен быть связан с текущим буфером команд с помощью
VK_PIPELINE_BIND_POINT_GRAPHICS- Если объект
VkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, требует какого-либо динамического состояния, это состояние должно быть установлено в текущем буфере команд- Если
drawCountравен1, (offset+ sizeof(VkDrawIndexedIndirectCommand)) должен быть меньше или равен размеруbuffer- Если
drawCountбольше1, (stride× (drawCount- 1) +offset+ sizeof(VkDrawIndexedIndirectCommand)) должен быть меньше или равен размеруbufferdrawCountдолжен быть меньше или равенVkPhysicalDeviceLimits::maxDrawIndirectCount- Каждое входное вложение, используемое текущим подпроходом, должно быть связано с конвейером через набор дескрипторов
- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их имени, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которые включают смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу uniform, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Если функция robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу хранения, она не должна обращаться к значениям за пределами диапазона этого буфера, указанного в текущем связанном наборе дескрипторов- Любой
VkImageView, выборка которого выполняется с помощьюVK_FILTER_LINEARв результате этой команды, должен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально чередующегося изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties- Подресурсы изображений, используемые в качестве вложений в текущем проходе рендеринга, не должны каким-либо образом, кроме как в качестве вложения, использоваться этой командой.
Правильное использование (Неявное)
commandBufferдолжен быть валидной дескрипторной ссылкойVkCommandBufferbufferдолжен быть валидной дескрипторной ссылкойVkBuffercommandBufferдолжен быть в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода рендеринга
- И
buffer, иcommandBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация узла
- Доступ узла к
commandBufferдолжен быть внешне синхронизирован- Доступ узла к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнутри
Графический
Графический
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDrawIndexedIndirect
vkCmdDrawIndirect(3)
Имя
vkCmdDrawIndirect - Выполнить косвенный прорисовку в буфер команд
C-спецификация
Для записи неиндексированной косвенной прорисовки, вызовите:
void vkCmdDrawIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride); Параметры
-
commandBuffer- это буфер команд, в который записывается команда. -
buffer- это буфер, содержащий параметры прорисовки. -
offset- это байтовый смещение вbuffer, где начинаются параметры. -
drawCount- это количество прорисовок для выполнения, и может быть равно нулю. -
stride- это байтовый шаг между последующими наборами параметров прорисовки.
Описание
vkCmdDrawIndirect ведет себя аналогично vkCmdDraw, за исключением того, что параметры считываются устройством из буфера во время выполнения. drawCount прорисовки выполняются командой, с параметрами, взятыми из buffer, начиная с offset и увеличиваясь на stride байт для каждой последующей прорисовки. Параметры каждой прорисовки закодированы в массиве структур VkDrawIndirectCommand. Если drawCount меньше или равно единице, stride игнорируется.
Допустимое использование
- Если
bufferне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemoryoffsetдолжен быть кратным4- Если
drawCountбольше, чем1,strideдолжен быть кратным4и должен быть больше или равен sizeof(VkDrawIndirectCommand)- Если функция multi-draw indirect не включена,
drawCountдолжен быть0или1- Если функция drawIndirectFirstInstance не включена, все элементы
firstInstanceструктурVkDrawIndirectCommand, доступных этой команде, должны быть0- Текущий проход отрисовки должен быть совместим с элементом
renderPassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Индекс подпрохода текущего прохода отрисовки должен быть равен элементу
subpassструктурыVkGraphicsPipelineCreateInfo, указанной при созданииVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS.- Для каждого набора n, который статически используется
VkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, набор дескрипторов должен быть связан с n вVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для набора n, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Для каждой константы push, которая статически используется
VkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, значение константы push должно быть установлено дляVK_PIPELINE_BIND_POINT_GRAPHICS, сVkPipelineLayout, который совместим для констант push, сVkPipelineLayout, используемым для создания текущегоVkPipeline, как описано в html/vkspec.html#descriptorsets-compatibility- Дескрипторы в каждом связанном наборе дескрипторов, указанные через
vkCmdBindDescriptorSets, должны быть действительны, если они статически используются в данный момент связанным объектомVkPipeline, указанным черезvkCmdBindPipeline- Все привязки входных данных вершин, доступные через переменные входных данных вершин, объявленные в интерфейсе точки входа вершинного шейдера, должны иметь связанные действительные буферы
- Действительный графический конвейер должен быть связан с текущим буфером команд с помощью
VK_PIPELINE_BIND_POINT_GRAPHICS- Если объект
VkPipeline, в данный момент связанный сVK_PIPELINE_BIND_POINT_GRAPHICS, требует любого динамического состояния, это состояние должно быть установлено в текущем буфере команд- Если
drawCountравно1, (offset+ sizeof(VkDrawIndirectCommand)) должно быть меньше или равно размеруbuffer- Если
drawCountбольше1, (stride× (drawCount- 1) +offset+ sizeof(VkDrawIndirectCommand)) должно быть меньше или равно размеруbufferdrawCountдолжен быть меньше или равенVkPhysicalDeviceLimits::maxDrawIndirectCount- Каждое входное вложение, используемое текущим подпроходом, должно быть связано с конвейером через набор дескрипторов
- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться для выборки из любогоVkImageсVkImageViewтипаVK_IMAGE_VIEW_TYPE_3D,VK_IMAGE_VIEW_TYPE_CUBE,VK_IMAGE_VIEW_TYPE_1D_ARRAY,VK_IMAGE_VIEW_TYPE_2D_ARRAYилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*сImplicitLod,DrefилиProjв их именах, в любой стадии шейдера- Если любой объект
VkSampler, доступный из шейдераVkPipeline, в данный момент связанного сVK_PIPELINE_BIND_POINT_GRAPHICS, использует ненормализованные координаты, он не должен использоваться ни с одной из инструкций SPIR-VOpImageSample*илиOpImageSparseSample*, которые включают смещение LOD или любые значения смещения, в любой стадии шейдера- Если функция robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу униформ, он не должен обращаться к значениям за пределами диапазона этого буфера, указанного в в данный момент связанном наборе дескрипторов- Если функция robust buffer access не включена, и любая стадия шейдера в объекте
VkPipeline, в данный момент связанном сVK_PIPELINE_BIND_POINT_GRAPHICS, обращается к буферу хранения, он не должен обращаться к значениям за пределами диапазона этого буфера, указанного в в данный момент связанном наборе дескрипторов- Любой
VkImageView, выбираемый с помощьюVK_FILTER_LINEARв результате этой команды, должен иметь формат, который поддерживает линейную фильтрацию, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITвVkFormatProperties::linearTilingFeatures(для линейного изображения) илиVkFormatProperties::optimalTilingFeatures(для оптимально черепичного изображения), возвращаемогоvkGetPhysicalDeviceFormatProperties- Подресурсы изображений, используемые в качестве вложений в текущем проходе отрисовки, не должны каким-либо образом, кроме как в качестве вложения, использоваться этой командой.
Допустимое использование (Неявное)
commandBufferдолжен быть действительной дескрипторомVkCommandBufferbufferдолжен быть действительной дескрипторомVkBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода отрисовки
- И
buffer, иcommandBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнутри
Графический
Графический
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdDrawIndirect
vkCmdEndQuery(3)
Имя
vkCmdEndQuery - Завершает запрос
C Спецификация
Чтобы завершить запрос после выполнения набора необходимых команд отрисовки или диспетчеризации, вызовите:
void vkCmdEndQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query); Параметры
-
commandBufferis the command buffer into which this command will be recorded. -
queryPoolis the query pool that is managing the results of the query. -
queryis the query index within the query pool where the result is stored.
Описание
Поскольку запросы работают асинхронно, завершение запроса не приводит к немедленному установке состояния запроса как доступного. Запрос считается завершенным, когда окончательные результаты запроса готовы к извлечению с помощью vkGetQueryPoolResults и vkCmdCopyQueryPoolResults, и именно тогда состояние запроса устанавливается как доступное.
После завершения запроса запрос должен завершиться за конечное время, если только состояние запроса не изменится с помощью других команд, например, путем выполнения сброса запроса.
Допустимое использование
- Запрос, идентифицированный с помощью
queryPoolиquery, должен в данный момент быть активнымqueryдолжен быть меньше числа запросов вqueryPool
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferqueryPoolдолжен быть допустимой дескрипторомVkQueryPoolcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- И
commandBuffer, иqueryPoolдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительный
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdEndQuery
vkCmdEndRenderPass(3)
Имя
vkCmdEndRenderPass - Завершение текущего прохода отрисовки
Спецификация C
Чтобы записать команду для завершения экземпляра прохода отрисовки после записи команд для последнего подпрохода, вызовите:
void vkCmdEndRenderPass(
VkCommandBuffer commandBuffer); Параметры
-
commandBufferis the command buffer in which to end the current render pass instance.
Описание
Завершение экземпляра прохода отрисовки выполняет любые операции многовыборочного разрешения в финальном подпроходе.
Допустимое использование
- Текущий индекс подпрохода должен быть равен количеству подпроходов в проходе отрисовки минус один
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода отрисовки
commandBufferдолжен быть основнымVkCommandBuffer
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
Внутри
Графический
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdEndRenderPass
vkCmdExecuteCommands(3)
Имя
vkCmdExecuteCommands - Выполнение вторичного буфера команд из основного буфера команд
Спецификация C
Вторичный буфер команд не должен напрямую отправляться в очередь. Вместо этого вторичные буферы команд записываются для выполнения как часть основного буфера команд с помощью команды:
void vkCmdExecuteCommands(
VkCommandBuffer commandBuffer,
uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers); Параметры
-
commandBufferis a handle to a primary command buffer that the secondary command buffers are executed in. -
commandBufferCountis the length of thepCommandBuffersarray. -
pCommandBuffersis an array of secondary command buffer handles, which are recorded to execute in the primary command buffer in the order they are listed in the array.
Описание
Если любой элемент pCommandBuffers не был записан с флагом VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, и он был записан в любой другой основной буфер команд, который в настоящее время находится в исполнимом или записываемом состоянии, этот основной буфер команд становится недействительным.
Допустимое использование
commandBufferдолжен быть выделен сlevelVK_COMMAND_BUFFER_LEVEL_PRIMARY- Любой заданный элемент
pCommandBuffersдолжен быть выделен сlevelVK_COMMAND_BUFFER_LEVEL_SECONDARY- Любой заданный элемент
pCommandBuffersдолжен находиться в состоянии ожидания или готовности к выполнению.- Если любой элемент
pCommandBuffersне был записан с флагомVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, и он был записан в любой другой первичный буфер команд, этот первичный буфер команд не должен находиться в состоянии ожидания- Если любой заданный элемент
pCommandBuffersне был записан с флагомVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, он не должен находиться в состоянии ожидания.- Если любой заданный элемент
pCommandBuffersне был записан с флагомVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, он не должен быть уже записан вcommandBuffer.- Если любой заданный элемент
pCommandBuffersне был записан с флагомVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, он не должен появляться более одного раза вpCommandBuffers.- Любой заданный элемент
pCommandBuffersдолжен быть выделен изVkCommandPool, который был создан для того же семейства очередей, что иVkCommandPool, из которого был выделенcommandBuffer- Если
vkCmdExecuteCommandsвызывается в пределах экземпляра прохода отрисовки, этот экземпляр прохода отрисовки должен быть начат с параметромcontentsvkCmdBeginRenderPass, установленным вVK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS- Если
vkCmdExecuteCommandsвызывается в пределах экземпляра прохода отрисовки, любой заданный элементpCommandBuffersдолжен быть записан сVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT- Если
vkCmdExecuteCommandsвызывается в пределах экземпляра прохода отрисовки, любой заданный элементpCommandBuffersдолжен быть записан сVkCommandBufferInheritanceInfo::subpass, установленным в индекс подпрохода, в котором будет выполнен данный буфер команд- Если
vkCmdExecuteCommandsвызывается в пределах экземпляра прохода отрисовки, проходы отрисовки, указанные в членах pname::pBeginInfo::pInheritanceInfo::renderPassкоманд vkBeginCommandBuffer, используемых для начала записи каждого элементаpCommandBuffers, должны быть совместимы с текущим проходом отрисовки.- Если
vkCmdExecuteCommandsвызывается в пределах экземпляра прохода отрисовки, и любой заданный элементpCommandBuffersбыл записан сVkCommandBufferInheritanceInfo::framebuffer, не равным VK_NULL_HANDLE, этотVkFramebufferдолжен соответствоватьVkFramebuffer, используемому в текущем экземпляре прохода отрисовки- Если
vkCmdExecuteCommandsне вызывается в пределах экземпляра прохода отрисовки, любой заданный элементpCommandBuffersне должен быть записан сVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT- Если функция inherited queries не включена,
commandBufferне должен иметь никаких запросов активных- Если
commandBufferимеет запросVK_QUERY_TYPE_OCCLUSIONактивный, то каждый элементpCommandBuffersдолжен быть записан сVkCommandBufferInheritanceInfo::occlusionQueryEnable, установленным вVK_TRUE- Если
commandBufferимеет запросVK_QUERY_TYPE_OCCLUSIONактивный, то каждый элементpCommandBuffersдолжен быть записан сVkCommandBufferInheritanceInfo::queryFlags, имеющим установленные все биты, которые установлены для запроса- Если
commandBufferимеет запросVK_QUERY_TYPE_PIPELINE_STATISTICSактивный, то каждый элементpCommandBuffersдолжен быть записан сVkCommandBufferInheritanceInfo::pipelineStatistics, имеющим установленные все биты, которые установлены вVkQueryPool, используемом запросом- Любой заданный элемент
pCommandBuffersне должен начинать какие-либо типы запросов, которые активны вcommandBuffer
Допустимое использование (Неявное)
commandBufferдолжен быть допустимой дескрипторной ссылкойVkCommandBufferpCommandBuffersдолжен быть указателем на массивcommandBufferCountдопустимых дескрипторных ссылокVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычисленийcommandBufferдолжен быть первичнымVkCommandBuffercommandBufferCountдолжен быть больше0- И
commandBuffer, и элементыpCommandBuffersдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буферов команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Первичный
Оба
Передача
графика
вычисления
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdExecuteCommands
vkCmdFillBuffer(3)
Имя
vkCmdFillBuffer - Заполнить область буфера фиксированным значением
C Спецификация
Чтобы очистить данные буфера, вызовите:
void vkCmdFillBuffer(
VkCommandBuffer commandBuffer,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize size,
uint32_t data); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
dstBuffer- буфер, который нужно заполнить. -
dstOffset- смещение в байтах в буфере, с которого нужно начать заполнение, и должно быть кратно 4. -
size- количество байт для заполнения, и должно быть либо кратно 4, либоVK_WHOLE_SIZE, чтобы заполнить диапазон отoffsetдо конца буфера. Если используетсяVK_WHOLE_SIZEи оставшийся размер буфера не кратен 4, то используется ближайшее меньшее кратное. -
data- 4-байтовое слово, которое записывается многократно в буфер для заполненияsizeбайт данных. Слово данных записывается в память в соответствии с порядком байтов хоста.
Описание
vkCmdFillBuffer рассматривается как операция «передачи» для целей барьеров синхронизации. VK_BUFFER_USAGE_TRANSFER_DST_BIT должен быть указан в usage VkBufferCreateInfo, чтобы буфер был совместим с vkCmdFillBuffer.
Допустимое использование
dstOffsetдолжно быть меньше размераdstBufferdstOffsetдолжно быть кратно4- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть больше0- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть меньше или равно размеруdstBufferминусdstOffset- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть кратно4dstBufferдолжно быть создано с флагом использованияVK_BUFFER_USAGE_TRANSFER_DST_BITVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Если
dstBufferне разрежен, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory
Допустимое использование (неявное)
commandBufferдолжно быть допустимой дескрипторомVkCommandBufferdstBufferдолжно быть допустимой дескрипторомVkBuffercommandBufferдолжно находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
- И
commandBuffer, иdstBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВне
Графический
ВычислительныйПередача
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdFillBuffer
vkCmdNextSubpass(3)
Название
vkCmdNextSubpass - Переход к следующему подпроходу прохода отрисовки
C-спецификация
Для перехода к следующему подпроходу в экземпляре прохода отрисовки после записи команд для подпрохода, вызовите:
void vkCmdNextSubpass(
VkCommandBuffer commandBuffer,
VkSubpassContents contents); Параметры
-
commandBuffer- это буфер команд, в котором необходимо записать команду. -
contentsуказывает, как будут предоставлены команды в следующем подпроходе, аналогично соответствующему параметру vkCmdBeginRenderPass.
Описание
Индекс подпрохода для прохода отрисовки начинается с нуля при записи vkCmdBeginRenderPass и увеличивается каждый раз при записи vkCmdNextSubpass.
Переход к следующему подпроходу автоматически выполняет любые операции многовыборочного разрешения в завершающемся подпроходе. Многовыборочные разрешения в конце подпрохода рассматриваются как записи цветных вложений для целей синхронизации. То есть, считается, что они выполняются на этапе конвейера VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, и их записи синхронизируются с VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT. Синхронизация между рендерингом внутри подпрохода и любыми операциями разрешения в конце подпрохода происходит автоматически, без необходимости явных зависимостей или барьеров конвейера. Однако, если вложение разрешения также используется в другом подпроходе, необходима явная зависимость.
После перехода к следующему подпроходу приложение может записывать команды для этого подпрохода.
Допустимое использование
- Текущий индекс подпрохода должен быть меньше числа подпроходов в проходе отрисовки минус один
Допустимое использование (неявное)
commandBufferдолжно быть допустимой дескрипторомVkCommandBuffercontentsдолжно быть допустимым значением VkSubpassContentscommandBufferдолжно находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только внутри экземпляра прохода отрисовки
commandBufferдолжен быть основнымVkCommandBuffer
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
Внутри
Графический
Графический
См. также
VkCommandBuffer, VkSubpassContents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdNextSubpass
vkCmdPipelineBarrier(3)
Название
vkCmdPipelineBarrier - Вставка зависимости памяти
C-спецификация
Для записи барьера конвейера, вызовите:
void vkCmdPipelineBarrier(
VkCommandBuffer commandBuffer,
VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
VkDependencyFlags dependencyFlags,
uint32_t memoryBarrierCount,
const VkMemoryBarrier* pMemoryBarriers,
uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier* pImageMemoryBarriers); Параметры
-
commandBuffer- это буфер команд, в который записывается команда. -
srcStageMask- это битовая маска VkPipelineStageFlagBits, указывающая маску исходной стадии. -
dstStageMask- это битовая маска VkPipelineStageFlagBits, указывающая маску целевой стадии. -
dependencyFlags- это битовая маска VkDependencyFlagBits, указывающая, как формируются зависимости выполнения и памяти. -
memoryBarrierCount- это длина массиваpMemoryBarriers. -
pMemoryBarriers- это указатель на массив структур VkMemoryBarrier. -
bufferMemoryBarrierCount- это длина массиваpBufferMemoryBarriers. -
pBufferMemoryBarriers- это указатель на массив структур VkBufferMemoryBarrier. -
imageMemoryBarrierCount- это длина массиваpImageMemoryBarriers. -
pImageMemoryBarriers- это указатель на массив структур VkImageMemoryBarrier.
Описание
Когда vkCmdPipelineBarrier отправляется в очередь, он определяет зависимость памяти между командами, которые были отправлены до него, и теми, которые отправлены после него.
Если vkCmdPipelineBarrier был записан вне экземпляра прохода рендеринга, первый область синхронизации включает каждую команду, отправленную в ту же очередь перед ним, включая те, которые находятся в том же буфере команд и пакете. Если vkCmdPipelineBarrier был записан внутри экземпляра прохода рендеринга, первая область синхронизации включает только команды, отправленные перед ним в пределах того же подпрохода. В любом случае, первая область синхронизации ограничена операциями на этапах конвейера, определяемых маской исходного этапа, указанной srcStageMask.
Если vkCmdPipelineBarrier был записан вне экземпляра прохода рендеринга, вторая область синхронизации включает каждую команду, отправленную в ту же очередь после него, включая те, которые находятся в том же буфере команд и пакете. Если vkCmdPipelineBarrier был записан внутри экземпляра прохода рендеринга, вторая область синхронизации включает только команды, отправленные после него в пределах того же подпрохода. В любом случае, вторая область синхронизации ограничена операциями на этапах конвейера, определяемых маской целевого этапа, указанной dstStageMask.
Первая область доступа ограничена доступом на этапах конвейера, определяемых маской исходного этапа, указанной srcStageMask. Внутри этого, первая область доступа включает только первые области доступа, определенные элементами массивов pMemoryBarriers, pBufferMemoryBarriers и pImageMemoryBarriers, каждый из которых определяет набор барьеров памяти. Если барьеры памяти не указаны, то первая область доступа не включает никаких доступов.
Вторая область доступа ограничена доступом на этапах конвейера, определяемых маской целевого этапа, указанной dstStageMask. Внутри этого, вторая область доступа включает только вторые области доступа, определенные элементами массивов pMemoryBarriers, pBufferMemoryBarriers и pImageMemoryBarriers, каждый из которых определяет набор барьеров памяти. Если барьеры памяти не указаны, то вторая область доступа не включает никаких доступов.
Если dependencyFlags включает VK_DEPENDENCY_BY_REGION_BIT, то любая зависимость между этапами конвейера в пространстве фреймбуфера является локальной для фреймбуфера - в противном случае она является глобальной для фреймбуфера.
END_OF_DOCUMENT_MARKERДопустимое использование
- Если функция геометрических шейдеров не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция геометрических шейдеров не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция тесселяционных шейдеров не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Если функция тесселяционных шейдеров не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга, проход рендеринга должен быть создан с экземпляромVkSubpassDependencyвpDependencies, который выражает зависимость от текущего подпрохода к самому себе.- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,srcStageMaskдолжен содержать подмножество битовых значений в элементеsrcStageMaskэтого экземпляраVkSubpassDependency- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,dstStageMaskдолжен содержать подмножество битовых значений в элементеdstStageMaskэтого экземпляраVkSubpassDependency- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,srcAccessMaskлюбого элементаpMemoryBarriersилиpImageMemoryBarriersдолжен содержать подмножество битовых значений элементаsrcAccessMaskэтого экземпляраVkSubpassDependency- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,dstAccessMaskлюбого элементаpMemoryBarriersилиpImageMemoryBarriersдолжен содержать подмножество битовых значений элементаdstAccessMaskэтого экземпляраVkSubpassDependency- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,dependencyFlagsдолжен быть равен элементуdependencyFlagsэтого экземпляраVkSubpassDependency- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга,bufferMemoryBarrierCountдолжен быть0- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга, элементimageлюбого элементаpImageMemoryBarriersдолжен быть равен одному из элементовpAttachments, с которым был создан текущийframebuffer, который также упоминается одним из элементов элементовpColorAttachments,pResolveAttachmentsилиpDepthStencilAttachmentэлементов экземпляраVkSubpassDescription, с которым был создан текущий подпроход- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга, элементыoldLayoutиnewLayoutлюбого элементаpImageMemoryBarriersдолжны быть равны элементуlayoutэлемента элементовpColorAttachments,pResolveAttachmentsилиpDepthStencilAttachmentэлементов экземпляраVkSubpassDescription, с которым был создан текущий подпроход, который ссылается на тот жеimage- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга, элементыoldLayoutиnewLayoutэлементаpImageMemoryBarriersдолжны быть равны- Если
vkCmdPipelineBarrierвызывается внутри экземпляра прохода рендеринга, элементыsrcQueueFamilyIndexиdstQueueFamilyIndexлюбого элементаpImageMemoryBarriersдолжны бытьVK_QUEUE_FAMILY_IGNORED- Любой этап конвейера, включенный в
srcStageMaskилиdstStageMask, должен поддерживаться возможностями очереди, указанной элементомqueueFamilyIndexструктуры VkCommandPoolCreateInfo, которая использовалась для созданияVkCommandPool, из которого был выделенcommandBuffer, как указано в таблице поддерживаемых этапов конвейера.- Любой заданный элемент
pMemoryBarriers,pBufferMemoryBarriersилиpImageMemoryBarriersне должен иметь ни одного флага доступа, включенного в его элементsrcAccessMask, если этот бит не поддерживается ни одним из этапов конвейера вsrcStageMask, как указано в таблице поддерживаемых типов доступа.- Любой заданный элемент
pMemoryBarriers,pBufferMemoryBarriersилиpImageMemoryBarriersне должен иметь ни одного флага доступа, включенного в его элементdstAccessMask, если этот бит не поддерживается ни одним из этапов конвейера вdstStageMask, как указано в таблице поддерживаемых типов доступа.
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcStageMaskдолжен быть допустимым сочетанием значений VkPipelineStageFlagBitssrcStageMaskне должен быть0dstStageMaskдолжен быть допустимым сочетанием значений VkPipelineStageFlagBitsdstStageMaskне должен быть0dependencyFlagsдолжен быть допустимым сочетанием значений VkDependencyFlagBits- Если
memoryBarrierCountне0,pMemoryBarriersдолжен быть указателем на массив изmemoryBarrierCountдопустимых структурVkMemoryBarrier- Если
bufferMemoryBarrierCountне0,pBufferMemoryBarriersдолжен быть указателем на массив изbufferMemoryBarrierCountдопустимых структурVkBufferMemoryBarrier- Если
imageMemoryBarrierCountне0,pImageMemoryBarriersдолжен быть указателем на массив изimageMemoryBarrierCountдопустимых структурVkImageMemoryBarriercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Передача
графика
вычисления
См. также
VkBufferMemoryBarrier, VkCommandBuffer, VkDependencyFlags, VkImageMemoryBarrier, VkMemoryBarrier, VkPipelineStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdPipelineBarrier
vkCmdPushConstants(3)
Имя
vkCmdPushConstants - Обновление значений констант push
C-спецификация
Для обновления констант push вызовите:
void vkCmdPushConstants(
VkCommandBuffer commandBuffer,
VkPipelineLayout layout,
VkShaderStageFlags stageFlags,
uint32_t offset,
uint32_t size,
const void* pValues); Параметры
-
commandBuffer- это буфер команд, в котором будет записано обновление константы push. -
layout- это макет конвейера, используемый для программирования обновлений констант push. -
stageFlags- это битовая маска VkShaderStageFlagBits, указывающая этапы шейдера, которые будут использовать константы push в обновленном диапазоне. -
offset- это начальный смещение диапазона констант push для обновления, в байтах. -
size- это размер диапазона констант push для обновления, в байтах. -
pValues- это массив изsizeбайтов, содержащий новые значения констант push.
Описание
Допустимое использование
stageFlagsдолжен точно соответствовать этапам шейдера, используемым вlayoutдля диапазона, указанногоoffsetиsizeoffsetдолжен быть кратным4sizeдолжен быть кратным4offsetдолжен быть меньшеVkPhysicalDeviceLimits::maxPushConstantsSizesizeдолжен быть меньше или равенVkPhysicalDeviceLimits::maxPushConstantsSizeминусoffset
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferlayoutдолжен быть допустимой дескрипторомVkPipelineLayoutstageFlagsдолжен быть допустимым сочетанием значений VkShaderStageFlagBitsstageFlagsне должен быть0pValuesдолжен быть указателем на массив изsizeбайтовcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции графики или вычисленийsizeдолжен быть больше0- Оба
commandBufferиlayoutдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графика
вычисления
См. также
VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdPushConstants
vkCmdResetEvent(3)
Имя
vkCmdResetEvent - Сброс объекта события в несигнализированное состояние
C-спецификация
Чтобы установить состояние события в несигнализированное с устройства, вызовите:
void vkCmdResetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
VkPipelineStageFlags stageMask); Параметры
-
commandBuffer- это буфер команд, в который записывается команда. -
event- это событие, которое будет несигнализировано. -
stageMask- это битовая маска VkPipelineStageFlagBits, указывающая маску исходной стадии, используемую для определения того, когдаeventнесигнализируется.
Описание
Когда vkCmdResetEvent отправляется в очередь, он определяет зависимость выполнения от команд, которые были отправлены до него, и определяет операцию отмены сигнала события, которая сбрасывает событие в несигнализированное состояние.
Первая область синхронизации включает каждую команду, ранее отправленную в ту же очередь, включая те, которые находятся в одном буфере команд и пакете. Область синхронизации ограничена операциями на этапах конвейера, определяемых маской исходной стадии, указанной stageMask.
Вторая область синхронизации включает только операцию отмены сигнала события.
Если event уже находится в несигнализированном состоянии, когда vkCmdResetEvent выполняется на устройстве, то vkCmdResetEvent не оказывает никакого эффекта, операция снятия сигнала события не происходит, и зависимость выполнения не генерируется.
Допустимое использование
stageMaskне должен включатьVK_PIPELINE_STAGE_HOST_BIT- Если функция geometry shaders не включена,
stageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция tessellation shaders не включена,
stageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Когда эта команда выполняется,
eventне должен ожидать командуvkCmdWaitEvents, которая выполняется в данный момент
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffereventдолжен быть допустимой дескрипторомVkEventstageMaskдолжен быть допустимым сочетанием значений VkPipelineStageFlagBitsstageMaskне должен быть0commandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
- И
commandBuffer, иeventдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнешний
Графический
вычислительный
См. также
VkCommandBuffer, VkEvent, VkPipelineStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdResetEvent
vkCmdResetQueryPool(3)
Имя
vkCmdResetQueryPool - Сброс запросов в пуле запросов
Спецификация C
Чтобы сбросить диапазон запросов в пуле запросов, вызовите:
void vkCmdResetQueryPool(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount); Параметры
-
commandBuffer- буфер команд, в который будет записана эта команда. -
queryPool- дескриптор пула запросов, управляющего сбрасываемыми запросами. -
firstQuery- начальный индекс запроса для сброса. -
queryCount- количество запросов для сброса.
Описание
При выполнении в очереди эта команда устанавливает состояние индексов запросов [firstQuery, firstQuery + queryCount - 1] как недоступное.
Допустимое использование
firstQueryдолжен быть меньше, чем количество запросов вqueryPool- Сумма
firstQueryиqueryCountдолжна быть меньше или равна количеству запросов вqueryPool
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferqueryPoolдолжен быть допустимой дескрипторомVkQueryPoolcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
- И
commandBuffer, иqueryPoolдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВнешний
Графический
вычислительный
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdResetQueryPool
vkCmdResolveImage(3)
Имя
vkCmdResolveImage - Разрешение областей изображения
Спецификация C
Чтобы разрешить многовыборочное изображение в не многовыборочное изображение, вызовите:
void vkCmdResolveImage(
VkCommandBuffer commandBuffer,
VkImage srcImage,
VkImageLayout srcImageLayout,
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageResolve* pRegions); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
srcImage- исходное изображение. -
srcImageLayout- макет подресурсов исходного изображения для разрешения. -
dstImage- целевое изображение. -
dstImageLayout- макет подресурсов целевого изображения для разрешения. -
regionCount- количество областей для разрешения. -
pRegions- указатель на массив структур VkImageResolve, указывающих области для разрешения.
Описание
Во время разрешения образцы, соответствующие каждому расположению пикселя в источнике, преобразуются в один образец, прежде чем быть записанными в место назначения. Если исходные форматы являются типами с плавающей запятой или нормализованными типами, значения образцов для каждого пикселя разрешаются способом, зависящим от реализации. Если исходные форматы являются целочисленными типами, для каждого пикселя выбирается значение одного образца.
srcOffset и dstOffset выбирают начальные смещения x, y и z в текселях подобластей данных исходного и целевого изображения. extent - размер в текселях исходного изображения для разрешения в width, height и depth.
Разрешения выполняются слой за слоем, начиная с члена baseArrayLayer для источника и dstSubresource для назначения. layerCount слоёв разрешаются на целевом изображении.
Допустимое использование
- Указанный регион источника, заданный данным элементом
pRegions, должен быть регионом, который содержится внутриsrcImage- Указанный регион назначения, заданный данным элементом
pRegions, должен быть регионом, который содержится внутриdstImage- Объединение всех регионов источника и объединение всех регионов назначения, указанных элементами
pRegions, не должны перекрываться в памяти- Если
srcImageне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorysrcImageдолжен иметь количество выборок, равное любому допустимому значению количества выборок, кромеVK_SAMPLE_COUNT_1_BIT- Если
dstImageне является разреженным, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorydstImageдолжен иметь количество выборок, равноеVK_SAMPLE_COUNT_1_BITsrcImageLayoutдолжен указывать компоновку подобъектов изображенияsrcImage, указанных вpRegions, в момент выполнения этой команды наVkDevicesrcImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMALилиVK_IMAGE_LAYOUT_GENERALdstImageLayoutдолжен указывать компоновку подобъектов изображенияdstImage, указанных вpRegions, в момент выполнения этой команды наVkDevicedstImageLayoutдолжен бытьVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- Если
dstImageбыл создан сtiling, равнымVK_IMAGE_TILING_LINEAR,dstImageдолжен быть создан сformat, который поддерживает использование в качестве цветового вложения, как указано флагомVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITвVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatProperties- Если
dstImageбыл создан сtiling, равнымVK_IMAGE_TILING_OPTIMAL,dstImageдолжен быть создан сformat, который поддерживает использование в качестве цветового вложения, как указано флагомVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITвVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiessrcImageиdstImageдолжны быть созданы с одним и тем же форматом изображения
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffersrcImageдолжен быть допустимой дескрипторомVkImagesrcImageLayoutдолжен быть допустимым значением VkImageLayoutdstImageдолжен быть допустимой дескрипторомVkImagedstImageLayoutдолжен быть допустимым значением VkImageLayoutpRegionsдолжен быть указателем на массив изregionCountдопустимых структурVkImageResolvecommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
regionCountдолжен быть больше0- Каждый из
commandBuffer,dstImageиsrcImageдолжен быть создан, выделен или получен из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВне
Графический
Передача
См. также
VkCommandBuffer, VkImage, VkImageLayout, VkImageResolve
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdResolveImage
vkCmdSetBlendConstants(3)
Имя
vkCmdSetBlendConstants - Установка значений констант смешивания
Спецификация C
В противном случае, для динамической установки и изменения константы смешивания вызовите:
void vkCmdSetBlendConstants(
VkCommandBuffer commandBuffer,
const float blendConstants[4]); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
blendConstants- массив из четырех значений, указывающих компоненты R, G, B и A цвета константы смешивания, используемого при смешивании, в зависимости от коэффициента смешивания.
Описание
Допустимое использование
- Текущий связанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_BLEND_CONSTANTS
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetBlendConstants
vkCmdSetDepthBias(3)
Имя
vkCmdSetDepthBias - Установка динамического состояния смещения глубины
Спецификация C
Значения глубины всех фрагментов, генерируемых растеризацией полигона, могут быть смещены на одно значение, вычисляемое для этого полигона. Это поведение контролируется членами depthBiasEnable, depthBiasConstantFactor, depthBiasClamp и depthBiasSlopeFactor VkPipelineRasterizationStateCreateInfo, или соответствующими параметрами команды vkCmdSetDepthBias, если состояние смещения глубины является динамическим.
void vkCmdSetDepthBias(
VkCommandBuffer commandBuffer,
float depthBiasConstantFactor,
float depthBiasClamp,
float depthBiasSlopeFactor); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
depthBiasConstantFactor- скалярный множитель, управляющий постоянным значением глубины, добавляемым к каждому фрагменту. -
depthBiasClamp- максимальное (или минимальное) смещение глубины фрагмента. -
depthBiasSlopeFactor- скалярный множитель, применяемый к наклону фрагмента в вычислениях смещения глубины.
Описание
Если depthBiasEnable равно VK_FALSE, смещение глубины не применяется, и значения глубины фрагмента не изменяются.
depthBiasSlopeFactor масштабирует максимальный наклон глубины многоугольника, а depthBiasConstantFactor масштабирует зависящую от реализации константу, которая связана с допустимым разрешением буфера глубины. Результирующие значения суммируются для получения значения смещения глубины, которое затем ограничивается минимальным или максимальным значением, заданным depthBiasClamp. depthBiasSlopeFactor, depthBiasConstantFactor и depthBiasClamp могут быть положительными, отрицательными или равными нулю.
Максимальный наклон глубины m треугольника равен
где (xf, yf, zf) — точка на треугольнике. m может быть приближенно вычислен как
Минимальное различимое различие r — это зависящий от реализации параметр, который зависит от представления буфера глубины. Это наименьшая разница в значениях координаты z буфера кадра, которая гарантированно останется различимой в процессе растеризации многоугольников и в буфере глубины. Все пары фрагментов, сгенерированных растеризацией двух многоугольников с в остальном идентичными вершинами, но значениями zf, которые отличаются на $r$, будут иметь различные значения глубины.
Для буферов глубины с фиксированной точкой r является константой во всем диапазоне буфера глубины. Для буферов глубины с плавающей точкой нет одного минимального различимого различия. В этом случае минимальное различимое различие для данного многоугольника зависит от максимального показателя степени e в диапазоне значений z, охватываемом примитивом. Если n — количество битов в мантиссе с плавающей точкой, минимальное различимое различие r для данного примитива определяется как
- r = 2e-n
Если буфер глубины отсутствует, r не определено.
Значение смещения o для многоугольника равно
m вычисляется, как описано выше. Если буфер глубины использует представление с фиксированной точкой, m является функцией значений глубины в диапазоне [0,1], и o применяется к значениям глубины в том же диапазоне.
Для буферов глубины с фиксированной точкой значения глубины фрагмента всегда ограничиваются диапазоном [0,1] путем обрезания после выполнения сложения смещения глубины. Значения глубины фрагмента обрезаются даже тогда, когда буфер глубины использует представление с плавающей точкой.
Правильное использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_DEPTH_BIAS- Если функция обрезания смещения глубины depth bias clamping не включена,
depthBiasClampдолжно быть0.0
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetDepthBias
vkCmdSetDepthBounds(3)
Название
vkCmdSetDepthBounds - Установка значений теста границ глубины для буфера команд
C-спецификация
Тест границ глубины условно отключает покрытие выборки на основе результата сравнения значения za в приложении глубины в местоположении (xf,yf) (для соответствующей выборки) и диапазона значений. Тест включается или выключается членом depthBoundsTestEnable VkPipelineDepthStencilStateCreateInfo: Если объект состояния конвейера создается без включенного динамического состояния VK_DYNAMIC_STATE_DEPTH_BOUNDS, то диапазон значений, используемых в тесте границ глубины, определяется членами minDepthBounds и maxDepthBounds структуры VkPipelineDepthStencilStateCreateInfo. В противном случае, для динамической установки значений диапазона границ глубины вызовите:
void vkCmdSetDepthBounds(
VkCommandBuffer commandBuffer,
float minDepthBounds,
float maxDepthBounds); Параметры
-
commandBuffer— буфер команд, в который будет записана команда. -
minDepthBounds— нижняя граница диапазона значений глубины, используемых в тесте границ глубины. -
maxDepthBounds— верхняя граница диапазона.
Описание
Правильное использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_DEPTH_BOUNDSminDepthBoundsдолжно быть в диапазоне от0.0до1.0, включительноmaxDepthBoundsдолжно быть в диапазоне от0.0до1.0, включительно
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetDepthBounds
vkCmdSetEvent(3)
Название
vkCmdSetEvent - Установка объекта события в сигнализируемое состояние
C-спецификация
Чтобы установить состояние события в сигнализируемое состояние с устройства, вызовите:
void vkCmdSetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
VkPipelineStageFlags stageMask); Параметры
-
commandBuffer— буфер команд, в который записывается команда. -
event— событие, которое будет установлено в сигнализируемое состояние. -
stageMaskзадает маску исходной стадии, используемую для определения момента, когдаeventустанавливается в сигнализируемое состояние.
Описание
Когда vkCmdSetEvent отправляется в очередь, он определяет зависимость выполнения от команд, отправленных до него, и определяет операцию сигнала события, которая устанавливает событие в сигнализируемое состояние.
Первый объем синхронизации включает каждую команду, ранее отправленную в ту же очередь, включая те, что находятся в одном буфере команд и пакете. Объем синхронизации ограничен операциями на этапах конвейера, определяемых маской исходного этапа, указанной stageMask.
Второй объем синхронизации включает только операцию сигнала события.
Если event уже находится в сигнальном состоянии, когда vkCmdSetEvent выполняется на устройстве, то vkCmdSetEvent не оказывает никакого действия, операция сигнала события не происходит, и зависимость выполнения не генерируется.
Допустимое использование
stageMaskне должен включатьVK_PIPELINE_STAGE_HOST_BIT- Если функция геометрических шейдеров не включена,
stageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция тесселяционных шейдеров не включена,
stageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffereventдолжен быть допустимой дескрипторомVkEventstageMaskдолжен быть допустимой комбинацией значений VkPipelineStageFlagBitsstageMaskне должен быть0commandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- Эта команда должна вызываться только за пределами экземпляра прохода рендеринга
- И
commandBuffer, иeventдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- К
commandBufferдолжен осуществляться внешний синхронный доступ хоста- К
VkCommandPool, из которого был выделенcommandBuffer, должен осуществляться внешний синхронный доступ хоста
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВспомогательныйВнешний
Графический
вычислительный
См. также
VkCommandBuffer, VkEvent, VkPipelineStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetEvent
vkCmdSetLineWidth(3)
Имя
vkCmdSetLineWidth - Установка динамического состояния ширины линии
C-спецификация
Ширина линии задается свойством VkPipelineRasterizationStateCreateInfo::lineWidth текущего активного конвейера, если конвейер не был создан с включенным VK_DYNAMIC_STATE_LINE_WIDTH.
В противном случае ширина линии устанавливается путем вызова vkCmdSetLineWidth:
void vkCmdSetLineWidth(
VkCommandBuffer commandBuffer,
float lineWidth); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
lineWidth- ширина растеризованных линейных сегментов.
Описание
Допустимое использование
- Текущий связанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_LINE_WIDTH- Если функция широких линий не включена,
lineWidthдолжен быть1.0
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- К
commandBufferдолжен осуществляться внешний синхронный доступ хоста- К
VkCommandPool, из которого был выделенcommandBuffer, должен осуществляться внешний синхронный доступ хоста
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВспомогательныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetLineWidth
vkCmdSetScissor(3)
Имя
vkCmdSetScissor - Установка динамических прямоугольников отсечения в буфере команд
C-спецификация
Тест отсечения определяет, находятся ли координаты фреймбуфера фрагмента (xf,yf) внутри прямоугольника отсечения, соответствующего индексу видового окна (см. Управление видовым окном), используемому примитивом, который сгенерировал фрагмент. Если объект состояния конвейера создается без включенного VK_DYNAMIC_STATE_SCISSOR, то прямоугольники отсечения устанавливаются состоянием VkPipelineViewportStateCreateInfo объекта состояния конвейера. В противном случае для динамической установки прямоугольников отсечения вызовите:
void vkCmdSetScissor(
VkCommandBuffer commandBuffer,
uint32_t firstScissor,
uint32_t scissorCount,
const VkRect2D* pScissors); Параметры
-
commandBuffer- буфер команд, в который будет записана команда. -
firstScissor- индекс первого отсечения, состояние которого обновляется командой. -
scissorCount- количество отсечений, прямоугольники которых обновляются командой. -
pScissors- указатель на массив структур VkRect2D, определяющих прямоугольники отсечения.
Описание
Прямоугольники отсечения, взятые из элемента i pScissors, заменяют текущее состояние для индекса отсечения firstScissor + i, для i в [0, scissorCount).
Каждый прямоугольник отсечения описывается структурой VkRect2D, где значения offset.x и offset.y определяют левый верхний угол прямоугольника отсечения, а значения extent.width и extent.height определяют размер в пикселях.
Допустимое использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_SCISSORfirstScissorдолжен быть меньше, чемVkPhysicalDeviceLimits::maxViewports- Сумма
firstScissorиscissorCountдолжна быть в диапазоне от1доVkPhysicalDeviceLimits::maxViewports, включительно- Если функция multiple viewports не включена,
firstScissorдолжен быть0- Если функция multiple viewports не включена,
scissorCountдолжен быть1- Элементы
xиyoffsetдолжны быть больше или равны0- Вычисление (
offset.x+extent.width) не должно вызывать переполнение при сложении целых чисел со знаком- Вычисление (
offset.y+extent.height) не должно вызывать переполнение при сложении целых чисел со знаком
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpScissorsдолжен быть указателем на массив структурscissorCountVkRect2DcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операцииscissorCountдолжен быть больше0
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВспомогательныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetScissor
vkCmdSetStencilCompareMask(3)
Имя
vkCmdSetStencilCompareMask - Установка динамического состояния маски сравнения трафарета
C-спецификация
Если объект состояния конвейера создан с включенным динамическим состоянием VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, то для динамической установки маски сравнения трафарета вызовите:
void vkCmdSetStencilCompareMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t compareMask); Параметры
-
commandBuffer— буфер команд, в который будет записана команда. -
faceMask— это битовая маска VkStencilFaceFlagBits, указывающая набор состояний трафарета, для которых нужно обновить маску сравнения. -
compareMask— новое значение для использования в качестве маски сравнения трафарета.
Описание
Допустимое использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferfaceMaskдолжен быть допустимым сочетанием значений VkStencilFaceFlagBitsfaceMaskне должен быть0commandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВспомогательныйОба
Графический
См. также
VkCommandBuffer, VkStencilFaceFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetStencilCompareMask
vkCmdSetStencilReference(3)
Имя
vkCmdSetStencilReference - Установка динамического состояния ссылочного значения трафарета
C-спецификация
Если объект состояния конвейера создан с включенным динамическим состоянием VK_DYNAMIC_STATE_STENCIL_REFERENCE, то для динамической установки ссылочного значения трафарета вызовите:
void vkCmdSetStencilReference(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t reference); Параметры
-
commandBuffer— буфер команд, в который будет записана команда. -
faceMask— это битовая маска VkStencilFaceFlagBits, указывающая набор состояний трафарета, для которых нужно обновить ссылочное значение, как описано выше для vkCmdSetStencilCompareMask. -
reference— новое значение для использования в качестве ссылочного значения трафарета.
Описание
Допустимое использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_STENCIL_REFERENCE
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferfaceMaskдолжен быть допустимым сочетанием значений VkStencilFaceFlagBitsfaceMaskне должен быть0commandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
VkCommandBuffer, VkStencilFaceFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetStencilReference
vkCmdSetStencilWriteMask(3)
Имя
vkCmdSetStencilWriteMask - Установка динамического состояния маски записи трафарета
Спецификация C
Если объект состояния конвейера создан с включенным динамическим состоянием VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, то для динамической установки маски записи трафарета вызовите:
void vkCmdSetStencilWriteMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t writeMask); Параметры
-
commandBuffer— это буфер команд, в который будет записана команда. -
faceMask— это битовая маска VkStencilFaceFlagBits, указывающая набор состояний трафарета, для которых необходимо обновить маску записи, как описано выше для vkCmdSetStencilCompareMask. -
writeMask— это новое значение, которое будет использоваться в качестве маски записи трафарета.
Описание
Допустимое использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferfaceMaskдолжен быть допустимым сочетанием значений VkStencilFaceFlagBitsfaceMaskне должен быть0commandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операции
Синхронизация узла
- Доступ узла к
commandBufferдолжен быть внешне синхронизирован- Доступ узла к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
VkCommandBuffer, VkStencilFaceFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetStencilWriteMask
vkCmdSetViewport(3)
Имя
vkCmdSetViewport - Установка области просмотра в буфере команд
Спецификация C
Если привязанный объект состояния конвейера не был создан с включенным динамическим состоянием VK_DYNAMIC_STATE_VIEWPORT, параметры преобразования области просмотра указываются с использованием элемента pViewports VkPipelineViewportStateCreateInfo в объекте состояния конвейера. Если объект состояния конвейера был создан с включенным динамическим состоянием VK_DYNAMIC_STATE_VIEWPORT, параметры преобразования области просмотра устанавливаются и изменяются динамически с помощью команды:
void vkCmdSetViewport(
VkCommandBuffer commandBuffer,
uint32_t firstViewport,
uint32_t viewportCount,
const VkViewport* pViewports); Параметры
-
commandBuffer— это буфер команд, в который будет записана команда. -
firstViewport— это индекс первой области просмотра, параметры которой обновляются командой. -
viewportCount— это количество областей просмотра, параметры которых обновляются командой. -
pViewports— это указатель на массив структур VkViewport, указывающих параметры области просмотра.
Описание
Параметры области просмотра, взятые из элемента i pViewports, заменяют текущее состояние для индекса области просмотра firstViewport + i, для i в [0, viewportCount).
Допустимое использование
- Текущий привязанный графический конвейер должен быть создан с включенным динамическим состоянием
VK_DYNAMIC_STATE_VIEWPORTfirstViewportдолжен быть меньше, чемVkPhysicalDeviceLimits::maxViewports- Сумма
firstViewportиviewportCountдолжна находиться в диапазоне от1доVkPhysicalDeviceLimits::maxViewports, включительно- Если функция множественных областей просмотра не включена,
firstViewportдолжен быть0- Если функция множественных областей просмотра не включена,
viewportCountдолжен быть1pViewportsдолжен быть указателем на массивviewportCountдопустимых структурVkViewport
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические операцииviewportCountдолжен быть больше, чем0
Синхронизация узла
- Доступ узла к
commandBufferдолжен быть внешне синхронизирован- Доступ узла к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команд
Уровни буфера команд Область действия прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdSetViewport
vkCmdUpdateBuffer(3)
Имя
vkCmdUpdateBuffer - Обновление содержимого буфера из памяти узла
Спецификация C
Для обновления данных буфера встроенным способом в буфере команд вызовите:
void vkCmdUpdateBuffer(
VkCommandBuffer commandBuffer,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize dataSize,
const void* pData); Параметры
-
commandBuffer— это буфер команд, в который будет записана команда. -
dstBuffer— это дескриптор буфера, который нужно обновить. -
dstOffset— это смещение в байтах в буфере, с которого начинается обновление, и должно быть кратно 4. -
dataSize— это количество байтов для обновления, и должно быть кратно 4. -
pData— это указатель на исходные данные для обновления буфера, и должен иметь размер не менееdataSizeбайтов.
Описание
dataSize должен быть меньше или равен 65536 байтам. Для больших обновлений приложения могут использовать буферную копию copies.
Исходные данные копируются из указателя пользователя в буфер команд при вызове команды.
vkCmdUpdateBuffer разрешен только за пределами прохода отрисовки. Эта команда рассматривается как операция «передачи» для целей барьеров синхронизации. VK_BUFFER_USAGE_TRANSFER_DST_BIT должен быть указан в usage VkBufferCreateInfo, чтобы буфер был совместим с vkCmdUpdateBuffer.
Допустимое использование
dstOffsetдолжен быть меньше размераdstBufferdataSizeдолжен быть меньше или равен размеруdstBufferминусdstOffsetdstBufferдолжен быть создан с флагом использованияVK_BUFFER_USAGE_TRANSFER_DST_BIT- Если
dstBufferне разрежен, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorydstOffsetдолжен быть кратным4dataSizeдолжен быть меньше или равен65536dataSizeдолжен быть кратным4
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferdstBufferдолжен быть допустимой дескрипторомVkBufferpDataдолжен быть указателем на массив изdataSizeбайтcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать операции передачи, графики или вычислений- Эта команда должна вызываться только за пределами экземпляра прохода отрисовки
dataSizeдолжен быть больше0- И
commandBuffer, иdstBufferдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйВне
Передача
графика
вычисленияПередача
См. также
VkBuffer, VkCommandBuffer, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdUpdateBuffer
vkCmdWaitEvents(3)
Название
vkCmdWaitEvents - Ожидание одного или нескольких событий и вставка набора памяти
Спецификация C
Чтобы дождаться перехода одного или нескольких событий в сигнальное состояние на устройстве, вызовите:
void vkCmdWaitEvents(
VkCommandBuffer commandBuffer,
uint32_t eventCount,
const VkEvent* pEvents,
VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask,
uint32_t memoryBarrierCount,
const VkMemoryBarrier* pMemoryBarriers,
uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier* pImageMemoryBarriers); Параметры
-
commandBuffer— буфер команд, в который записывается команда. -
eventCount— длина массиваpEvents. -
pEvents— массив дескрипторов объектов событий, ожидания которых необходимы. -
srcStageMask— битовая маска VkPipelineStageFlagBits, указывающая маску исходной стадии. -
dstStageMask— битовая маска VkPipelineStageFlagBits, указывающая маску целевой стадии. -
memoryBarrierCount— длина массиваpMemoryBarriers. -
pMemoryBarriers— указатель на массив структур VkMemoryBarrier. -
bufferMemoryBarrierCount— длина массиваpBufferMemoryBarriers. -
pBufferMemoryBarriers— указатель на массив структур VkBufferMemoryBarrier. -
imageMemoryBarrierCount— длина массиваpImageMemoryBarriers. -
pImageMemoryBarriers— указатель на массив структур VkImageMemoryBarrier.
Описание
Когда vkCmdWaitEvents отправляется в очередь, он определяет зависимость памяти между предыдущими операциями сигнализации событий и последующими командами.
Первая область синхронизации включает только операции сигнализации событий, которые работают с членами pEvents, и операции, которые произошли до операций сигнализации событий. Операции сигнализации событий, выполняемые vkCmdSetEvent, которые ранее были отправлены в ту же очередь, включены в первую область синхронизации, если логически последняя стадия конвейера в их параметре stageMask логически раньше или равна логически последней стадии конвейера в srcStageMask. Операции сигнализации событий, выполняемые vkSetEvent, включаются в первую область синхронизации только в том случае, если VK_PIPELINE_STAGE_HOST_BIT включен в srcStageMask.
Вторая область синхронизации включает команды, позже отправленные в ту же очередь, включая те, которые находятся в одном буфере команд и пакете. Вторая область синхронизации ограничена операциями на стадиях конвейера, определяемых маской целевой стадии, указанной dstStageMask.
Первая область доступа ограничена доступом на стадиях конвейера, определяемых маской исходной стадии, указанной srcStageMask. В пределах этого, первая область доступа включает только первые области доступа, определенные элементами массивов pMemoryBarriers, pBufferMemoryBarriers и pImageMemoryBarriers, каждый из которых определяет набор барьеров памяти. Если барьеры памяти не указаны, то первая область доступа не включает никаких доступов.
Вторая область доступа ограничена доступом на стадиях конвейера, определяемых маской целевой стадии, указанной dstStageMask. В пределах этого, вторая область доступа включает только вторые области доступа, определенные элементами массивов pMemoryBarriers, pBufferMemoryBarriers и pImageMemoryBarriers, каждый из которых определяет набор барьеров памяти. Если барьеры памяти не указаны, то вторая область доступа не включает никаких доступов.
Примечание
vkCmdWaitEvents используется с vkCmdSetEvent для определения зависимости памяти между двумя наборами команд действий, примерно так же, как барьеры конвейера, но разделенные на две команды, так что работа между ними может выполняться беспрепятственно.
END_OF_DOCUMENT_MARKERПримечание
Приложения должны быть осторожны, чтобы избежать гонок данных при использовании событий. Нет прямой гарантии упорядочения между командой vkCmdResetEvent и командой vkCmdWaitEvents, отправленной после нее, поэтому между этими командами должна быть включена какая-либо другая зависимость выполнения (например, семафор).
Правильное использование
srcStageMaskдолжен быть побитовым ИЛИ параметраstageMask, используемого в предыдущих вызовахvkCmdSetEvent, с любым из элементовpEventsиVK_PIPELINE_STAGE_HOST_BIT, если любой из элементовpEventsбыл установлен с помощьюvkSetEvent- Если функция geometry shaders не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция geometry shaders не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция tessellation shaders не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Если функция tessellation shaders не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Если
pEventsвключает одно или несколько событий, которые будут сигнализированыvkSetEventпосле того, какcommandBufferбудет отправлен в очередь, тоvkCmdWaitEventsне должен вызываться внутри экземпляра прохода рендеринга- Любая стадия конвейера, включенная в
srcStageMaskилиdstStageMaskдолжна поддерживаться возможностями семейства очередей, указанного членомqueueFamilyIndexструктуры VkCommandPoolCreateInfo, которая использовалась для созданияVkCommandPool, из которого был выделенcommandBuffer, как указано в таблице поддерживаемых стадий конвейера.- Любой заданный элемент
pMemoryBarriers,pBufferMemoryBarriersилиpImageMemoryBarriersне должен иметь ни одного флага доступа, включенного в его членsrcAccessMask, если этот бит не поддерживается ни одной из стадий конвейера вsrcStageMask, как указано в таблице поддерживаемых типов доступа.- Любой заданный элемент
pMemoryBarriers,pBufferMemoryBarriersилиpImageMemoryBarriersне должен иметь ни одного флага доступа, включенного в его членdstAccessMask, если этот бит не поддерживается ни одной из стадий конвейера вdstStageMask, как указано в таблице поддерживаемых типов доступа.
Правильное использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpEventsдолжен быть указателем на массивeventCountдопустимых дескрипторовVkEventsrcStageMaskдолжен быть допустимой комбинацией значений VkPipelineStageFlagBitssrcStageMaskне должен быть0dstStageMaskдолжен быть допустимой комбинацией значений VkPipelineStageFlagBitsdstStageMaskне должен быть0- Если
memoryBarrierCountне0,pMemoryBarriersдолжен быть указателем на массивmemoryBarrierCountдопустимых структурVkMemoryBarrier- Если
bufferMemoryBarrierCountне0,pBufferMemoryBarriersдолжен быть указателем на массивbufferMemoryBarrierCountдопустимых структурVkBufferMemoryBarrier- Если
imageMemoryBarrierCountне0,pImageMemoryBarriersдолжен быть указателем на массивimageMemoryBarrierCountдопустимых структурVkImageMemoryBarriercommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBufferдолжен поддерживать графические или вычислительные операцииeventCountдолжен быть больше0- И
commandBuffer, и элементыpEventsдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBufferдолжен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода рендеринга Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительный
См. также
VkBufferMemoryBarrier, VkCommandBuffer, VkEvent, VkImageMemoryBarrier, VkMemoryBarrier, VkPipelineStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdWaitEvents
vkCmdWriteTimestamp(3)
Имя
vkCmdWriteTimestamp - Запись временной метки устройства в объект запроса
C-спецификация
Чтобы запросить временную метку, вызовите:
void vkCmdWriteTimestamp(
VkCommandBuffer commandBuffer,
VkPipelineStageFlagBits pipelineStage,
VkQueryPool queryPool,
uint32_t query); Параметры
-
commandBuffer- это буфер команд, в который будет записана команда. -
pipelineStage- это один из VkPipelineStageFlagBits, указывающий на стадию конвейера. -
queryPool- это пул запросов, который будет управлять временной меткой. -
query- это запрос в пуле запросов, который будет содержать временную метку.
Описание
vkCmdWriteTimestamp фиксирует значение таймера, когда все предыдущие команды завершили выполнение до указанной стадии конвейера, и записывает значение временной метки в память. Когда значение временной метки записано, статус доступности запроса устанавливается как доступный.
Примечание
Если реализация не может обнаружить завершение и зафиксировать таймер на любой конкретной стадии конвейера, она может вместо этого сделать это на любой логически более поздней стадии.
vkCmdCopyQueryPoolResults может быть затем вызван для копирования значения временной метки из пула запросов в буферную память, с поведением упорядочения и синхронизации, эквивалентным тому, как работают другие запросы. Значения временных меток также могут быть получены из пула запросов с помощью vkGetQueryPoolResults. Как и в случае с другими запросами, запрос должен быть сброшен с помощью vkCmdResetQueryPool перед запросом записи значения временной метки в него.
Хотя vkCmdWriteTimestamp может вызываться внутри или вне экземпляра прохода рендеринга, vkCmdCopyQueryPoolResults должен вызываться только за пределами экземпляра прохода рендеринга.
Правильное использование
queryPoolдолжен быть создан сqueryTypeравнымVK_QUERY_TYPE_TIMESTAMP- Запрос, идентифицированный
queryPoolиqueryдолжен быть недоступен- Семейство очередей пула команд должно поддерживать ненулевое значение
timestampValidBits
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferpipelineStageдолжен быть допустимым значением VkPipelineStageFlagBitsqueryPoolдолжен быть допустимой дескрипторомVkQueryPoolcommandBufferдолжен находиться в состоянии записиVkCommandPool, из которого был выделенcommandBuffer, должен поддерживать графические или вычислительные операции- И
commandBuffer, иqueryPoolдолжны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть внешне синхронизирован- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть внешне синхронизирован
Свойства команды
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера Основной
ВторичныйОба
Графический
вычислительныйПередача
См. также
VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCmdWriteTimestamp
vkCreateBuffer(3)
Имя
vkCreateBuffer - Создание нового объекта буфера
C-спецификация
Для создания буферов вызовите:
VkResult vkCreateBuffer(
VkDevice device,
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBuffer* pBuffer); Параметры
-
device— логическое устройство, создающее объект буфера. -
pCreateInfo— указатель на экземпляр структурыVkBufferCreateInfo, содержащий параметры, влияющие на создание буфера. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pBufferуказывает на дескрипторVkBuffer, в котором возвращается результирующий объект буфера.
Описание
Допустимое использование
- Если член
flagsструктурыpCreateInfoвключаетVK_BUFFER_CREATE_SPARSE_BINDING_BIT, создание этогоVkBufferне должно приводить к тому, чтобы общая необходимая разреженная память для всех текущих допустимых разреженных ресурсов на устройстве превышалаVkPhysicalDeviceLimits::sparseAddressSpaceSize
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkBufferCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspBufferдолжен быть указателем на дескрипторVkBuffer
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkBuffer, VkBufferCreateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateBuffer
vkCreateBufferView(3)
Имя
vkCreateBufferView - Создание нового объекта представления буфера
C-спецификация
Для создания представления буфера вызовите:
VkResult vkCreateBufferView(
VkDevice device,
const VkBufferViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBufferView* pView); Параметры
-
device— логическое устройство, создающее представление буфера. -
pCreateInfo— указатель на экземпляр структурыVkBufferViewCreateInfo, содержащий параметры, используемые для создания буфера. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pViewуказывает на дескрипторVkBufferView, в котором возвращается результирующий объект представления буфера.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkBufferViewCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspViewдолжен быть указателем на дескрипторVkBufferView
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkBufferView, VkBufferViewCreateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateBufferView
vkCreateCommandPool(3)
Имя
vkCreateCommandPool - Создание нового объекта пула команд
C-спецификация
Для создания пула команд вызовите:
VkResult vkCreateCommandPool(
VkDevice device,
const VkCommandPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkCommandPool* pCommandPool); Параметры
-
device— логическое устройство, создающее пул команд. -
pCreateInfoсодержит информацию, используемую для создания пула команд. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pCommandPoolуказывает на дескрипторVkCommandPool, в котором возвращается созданный пул.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkCommandPoolCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspCommandPoolдолжен быть указателем на дескрипторVkCommandPool
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkCommandPool, VkCommandPoolCreateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateCommandPool
vkCreateComputePipelines(3)
Имя
vkCreateComputePipelines - Создает новый объект конвейера вычислений
C-спецификация
Для создания конвейеров вычислений вызовите:
VkResult vkCreateComputePipelines(
VkDevice device,
VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
VkPipeline* pPipelines); Параметры
-
deviceis the logical device that creates the compute pipelines. -
pipelineCacheis either VK_NULL_HANDLE, indicating that pipeline caching is disabled; or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command. -
createInfoCountis the length of thepCreateInfosandpPipelinesarrays. -
pCreateInfosis an array ofVkComputePipelineCreateInfostructures. -
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter. -
pPipelinesis a pointer to an array in which the resulting compute pipeline objects are returned.
Описание
Допустимое использование
- If the
flagsmember of any given element ofpCreateInfoscontains theVK_PIPELINE_CREATE_DERIVATIVE_BITflag, and thebasePipelineIndexmember of that same element is not-1,basePipelineIndexmust be less than the index intopCreateInfosthat corresponds to that element- If the
flagsmember of any given element ofpCreateInfoscontains theVK_PIPELINE_CREATE_DERIVATIVE_BITflag, the base pipeline must have been created with theVK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BITflag set
Допустимое использование (неявное)
devicemust be a validVkDevicehandle- If
pipelineCacheis not VK_NULL_HANDLE,pipelineCachemust be a validVkPipelineCachehandlepCreateInfosmust be a pointer to an array ofcreateInfoCountvalidVkComputePipelineCreateInfostructures- If
pAllocatoris notNULL,pAllocatormust be a pointer to a validVkAllocationCallbacksstructurepPipelinesmust be a pointer to an array ofcreateInfoCountVkPipelinehandlescreateInfoCountmust be greater than0- If
pipelineCacheis a valid handle, it must have been created, allocated, or retrieved fromdevice
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkComputePipelineCreateInfo, VkDevice, VkPipeline, VkPipelineCache
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateComputePipelines
vkCreateDescriptorPool(3)
Имя
vkCreateDescriptorPool - Создает объект пула дескрипторов
C Спецификация
To create a descriptor pool object, call:
VkResult vkCreateDescriptorPool(
VkDevice device,
const VkDescriptorPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorPool* pDescriptorPool); Параметры
-
deviceis the logical device that creates the descriptor pool. -
pCreateInfois a pointer to an instance of the VkDescriptorPoolCreateInfo structure specifying the state of the descriptor pool object. -
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter. -
pDescriptorPoolpoints to aVkDescriptorPoolhandle in which the resulting descriptor pool object is returned.
Описание
pAllocator controls host memory allocation as described in the Memory Allocation chapter.
The created descriptor pool is returned in pDescriptorPool.
Допустимое использование (неявное)
devicemust be a validVkDevicehandlepCreateInfomust be a pointer to a validVkDescriptorPoolCreateInfostructure- If
pAllocatoris notNULL,pAllocatormust be a pointer to a validVkAllocationCallbacksstructurepDescriptorPoolmust be a pointer to aVkDescriptorPoolhandle
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDescriptorPool, VkDescriptorPoolCreateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateDescriptorPool
vkCreateDescriptorSetLayout(3)
Имя
vkCreateDescriptorSetLayout - Создает новый макет набора дескрипторов
C Спецификация
To create descriptor set layout objects, call:
VkResult vkCreateDescriptorSetLayout(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorSetLayout* pSetLayout); Параметры
-
deviceis the logical device that creates the descriptor set layout. -
pCreateInfois a pointer to an instance of the VkDescriptorSetLayoutCreateInfo structure specifying the state of the descriptor set layout object. -
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter. -
pSetLayoutpoints to aVkDescriptorSetLayouthandle in which the resulting descriptor set layout object is returned.
Описание
Допустимое использование (неявное)
devicemust be a validVkDevicehandlepCreateInfomust be a pointer to a validVkDescriptorSetLayoutCreateInfostructure- If
pAllocatoris notNULL,pAllocatormust be a pointer to a validVkAllocationCallbacksstructurepSetLayoutmust be a pointer to aVkDescriptorSetLayouthandle
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDescriptorSetLayout, VkDescriptorSetLayoutCreateInfo, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateDescriptorSetLayout
vkCreateDevice(3)
Имя
vkCreateDevice - Создает новый экземпляр устройства
C Спецификация
A logical device is created as a connection to a physical device. To create a logical device, call:
VkResult vkCreateDevice(
VkPhysicalDevice physicalDevice,
const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDevice* pDevice); Параметры
-
physicalDevicemust be one of the device handles returned from a call tovkEnumeratePhysicalDevices(see Physical Device Enumeration). -
pCreateInfois a pointer to a VkDeviceCreateInfo structure containing information about how to create the device. -
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter. -
pDevicepoints to a handle in which the createdVkDeviceis returned.
Описание
vkCreateDevice verifies that extensions and features requested in the ppEnabledExtensionNames and pEnabledFeatures members of pCreateInfo, respectively, are supported by the implementation. If any requested extension is not supported, vkCreateDevice must return VK_ERROR_EXTENSION_NOT_PRESENT. If any requested feature is not supported, vkCreateDevice must return VK_ERROR_FEATURE_NOT_PRESENT. Support for extensions can be checked before creating a device by querying vkEnumerateDeviceExtensionProperties. Support for features can similarly be checked by querying vkGetPhysicalDeviceFeatures.
После проверки и включения расширений создается объект VkDevice и возвращается приложению. Если запрашиваемое расширение поддерживается только слоем, для успешного создания необходимо указать как слой, так и расширение в момент vkCreateInstance.
Из одного физического устройства можно создать несколько логических устройств. Создание логического устройства может завершиться неудачей из-за нехватки ресурсов, специфичных для устройства (в дополнение к другим ошибкам). В этом случае vkCreateDevice вернет VK_ERROR_TOO_MANY_OBJECTS.
Допустимое использование
- Все необходимые расширения для каждого расширения в списке VkDeviceCreateInfo::
ppEnabledExtensionNamesтакже должны присутствовать в этом списке.
Допустимое использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepCreateInfoдолжен быть указателем на допустимую структуруVkDeviceCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspDeviceдолжен быть указателем на дескрипторVkDevice
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_INITIALIZATION_FAILEDVK_ERROR_EXTENSION_NOT_PRESENTVK_ERROR_FEATURE_NOT_PRESENTVK_ERROR_TOO_MANY_OBJECTSVK_ERROR_DEVICE_LOST
См. также
VkAllocationCallbacks, VkDevice, VkDeviceCreateInfo, VkPhysicalDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateDevice
vkCreateEvent(3)
Имя
vkCreateEvent - Создание нового объекта события
Спецификация C
Для создания события вызовите:
VkResult vkCreateEvent(
VkDevice device,
const VkEventCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkEvent* pEvent); Параметры
-
device— логическое устройство, создающее событие. -
pCreateInfo— указатель на экземпляр структурыVkEventCreateInfo, содержащий информацию о том, как должно быть создано событие. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pEventуказывает на дескриптор, в котором возвращается результирующий объект события.
Описание
При создании объект события находится в несигнализированном состоянии.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkEventCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspEventдолжен быть указателем на дескрипторVkEvent
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkEvent, VkEventCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateEvent
vkCreateFence(3)
Имя
vkCreateFence - Создание нового объекта забора
Спецификация C
Для создания забора вызовите:
VkResult vkCreateFence(
VkDevice device,
const VkFenceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkFence* pFence); Параметры
-
device— логическое устройство, создающее забор. -
pCreateInfo— указатель на экземпляр структурыVkFenceCreateInfo, содержащий информацию о том, как должен быть создан забор. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pFenceуказывает на дескриптор, в котором возвращается результирующий объект забора.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkFenceCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspFenceдолжен быть указателем на дескрипторVkFence
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkFence, VkFenceCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateFence
vkCreateFramebuffer(3)
Имя
vkCreateFramebuffer - Создание нового объекта фреймбуфера
Спецификация C
Для создания фреймбуфера вызовите:
VkResult vkCreateFramebuffer(
VkDevice device,
const VkFramebufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkFramebuffer* pFramebuffer); Параметры
-
device— логическое устройство, создающее фреймбуфер. -
pCreateInfoуказывает на структуру VkFramebufferCreateInfo, которая описывает дополнительную информацию о создании фреймбуфера. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pFramebufferуказывает на дескрипторVkFramebuffer, в котором возвращается результирующий объект фреймбуфера.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkFramebufferCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspFramebufferдолжен быть указателем на дескрипторVkFramebuffer
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkFramebuffer, VkFramebufferCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateFramebuffer
vkCreateGraphicsPipelines(3)
Имя
vkCreateGraphicsPipelines - Создание графических конвейеров
Спецификация C
Для создания графических конвейеров вызовите:
VkResult vkCreateGraphicsPipelines(
VkDevice device,
VkPipelineCache pipelineCache,
uint32_t createInfoCount,
const VkGraphicsPipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
VkPipeline* pPipelines); Параметры
-
device— логическое устройство, создающее графические конвейеры. -
pipelineCache— либо VK_NULL_HANDLE, указывающий на то, что кэширование конвейеров отключено; либо дескриптор допустимого объекта кэша конвейеров, в этом случае использование этого кэша включено на время выполнения команды. -
createInfoCount— длина массивовpCreateInfosиpPipelines. -
pCreateInfos— массив структурVkGraphicsPipelineCreateInfo. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pPipelines— указатель на массив, в котором возвращаются результирующие объекты графических конвейеров.
Описание
Структура VkGraphicsPipelineCreateInfo включает в себя массив структур информации о создании шейдера, содержащих все желаемые активные этапы шейдера, а также информацию о создании для определения всех соответствующих этапов с фиксированной функцией и макет конвейера.
Допустимое использование
- Если член
flagsлюбого заданного элементаpCreateInfosсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, а членbasePipelineIndexтого же элемента не-1,basePipelineIndexдолжен быть меньше индекса вpCreateInfos, который соответствует этому элементу- Если член
flagsлюбого заданного элементаpCreateInfosсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, базовый конвейер должен быть создан с установленным флагомVK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
pipelineCacheне VK_NULL_HANDLE,pipelineCacheдолжен быть допустимой дескрипторомVkPipelineCachepCreateInfosдолжен быть указателем на массив изcreateInfoCountдопустимых структурVkGraphicsPipelineCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspPipelinesдолжен быть указателем на массивcreateInfoCountдескрипторовVkPipelinecreateInfoCountдолжен быть больше0- Если
pipelineCacheявляется допустимым дескриптором, он должен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkGraphicsPipelineCreateInfo, VkPipeline, VkPipelineCache
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateGraphicsPipelines
vkCreateImage(3)
Имя
vkCreateImage - Создание нового объекта изображения
C Спецификация
Для создания изображений, вызовите:
VkResult vkCreateImage(
VkDevice device,
const VkImageCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkImage* pImage); Параметры
-
device- это логическое устройство, которое создает изображение. -
pCreateInfo- указатель на экземпляр структурыVkImageCreateInfo, содержащий параметры, которые будут использоваться для создания изображения. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pImageуказывает на дескрипторVkImage, в который возвращается результирующий объект изображения.
Описание
Допустимое использование
- Если член
flagspCreateInfoвключаетVK_IMAGE_CREATE_SPARSE_BINDING_BIT, создание этогоVkImageне должно приводить к тому, что общая необходимая разреженная память для всех текущих допустимых разреженных ресурсов на устройстве превыситVkPhysicalDeviceLimits::sparseAddressSpaceSize
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkImageCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspImageдолжен быть указателем на дескрипторVkImage
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkImage, VkImageCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateImage
vkCreateImageView(3)
Имя
vkCreateImageView - Создание представления изображения из существующего изображения
C Спецификация
Для создания представления изображения, вызовите:
VkResult vkCreateImageView(
VkDevice device,
const VkImageViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkImageView* pView); Параметры
-
device- это логическое устройство, которое создает представление изображения. -
pCreateInfo- указатель на экземпляр структурыVkImageViewCreateInfo, содержащий параметры, которые будут использоваться для создания представления изображения. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pViewуказывает на дескрипторVkImageView, в который возвращается результирующий объект представления изображения.
Описание
Некоторые параметры создания изображения наследуются представлением. Остальные параметры содержатся в pCreateInfo.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkImageViewCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspViewдолжен быть указателем на дескрипторVkImageView
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkImageView, VkImageViewCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateImageView
vkCreateInstance(3)
Имя
vkCreateInstance - Создание нового экземпляра Vulkan
C Спецификация
Для создания объекта экземпляра, вызовите:
VkResult vkCreateInstance(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance); Параметры
-
pCreateInfoуказывает на экземпляр VkInstanceCreateInfo, управляющий созданием экземпляра. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pInstanceуказывает на дескрипторVkInstance, в который возвращается результирующий экземпляр.
Описание
vkCreateInstance проверяет, существуют ли запрошенные слои. Если нет, vkCreateInstance вернет VK_ERROR_LAYER_NOT_PRESENT. Далее vkCreateInstance проверяет, поддерживаются ли запрошенные расширения (например, в реализации или в любом включенном слое экземпляра), и если какое-либо запрошенное расширение не поддерживается, vkCreateInstance должен вернуть VK_ERROR_EXTENSION_NOT_PRESENT. После проверки и включения слоев и расширений экземпляра создается объект VkInstance и возвращается приложению. Если запрошенное расширение поддерживается только слоем, для успешного создания необходимо указать как слой, так и расширение во время vkCreateInstance.
Допустимое использование
- Все необходимые расширения для каждого расширения в списке VkInstanceCreateInfo::
ppEnabledExtensionNamesтакже должны присутствовать в этом списке.
Допустимое использование (неявное)
pCreateInfoдолжен быть указателем на допустимую структуруVkInstanceCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspInstanceдолжен быть указателем на дескрипторVkInstance
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_INITIALIZATION_FAILEDVK_ERROR_LAYER_NOT_PRESENTVK_ERROR_EXTENSION_NOT_PRESENTVK_ERROR_INCOMPATIBLE_DRIVER
См. также
VkAllocationCallbacks, VkInstance, VkInstanceCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateInstance
vkCreatePipelineCache(3)
Имя
vkCreatePipelineCache - Создает новый кэш конвейеров
C Спецификация
Для создания объектов кэша конвейеров вызовите:
VkResult vkCreatePipelineCache(
VkDevice device,
const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPipelineCache* pPipelineCache); Параметры
-
device- это логическое устройство, создающее объект кэша конвейеров. -
pCreateInfo- указатель на структуруVkPipelineCacheCreateInfo, содержащую начальные параметры для объекта кэша конвейеров. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pPipelineCache- указатель на дескрипторVkPipelineCache, в который возвращается результирующий объект кэша конвейеров.
Описание
Примечание
Приложения могут отслеживать и управлять общим размером памяти хоста объекта кэша конвейеров с помощью
pAllocator. Приложения могут ограничивать объем данных, извлекаемых из объекта кэша конвейеров вvkGetPipelineCacheData. Реализации не должны внутренне ограничивать общее количество записей, добавляемых в объект кэша конвейеров, или общий объем используемой памяти хоста.
После создания кэш конвейеров может быть передан командам vkCreateGraphicsPipelines и vkCreateComputePipelines. Если кэш конвейеров, переданный в эти команды, не равен VK_NULL_HANDLE, реализация запросит его на предмет возможных возможностей повторного использования и обновит его новым содержимым. Использование объекта кэша конвейеров в этих командах синхронизируется внутренне, и один и тот же объект кэша конвейеров может использоваться в нескольких потоках одновременно.
Примечание
Реализации следует приложить все усилия, чтобы ограничить критические секции фактическим доступом к кэшу, который, как ожидается, будет значительно короче, чем длительность команд
vkCreateGraphicsPipelinesиvkCreateComputePipelines.
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkPipelineCacheCreateInfo- Если
pAllocatorне равенNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspPipelineCacheдолжен быть указателем на дескрипторVkPipelineCache
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkPipelineCache, VkPipelineCacheCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreatePipelineCache
vkCreatePipelineLayout(3)
Имя
vkCreatePipelineLayout - Создает новый объект компоновки конвейера
C Спецификация
Для создания компоновки конвейера вызовите:
VkResult vkCreatePipelineLayout(
VkDevice device,
const VkPipelineLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPipelineLayout* pPipelineLayout); Параметры
-
device- это логическое устройство, создающее компоновку конвейера. -
pCreateInfo- указатель на экземпляр структуры VkPipelineLayoutCreateInfo, указывающий состояние объекта компоновки конвейера. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pPipelineLayoutуказывает на дескрипторVkPipelineLayout, в который возвращается результирующий объект компоновки конвейера.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkPipelineLayoutCreateInfo- Если
pAllocatorне равенNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspPipelineLayoutдолжен быть указателем на дескрипторVkPipelineLayout
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkPipelineLayout, VkPipelineLayoutCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreatePipelineLayout
vkCreateQueryPool(3)
Имя
vkCreateQueryPool - Создает новый объект пула запросов
C Спецификация
Для создания пула запросов вызовите:
VkResult vkCreateQueryPool(
VkDevice device,
const VkQueryPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkQueryPool* pQueryPool); Параметры
-
device- это логическое устройство, создающее пул запросов. -
pCreateInfo- указатель на экземпляр структурыVkQueryPoolCreateInfo, содержащий количество и тип запросов, которые будут управляться пулом. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pQueryPool- указатель на дескрипторVkQueryPool, в который возвращается результирующий объект пула запросов.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkQueryPoolCreateInfo- Если
pAllocatorне равенNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspQueryPoolдолжен быть указателем на дескрипторVkQueryPool
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkQueryPool, VkQueryPoolCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateQueryPool
vkCreateRenderPass(3)
Имя
vkCreateRenderPass - Создает новый объект прохода рендеринга
C Спецификация
Для создания прохода рендеринга вызовите:
VkResult vkCreateRenderPass(
VkDevice device,
const VkRenderPassCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass); Параметры
-
device- это логическое устройство, создающее проход рендеринга. -
pCreateInfo- указатель на экземпляр структуры VkRenderPassCreateInfo, которая описывает параметры прохода рендеринга. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pRenderPassуказывает на дескрипторVkRenderPass, в который возвращается результирующий объект прохода рендеринга.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkRenderPassCreateInfo- Если
pAllocatorне равенNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspRenderPassдолжен быть указателем на дескрипторVkRenderPass
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkRenderPass, VkRenderPassCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateRenderPass
vkCreateSampler(3)
Имя
vkCreateSampler - Создание нового объекта семплера
C Спецификация
Для создания объекта семплера, вызовите:
VkResult vkCreateSampler(
VkDevice device,
const VkSamplerCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSampler* pSampler); Параметры
-
device- это логическое устройство, создающее семплер. -
pCreateInfo- указатель на экземпляр структуры VkSamplerCreateInfo, указывающий состояние объекта семплера. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pSamplerуказывает на дескриптор VkSampler, в который возвращается результирующий объект семплера.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkSamplerCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspSamplerдолжен быть указателем на дескрипторVkSampler
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_TOO_MANY_OBJECTS
См. также
VkAllocationCallbacks, VkDevice, VkSampler, VkSamplerCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateSampler
vkCreateSemaphore(3)
Имя
vkCreateSemaphore - Создание нового объекта семафора очереди
C Спецификация
Для создания семафора, вызовите:
VkResult vkCreateSemaphore(
VkDevice device,
const VkSemaphoreCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSemaphore* pSemaphore); Параметры
-
device- это логическое устройство, создающее семафор. -
pCreateInfo- указатель на экземпляр структурыVkSemaphoreCreateInfo, которая содержит информацию о том, как должен быть создан семафор. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pSemaphoreуказывает на дескриптор, в который возвращается результирующий объект семафора.
Описание
После создания семафор находится в несигнализированном состоянии.
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkSemaphoreCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspSemaphoreдолжен быть указателем на дескрипторVkSemaphore
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkSemaphore, VkSemaphoreCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateSemaphore
vkCreateShaderModule(3)
Имя
vkCreateShaderModule - Создает новый объект модуля шейдера
C Спецификация
Для создания модуля шейдера, вызовите:
VkResult vkCreateShaderModule(
VkDevice device,
const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkShaderModule* pShaderModule); Параметры
-
device- это логическое устройство, создающее модуль шейдера. -
pCreateInfoпараметр - указатель на экземпляр структурыVkShaderModuleCreateInfo. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти. -
pShaderModuleуказывает на дескрипторVkShaderModule, в который возвращается результирующий объект модуля шейдера.
Описание
После создания модуля шейдера, любые точки входа, которые он содержит, могут использоваться в этапах шейдера конвейера, как описано в Вычислительных конвейерах и Графических конвейерах.
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepCreateInfoдолжен быть указателем на допустимую структуруVkShaderModuleCreateInfo- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbackspShaderModuleдолжен быть указателем на дескрипторVkShaderModule
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkAllocationCallbacks, VkDevice, VkShaderModule, VkShaderModuleCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkCreateShaderModule
vkDestroyBuffer(3)
Имя
vkDestroyBuffer - Уничтожение объекта буфера
C Спецификация
Для уничтожения буфера, вызовите:
void vkDestroyBuffer(
VkDevice device,
VkBuffer buffer,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- это логическое устройство, уничтожающее буфер. -
buffer- буфер для уничтожения. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные команды, которые ссылаются на
buffer, либо напрямую, либо черезVkBufferView, должны завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииbuffer, совместимый набор обратных вызовов должен быть предоставлен здесь- Если ни один
VkAllocationCallbacksне был предоставлен при созданииbuffer,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevice- Если
bufferне VK_NULL_HANDLE,bufferдолжен быть допустимым дескрипторомVkBuffer- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
bufferявляется допустимым дескриптором, он должен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
bufferдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkBuffer, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyBuffer
vkDestroyBufferView(3)
Имя
vkDestroyBufferView - Уничтожение объекта представления буфера
C Спецификация
Для уничтожения представления буфера, вызовите:
void vkDestroyBufferView(
VkDevice device,
VkBufferView bufferView,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- это логическое устройство, уничтожающее представление буфера. -
bufferView- представление буфера для уничтожения. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные команды, которые ссылаются на
bufferViewдолжны быть выполнены- Если
VkAllocationCallbacksбыли предоставлены при созданииbufferView, здесь должен быть предоставлен совместимый набор обратных вызовов- Если ни один
VkAllocationCallbacksне был предоставлен при созданииbufferView,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
bufferViewне VK_NULL_HANDLE,bufferViewдолжен быть допустимой дескрипторомVkBufferView- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
bufferViewявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация узла
- Доступ узла к
bufferViewдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkBufferView, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyBufferView
vkDestroyCommandPool(3)
Имя
vkDestroyCommandPool - Уничтожение объекта пула команд
Спецификация C
Для уничтожения пула команд вызовите:
void vkDestroyCommandPool(
VkDevice device,
VkCommandPool commandPool,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее пул команд. -
commandPool- дескриптор пула команд, который нужно уничтожить. -
pAllocatorуправляет выделением памяти узла, как описано в главе Выделение памяти.
Описание
При уничтожении пула все буферы команд, выделенные из пула, освобождаются.
Любой основной буфер команд, выделенный из другого VkCommandPool, который находится в состоянии записи или выполнения и имеет вторичный буфер команд, выделенный из commandPool, записанный в него, становится недействительным.
Допустимое использование
- Все объекты
VkCommandBuffer, выделенные изcommandPool, не должны находиться в ожидающем состоянии.- Если
VkAllocationCallbacksбыли предоставлены при созданииcommandPool, здесь должен быть предоставлен совместимый набор обратных вызовов- Если ни один
VkAllocationCallbacksне был предоставлен при созданииcommandPool,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
commandPoolне VK_NULL_HANDLE,commandPoolдолжен быть допустимой дескрипторомVkCommandPool- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
commandPoolявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация узла
- Доступ узла к
commandPoolдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkCommandPool, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyCommandPool
vkDestroyDescriptorPool(3)
Имя
vkDestroyDescriptorPool - Уничтожение объекта пула дескрипторов
Спецификация C
Для уничтожения пула дескрипторов вызовите:
void vkDestroyDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее пул дескрипторов. -
descriptorPool- пул дескрипторов, который нужно уничтожить. -
pAllocatorуправляет выделением памяти узла, как описано в главе Выделение памяти.
Описание
Когда пул уничтожается, все наборы дескрипторов, выделенные из пула, неявно освобождаются и становятся недействительными. Наборы дескрипторов, выделенные из данного пула, не нужно освобождать перед уничтожением этого пула дескрипторов.
Допустимое использование
- Все отправленные команды, которые ссылаются на
descriptorPool(через любые выделенные наборы дескрипторов), должны быть выполнены- Если
VkAllocationCallbacksбыли предоставлены при созданииdescriptorPool, здесь должен быть предоставлен совместимый набор обратных вызовов- Если ни один
VkAllocationCallbacksне был предоставлен при созданииdescriptorPool,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
descriptorPoolне VK_NULL_HANDLE,descriptorPoolдолжен быть допустимой дескрипторомVkDescriptorPool- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
descriptorPoolявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация узла
- Доступ узла к
descriptorPoolдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDescriptorPool, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyDescriptorPool
vkDestroyDescriptorSetLayout(3)
Имя
vkDestroyDescriptorSetLayout - Уничтожение объекта компоновки набора дескрипторов
Спецификация C
Для уничтожения компоновки набора дескрипторов вызовите:
void vkDestroyDescriptorSetLayout(
VkDevice device,
VkDescriptorSetLayout descriptorSetLayout,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее компоновку набора дескрипторов. -
descriptorSetLayout- компоновка набора дескрипторов, которую нужно уничтожить. -
pAllocatorуправляет выделением памяти узла, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Если
VkAllocationCallbacksбыли предоставлены при созданииdescriptorSetLayout, здесь должен быть предоставлен совместимый набор обратных вызовов- Если ни один
VkAllocationCallbacksне был предоставлен при созданииdescriptorSetLayout,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
descriptorSetLayoutне VK_NULL_HANDLE,descriptorSetLayoutдолжен быть допустимой дескрипторомVkDescriptorSetLayout- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
descriptorSetLayoutявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация узла
- Доступ узла к
descriptorSetLayoutдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDescriptorSetLayout, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyDescriptorSetLayout
vkDestroyDevice(3)
Имя
vkDestroyDevice - Уничтожение логического устройства
C Спецификация
Для уничтожения устройства, вызовите:
void vkDestroyDevice(
VkDevice device,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Для обеспечения отсутствия активной работы на устройстве, vkDeviceWaitIdle может использоваться для блокировки уничтожения устройства. Перед уничтожением устройства, приложение отвечает за уничтожение/освобождение любых объектов Vulkan, которые были созданы с использованием этого устройства в качестве первого параметра соответствующей команды vkCreate* или vkAllocate*.
Примечание
Время жизни каждого из этих объектов привязан к времени жизни объекта
VkDevice. Поэтому, чтобы избежать утечек ресурсов, крайне важно, чтобы приложение явно освободило все эти ресурсы перед вызовомvkDestroyDevice.
Правильное использование
- Все дочерние объекты, созданные на
device, должны быть уничтожены до уничтоженияdevice- Если
VkAllocationCallbacksбыли предоставлены при созданииdevice, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
deviceне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Правильное использование (неявное)
- Если
deviceнеNULL,deviceдолжен быть допустимой дескрипторной ссылкойVkDevice- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks
Синхронизация хоста
- Доступ хоста к
deviceдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyDevice
vkDestroyEvent(3)
Имя
vkDestroyEvent - Уничтожение объекта события
C Спецификация
Для уничтожения события, вызовите:
void vkDestroyEvent(
VkDevice device,
VkEvent event,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее событие. -
event- дескриптор события для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Правильное использование
- Все отправленные команды, которые ссылаются на
event, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииevent, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
eventне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторной ссылкойVkDevice- Если
eventне VK_NULL_HANDLE,eventдолжен быть допустимой дескрипторной ссылкойVkEvent- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
eventявляется допустимой дескрипторной ссылкой, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
eventдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkEvent
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyEvent
vkDestroyFence(3)
Имя
vkDestroyFence - Уничтожение объекта забора
C Спецификация
Для уничтожения забора, вызовите:
void vkDestroyFence(
VkDevice device,
VkFence fence,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее забор. -
fence- дескриптор забора для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Правильное использование
- Все команды отправки в очередь, которые ссылаются на
fence, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииfence, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
fenceне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторной ссылкойVkDevice- Если
fenceне VK_NULL_HANDLE,fenceдолжен быть допустимой дескрипторной ссылкойVkFence- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
fenceявляется допустимой дескрипторной ссылкой, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
fenceдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkFence
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyFence
vkDestroyFramebuffer(3)
Имя
vkDestroyFramebuffer - Уничтожение объекта фреймбуфера
C Спецификация
Для уничтожения фреймбуфера, вызовите:
void vkDestroyFramebuffer(
VkDevice device,
VkFramebuffer framebuffer,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее фреймбуфер. -
framebuffer- дескриптор фреймбуфера для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Правильное использование
- Все отправленные команды, которые ссылаются на
framebuffer, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииframebuffer, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
framebufferне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторной ссылкойVkDevice- Если
framebufferне VK_NULL_HANDLE,framebufferдолжен быть допустимой дескрипторной ссылкойVkFramebuffer- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
framebufferявляется допустимой дескрипторной ссылкой, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
framebufferдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkFramebuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyFramebuffer
vkDestroyImage(3)
Имя
vkDestroyImage - Уничтожение объекта изображения
Спецификация C
Для уничтожения изображения, вызовите:
void vkDestroyImage(
VkDevice device,
VkImage image,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее изображение. -
image- изображение для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Memory Allocation.
Описание
Допустимое использование
- Все отправленные команды, ссылающиеся на
image, либо напрямую, либо черезVkImageView, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииimage, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
imageне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
imageне равно VK_NULL_HANDLE,imageдолжен быть допустимой дескрипторомVkImage- Если
pAllocatorне равноNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
imageявляется допустимым дескриптором, он должен был быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
imageдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyImage
vkDestroyImageView(3)
Имя
vkDestroyImageView - Уничтожение объекта представления изображения
Спецификация C
Для уничтожения представления изображения, вызовите:
void vkDestroyImageView(
VkDevice device,
VkImageView imageView,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее представление изображения. -
imageView- представление изображения для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Memory Allocation.
Описание
Допустимое использование
- Все отправленные команды, ссылающиеся на
imageView, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииimageView, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
imageViewне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
imageViewне равно VK_NULL_HANDLE,imageViewдолжен быть допустимой дескрипторомVkImageView- Если
pAllocatorне равноNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
imageViewявляется допустимым дескриптором, он должен был быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
imageViewдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkImageView
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyImageView
vkDestroyInstance(3)
Имя
vkDestroyInstance - Уничтожение экземпляра Vulkan
Спецификация C
Для уничтожения экземпляра, вызовите:
void vkDestroyInstance(
VkInstance instance,
const VkAllocationCallbacks* pAllocator); Параметры
-
instance- дескриптор экземпляра для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Memory Allocation.
Описание
Допустимое использование
- Все дочерние объекты, созданные с помощью
instance, должны быть уничтожены до уничтоженияinstance- Если
VkAllocationCallbacksбыли предоставлены при созданииinstance, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
instanceне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
- Если
instanceне равноNULL,instanceдолжен быть допустимой дескрипторомVkInstance- Если
pAllocatorне равноNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks
Синхронизация хоста
- Доступ хоста к
instanceдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkInstance
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyInstance
vkDestroyPipeline(3)
Имя
vkDestroyPipeline - Уничтожение объекта конвейера
Спецификация C
Для уничтожения графического или вычислительного конвейера, вызовите:
void vkDestroyPipeline(
VkDevice device,
VkPipeline pipeline,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее конвейер. -
pipeline- дескриптор конвейера для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Memory Allocation.
Описание
Допустимое использование
- Все отправленные команды, ссылающиеся на
pipeline, должны были завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииpipeline, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
pipelineне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
pipelineне равно VK_NULL_HANDLE,pipelineдолжен быть допустимой дескрипторомVkPipeline- Если
pAllocatorне равноNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
pipelineявляется допустимым дескриптором, он должен был быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
pipelineдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkPipeline
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyPipeline
vkDestroyPipelineCache(3)
Имя
vkDestroyPipelineCache - Уничтожение объекта кэша конвейеров
Спецификация C
Для уничтожения кэша конвейеров, вызовите:
void vkDestroyPipelineCache(
VkDevice device,
VkPipelineCache pipelineCache,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее объект кэша конвейеров. -
pipelineCache- дескриптор кэша конвейеров для уничтожения. -
pAllocator- управляет выделением памяти хоста, как описано в главе Memory Allocation.
Описание
Допустимое использование
- Если
VkAllocationCallbacksбыли предоставлены при созданииpipelineCache, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
pipelineCacheне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
pipelineCacheне является VK_NULL_HANDLE,pipelineCacheдолжен быть допустимой дескрипторомVkPipelineCache- Если
pAllocatorне являетсяNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
pipelineCacheявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
pipelineCacheдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkPipelineCache
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyPipelineCache
vkDestroyPipelineLayout(3)
Имя
vkDestroyPipelineLayout - Уничтожение объекта макета конвейера
Спецификация C
Чтобы уничтожить макет конвейера, вызовите:
void vkDestroyPipelineLayout(
VkDevice device,
VkPipelineLayout pipelineLayout,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее макет конвейера. -
pipelineLayout- макет конвейера, который нужно уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Если
VkAllocationCallbacksбыли предоставлены при созданииpipelineLayout, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
pipelineLayoutне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
pipelineLayoutне является VK_NULL_HANDLE,pipelineLayoutдолжен быть допустимой дескрипторомVkPipelineLayout- Если
pAllocatorне являетсяNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
pipelineLayoutявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
pipelineLayoutдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkPipelineLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyPipelineLayout
vkDestroyQueryPool(3)
Имя
vkDestroyQueryPool - Уничтожение объекта пула запросов
Спецификация C
Чтобы уничтожить пул запросов, вызовите:
void vkDestroyQueryPool(
VkDevice device,
VkQueryPool queryPool,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее пул запросов. -
queryPool- пул запросов, который нужно уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные команды, которые ссылаются на
queryPool, должны завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииqueryPool, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
queryPoolне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
queryPoolне является VK_NULL_HANDLE,queryPoolдолжен быть допустимой дескрипторомVkQueryPool- Если
pAllocatorне являетсяNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
queryPoolявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
queryPoolдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkQueryPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyQueryPool
vkDestroyRenderPass(3)
Имя
vkDestroyRenderPass - Уничтожение объекта прохода отрисовки
Спецификация C
Чтобы уничтожить проход отрисовки, вызовите:
void vkDestroyRenderPass(
VkDevice device,
VkRenderPass renderPass,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее проход отрисовки. -
renderPass- дескриптор прохода отрисовки, который нужно уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные команды, которые ссылаются на
renderPass, должны завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииrenderPass, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
renderPassне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
renderPassне является VK_NULL_HANDLE,renderPassдолжен быть допустимой дескрипторомVkRenderPass- Если
pAllocatorне являетсяNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
renderPassявляется допустимой дескриптором, она должна быть создана, выделена или получена изdevice
Синхронизация хоста
- Доступ хоста к
renderPassдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkRenderPass
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyRenderPass
vkDestroySampler(3)
Имя
vkDestroySampler - Уничтожение объекта сэмплера
Спецификация C
Чтобы уничтожить сэмплер, вызовите:
void vkDestroySampler(
VkDevice device,
VkSampler sampler,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- логическое устройство, уничтожающее сэмплер. -
sampler- сэмплер, который нужно уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные команды, которые ссылаются на
sampler, должны завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииsampler, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
samplerне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
samplerне VK_NULL_HANDLE,samplerдолжен быть допустимой дескрипторомVkSampler- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
samplerявляется допустимой дескриптором, он должен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
samplerдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkSampler
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroySampler
vkDestroySemaphore(3)
Имя
vkDestroySemaphore - Уничтожение объекта семафора
Спецификация C
Для уничтожения семафора вызовите:
void vkDestroySemaphore(
VkDevice device,
VkSemaphore semaphore,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- это логическое устройство, которое уничтожает семафор. -
semaphore- это дескриптор семафора, который необходимо уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Допустимое использование
- Все отправленные пакеты, которые ссылаются на
semaphore, должны завершить выполнение- Если
VkAllocationCallbacksбыли предоставлены при созданииsemaphore, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
semaphoreне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
semaphoreне VK_NULL_HANDLE,semaphoreдолжен быть допустимой дескрипторомVkSemaphore- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
semaphoreявляется допустимой дескриптором, он должен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
semaphoreдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkSemaphore
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroySemaphore
vkDestroyShaderModule(3)
Имя
vkDestroyShaderModule - Уничтожение модуля шейдера
Спецификация C
Для уничтожения модуля шейдера вызовите:
void vkDestroyShaderModule(
VkDevice device,
VkShaderModule shaderModule,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- это логическое устройство, которое уничтожает модуль шейдера. -
shaderModule- это дескриптор модуля шейдера, который необходимо уничтожить. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Модуль шейдера может быть уничтожен, пока конвейеры, созданные с использованием его шейдеров, все еще используются.
Допустимое использование
- Если
VkAllocationCallbacksбыли предоставлены при созданииshaderModule, здесь должен быть предоставлен совместимый набор обратных вызовов- Если при создании
shaderModuleне было предоставленоVkAllocationCallbacks,pAllocatorдолжен бытьNULL
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
shaderModuleне VK_NULL_HANDLE,shaderModuleдолжен быть допустимой дескрипторомVkShaderModule- Если
pAllocatorнеNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
shaderModuleявляется допустимой дескриптором, он должен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
shaderModuleдолжен быть синхронизирован внешним образом
См. также
VkAllocationCallbacks, VkDevice, VkShaderModule
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDestroyShaderModule
vkDeviceWaitIdle(3)
Имя
vkDeviceWaitIdle - Ожидание простоя устройства
Спецификация C
Чтобы дождаться на хосте завершения незавершенных операций очереди для всех очередей на данном логическом устройстве, вызовите:
VkResult vkDeviceWaitIdle(
VkDevice device); Параметры
-
device- это логическое устройство, которое должно быть в состоянии простоя.
Описание
vkDeviceWaitIdle эквивалентно вызову vkQueueWaitIdle для всех очередей, принадлежащих device.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice
Синхронизация хоста
- Доступ хоста ко всем объектам
VkQueue, созданным изdevice, должен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkDeviceWaitIdle
vkEndCommandBuffer(3)
Имя
vkEndCommandBuffer - Завершение записи буфера команд
Спецификация C
Для завершения записи буфера команд вызовите:
VkResult vkEndCommandBuffer(
VkCommandBuffer commandBuffer); Параметры
-
commandBuffer- это буфер команд, запись которого необходимо завершить.
Описание
Если во время записи произошла ошибка, приложение получит уведомление в виде неудачного кода возврата, возвращаемого vkEndCommandBuffer. Если приложение хочет использовать буфер команд дальше, буфер команд должен быть сброшен. Буфер команд должен находиться в состоянии записи, и он переводится в исполнимое состояние.
Допустимое использование
commandBufferдолжен находиться в состоянии записи.- Если
commandBufferявляется основным буфером команд, не должно быть активного экземпляра прохода отрисовки- Все запросы, сделанные активными во время записи
commandBuffer, должны быть сделаны неактивными
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBuffer
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом- Доступ хоста к
VkCommandPool, из которого был выделенcommandBuffer, должен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkEndCommandBuffer
vkEnumerateDeviceExtensionProperties(3)
Имя
vkEnumerateDeviceExtensionProperties - Возвращает свойства доступных расширений физического устройства
C Спецификация
Для запроса расширений, доступных для данного физического устройства, вызовите:
VkResult vkEnumerateDeviceExtensionProperties(
VkPhysicalDevice physicalDevice,
const char* pLayerName,
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties); Параметры
-
physicalDevice- это физическое устройство, которое будет запрошено. -
pLayerName- это либоNULLили указатель на завершающуюся нулём строку UTF-8, которая указывает имя слоя, из которого нужно получить расширения. -
pPropertyCount- это указатель на целое число, связанное с количеством доступных или запрашиваемых свойств расширения, и обрабатывается так же, как параметр vkEnumerateInstanceExtensionProperties::pPropertyCount. -
pProperties- это либоNULLили указатель на массив структур VkExtensionProperties.
Описание
Когда параметр pLayerName равен NULL, возвращаются только расширения, предоставленные реализацией Vulkan или неявно включёнными слоями. Когда pLayerName является именем слоя, возвращаются расширения устройства, предоставленные этим слоем.
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevice- Если
pLayerNameнеNULL,pLayerNameдолжен быть строкой UTF-8, завершающейся нулёмpPropertyCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPropertyCount, не0, иpPropertiesнеNULL,pPropertiesдолжен быть указателем на массив структурpPropertyCountVkExtensionProperties
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_LAYER_NOT_PRESENT
См. также
VkExtensionProperties, VkPhysicalDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
vkEnumerateDeviceLayerProperties(3)
Имя
vkEnumerateDeviceLayerProperties - Возвращает свойства доступных слоёв физического устройства
C Спецификация
Для перечисления слоёв устройства вызовите:
VkResult vkEnumerateDeviceLayerProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkLayerProperties* pProperties); Параметры
-
pPropertyCount- это указатель на целое число, связанное с количеством доступных или запрашиваемых свойств слоя. -
pProperties- это либоNULLили указатель на массив структур VkLayerProperties.
Описание
Если pProperties равно NULL, то количество доступных свойств слоя возвращается в pPropertyCount. В противном случае, pPropertyCount должен указывать на переменную, установленную пользователем на количество элементов в массиве pProperties, а по возвращении переменная перезаписывается количеством структур, фактически записанных в pProperties. Если pPropertyCount меньше, чем количество доступных свойств слоя, будет записано не более pPropertyCount структур. Если pPropertyCount меньше, чем количество доступных слоёв, будет возвращено VK_INCOMPLETE вместо VK_SUCCESS, чтобы указать, что не все доступные свойства слоя были возвращены.
Список слоёв, перечисленных vkEnumerateDeviceLayerProperties, должен быть точно такой же последовательностью слоёв, включённых для экземпляра. Элементы VkLayerProperties для каждого перечисленного слоя должны быть такими же, как свойства, когда слой был перечислен vkEnumerateInstanceLayerProperties.
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepPropertyCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPropertyCount, не0, иpPropertiesнеNULL,pPropertiesдолжен быть указателем на массив структурpPropertyCountVkLayerProperties
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkLayerProperties, VkPhysicalDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkEnumerateDeviceLayerProperties
vkEnumerateInstanceExtensionProperties(3)
Имя
vkEnumerateInstanceExtensionProperties - Возвращает до запрошенного количества глобальных свойств расширения
C Спецификация
Для запроса доступных расширений экземпляра вызовите:
VkResult vkEnumerateInstanceExtensionProperties(
const char* pLayerName,
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties); Параметры
-
pLayerName- это либоNULLили указатель на завершающуюся нулём строку UTF-8, которая указывает имя слоя, из которого нужно получить расширения. -
pPropertyCount- это указатель на целое число, связанное с количеством доступных или запрашиваемых свойств расширения, как описано ниже. -
pProperties- это либоNULLили указатель на массив структур VkExtensionProperties.
Описание
Когда параметр pLayerName равен NULL, возвращаются только расширения, предоставленные реализацией Vulkan или неявно включёнными слоями. Когда pLayerName является именем слоя, возвращаются расширения экземпляра, предоставленные этим слоем.
Если pProperties равно NULL, то количество доступных свойств расширения возвращается в pPropertyCount. В противном случае, pPropertyCount должен указывать на переменную, установленную пользователем на количество элементов в массиве pProperties, а по возвращении переменная перезаписывается количеством структур, фактически записанных в pProperties. Если pPropertyCount меньше, чем количество доступных свойств расширения, будет записано не более pPropertyCount структур. Если pPropertyCount меньше, чем количество доступных расширений, будет возвращено VK_INCOMPLETE вместо VK_SUCCESS, чтобы указать, что не все доступные свойства были возвращены.
Поскольку список доступных слоёв может изменяться внешне между вызовами vkEnumerateInstanceExtensionProperties, два вызова могут возвращать разные результаты, если pLayerName доступен в одном вызове, но не в другом. Расширения, поддерживаемые слоем, также могут изменяться между двумя вызовами, например, если реализация слоя заменяется другой версией между этими вызовами.
Правильное использование (неявное)
- Если
pLayerNameнеNULL,pLayerNameдолжен быть строкой UTF-8, завершающейся нулёмpPropertyCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPropertyCount, не0, иpPropertiesнеNULL,pPropertiesдолжен быть указателем на массив структурpPropertyCountVkExtensionProperties
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_LAYER_NOT_PRESENT
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
vkEnumerateInstanceLayerProperties(3)
Имя
vkEnumerateInstanceLayerProperties - Возвращает до запрошенного количества глобальных свойств слоя
C Спецификация
Для запроса доступных слоёв вызовите:
VkResult vkEnumerateInstanceLayerProperties(
uint32_t* pPropertyCount,
VkLayerProperties* pProperties); Параметры
-
pPropertyCount- это указатель на целое число, связанное с количеством доступных или запрашиваемых свойств слоя, как описано ниже. -
pProperties- это либоNULLили указатель на массив структур VkLayerProperties.
Описание
Если pProperties равно NULL, то количество доступных свойств слоя возвращается в pPropertyCount. В противном случае, pPropertyCount должен указывать на переменную, установленную пользователем на число элементов в массиве pProperties, и по возвращении переменная перезаписывается количеством структур, фактически записанных в pProperties. Если pPropertyCount меньше, чем количество доступных свойств слоя, будет записано не более pPropertyCount структур. Если pPropertyCount меньше, чем количество доступных слоев, будет возвращено VK_INCOMPLETE вместо VK_SUCCESS, чтобы указать, что не все доступные свойства слоя были возвращены.
Список доступных слоев может изменяться в любое время из-за действий вне реализации Vulkan, поэтому два вызова vkEnumerateInstanceLayerProperties с одинаковыми параметрами могут возвращать разные результаты или получать разные значения pPropertyCount или содержимое pProperties. После создания экземпляра включенные для этого экземпляра слои будут оставаться включенными и действительными в течение всего срока существования этого экземпляра, даже если некоторые из них станут недоступны для будущих экземпляров.
Допустимое использование (неявное)
pPropertyCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPropertyCount, не равно0, иpPropertiesне равноNULL,pPropertiesдолжен быть указателем на массив структурpPropertyCountVkLayerProperties
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
vkEnumeratePhysicalDevices(3)
Название
vkEnumeratePhysicalDevices - Перечисление физических устройств, доступных для экземпляра Vulkan
C-спецификация
Для получения списка объектов физических устройств, представляющих физические устройства, установленные в системе, вызовите:
VkResult vkEnumeratePhysicalDevices(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices); Параметры
-
instance- это дескриптор экземпляра Vulkan, ранее созданного с помощью vkCreateInstance. -
pPhysicalDeviceCount- это указатель на целое число, связанное с количеством доступных или запрошенных физических устройств, как описано ниже. -
pPhysicalDevices- это либоNULL, либо указатель на массив дескрипторовVkPhysicalDevice.
Описание
Если pPhysicalDevices равно NULL, то количество доступных физических устройств возвращается в pPhysicalDeviceCount. В противном случае, pPhysicalDeviceCount должен указывать на переменную, установленную пользователем на число элементов в массиве pPhysicalDevices, и по возвращении переменная перезаписывается количеством дескрипторов, фактически записанных в pPhysicalDevices. Если pPhysicalDeviceCount меньше, чем количество доступных физических устройств, будет записано не более pPhysicalDeviceCount структур. Если pPhysicalDeviceCount меньше, чем количество доступных физических устройств, будет возвращено VK_INCOMPLETE вместо VK_SUCCESS, чтобы указать, что не все доступные физические устройства были возвращены.
Допустимое использование (неявное)
instanceдолжен быть допустимым дескрипторомVkInstancepPhysicalDeviceCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPhysicalDeviceCount, не равно0, иpPhysicalDevicesне равноNULL,pPhysicalDevicesдолжен быть указателем на массив дескрипторовpPhysicalDeviceCountVkPhysicalDevice
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_INITIALIZATION_FAILED
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkEnumeratePhysicalDevices
vkFlushMappedMemoryRanges(3)
Название
vkFlushMappedMemoryRanges - Сброс отображаемых диапазонов памяти
C-спецификация
Чтобы сбросить диапазоны некогерентной памяти из кэшей хоста, вызовите:
VkResult vkFlushMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges); Параметры
-
device- это логическое устройство, которому принадлежат диапазоны памяти. -
memoryRangeCount- это длина массиваpMemoryRanges. -
pMemoryRanges- это указатель на массив структур VkMappedMemoryRange, описывающих диапазоны памяти для сброса.
Описание
vkFlushMappedMemoryRanges гарантирует, что записи хоста в диапазоны памяти, описанные pMemoryRanges, могут быть предоставлены для доступа к устройству, с помощью операций доступности операций доступности из типа доступа VK_ACCESS_HOST_WRITE_BIT типа доступа.
Отмена отображения некогерентной памяти не приводит к неявной очистке отображаемой памяти, и записи хоста, которые не были очищены, могут никогда не стать видимыми для устройства. Однако реализации должны гарантировать, что записи, которые не были очищены, не станут видимыми для другой памяти.
Примечание
Вышеуказанная гарантия позволяет избежать потенциального повреждения памяти в сценариях, когда записи хоста в отображаемый объект памяти не были очищены до отмены отображения (или освобождения) памяти, а диапазон виртуальных адресов впоследствии повторно используется для другого отображения (или выделения памяти).
Допустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicepMemoryRangesдолжен быть указателем на массивmemoryRangeCountдопустимых структурVkMappedMemoryRangememoryRangeCountдолжен быть больше0
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkFlushMappedMemoryRanges
vkFreeCommandBuffers(3)
Название
vkFreeCommandBuffers - Освобождение буферов команд
C-спецификация
Для освобождения буферов команд вызовите:
void vkFreeCommandBuffers(
VkDevice device,
VkCommandPool commandPool,
uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers); Параметры
-
device- это логическое устройство, которому принадлежит пул команд. -
commandPool- это пул команд, из которого были выделены буферы команд. -
commandBufferCount- это длина массиваpCommandBuffers. -
pCommandBuffers- это массив дескрипторов буферов команд для освобождения.
Описание
Любой основной буфер команд, находящийся в состоянии записи или выполнения и имеющий любой элемент pCommandBuffers, записанный в него, становится недействительным.
Допустимое использование
- Все элементы
pCommandBuffersне должны находиться в ожидающем состоянииpCommandBuffersдолжен быть указателем на массив дескрипторовcommandBufferCountVkCommandBuffer, каждый элемент которого должен быть либо допустимым дескриптором, либоNULL
END_OF_DOCUMENT_MARKERДопустимое использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicecommandPoolдолжен быть допустимым дескрипторомVkCommandPoolcommandBufferCountдолжен быть больше0commandPoolдолжен быть создан, выделен или получен изdevice- Каждый элемент
pCommandBuffers, являющийся допустимым дескриптором, должен быть создан, выделен или получен изcommandPool
Синхронизация хоста
- Доступ хоста к
commandPoolдолжен быть внешне синхронизирован- Доступ хоста к каждому элементу
pCommandBuffersдолжен быть внешне синхронизирован
См. также
VkCommandBuffer, VkCommandPool, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkFreeCommandBuffers
vkFreeDescriptorSets(3)
Имя
vkFreeDescriptorSets - Освобождение одного или нескольких наборов дескрипторов
Спецификация C
Для освобождения выделенных наборов дескрипторов вызовите:
VkResult vkFreeDescriptorSets(
VkDevice device,
VkDescriptorPool descriptorPool,
uint32_t descriptorSetCount,
const VkDescriptorSet* pDescriptorSets); Параметры
-
device- это логическое устройство, которому принадлежит пул дескрипторов. -
descriptorPool- это пул дескрипторов, из которого были выделены наборы дескрипторов. -
descriptorSetCount- это число элементов в массивеpDescriptorSets. -
pDescriptorSets- это массив дескрипторов объектовVkDescriptorSet.
Описание
После успешного вызова vkFreeDescriptorSets, все наборы дескрипторов в pDescriptorSets становятся недействительными.
Правильное использование
- Все отправленные команды, которые ссылаются на любой элемент
pDescriptorSets, должны быть выполненыpDescriptorSetsдолжен быть указателем на массивdescriptorSetCountVkDescriptorSetдескрипторов, каждый элемент которого должен быть либо допустимым дескриптором, либо VK_NULL_HANDLE- Каждый допустимый дескриптор в
pDescriptorSetsдолжен быть выделен изdescriptorPooldescriptorPoolдолжен быть создан с флагомVK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicedescriptorPoolдолжен быть допустимым дескрипторомVkDescriptorPooldescriptorSetCountдолжен быть больше0descriptorPoolдолжен быть создан, выделен или получен изdevice- Каждый элемент
pDescriptorSets, являющийся допустимым дескриптором, должен быть создан, выделен или получен изdescriptorPool
Синхронизация хоста
- Доступ хоста к
descriptorPoolдолжен быть внешне синхронизирован- Доступ хоста к каждому элементу
pDescriptorSetsдолжен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkDescriptorPool, VkDescriptorSet, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkFreeDescriptorSets
vkFreeMemory(3)
Имя
vkFreeMemory - Освобождение памяти GPU
Спецификация C
Для освобождения объекта памяти вызовите:
void vkFreeMemory(
VkDevice device,
VkDeviceMemory memory,
const VkAllocationCallbacks* pAllocator); Параметры
-
device- это логическое устройство, которому принадлежит память. -
memory- это объектVkDeviceMemory, который будет освобожден. -
pAllocatorуправляет выделением памяти хоста, как описано в главе Выделение памяти.
Описание
Перед освобождением объекта памяти приложение должно убедиться, что объект памяти больше не используется устройством — например, буферами команд, помещенными в очередь на выполнение. Память может оставаться связанной с изображениями или буферами в момент освобождения объекта памяти, но любое дальнейшее использование их (на хосте или устройстве) для чего-либо, кроме уничтожения этих объектов, приведет к неопределенному поведению. Если все еще существуют какие-либо связанные изображения или буферы, память может не быть немедленно освобождена реализацией, но должна быть освобождена к тому времени, когда все связанные изображения и буферы будут уничтожены. После освобождения памяти она возвращается в кучу, из которой она была выделена.
Как объекты памяти связываются с изображениями и буферами, подробно описано в разделе Связывание памяти ресурсов.
Если объект памяти отображен в момент его освобождения, он неявно отключается от отображения.
Примечание
Как описано ниже, записи хоста не очищаются неявно, когда объект памяти отключается от отображения, но реализация должна гарантировать, что записи, которые не были очищены, не повлияют на другую память.
Правильное использование
- Все отправленные команды, которые ссылаются на
memory(через изображения или буферы), должны быть выполнены
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevice- Если
memoryне равен VK_NULL_HANDLE,memoryдолжен быть допустимым дескрипторомVkDeviceMemory- Если
pAllocatorне равенNULL,pAllocatorдолжен быть указателем на допустимую структуруVkAllocationCallbacks- Если
memoryявляется допустимым дескриптором, он должен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
memoryдолжен быть внешне синхронизирован
См. также
VkAllocationCallbacks, VkDevice, VkDeviceMemory
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkFreeMemory
vkGetBufferMemoryRequirements(3)
Имя
vkGetBufferMemoryRequirements - Возвращает требования к памяти для указанного объекта Vulkan
Спецификация C
Для определения требований к памяти для буферного ресурса вызовите:
void vkGetBufferMemoryRequirements(
VkDevice device,
VkBuffer buffer,
VkMemoryRequirements* pMemoryRequirements); Параметры
-
device- это логическое устройство, которому принадлежит буфер. -
buffer- это буфер для запроса. -
pMemoryRequirementsуказывает на экземпляр структуры VkMemoryRequirements, в котором возвращаются требования к памяти объекта буфера.
Описание
Правильное использование (неявное)
deviceдолжен быть допустимым дескрипторомVkDevicebufferдолжен быть допустимым дескрипторомVkBufferpMemoryRequirementsдолжен быть указателем на структуруVkMemoryRequirementsbufferдолжен быть создан, выделен или получен изdevice
См. также
VkBuffer, VkDevice, VkMemoryRequirements
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetBufferMemoryRequirements
vkGetDeviceMemoryCommitment(3)
Имя
vkGetDeviceMemoryCommitment - Запрос текущего объёма выделенной памяти для VkDeviceMemory
Спецификация C
Для определения объёма лениво выделенной памяти, которая в настоящее время выделена для объекта памяти, вызовите:
void vkGetDeviceMemoryCommitment(
VkDevice device,
VkDeviceMemory memory,
VkDeviceSize* pCommittedMemoryInBytes); Параметры
-
device- это логическое устройство, которому принадлежит память. -
memory- это запрашиваемый объект памяти. -
pCommittedMemoryInBytes- это указатель на значениеVkDeviceSize, в котором возвращается количество байтов, выделенных в настоящее время, при успехе.
Описание
Реализация может обновлять выделение в любое время, и значение, возвращаемое этим запросом, может быть устаревшим.
Реализация гарантирует выделение любой выделенной памяти из heapIndex, указанного типом памяти, с которым был создан объект памяти.
Правильное использование
memoryдолжен быть создан с типом памяти, который сообщаетVK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicememoryдолжен быть допустимой дескрипторомVkDeviceMemorypCommittedMemoryInBytesдолжен быть указателем на значениеVkDeviceSizememoryдолжен быть создан, выделен или получен изdevice
См. также
VkDevice, VkDeviceMemory, VkDeviceSize
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetDeviceMemoryCommitment
vkGetDeviceProcAddr(3)
Имя
vkGetDeviceProcAddr - Возвращает указатель на функцию для команды
C-спецификация
Для поддержки систем с несколькими реализациями Vulkan, включающими неоднородные наборы аппаратного и программного обеспечения, указатели на функции, возвращаемые vkGetInstanceProcAddr, могут указывать на код диспетчеризации, который вызывает другую реальную реализацию для разных объектов VkDevice (и объектов, созданных из них). Накладные расходы этой внутренней диспетчеризации могут быть избежаны путем получения указателей на функции, зависящих от устройства, для любых команд, которые используют устройство или дочерний объект устройства в качестве отправляемого объекта. Такие указатели на функции могут быть получены с помощью команды:
PFN_vkVoidFunction vkGetDeviceProcAddr(
VkDevice device,
const char* pName); Параметры
В таблице ниже определены различные варианты использования для vkGetDeviceProcAddr и ожидаемое возвращаемое значение для каждого случая.
Описание
Возвращаемый указатель на функцию имеет тип PFN_vkVoidFunction и должен быть приведен к типу запрашиваемой команды.
device | pName | возвращаемое значение |
|---|---|---|
| * | неопределено |
недопустимое устройство | * | неопределено |
устройство |
| неопределено |
устройство | базовая команда Vulkan | fp1 |
устройство | включенные команды расширения | fp1 |
устройство | * (любая |
|
- 1
- Возвращаемый указатель на функцию должен вызываться только с отправляемым объектом (первый параметр), который является
deviceили дочерним элементомdevice. Например,VkDevice,VkQueueилиVkCommandBuffer.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepNameдолжен быть строкой UTF-8, завершающейся нулем
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetDeviceProcAddr
vkGetDeviceQueue(3)
Имя
vkGetDeviceQueue - Получить дескриптор очереди из устройства
C-спецификация
Чтобы получить дескриптор объекта VkQueue, вызовите:
void vkGetDeviceQueue(
VkDevice device,
uint32_t queueFamilyIndex,
uint32_t queueIndex,
VkQueue* pQueue); Параметры
-
device- это логическое устройство, которому принадлежит очередь. -
queueFamilyIndex- это индекс семейства очередей, к которому принадлежит очередь. -
queueIndex- это индекс в этом семействе очередей очереди, которую нужно получить. -
pQueue- это указатель на объектVkQueue, который будет заполнен дескриптором запрашиваемой очереди.
Описание
Допустимое использование
queueFamilyIndexдолжен быть одним из индексов семейства очередей, указанных при созданииdevice, через структуруVkDeviceQueueCreateInfoqueueIndexдолжен быть меньше числа очередей, созданных для указанного индекса семейства очередей при созданииdevice, через членqueueCountструктурыVkDeviceQueueCreateInfo
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepQueueдолжен быть указателем на дескрипторVkQueue
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetDeviceQueue
vkGetEventStatus(3)
Имя
vkGetEventStatus - Получить состояние объекта события
C-спецификация
Чтобы запросить состояние события от хоста, вызовите:
VkResult vkGetEventStatus(
VkDevice device,
VkEvent event); Параметры
-
device- это логическое устройство, которому принадлежит событие. -
event- это дескриптор события для запроса.
Описание
В случае успеха vkGetEventStatus возвращает состояние объекта события со следующими кодами возврата:
| Состояние | Значение |
|---|---|
| Событие, указанное |
| Событие, указанное |
Если команда vkCmdSetEvent или vkCmdResetEvent находится в буфере команд, который находится в состоянии ожидания, то значение, возвращаемое этой командой, может немедленно устареть.
Состояние события может быть обновлено хостом. Состояние события изменяется немедленно, и последующие вызовы vkGetEventStatus будут возвращать новое состояние. Если событие уже находится в требуемом состоянии, то обновление его до того же состояния не оказывает никакого эффекта.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceeventдолжен быть допустимой дескрипторомVkEventeventдолжен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_EVENT_SETVK_EVENT_RESET- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetEventStatus
vkGetFenceStatus(3)
Имя
vkGetFenceStatus - Возвращает состояние забора
C-спецификация
Чтобы запросить состояние забора от хоста, вызовите:
VkResult vkGetFenceStatus(
VkDevice device,
VkFence fence); Параметры
-
device- это логическое устройство, которому принадлежит забор. -
fence- это дескриптор забора для запроса.
Описание
В случае успеха, vkGetFenceStatus возвращает состояние объекта забора, со следующими кодами возврата:
| Состояние | Значение |
|---|---|
| Забор, указанный |
| Забор, указанный |
| Устройство потеряно. Смотрите Lost Device. |
Если команда отправки в очередь ожидает выполнения, то значение, возвращаемое этой командой, может немедленно устареть.
Если устройство потеряно (смотрите Lost Device), vkGetFenceStatus может вернуть любой из указанных выше кодов состояния. Если устройство потеряно и vkGetFenceStatus вызывается неоднократно, оно в конечном итоге вернет либо VK_SUCCESS, либо VK_DEVICE_LOST.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicefenceдолжен быть допустимой дескрипторомVkFencefenceдолжен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_SUCCESSVK_NOT_READY- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetFenceStatus
vkGetImageMemoryRequirements(3)
Имя
vkGetImageMemoryRequirements - Возвращает требования к памяти для указанного объекта Vulkan
C Спецификация
Чтобы определить требования к памяти для ресурса изображения, вызовите:
void vkGetImageMemoryRequirements(
VkDevice device,
VkImage image,
VkMemoryRequirements* pMemoryRequirements); Параметры
-
device- это логическое устройство, которому принадлежит изображение. -
image- это изображение для запроса. -
pMemoryRequirementsуказывает на экземпляр структуры VkMemoryRequirements, в которой возвращаются требования к памяти объекта изображения.
Описание
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceimageдолжен быть допустимой дескрипторомVkImagepMemoryRequirementsдолжен быть указателем на структуруVkMemoryRequirementsimageдолжен быть создан, выделен или получен изdevice
См. также
VkDevice, VkImage, VkMemoryRequirements
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetImageMemoryRequirements
vkGetImageSparseMemoryRequirements(3)
Имя
vkGetImageSparseMemoryRequirements - Запрос требований к памяти для разреженного изображения
C Спецификация
Чтобы запросить требования к разреженной памяти для изображения, вызовите:
void vkGetImageSparseMemoryRequirements(
VkDevice device,
VkImage image,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements* pSparseMemoryRequirements); Параметры
-
device- это логическое устройство, которому принадлежит изображение. -
image- это объектVkImage, для которого необходимо получить требования к памяти. -
pSparseMemoryRequirementCount- это указатель на целое число, связанное с количеством доступных или запрошенных требований к разреженной памяти, как описано ниже. -
pSparseMemoryRequirements- это либоNULL, либо указатель на массив структурVkSparseImageMemoryRequirements.
Описание
Если pSparseMemoryRequirements равно NULL, то количество доступных требований к разреженной памяти возвращается в pSparseMemoryRequirementCount. В противном случае, pSparseMemoryRequirementCount должен указывать на переменную, установленную пользователем на количество элементов в массиве pSparseMemoryRequirements, а по возвращении переменная перезаписывается количеством структур, фактически записанных в pSparseMemoryRequirements. Если pSparseMemoryRequirementCount меньше, чем количество доступных требований к разреженной памяти, будет записано не более pSparseMemoryRequirementCount структур.
Если изображение не было создано с VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, то pSparseMemoryRequirementCount будет установлен в ноль, и в pSparseMemoryRequirements ничего не будет записано.
Примечание
Для реализации допустимо сообщать большее значение в
VkMemoryRequirements::size, чем было бы получено путем суммирования размеров памяти для всехVkSparseImageMemoryRequirements, возвращаемыхvkGetImageSparseMemoryRequirements. Это может произойти, когда оборудование требует неиспользуемого заполнения в диапазоне адресов, описывающем ресурс.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceimageдолжен быть допустимой дескрипторомVkImagepSparseMemoryRequirementCountдолжен быть указателем на значениеuint32_t- Если значение, на которое ссылается
pSparseMemoryRequirementCount, не равно0, иpSparseMemoryRequirementsне равноNULL,pSparseMemoryRequirementsдолжен быть указателем на массив структурpSparseMemoryRequirementCountVkSparseImageMemoryRequirementsimageдолжен быть создан, выделен или получен изdevice
См. также
VkDevice, VkImage, VkSparseImageMemoryRequirements
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
vkGetImageSubresourceLayout(3)
Имя
vkGetImageSubresourceLayout - Получение информации о подресурсе изображения
C Спецификация
Чтобы запросить макет доступа к хосту подресурса изображения, для изображения, созданного с линейной плиткой, вызовите:
void vkGetImageSubresourceLayout(
VkDevice device,
VkImage image,
const VkImageSubresource* pSubresource,
VkSubresourceLayout* pLayout); Параметры
-
device- это логическое устройство, которому принадлежит изображение. -
image- это изображение, макет которого запрашивается. -
pSubresource- это указатель на структуру VkImageSubresource, выбирающую определенное изображение для подресурса изображения. -
pLayoutуказывает на структуру VkSubresourceLayout, в которой возвращается макет.
Описание
vkGetImageSubresourceLayout инвариантен для времени существования одного изображения.
Допустимое использование
imageдолжен быть создан сtiling, равнымVK_IMAGE_TILING_LINEAR- Элемент
aspectMaskpSubresourceдолжен иметь только один установленный бит
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceimageдолжен быть допустимой дескрипторомVkImagepSubresourceдолжен быть указателем на допустимую структуруVkImageSubresourcepLayoutдолжен быть указателем на структуруVkSubresourceLayoutimageдолжен быть создан, выделен или получен изdevice
См. также
VkDevice, VkImage, VkImageSubresource, VkSubresourceLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetImageSubresourceLayout
vkGetInstanceProcAddr(3)
Имя
vkGetInstanceProcAddr - Возвращает указатель на функцию для команды
Спецификация C
Команды Vulkan не обязательно экспортируются статически на платформе. Указатели на функции для всех команд Vulkan можно получить с помощью команды:
PFN_vkVoidFunction vkGetInstanceProcAddr(
VkInstance instance,
const char* pName); Параметры
-
instance- это экземпляр, с которым будет совместим указатель на функцию, илиNULLдля команд, не зависящих от какого-либо экземпляра. -
pName- это имя команды, которую нужно получить.
Описание
vkGetInstanceProcAddr сама по себе получается платформо- и загрузчикозависимым способом. Как правило, библиотека загрузчика экспортирует эту команду как символ функции, поэтому приложения могут связаться с библиотекой загрузчика или загрузить её динамически и найти символ с помощью API, зависящих от платформы. Загрузчики рекомендуется экспортировать символы функций для всех остальных основных команд Vulkan; если это сделано, то приложения, использующие только основные команды Vulkan, не нуждаются в использовании vkGetInstanceProcAddr.
Таблица ниже определяет различные варианты использования vkGetInstanceProcAddr и ожидаемое возвращаемое значение («fp» — указатель на функцию) для каждого случая.
Возвращаемый указатель на функцию имеет тип PFN_vkVoidFunction и должен быть приведен к типу запрашиваемой команды.
instance | pName | возвращаемое значение |
|---|---|---|
* |
| неопределено |
неверный экземпляр | * | неопределено |
| fp | |
| fp | |
| fp | |
| * (любая |
|
экземпляр | основная команда Vulkan | fp1 |
экземпляр | включенные команды расширений экземпляра для | fp1 |
экземпляр | доступные команды расширения устройства2 для | fp1 |
экземпляр | * (любая |
|
- 1
- Возвращаемый указатель на функцию должен вызываться только с отправляемым объектом (первый параметр), который является
instanceили дочерним элементомinstance. Например,VkInstance,VkPhysicalDevice,VkDevice,VkQueueилиVkCommandBuffer. - 2
- «Доступное расширение» — это функция расширения, поддерживаемая любым из загрузчика, драйвера или уровня.
Правильное использование (неявное)
- Если
instanceнеNULL,instanceдолжен быть допустимой дескрипторомVkInstancepNameдолжен быть строкой UTF-8 с завершающим нулем
См. также
PFN_vkVoidFunction, VkInstance
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetInstanceProcAddr
vkGetPhysicalDeviceFeatures(3)
Имя
vkGetPhysicalDeviceFeatures - Сообщает о возможностях физического устройства
Спецификация C
Чтобы запросить поддерживаемые функции, вызовите:
void vkGetPhysicalDeviceFeatures(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures* pFeatures); Параметры
-
physicalDevice- это физическое устройство, у которого запрашиваются поддерживаемые функции. -
pFeatures- это указатель на структуру VkPhysicalDeviceFeatures, в которую возвращаются функции физического устройства. Для каждой функции значениеVK_TRUEуказывает на то, что функция поддерживается на этом физическом устройстве, аVK_FALSEуказывает на то, что функция не поддерживается.
Описание
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepFeaturesдолжен быть указателем на структуруVkPhysicalDeviceFeatures
См. также
VkPhysicalDevice, VkPhysicalDeviceFeatures
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetPhysicalDeviceFeatures
vkGetPhysicalDeviceFormatProperties(3)
Имя
vkGetPhysicalDeviceFormatProperties - Перечисляет возможности формата физического устройства
Спецификация C
Чтобы запросить поддерживаемые функции формата, которые являются свойствами физического устройства, вызовите:
void vkGetPhysicalDeviceFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties* pFormatProperties); Параметры
-
physicalDevice- это физическое устройство, у которого запрашиваются свойства формата. -
format- это формат, свойства которого запрашиваются. -
pFormatProperties- это указатель на структуру VkFormatProperties, в которую возвращаются свойства физического устройства дляformat.
Описание
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDeviceformatдолжен быть допустимым значением VkFormatpFormatPropertiesдолжен быть указателем на структуруVkFormatProperties
См. также
VkFormat, VkFormatProperties, VkPhysicalDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
vkGetPhysicalDeviceImageFormatProperties(3)
Имя
vkGetPhysicalDeviceImageFormatProperties - Перечисляет возможности формата изображения физического устройства
Спецификация C
Чтобы запросить дополнительные возможности, специфичные для типов изображений, вызовите:
VkResult vkGetPhysicalDeviceImageFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkImageType type,
VkImageTiling tiling,
VkImageUsageFlags usage,
VkImageCreateFlags flags,
VkImageFormatProperties* pImageFormatProperties); Параметры
-
physicalDeviceis the physical device from which to query the image capabilities. -
formatis a VkFormat value specifying the image format, corresponding to VkImageCreateInfo::format. -
typeis a VkImageType value specifying the image type, corresponding to VkImageCreateInfo::imageType. -
tilingis a VkImageTiling value specifying the image tiling, corresponding to VkImageCreateInfo::tiling. -
usageis a bitmask of VkImageUsageFlagBits specifying the intended usage of the image, corresponding to VkImageCreateInfo::usage. -
flagsis a bitmask of VkImageCreateFlagBits specifying additional parameters of the image, corresponding to VkImageCreateInfo::flags. -
pImageFormatPropertiespoints to an instance of the VkImageFormatProperties structure in which capabilities are returned.
Описание
Параметры format, type, tiling, usage и flags соответствуют параметрам, которые использовались бы функцией vkCreateImage (как члены VkImageCreateInfo).
Если format не является поддерживаемым форматом изображения, или если комбинация format, type, tiling, usage и flags не поддерживается для изображений, то vkGetPhysicalDeviceImageFormatProperties возвращает VK_ERROR_FORMAT_NOT_SUPPORTED.
Ограничения формата изображения, которые сообщаются функцией vkGetPhysicalDeviceImageFormatProperties, обладают следующим свойством: если usage1 и usage2 типа VkImageUsageFlags таковы, что биты, установленные в usage1, являются подмножеством битов, установленных в usage2, и flags1 и flags2 типа VkImageCreateFlags таковы, что биты, установленные в flags1, являются подмножеством битов, установленных в flags2, то ограничения для usage1 и flags1 должны быть не более строгими, чем ограничения для usage2 и flags2, для всех значений format, type и tiling.
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDeviceformatдолжен быть допустимым значением VkFormattypeдолжен быть допустимым значением VkImageTypetilingдолжен быть допустимым значением VkImageTilingusageдолжен быть допустимой комбинацией значений VkImageUsageFlagBitsusageне должен быть0flagsдолжен быть допустимой комбинацией значений VkImageCreateFlagBitspImageFormatPropertiesдолжен быть указателем на структуруVkImageFormatProperties
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_FORMAT_NOT_SUPPORTED
См. также
VkFormat, VkImageCreateFlags, VkImageFormatProperties, VkImageTiling, VkImageType, VkImageUsageFlags, VkPhysicalDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
vkGetPhysicalDeviceMemoryProperties(3)
Имя
vkGetPhysicalDeviceMemoryProperties - Отчет о информации о памяти для указанного физического устройства
Спецификация C
Для запроса свойств памяти вызовите:
void vkGetPhysicalDeviceMemoryProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties* pMemoryProperties); Параметры
-
physicalDeviceis the handle to the device to query. -
pMemoryPropertiespoints to an instance ofVkPhysicalDeviceMemoryPropertiesstructure in which the properties are returned.
Описание
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepMemoryPropertiesдолжен быть указателем на структуруVkPhysicalDeviceMemoryProperties
См. также
VkPhysicalDevice, VkPhysicalDeviceMemoryProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
vkGetPhysicalDeviceProperties(3)
Имя
vkGetPhysicalDeviceProperties - Возвращает свойства физического устройства
Спецификация C
Для запроса общих свойств физических устройств после их перечисления вызовите:
void vkGetPhysicalDeviceProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties* pProperties); Параметры
-
physicalDeviceis the handle to the physical device whose properties will be queried. -
pPropertiespoints to an instance of the VkPhysicalDeviceProperties structure, that will be filled with returned information.
Описание
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepPropertiesдолжен быть указателем на структуруVkPhysicalDeviceProperties
См. также
VkPhysicalDevice, VkPhysicalDeviceProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetPhysicalDeviceProperties
vkGetPhysicalDeviceQueueFamilyProperties(3)
Имя
vkGetPhysicalDeviceQueueFamilyProperties - Отчет о свойствах очередей указанного физического устройства
Спецификация C
Для запроса свойств очередей, доступных на физическом устройстве, вызовите:
void vkGetPhysicalDeviceQueueFamilyProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties* pQueueFamilyProperties); Параметры
-
physicalDeviceis the handle to the physical device whose properties will be queried. -
pQueueFamilyPropertyCountis a pointer to an integer related to the number of queue families available or queried, as described below. -
pQueueFamilyPropertiesis eitherNULLor a pointer to an array of VkQueueFamilyProperties structures.
Описание
Если pQueueFamilyProperties is NULL, then the number of queue families available is returned in pQueueFamilyPropertyCount. Otherwise, pQueueFamilyPropertyCount must point to a variable set by the user to the number of elements in the pQueueFamilyProperties array, and on return the variable is overwritten with the number of structures actually written to pQueueFamilyProperties. If pQueueFamilyPropertyCount is less than the number of queue families available, at most pQueueFamilyPropertyCount structures will be written.
Правильное использование (неявное)
physicalDeviceдолжен быть допустимой дескрипторомVkPhysicalDevicepQueueFamilyPropertyCountдолжен быть указателем на значениеuint32_t- If the value referenced by
pQueueFamilyPropertyCountis not0, andpQueueFamilyPropertiesis notNULL,pQueueFamilyPropertiesmust be a pointer to an array ofpQueueFamilyPropertyCountVkQueueFamilyPropertiesstructures
См. также
VkPhysicalDevice, VkQueueFamilyProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
vkGetPhysicalDeviceSparseImageFormatProperties(3)
Имя
vkGetPhysicalDeviceSparseImageFormatProperties - Получение свойств формата изображения, применённого к разреженным изображениям
Спецификация C
vkGetPhysicalDeviceSparseImageFormatProperties возвращает массив VkSparseImageFormatProperties. Каждый элемент будет описывать свойства для одного набора аспектов изображения, которые связаны одновременно в изображении. Обычно это один элемент для каждого аспекта изображения, но для чередующихся изображений глубины/трафарета существует только один элемент, описывающий объединенные аспекты.
void vkGetPhysicalDeviceSparseImageFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkImageType type,
VkSampleCountFlagBits samples,
VkImageUsageFlags usage,
VkImageTiling tiling,
uint32_t* pPropertyCount,
VkSparseImageFormatProperties* pProperties); Параметры
-
physicalDevice- это физическое устройство, у которого запрашиваются возможности разреженного формата изображения. -
format- это формат изображения. -
type- это размерность изображения. -
samples- это количество выборок на пиксель, как определено в VkSampleCountFlagBits. -
usage- это битовая маска, описывающая предполагаемое использование изображения. -
tiling- это схема размещения элементов данных в памяти. -
pPropertyCount- это указатель на целое число, связанное с количеством доступных или запрошенных свойств разреженного формата, как описано ниже. -
pProperties- этоNULLили указатель на массив структур VkSparseImageFormatProperties.
Описание
Если pProperties равно NULL, то количество доступных свойств разреженного формата возвращается в pPropertyCount. В противном случае, pPropertyCount должен указывать на переменную, установленную пользователем для количества элементов в массиве pProperties, и по возвращении переменная перезаписывается количеством структур, фактически записанных в pProperties. Если pPropertyCount меньше, чем количество доступных свойств разреженного формата, будет записано не более pPropertyCount структур.
Если VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT не поддерживается для заданных аргументов, pPropertyCount будет установлен в ноль по возвращении, и данные не будут записаны в pProperties.
Для изображений глубины/трафарета, которые реализованы как отдельные плоскости, возвращаются несколько аспектов. Плоскости данных глубины и трафарета имеют уникальные данные VkSparseImageFormatProperties.
Изображения глубины/трафарета с данными глубины и трафарета, чередующимися в одной плоскости, вернут одну структуру VkSparseImageFormatProperties с aspectMask, установленным в VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT.
Правильное использование
samplesдолжно быть битовым значением, установленным вVkImageFormatProperties::sampleCounts, возвращаемымvkGetPhysicalDeviceImageFormatPropertiesсformat,type,tiling, иusageравными тем, что в этой команде, иflagsравным значению, установленному вVkImageCreateInfo::flagsпри создании изображения
Правильное использование (неявное)
physicalDeviceдолжно быть допустимой дескрипторомVkPhysicalDeviceformatдолжно быть допустимым значением VkFormattypeдолжно быть допустимым значением VkImageTypesamplesдолжно быть допустимым значением VkSampleCountFlagBitsusageдолжно быть допустимой комбинацией значений VkImageUsageFlagBitsusageне должно быть0tilingдолжно быть допустимым значением VkImageTilingpPropertyCountдолжно быть указателем на значениеuint32_t- Если значение, на которое ссылается
pPropertyCount, не0, иpPropertiesнеNULL,pPropertiesдолжно быть указателем на массивpPropertyCountVkSparseImageFormatPropertiesструктур
См. также
VkFormat, VkImageTiling, VkImageType, VkImageUsageFlags, VkPhysicalDevice, VkSampleCountFlagBits, VkSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
vkGetPipelineCacheData(3)
Имя
vkGetPipelineCacheData - Получение хранилища данных из кэша конвейеров
C Спецификация
Данные могут быть извлечены из объекта кэша конвейеров с использованием команды:
VkResult vkGetPipelineCacheData(
VkDevice device,
VkPipelineCache pipelineCache,
size_t* pDataSize,
void* pData); Параметры
-
device- это логическое устройство, которому принадлежит кэш конвейеров. -
pipelineCache- это кэш конвейеров, из которого извлекаются данные. -
pDataSize- это указатель на значение, связанное с объемом данных в кэше конвейеров, как описано ниже. -
pData- этоNULLили указатель на буфер.
Описание
Если pData равно NULL, то максимальный размер данных, которые могут быть извлечены из кэша конвейеров, в байтах, возвращается в pDataSize. В противном случае, pDataSize должен указывать на переменную, установленную пользователем для размера буфера, в байтах, на который указывает pData, и по возвращении переменная перезаписывается объемом данных, фактически записанных в pData.
Если pDataSize меньше, чем максимальный размер, который может быть извлечен кэшем конвейеров, в pData будет записано не более pDataSize байт, и vkGetPipelineCacheData вернет VK_INCOMPLETE. Любые данные, записанные в pData, действительны и могут быть предоставлены в качестве члена pInitialData структуры VkPipelineCacheCreateInfo, переданной в vkCreatePipelineCache.
Два вызова vkGetPipelineCacheData с одинаковыми параметрами должны извлекать одни и те же данные, если между ними не вызывается команда, изменяющая содержимое кэша.
Приложения могут хранить данные, извлеченные из кэша конвейеров, и использовать эти данные, возможно, в будущем запуске приложения, для заполнения новых объектов кэша конвейеров. Однако результаты компиляции конвейеров могут зависеть от идентификатора поставщика, идентификатора устройства, версии драйвера и других деталей устройства. Чтобы позволить приложениям обнаруживать, когда ранее извлеченные данные несовместимы с устройством, начальные байты, записанные в pData, должны представлять собой заголовок, состоящий из следующих элементов:
| Смещение | Размер | Значение |
|---|---|---|
0 | 4 | длина в байтах всего заголовка кэша конвейеров, записанная как поток байтов, с наименее значимым байтом первым |
4 | 4 | значение VkPipelineCacheHeaderVersion, записанное как поток байтов, с наименее значимым байтом первым |
8 | 4 | идентификатор поставщика, равный |
12 | 4 | идентификатор устройства, равный |
16 |
| идентификатор кэша конвейеров, равный |
Первые четыре байта кодируют длину всего заголовка конвейера в байтах. Это значение включает все поля в заголовке, включая поле версии кэша конвейера и размер поля длины.
Следующие четыре байта кодируют версию кэша конвейера, как описано для VkPipelineCacheHeaderVersion. Потребитель кэша конвейера должен использовать версию кэша для интерпретации остальной части заголовка кэша.
Если pDataSize меньше, чем необходимо для хранения этого заголовка, ничего не будет записано в pData, и ноль будет записан в pDataSize.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepipelineCacheдолжен быть допустимой дескрипторомVkPipelineCachepDataSizeдолжен быть указателем на значениеsize_t- Если значение, на которое ссылается
pDataSize, не0, иpDataнеNULL,pDataдолжен быть указателем на массив изpDataSizeбайтовpipelineCacheдолжен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_SUCCESSVK_INCOMPLETE- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetPipelineCacheData
vkGetQueryPoolResults(3)
Имя
vkGetQueryPoolResults - Копирование результатов запросов в пуле запросов в область памяти хоста
C спецификация
Для получения состояния и результатов набора запросов, вызовите:
VkResult vkGetQueryPoolResults(
VkDevice device,
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount,
size_t dataSize,
void* pData,
VkDeviceSize stride,
VkQueryResultFlags flags); Параметры
-
device- это логическое устройство, которому принадлежит пул запросов. -
queryPool- это пул запросов, управляющий запросами, содержащими необходимые результаты. -
firstQuery- это начальный индекс запроса. -
queryCount- это количество запросов.firstQueryиqueryCountвместе определяют диапазон запросов. Для запросов статистики конвейера каждый индекс запроса в пуле содержит одно целочисленное значение для каждого бита, который включен в VkQueryPoolCreateInfo::pipelineStatisticsпри создании пула. -
dataSize- это размер в байтах буфера, на который указываетpData. -
pData- это указатель на буфер, выделенный пользователем, куда будут записаны результаты -
stride- это шаг в байтах между результатами для отдельных запросов внутриpData. -
flags- это битовая маска VkQueryResultFlagBits, указывающая, как и когда возвращаются результаты.
Описание
Если в flags не установлено ни одного бита, и все запрошенные запросы находятся в доступном состоянии, результаты записываются как массив 32-битных беззнаковых целых чисел. Поведение, когда не все запросы доступны, описано ниже.
Если VK_QUERY_RESULT_64_BIT не установлен и результат переполняет 32-битное значение, значение может либо переполниться, либо насытиться. Аналогично, если установлен VK_QUERY_RESULT_64_BIT и результат переполняет 64-битное значение, значение может либо переполниться, либо насытиться.
Если установлен VK_QUERY_RESULT_WAIT_BIT, Vulkan будет ждать, пока каждый запрос не окажется в доступном состоянии, прежде чем извлекать числовые результаты для этого запроса. В этом случае vkGetQueryPoolResults гарантированно завершится успешно и вернет VK_SUCCESS, если запросы станут доступны в конечное время (т. е. если они были отправлены и не сброшены). Если запросы никогда не завершатся (например, из-за сброса, но не отправки), то vkGetQueryPoolResults может не вернуться в конечное время.
Если VK_QUERY_RESULT_WAIT_BIT и VK_QUERY_RESULT_PARTIAL_BIT не установлены, то значения результатов не записываются в pData для запросов, которые находятся в недоступном состоянии во время вызова, и vkGetQueryPoolResults возвращает VK_NOT_READY. Однако состояние доступности все еще записывается в pData для этих запросов, если установлен VK_QUERY_RESULT_WITH_AVAILABILITY_BIT.
Примечание
Приложения должны следить за тем, чтобы использование бита
VK_QUERY_RESULT_WAIT_BITимело желаемый эффект.Например, если запрос использовался ранее, и буфер команд записывает команды
vkCmdResetQueryPool,vkCmdBeginQueryиvkCmdEndQueryдля этого запроса, то запрос останется в доступном состоянии до тех пор, пока командаvkCmdResetQueryPoolне выполнится в очереди. Приложения могут использовать заборы или события, чтобы убедиться, что запрос уже сброшен перед проверкой его результатов или состояния доступности. В противном случае устаревшее значение может быть возвращено из предыдущего использования запроса.Вышесказанное также относится к случаю, когда
VK_QUERY_RESULT_WAIT_BITиспользуется в сочетании сVK_QUERY_RESULT_WITH_AVAILABILITY_BIT. В этом случае возвращаемое состояние доступности может отражать результат предыдущего использования запроса, если командаvkCmdResetQueryPoolне была выполнена после последнего использования запроса.
Примечание
Приложения могут использовать двойную буферизацию использования пула запросов, с одним пулом на кадр, и сбрасывать запросы в конце кадра, в котором они читаются.
Если установлен VK_QUERY_RESULT_PARTIAL_BIT, VK_QUERY_RESULT_WAIT_BIT не установлен, и состояние запроса недоступно, промежуточное значение результата между нулем и окончательным значением результата записывается в pData для этого запроса.
VK_QUERY_RESULT_PARTIAL_BIT не должен использоваться, если queryType пула равен VK_QUERY_TYPE_TIMESTAMP.
Если установлен VK_QUERY_RESULT_WITH_AVAILABILITY_BIT, окончательное целочисленное значение, записанное для каждого запроса, отлично от нуля, если состояние запроса было доступно, или равно нулю, если состояние было недоступно. При использовании VK_QUERY_RESULT_WITH_AVAILABILITY_BIT реализации должны гарантировать, что если они возвращают ненулевое значение доступности, то числовые результаты должны быть действительными, предполагая, что результаты не сброшены последующей командой.
Примечание
Выполнение этой гарантии может потребовать тщательного упорядочивания приложением, например, для чтения состояния доступности перед чтением результатов.
Допустимое использование
firstQueryдолжен быть меньше числа запросов вqueryPool- Если
VK_QUERY_RESULT_64_BITне установлен вflags, тоpDataиstrideдолжны быть кратными4- Если
VK_QUERY_RESULT_64_BITустановлен вflags, тоpDataиstrideдолжны быть кратными8- Сумма
firstQueryиqueryCountдолжна быть меньше или равна числу запросов вqueryPooldataSizeдолжен быть достаточно большим, чтобы содержать результат каждого запроса, как описано здесь- Если
queryType, используемый для созданияqueryPool, былVK_QUERY_TYPE_TIMESTAMP,flagsне должен содержатьVK_QUERY_RESULT_PARTIAL_BIT
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicequeryPoolдолжен быть допустимой дескрипторомVkQueryPoolpDataдолжен быть указателем на массив изdataSizeбайтовflagsдолжен быть допустимым сочетанием значений VkQueryResultFlagBitsdataSizeдолжен быть больше0queryPoolдолжен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_SUCCESSVK_NOT_READY- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
VkDevice, VkDeviceSize, VkQueryPool, VkQueryResultFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetQueryPoolResults
vkGetRenderAreaGranularity(3)
Имя
vkGetRenderAreaGranularity - Возвращает гранулярность для оптимальной области рендеринга
C спецификация
Для запроса гранулярности области рендеринга, вызовите:
void vkGetRenderAreaGranularity(
VkDevice device,
VkRenderPass renderPass,
VkExtent2D* pGranularity); Параметры
-
device- это логическое устройство, которому принадлежит проход рендеринга. -
renderPass- это дескриптор прохода рендеринга. -
pGranularityуказывает на структуру VkExtent2D, в которой возвращается гранулярность.
Описание
Условия, приводящие к оптимальной renderArea, следующие:
- член
offset.xвrenderAreaявляется кратным членуwidthвозвращаемого VkExtent2D (горизонтальное зерно). - член
offset.yвrenderAreaявляется кратным членуheightвозвращаемого VkExtent2D (вертикальное зерно). - либо член
offset.widthвrenderAreaявляется кратным горизонтальному зерну, либоoffset.x+offset.widthравноwidthframebufferв VkRenderPassBeginInfo. - либо член
offset.heightвrenderAreaявляется кратным вертикальному зерну, либоoffset.y+offset.heightравноheightframebufferв VkRenderPassBeginInfo.
Зависимости подпроходов не затрагиваются областью отрисовки и применяются ко всем подобъектам изображений, прикреплённым к буферу кадра, как указано в описании автоматических переходов макета. Аналогично, барьеры конвейера действительны, даже если их эффект выходит за пределы области отрисовки.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicerenderPassдолжен быть допустимой дескрипторомVkRenderPasspGranularityдолжен быть указателем на структуруVkExtent2DrenderPassдолжен быть создан, выделен или получен изdevice
См. также
VkDevice, VkExtent2D, VkRenderPass
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkGetRenderAreaGranularity
vkInvalidateMappedMemoryRanges(3)
Имя
vkInvalidateMappedMemoryRanges - Привести к недействительности диапазоны отображаемых объектов памяти
Спецификация C
Чтобы привести к недействительности диапазоны некогерентной памяти из кэшей хоста, вызовите:
VkResult vkInvalidateMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges); Параметры
-
device- это логическое устройство, которому принадлежат диапазоны памяти. -
memoryRangeCount- это длина массиваpMemoryRanges. -
pMemoryRanges- это указатель на массив структур VkMappedMemoryRange, описывающих диапазоны памяти, которые необходимо сделать недействительными.
Описание
vkInvalidateMappedMemoryRanges гарантирует, что записи устройства в диапазоны памяти, описанные pMemoryRanges, которые стали видимыми для VK_ACCESS_HOST_WRITE_BIT и VK_ACCESS_HOST_READ_BIT типов доступа, становятся видимыми для хоста. Если диапазон некогерентной памяти записывается хостом, а затем приводится к недействительности без предварительной очистки, его содержимое не определено.
Примечание
Отображение некогерентной памяти не приводит к неявной недействительности отображаемой памяти, и записи устройства, которые не были приведены к недействительности, должны быть сделаны видимыми, прежде чем хост будет их читать или перезаписывать.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepMemoryRangesдолжен быть указателем на массивmemoryRangeCountдопустимых структурVkMappedMemoryRangememoryRangeCountдолжен быть больше0
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkInvalidateMappedMemoryRanges
vkMapMemory(3)
Имя
vkMapMemory - Отобразить объект памяти в адресное пространство приложения
Спецификация C
Чтобы получить указатель на виртуальный адрес хоста в область отображаемого объекта памяти, вызовите:
VkResult vkMapMemory(
VkDevice device,
VkDeviceMemory memory,
VkDeviceSize offset,
VkDeviceSize size,
VkMemoryMapFlags flags,
void** ppData); Параметры
-
device- это логическое устройство, которому принадлежит память. -
memory- это объектVkDeviceMemory, который нужно отобразить. -
offset- это смещение в байтах от начала объекта памяти, отсчитываемое от нуля. -
size- это размер отображаемого диапазона памяти илиVK_WHOLE_SIZEдля отображения отoffsetдо конца выделения. -
flagsзарезервировано для будущего использования. -
ppDataуказывает на указатель, в котором возвращается указатель, доступный хосту, на начало отображаемого диапазона. Этот указатель минусoffsetдолжен быть выровнен, как минимум, доVkPhysicalDeviceLimits::minMemoryMapAlignment.
Описание
Вызов vkMapMemory для объекта памяти, который уже отображен, является ошибкой приложения.
Примечание
vkMapMemoryзавершится неудачей, если реализация не сможет выделить достаточно большой непрерывный диапазон виртуальных адресов, например, из-за фрагментации виртуального адресного пространства или ограничений платформы. В таких случаяхvkMapMemoryдолжен возвращатьVK_ERROR_MEMORY_MAP_FAILED. Приложение может повысить вероятность успеха, уменьшив размер отображаемого диапазона и/или удалив ненужные отображения с помощьюVkUnmapMemory.
vkMapMemory не проверяет, используется ли память устройства в данный момент, прежде чем возвращать указатель, доступный хосту. Приложение должно гарантировать, что любая ранее отправленная команда, которая записывает в этот диапазон, завершилась до того, как хост начнет чтение или запись в этот диапазон, и что любая ранее отправленная команда, которая считывает из этого диапазона, завершилась до того, как хост начнет запись в эту область (см. здесь подробности о выполнении такой гарантии). Если память устройства была выделена без установленного VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, эти гарантии должны быть выполнены для расширенного диапазона: приложение должно округлить начало диапазона вниз до ближайшего кратного VkPhysicalDeviceLimits::nonCoherentAtomSize, и округлить конец диапазона вверх до ближайшего кратного VkPhysicalDeviceLimits::nonCoherentAtomSize.
Пока диапазон памяти устройства отображается для доступа хоста, приложение отвечает за синхронизацию как доступа устройства, так и доступа хоста к этому диапазону памяти.
Примечание
Разработчику приложения важно тщательно ознакомиться со всеми механизмами, описанными в главе о синхронизации и управлении кэшем, поскольку они имеют решающее значение для поддержания порядка доступа к памяти.
Допустимое использование
memoryне должен быть в данный момент отображенoffsetдолжен быть меньше размераmemory- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжен быть больше0- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжен быть меньше или равен размеруmemoryминусoffsetmemoryдолжен быть создан с типом памяти, который сообщаетVK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicememoryдолжен быть допустимой дескрипторомVkDeviceMemoryflagsдолжен быть0ppDataдолжен быть указателем на указательmemoryдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
memoryдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_MEMORY_MAP_FAILED
См. также
VkDevice, VkDeviceMemory, VkDeviceSize, VkMemoryMapFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkMapMemory
vkMergePipelineCaches(3)
Имя
vkMergePipelineCaches - Объединить хранилища данных кэшей конвейеров
Спецификация C
Объекты кэша конвейера могут быть объединены с помощью команды:
VkResult vkMergePipelineCaches(
VkDevice device,
VkPipelineCache dstCache,
uint32_t srcCacheCount,
const VkPipelineCache* pSrcCaches); Параметры
-
deviceis the logical device that owns the pipeline cache objects. -
dstCacheis the handle of the pipeline cache to merge results into. -
srcCacheCountis the length of thepSrcCachesarray. -
pSrcCachesis an array of pipeline cache handles, which will be merged intodstCache. The previous contents ofdstCacheare included after the merge.
Описание
Примечание
Подробности операции слияния зависят от реализации, но реализации должны объединять содержимое указанных конвейеров и удалять дубликаты.
Допустимое использование
dstCacheне должно присутствовать в списке исходных кешей
Допустимое использование (неявное)
deviceдолжна быть допустимой дескрипторомVkDevicedstCacheдолжен быть допустимой дескрипторомVkPipelineCachepSrcCachesдолжен быть указателем на массив изsrcCacheCountдопустимых дескрипторовVkPipelineCachesrcCacheCountдолжно быть больше0dstCacheдолжен быть создан, выделен или получен изdevice- Каждый элемент
pSrcCachesдолжен быть создан, выделен или получен изdevice
Синхронизация узла
- Доступ узла к
dstCacheдолжен быть внешне синхронизирован
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkMergePipelineCaches
vkQueueBindSparse(3)
Имя
vkQueueBindSparse - Привязка памяти устройства к объекту разреженного ресурса
C-спецификация
Для отправки операций разреженной привязки в очередь, вызовите:
VkResult vkQueueBindSparse(
VkQueue queue,
uint32_t bindInfoCount,
const VkBindSparseInfo* pBindInfo,
VkFence fence); Параметры
-
queueis the queue that the sparse binding operations will be submitted to. -
bindInfoCountis the number of elements in thepBindInfoarray. -
pBindInfois an array of VkBindSparseInfo structures, each specifying a sparse binding submission batch. -
fenceis an optional handle to a fence to be signaled. Iffenceis not VK_NULL_HANDLE, it defines a fence signal operation.
Описание
vkQueueBindSparse is a queue submission command, with each batch defined by an element of pBindInfo as an instance of the VkBindSparseInfo structure. Batches begin execution in the order they appear in pBindInfo, but may complete out of order.
Within a batch, a given range of a resource must not be bound more than once. Across batches, if a range is to be bound to one allocation and offset and then to another allocation and offset, then the application must guarantee (usually using semaphores) that the binding operations are executed in the correct order, as well as to order binding operations against the execution of command buffer submissions.
As no operation to vkQueueBindSparse causes any pipeline stage to access memory, synchronization primitives used in this command effectively only define execution dependencies.
Дополнительная информация о работе с ограждениями и семафорами описана в главе о синхронизации.
Допустимое использование
- If
fenceis not VK_NULL_HANDLE,fencemust be unsignaled- If
fenceis not VK_NULL_HANDLE,fencemust not be associated with any other queue command that has not yet completed execution on that queue- Any given element of the
pSignalSemaphoresmember of any element ofpBindInfomust be unsignaled when the semaphore signal operation it defines is executed on the device- When a semaphore unsignal operation defined by any element of the
pWaitSemaphoresmember of any element ofpBindInfoexecutes onqueue, no other queue must be waiting on the same semaphore.- All elements of the
pWaitSemaphoresmember of all elements ofpBindInfomust be semaphores that are signaled, or have semaphore signal operations previously submitted for execution.
Допустимое использование (неявное)
queuemust be a validVkQueuehandle- If
bindInfoCountis not0,pBindInfomust be a pointer to an array ofbindInfoCountvalidVkBindSparseInfostructures- If
fenceis not VK_NULL_HANDLE,fencemust be a validVkFencehandle- The
queuemust support sparse binding operations- Both of
fence, andqueuethat are valid handles must have been created, allocated, or retrieved from the sameVkDevice
Синхронизация узла
- Host access to
queuemust be externally synchronized- Host access to
pBindInfo[].pWaitSemaphores[] must be externally synchronized- Host access to
pBindInfo[].pSignalSemaphores[] must be externally synchronized- Host access to
pBindInfo[].pBufferBinds[].buffer must be externally synchronized- Host access to
pBindInfo[].pImageOpaqueBinds[].image must be externally synchronized- Host access to
pBindInfo[].pImageBinds[].image must be externally synchronized- Host access to
fencemust be externally synchronized
Свойства команд
Уровни буфера команд Область прохода отрисовки Поддерживаемые типы очередей Тип конвейера -
-
SPARSE_BINDING
-
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
VkBindSparseInfo, VkFence, VkQueue
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkQueueBindSparse
vkQueueSubmit(3)
Имя
vkQueueSubmit - Отправляет последовательность семафоров или буферов команд в очередь
C-спецификация
Для отправки буферов команд в очередь, вызовите:
VkResult vkQueueSubmit(
VkQueue queue,
uint32_t submitCount,
const VkSubmitInfo* pSubmits,
VkFence fence); Параметры
-
queueis the queue that the command buffers will be submitted to. -
submitCountis the number of elements in thepSubmitsarray. -
pSubmitsis a pointer to an array of VkSubmitInfo structures, each specifying a command buffer submission batch. -
fenceis an optional handle to a fence to be signaled. Iffenceis not VK_NULL_HANDLE, it defines a fence signal operation.
Описание
Примечание
Отправка может быть операцией с высокой накладкой, и приложениям следует пытаться объединять работу в как можно меньшее количество вызовов
vkQueueSubmit.
vkQueueSubmit является командой отправки очереди, причём каждая партия определяется элементом pSubmits как экземпляр структуры VkSubmitInfo. Партии начинают выполняться в порядке их появления в pSubmits, но могут завершаться не по порядку.
Операции с ограждениями и семафорами, отправленные с помощью vkQueueSubmit, имеют дополнительные ограничения порядка по сравнению с другими командами отправки, с зависимостями, включающими предыдущие и последующие операции очереди. Информация об этих дополнительных ограничениях может быть найдена в разделах семафора и ограждения главы о синхронизации.
Подробности о взаимодействии pWaitDstStageMask с синхронизацией описаны в разделе операции ожидания семафора главы о синхронизации.
Порядок, в котором партии появляются в pSubmits, используется для определения порядка отправки, и, таким образом, всех неявных гарантий упорядочивания, которые его соблюдают. Помимо этих неявных гарантий упорядочивания и любых явных примитивов синхронизации, эти партии могут перекрываться или иным образом выполняться не по порядку.
Если какой-либо буфер команд, отправленный в эту очередь, находится в выполняемом состоянии, он переводится в ожидающем состоянии. После завершения выполнения всех отправлений буфера команд он переходит из ожидающего состояния обратно в выполняемое состояние. Если буфер команд был записан с флагом VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, он вместо этого переходит обратно в недействительное состояние.
Если vkQueueSubmit завершается неудачей, он может вернуть VK_ERROR_OUT_OF_HOST_MEMORY или VK_ERROR_OUT_OF_DEVICE_MEMORY. В этом случае реализация должна гарантировать, что состояние и содержимое любых ресурсов или примитивов синхронизации, на которые ссылаются отправленные буферы команд, и любых семафоров, на которые ссылается pSubmits, не затрагиваются вызовом или его ошибкой. Если vkQueueSubmit завершается неудачей таким образом, что реализация не может дать такую гарантию, реализация должна вернуть VK_ERROR_DEVICE_LOST. См. Потерянное устройство.
Допустимое использование
- Если
fenceне равно VK_NULL_HANDLE,fenceдолжно быть несигнализированным- Если
fenceне равно VK_NULL_HANDLE,fenceне должно быть связано ни с какой другой командой очереди, выполнение которой ещё не завершено в этой очереди- Любые вызовы vkCmdSetEvent, vkCmdResetEvent или vkCmdWaitEvents, которые были записаны в любой из элементов буфера команд члена
pCommandBuffersлюбого элементаpSubmits, не должны ссылаться ни на один VkEvent, на который ссылаются какие-либо из этих команд в буфере команд, который был отправлен в другую очередь и всё ещё находится в ожидающем состоянии.- Любой флаг этапа, включённый в любой элемент члена
pWaitDstStageMaskлюбого элементаpSubmits, должен быть этапом конвейера, поддерживаемым одной из возможностейqueue, как указано в таблице поддерживаемых этапов конвейера.- Любой заданный элемент члена
pSignalSemaphoresлюбого элементаpSubmitsдолжен быть несигнализированным, когда операция сигнализации семафора, которую он определяет, выполняется на устройстве- Когда операция отмены сигнализации семафора, определяемая любым элементом члена
pWaitSemaphoresлюбого элементаpSubmits, выполняется наqueue, ни одна другая очередь не должна ожидать тот же семафор.- Все элементы члена
pWaitSemaphoresвсех элементовpSubmitsдолжны быть семафорами, которые сигнализированы или имеют операции сигнализации семафора, ранее отправленные для выполнения.- Любой заданный элемент члена
pCommandBuffersлюбого элементаpSubmitsдолжен находиться в ожидающем или выполняемом состоянии.- Если любой заданный элемент члена
pCommandBuffersлюбого элементаpSubmitsне был записан сVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, он не должен находиться в ожидающем состоянии.- Любые записанные вторичные буферы команд в любой заданный элемент члена
pCommandBuffersлюбого элементаpSubmitsдолжны находиться в ожидающем или выполняемом состоянии.- Если какие-либо записанные вторичные буферы команд в любой заданный элемент члена
pCommandBuffersлюбого элементаpSubmitsне были записаны сVK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, он не должен находиться в ожидающем состоянии.- Любой заданный элемент члена
pCommandBuffersлюбого элементаpSubmitsдолжен быть выделен изVkCommandPool, который был создан для того же семейства очередей, к которому принадлежитqueue.
Допустимое использование (Неявное)
queueдолжен быть допустимой дескрипторомVkQueue- Если
submitCountне равно0,pSubmitsдолжен быть указателем на массив изsubmitCountдопустимых структурVkSubmitInfo- Если
fenceне равно VK_NULL_HANDLE,fenceдолжен быть допустимой дескрипторомVkFence- И
fence, иqueue, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
Синхронизация хоста
- Доступ хоста к
queueдолжен быть внешне синхронизирован- Доступ хоста к
pSubmits[].pWaitSemaphores[] должен быть внешне синхронизирован- Доступ хоста к
pSubmits[].pSignalSemaphores[] должен быть внешне синхронизирован- Доступ хоста к
fenceдолжен быть внешне синхронизирован
Свойства команд
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
VkFence, VkQueue, VkSubmitInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkQueueSubmit
vkQueueWaitIdle(3)
Имя
vkQueueWaitIdle - Ожидание простоя очереди
C Спецификация
Чтобы дождаться на хосте завершения ожидающих операций очереди для данной очереди, вызовите:
VkResult vkQueueWaitIdle(
VkQueue queue); Параметры
-
queue— очередь, ожидания которой необходимо дождаться.
Описание
vkQueueWaitIdle эквивалентно отправке забора в очередь и ожиданию с бесконечным тайм-аутом сигнала от этого забора.
Допустимое использование (неявное)
queueдолжен быть допустимой дескрипторомVkQueue
Свойства команд
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkQueueWaitIdle
vkResetCommandBuffer(3)
Название
vkResetCommandBuffer - Сброс буфера команд в исходное состояние
C спецификация
Для сброса буферов команд вызовите:
VkResult vkResetCommandBuffer(
VkCommandBuffer commandBuffer,
VkCommandBufferResetFlags flags); Параметры
-
commandBuffer- буфер команд для сброса. Буфер команд может находиться в любом состоянии, кроме pending, и переводится в состояние initial state. -
flags- это битовая маска VkCommandBufferResetFlagBits, управляющая операцией сброса.
Описание
Любой первичный буфер команд, находящийся в состоянии записи или выполнимого состояния и имеющий commandBuffer записанный в него, становится недействительным.
Допустимое использование
commandBufferне должен находиться в состоянии pending statecommandBufferдолжен быть выделен из пула, созданного с помощьюVK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
Допустимое использование (неявное)
commandBufferдолжен быть допустимой дескрипторомVkCommandBufferflagsдолжен быть допустимым сочетанием значений VkCommandBufferResetFlagBits
Синхронизация хоста
- Доступ хоста к
commandBufferдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkCommandBuffer, VkCommandBufferResetFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkResetCommandBuffer
vkResetCommandPool(3)
Название
vkResetCommandPool - Сброс пула команд
C спецификация
Для сброса пула команд вызовите:
VkResult vkResetCommandPool(
VkDevice device,
VkCommandPool commandPool,
VkCommandPoolResetFlags flags); Параметры
-
device- логическое устройство, которому принадлежит пул команд. -
commandPool- пул команд для сброса. -
flags- это битовая маска VkCommandPoolResetFlagBits, управляющая операцией сброса.
Описание
Сброс пула команд возвращает все ресурсы из всех буферов команд, выделенных из пула команд, обратно в пул команд. Все буферы команд, выделенные из пула команд, переводятся в состояние initial state.
Любой первичный буфер команд, выделенный из другого VkCommandPool, находящийся в состоянии записи или выполнимого состояния и имеющий вторичный буфер команд, выделенный из commandPool записанный в него, становится недействительным.
Допустимое использование
- Все объекты
VkCommandBuffer, выделенные изcommandPool, не должны находиться в состоянии pending state
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicecommandPoolдолжен быть допустимой дескрипторомVkCommandPoolflagsдолжен быть допустимым сочетанием значений VkCommandPoolResetFlagBitscommandPoolдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
commandPoolдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkCommandPool, VkCommandPoolResetFlags, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkResetCommandPool
vkResetDescriptorPool(3)
Название
vkResetDescriptorPool - Сброс объекта пула дескрипторов
C спецификация
Чтобы вернуть все наборы дескрипторов, выделенные из данного пула, в пул, а не освобождать отдельные наборы дескрипторов, вызовите:
VkResult vkResetDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
VkDescriptorPoolResetFlags flags); Параметры
-
device- логическое устройство, которому принадлежит пул дескрипторов. -
descriptorPool- пул дескрипторов, который будет сброшен. -
flags- зарезервировано для будущего использования.
Описание
Сброс пула дескрипторов возвращает все ресурсы из всех наборов дескрипторов, выделенных из пула дескрипторов, обратно в пул дескрипторов, и наборы дескрипторов неявно освобождаются.
Допустимое использование
- Все использования
descriptorPool(через любые выделенные наборы дескрипторов) должны быть завершены
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicedescriptorPoolдолжен быть допустимой дескрипторомVkDescriptorPoolflagsдолжен быть0descriptorPoolдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
descriptorPoolдолжен быть синхронизирован внешним образом- Доступ хоста к любым объектам
VkDescriptorSet, выделенным изdescriptorPool, должен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
VkDescriptorPool, VkDescriptorPoolResetFlags, VkDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkResetDescriptorPool
vkResetEvent(3)
Название
vkResetEvent - Сброс события в несигнализируемое состояние
Спецификация C
Для установки состояния события в несигнализируемое состояние с хоста, вызовите:
VkResult vkResetEvent(
VkDevice device,
VkEvent event); Параметры
-
device- это логическое устройство, которому принадлежит событие. -
event- это событие для сброса.
Описание
Когда vkResetEvent выполняется на хосте, он определяет операцию снятия сигнала события, которая сбрасывает событие в несигнализируемое состояние.
Если event уже находится в несигнализируемом состоянии, когда выполняется vkResetEvent, то vkResetEvent не оказывает никакого действия, и операция снятия сигнала события не происходит.
Допустимое использование
eventне должно ожидать командуvkCmdWaitEvents, которая в данный момент выполняется
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceeventдолжен быть допустимой дескрипторомVkEventeventдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
eventдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkResetEvent
vkResetFences(3)
Имя
vkResetFences - Сбрасывает один или несколько объектов забора
Спецификация C
Для установки состояния заборов в несигнализируемое состояние с хоста, вызовите:
VkResult vkResetFences(
VkDevice device,
uint32_t fenceCount,
const VkFence* pFences); Параметры
-
device- это логическое устройство, которому принадлежат заборы. -
fenceCount- это количество заборов для сброса. -
pFences- это указатель на массив дескрипторов заборов для сброса.
Описание
Когда vkResetFences выполняется на хосте, он определяет операцию снятия сигнала забора для каждого забора, которая сбрасывает забор в несигнализируемое состояние.
Если любой член pFences уже находится в несигнализируемом состоянии, когда выполняется vkResetFences, то vkResetFences не оказывает никакого действия на этот забор.
Допустимое использование
- Любой заданный элемент
pFencesне должен в данный момент быть связан ни с одной командой очереди, которая еще не завершила выполнение в этой очереди
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepFencesдолжен быть указателем на массивfenceCountдопустимыхVkFenceдескрипторовfenceCountдолжен быть больше чем0- Каждый элемент
pFencesдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к каждому члену
pFencesдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkResetFences
vkSetEvent(3)
Имя
vkSetEvent - Установка события в сигнализируемое состояние
Спецификация C
Для установки состояния события в сигнализируемое состояние с хоста, вызовите:
VkResult vkSetEvent(
VkDevice device,
VkEvent event); Параметры
-
device- это логическое устройство, которому принадлежит событие. -
event- это событие для установки.
Описание
Когда vkSetEvent выполняется на хосте, он определяет операцию установки сигнала события, которая устанавливает событие в сигнализируемое состояние.
Если event уже находится в сигнализируемом состоянии, когда выполняется vkSetEvent, то vkSetEvent не оказывает никакого действия, и операция установки сигнала события не происходит.
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDeviceeventдолжен быть допустимой дескрипторомVkEventeventдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
eventдолжен быть синхронизирован внешним образом
Коды возврата
- Успех
VK_SUCCESS- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORY
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkSetEvent
vkUnmapMemory(3)
Имя
vkUnmapMemory - Отмена отображения ранее отображенного объекта памяти
Спецификация C
Для отмены отображения объекта памяти, когда доступ к нему с хоста больше не нужен приложению, вызовите:
void vkUnmapMemory(
VkDevice device,
VkDeviceMemory memory); Параметры
-
device- это логическое устройство, которому принадлежит память. -
memory- это объект памяти, отображение которого необходимо отменить.
Описание
Допустимое использование
memoryдолжен в данный момент быть отображен
Допустимое использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicememoryдолжен быть допустимой дескрипторомVkDeviceMemorymemoryдолжен быть создан, выделен или получен изdevice
Синхронизация хоста
- Доступ хоста к
memoryдолжен быть синхронизирован внешним образом
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkUnmapMemory
vkUpdateDescriptorSets(3)
Имя
vkUpdateDescriptorSets - Обновление содержимого объекта набора дескрипторов
Спецификация C
После выделения наборы дескрипторов могут быть обновлены с помощью комбинации операций записи и копирования. Для обновления наборов дескрипторов вызовите:
void vkUpdateDescriptorSets(
VkDevice device,
uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount,
const VkCopyDescriptorSet* pDescriptorCopies); Параметры
-
device- это логическое устройство, которое обновляет наборы дескрипторов. -
descriptorWriteCount- это количество элементов в массивеpDescriptorWrites. -
pDescriptorWrites- это указатель на массив структур VkWriteDescriptorSet, описывающих наборы дескрипторов для записи. -
descriptorCopyCount- это количество элементов в массивеpDescriptorCopies. -
pDescriptorCopies- это указатель на массив структур VkCopyDescriptorSet, описывающих наборы дескрипторов для копирования между ними.
Описание
Операции, описанные pDescriptorWrites, выполняются первыми, за которыми следуют операции, описанные pDescriptorCopies. Внутри каждого массива операции выполняются в том порядке, в котором они появляются в массиве.
Каждый элемент в массиве pDescriptorWrites описывает операцию обновления набора дескрипторов с использованием дескрипторов для ресурсов, указанных в структуре.
Каждый элемент в массиве pDescriptorCopies представляет собой структуру VkCopyDescriptorSet, описывающую операцию копирования дескрипторов между наборами.
Если член dstSet любого заданного элемента pDescriptorWrites или pDescriptorCopies связан, доступен или изменен любой командой, которая была записана в буфер команд, который в данный момент находится в состоянии записи или выполнении, этот буфер команд становится недействительным.
Правильное использование
- Элемент
dstSetлюбого данного элементаpDescriptorWritesилиpDescriptorCopiesне должен использоваться ни одной командой, которая была записана в буфер команд, находящийся в состоянии ожидания.
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevice- Если
descriptorWriteCountне0,pDescriptorWritesдолжен быть указателем на массив изdescriptorWriteCountдопустимых структурVkWriteDescriptorSet- Если
descriptorCopyCountне0,pDescriptorCopiesдолжен быть указателем на массив изdescriptorCopyCountдопустимых структурVkCopyDescriptorSet
Синхронизация хоста
- Доступ хоста к
pDescriptorWrites[].dstSet должен быть внешне синхронизирован- Доступ хоста к
pDescriptorCopies[].dstSet должен быть внешне синхронизирован
См. также
VkCopyDescriptorSet, VkDevice, VkWriteDescriptorSet
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkUpdateDescriptorSets
vkWaitForFences(3)
Имя
vkWaitForFences - Ожидание сигнализации одного или нескольких ограждений
Спецификация C
Чтобы дождаться перехода одного или нескольких ограждений в сигнализированное состояние на хосте, вызовите:
VkResult vkWaitForFences(
VkDevice device,
uint32_t fenceCount,
const VkFence* pFences,
VkBool32 waitAll,
uint64_t timeout); Параметры
-
device— логическое устройство, которому принадлежат ограждения. -
fenceCount— количество ограждений, ожидания которых необходимо дождаться. -
pFences— указатель на массив дескрипторов огражденийfenceCount. -
waitAll— условие, которое должно быть выполнено для успешного разблокирования ожидания. ЕслиwaitAllравноVK_TRUE, то условие состоит в том, что все ограждения вpFencesсигнализированы. В противном случае условие состоит в том, что по крайней мере одно ограждение вpFencesсигнализировано. -
timeout— период ожидания в наносекундах.timeoutкорректируется до ближайшего значения, допустимого точностью времени ожидания, зависящей от реализации, которая может значительно превышать одну наносекунду и может быть больше запрошенного периода.
Описание
Если условие выполняется при вызове vkWaitForFences, то vkWaitForFences возвращается немедленно. Если условие не выполняется в момент вызова vkWaitForFences, то vkWaitForFences будет блокироваться и ожидать до timeout наносекунд выполнения условия.
Если timeout равно нулю, то vkWaitForFences не ждет, а просто возвращает текущее состояние ограждений. VK_TIMEOUT будет возвращено в этом случае, если условие не выполнено, даже если фактическое ожидание не выполнялось.
Если произошла потеря устройства (см. Потеря устройства) до истечения периода ожидания, vkWaitForFences должен возвратить значение за конечное время либо VK_SUCCESS, либо VK_DEVICE_LOST.
Примечание
Хотя мы гарантируем, что
vkWaitForFencesдолжен возвращаться за конечное время, никаких гарантий не дается, что он вернется немедленно после потери устройства. Тем не менее, клиент может обоснованно ожидать, что задержка будет порядка секунд, и что вызовvkWaitForFencesне приведет к постоянно (или, по-видимому, постоянно) зависшему процессу.
Правильное использование (неявное)
deviceдолжен быть допустимой дескрипторомVkDevicepFencesдолжен быть указателем на массив изfenceCountдопустимых дескрипторовVkFencefenceCountдолжен быть больше0- Каждый элемент
pFencesдолжен быть создан, выделен или получен изdevice
Коды возврата
- Успех
VK_SUCCESSVK_TIMEOUT- Ошибка
VK_ERROR_OUT_OF_HOST_MEMORYVK_ERROR_OUT_OF_DEVICE_MEMORYVK_ERROR_DEVICE_LOST
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#vkWaitForFences
Дескрипторы объектов
VkBuffer(3)
Имя
VkBuffer - Непрозрачный дескриптор объекта буфера
Спецификация C
Буферы представляют собой линейные массивы данных, которые используются для различных целей путем привязки их к графическому или вычислительному конвейеру через наборы дескрипторов или через определенные команды, или путем непосредственного указания их в качестве параметров для определенных команд.
Буферы представлены дескрипторами VkBuffer:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
См. также
VkBufferMemoryBarrier, VkBufferViewCreateInfo, VkDescriptorBufferInfo, VkSparseBufferMemoryBindInfo, vkBindBufferMemory, vkCmdBindIndexBuffer, vkCmdBindVertexBuffers, vkCmdCopyBuffer, vkCmdCopyBufferToImage, vkCmdCopyImageToBuffer, vkCmdCopyQueryPoolResults, vkCmdDispatchIndirect, vkCmdDrawIndexedIndirect, vkCmdDrawIndirect, vkCmdFillBuffer, vkCmdUpdateBuffer, vkCreateBuffer, vkDestroyBuffer, vkGetBufferMemoryRequirements
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBuffer
VkBufferView(3)
Имя
VkBufferView - Непрозрачный дескриптор объекта представления буфера
Спецификация C
Представление буфера представляет собой непрерывный диапазон буфера и определенный формат, который будет использоваться для интерпретации данных. Представления буферов используются для того, чтобы шейдеры могли получать доступ к содержимому буфера, интерпретируемому как данные с определенным форматом. Для создания допустимого представления буфера буфер должен быть создан по крайней мере с одним из следующих флагов использования:
-
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT -
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
Представления буферов представлены дескрипторами VkBufferView:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
См. также
VkWriteDescriptorSet, vkCreateBufferView, vkDestroyBufferView
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferView
VkCommandBuffer(3)
Имя
VkCommandBuffer - Непрозрачный дескриптор объекта буфера команд
Спецификация C
Буферы команд — это объекты, используемые для записи команд, которые могут впоследствии отправляться в очередь устройства для выполнения. Существуют два уровня буферов команд — основные буферы команд, которые могут выполнять вспомогательные буферы команд и которые отправляются в очереди, и вспомогательные буферы команд, которые могут выполняться основными буферами команд и которые не отправляются непосредственно в очереди.
Буферы команд представлены дескрипторами VkCommandBuffer:
VK_DEFINE_HANDLE(VkCommandBuffer)
См. также
VkSubmitInfo, vkAllocateCommandBuffers, vkBeginCommandBuffer, vkCmdBeginQuery, vkCmdBeginRenderPass, vkCmdBindDescriptorSets, vkCmdBindIndexBuffer, vkCmdBindPipeline, vkCmdBindVertexBuffers, vkCmdBlitImage, vkCmdClearAttachments, vkCmdClearColorImage, vkCmdClearDepthStencilImage, vkCmdCopyBuffer, vkCmdCopyBufferToImage, vkCmdCopyImage, vkCmdCopyImageToBuffer, vkCmdCopyQueryPoolResults, vkCmdDispatch, vkCmdDispatchIndirect, vkCmdDraw, vkCmdDrawIndexed, vkCmdDrawIndexedIndirect, vkCmdDrawIndirect, vkCmdEndQuery, vkCmdEndRenderPass, vkCmdExecuteCommands, vkCmdFillBuffer, vkCmdNextSubpass, vkCmdPipelineBarrier, vkCmdPushConstants, vkCmdResetEvent, vkCmdResetQueryPool, vkCmdResolveImage, vkCmdSetBlendConstants, vkCmdSetDepthBias, vkCmdSetDepthBounds, vkCmdSetEvent, vkCmdSetLineWidth, vkCmdSetScissor, vkCmdSetStencilCompareMask, vkCmdSetStencilReference, vkCmdSetStencilWriteMask, vkCmdSetViewport, vkCmdUpdateBuffer, vkCmdWaitEvents, vkCmdWriteTimestamp, vkEndCommandBuffer, vkFreeCommandBuffers, vkResetCommandBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBuffer
VkCommandPool(3)
Имя
VkCommandPool - Непрозрачная дескрипторная ссылка на объект пула команд
C Спецификация
Пулы команд — это непрозрачные объекты, из которых выделяется память буфера команд, и которые позволяют реализации амортизировать затраты на создание ресурсов для нескольких буферов команд. Пулы команд являются внешне синхронизированными, а это значит, что пул команд не должен использоваться одновременно в нескольких потоках. Это включает использование с помощью записи команд в любых буферах команд, выделенных из пула, а также операции, которые выделяют, освобождают и сбрасывают буферы команд или сам пул.
Пулы команд представлены дескрипторами VkCommandPool:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
См. также
VkCommandBufferAllocateInfo, vkCreateCommandPool, vkDestroyCommandPool, vkFreeCommandBuffers, vkResetCommandPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPool
VkDescriptorPool(3)
Имя
VkDescriptorPool - Непрозрачная дескрипторная ссылка на объект пула дескрипторов
C Спецификация
Пул дескрипторов поддерживает пул дескрипторов, из которого выделяются наборы дескрипторов. Пулы дескрипторов являются внешне синхронизированными, а это значит, что приложение не должно выделять и/или освобождать наборы дескрипторов из одного и того же пула в нескольких потоках одновременно.
Пулы дескрипторов представлены дескрипторами VkDescriptorPool:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
См. также
VkDescriptorSetAllocateInfo, vkCreateDescriptorPool, vkDestroyDescriptorPool, vkFreeDescriptorSets, vkResetDescriptorPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPool
VkDescriptorSet(3)
Имя
VkDescriptorSet - Непрозрачная дескрипторная ссылка на объект набора дескрипторов
C Спецификация
Наборы дескрипторов выделяются из объектов пула дескрипторов и представлены дескрипторами VkDescriptorSet:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
См. также
VkCopyDescriptorSet, VkWriteDescriptorSet, vkAllocateDescriptorSets, vkCmdBindDescriptorSets, vkFreeDescriptorSets
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSet
VkDescriptorSetLayout(3)
Имя
VkDescriptorSetLayout - Непрозрачная дескрипторная ссылка на объект компоновки набора дескрипторов
C Спецификация
Объект компоновки набора дескрипторов определяется массивом из нуля или более привязок дескрипторов. Каждая отдельная привязка дескриптора задается типом дескриптора, количеством (размером массива) дескрипторов в привязке, набором этапов шейдера, которые могут получить доступ к привязке, и (при использовании неизменяемых семплеров) массивом дескрипторов семплеров.
Объекты компоновки набора дескрипторов представлены дескрипторами VkDescriptorSetLayout:
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
См. также
VkDescriptorSetAllocateInfo, VkPipelineLayoutCreateInfo, vkCreateDescriptorSetLayout, vkDestroyDescriptorSetLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSetLayout
VkDevice(3)
Имя
VkDevice - Непрозрачная дескрипторная ссылка на объект устройства
C Спецификация
Логические устройства представлены дескрипторами VkDevice:
VK_DEFINE_HANDLE(VkDevice)
См. также
vkAllocateCommandBuffers, vkAllocateDescriptorSets, vkAllocateMemory, vkBindBufferMemory, vkBindImageMemory, vkCreateBuffer, vkCreateBufferView, vkCreateCommandPool, vkCreateComputePipelines, vkCreateDescriptorPool, vkCreateDescriptorSetLayout, vkCreateDevice, vkCreateEvent, vkCreateFence, vkCreateFramebuffer, vkCreateGraphicsPipelines, vkCreateImage, vkCreateImageView, vkCreatePipelineCache, vkCreatePipelineLayout, vkCreateQueryPool, vkCreateRenderPass, vkCreateSampler, vkCreateSemaphore, vkCreateShaderModule, vkDestroyBuffer, vkDestroyBufferView, vkDestroyCommandPool, vkDestroyDescriptorPool, vkDestroyDescriptorSetLayout, vkDestroyDevice, vkDestroyEvent, vkDestroyFence, vkDestroyFramebuffer, vkDestroyImage, vkDestroyImageView, vkDestroyPipeline, vkDestroyPipelineCache, vkDestroyPipelineLayout, vkDestroyQueryPool, vkDestroyRenderPass, vkDestroySampler, vkDestroySemaphore, vkDestroyShaderModule, vkDeviceWaitIdle, vkFlushMappedMemoryRanges, vkFreeCommandBuffers, vkFreeDescriptorSets, vkFreeMemory, vkGetBufferMemoryRequirements, vkGetDeviceMemoryCommitment, vkGetDeviceProcAddr, vkGetDeviceQueue, vkGetEventStatus, vkGetFenceStatus, vkGetImageMemoryRequirements, vkGetImageSparseMemoryRequirements, vkGetImageSubresourceLayout, vkGetPipelineCacheData, vkGetQueryPoolResults, vkGetRenderAreaGranularity, vkInvalidateMappedMemoryRanges, vkMapMemory, vkMergePipelineCaches, vkResetCommandPool, vkResetDescriptorPool, vkResetEvent, vkResetFences, vkSetEvent, vkUnmapMemory, vkUpdateDescriptorSets, vkWaitForFences
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDevice
VkDeviceMemory(3)
Имя
VkDeviceMemory - Непрозрачная дескрипторная переменная объекта памяти устройства
C Спецификация
Устройство Vulkan работает с данными в памяти устройства через объекты памяти, которые представлены в API дескриптором VkDeviceMemory.
Объекты памяти представлены дескрипторами VkDeviceMemory;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
См. также
VkMappedMemoryRange, VkSparseImageMemoryBind, VkSparseMemoryBind, vkAllocateMemory, vkBindBufferMemory, vkBindImageMemory, vkFreeMemory, vkGetDeviceMemoryCommitment, vkMapMemory, vkUnmapMemory
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceMemory
VkEvent(3)
Имя
VkEvent - Непрозрачная дескрипторная переменная объекта события
C Спецификация
События — это примитив синхронизации, который может использоваться для вставки мелкозернистой зависимости между командами, отправленными в одну и ту же очередь, или между хостом и очередью. События имеют два состояния — сигнальное и несигнальное. Приложение может установить сигнальное событие или снять его сигнал на хосте или устройстве. Устройство может ожидать, пока событие не станет сигнальным, прежде чем выполнять дальнейшие операции. Команды ожидания события, пока оно не станет сигнальным на хосте, не существует, но текущее состояние события можно запросить.
События представлены дескрипторами VkEvent;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
См. также
vkCmdResetEvent, vkCmdSetEvent, vkCmdWaitEvents, vkCreateEvent, vkDestroyEvent, vkGetEventStatus, vkResetEvent, vkSetEvent
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkEvent
VkFence(3)
Имя
VkFence - Непрозрачная дескрипторная переменная объекта ограждения
C Спецификация
Ограждения — это примитив синхронизации, который может использоваться для вставки зависимости от очереди к хосту. Ограждения имеют два состояния — сигнальное и несигнальное. Ограждение может быть установлено в сигнальное состояние как часть выполнения команды отправки в очередь. Сигнал ограждения можно снять на хосте с помощью vkResetFences. Хост может ожидать ограждения с помощью команды vkWaitForFences, а текущее состояние можно запросить с помощью vkGetFenceStatus.
Ограждения представлены дескрипторами VkFence;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
См. также
vkCreateFence, vkDestroyFence, vkGetFenceStatus, vkQueueBindSparse, vkQueueSubmit, vkResetFences, vkWaitForFences
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFence
VkFramebuffer(3)
Имя
VkFramebuffer - Непрозрачная дескрипторная переменная объекта фреймбуфера
C Спецификация
Процессы отрисовки работают в сочетании с фреймбуферами. Фреймбуферы представляют собой набор конкретных вложений памяти, которые использует экземпляр процесса отрисовки.
Фреймбуферы представлены дескрипторами VkFramebuffer;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
См. также
VkCommandBufferInheritanceInfo, VkRenderPassBeginInfo, vkCreateFramebuffer, vkDestroyFramebuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFramebuffer
VkImage(3)
Имя
VkImage - Непрозрачная дескрипторная переменная объекта изображения
C Спецификация
Изображения представляют собой многомерные — до 3 — массивы данных, которые могут использоваться для различных целей (например, вложения, текстуры), связывая их с графическим или вычислительным конвейером через наборы дескрипторов или напрямую указывая их в качестве параметров для определенных команд.
Изображения представлены дескрипторами VkImage;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
См. также
VkImageMemoryBarrier, VkImageViewCreateInfo, VkSparseImageMemoryBindInfo, VkSparseImageOpaqueMemoryBindInfo, vkBindImageMemory, vkCmdBlitImage, vkCmdClearColorImage, vkCmdClearDepthStencilImage, vkCmdCopyBufferToImage, vkCmdCopyImage, vkCmdCopyImageToBuffer, vkCmdResolveImage, vkCreateImage, vkDestroyImage, vkGetImageMemoryRequirements, vkGetImageSparseMemoryRequirements, vkGetImageSubresourceLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImage
VkImageView(3)
Имя
VkImageView - Непрозрачная дескрипторная переменная объекта представления изображения
C Спецификация
Объекты изображений не доступны напрямую шейдерам конвейера для чтения или записи данных изображения. Вместо этого для этой цели используются представления изображений, представляющие собой непрерывные диапазоны подобъектов изображения и содержащие дополнительные метаданные. Представления должны быть созданы на изображениях совместимых типов и должны представлять собой допустимое подмножество подобъектов изображения.
Представления изображений представлены дескрипторами VkImageView;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
См. также
VkDescriptorImageInfo, VkFramebufferCreateInfo, vkCreateImageView, vkDestroyImageView
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageView
VkInstance(3)
Имя
VkInstance - Непрозрачный дескриптор объекта экземпляра
C-спецификация
В Vulkan отсутствует глобальное состояние, и все состояние на уровне приложения хранится в объекте VkInstance. Создание объекта VkInstance инициализирует библиотеку Vulkan и позволяет приложению передавать информацию о себе в реализацию.
Экземпляры представлены дескрипторами VkInstance;
VK_DEFINE_HANDLE(VkInstance)
См. также
vkCreateInstance, vkDestroyInstance, vkEnumeratePhysicalDevices, vkGetInstanceProcAddr
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkInstance
VkPhysicalDevice(3)
Имя
VkPhysicalDevice - Непрозрачный дескриптор объекта физического устройства
C-спецификация
Vulkan разделяет концепции физических и логических устройств. Физическое устройство обычно представляет собой одно устройство в системе (возможно, состоящее из нескольких отдельных аппаратных устройств, работающих вместе), количество которых конечно. Логическое устройство представляет собой представление устройства приложением.
Физические устройства представлены дескрипторами VkPhysicalDevice;
VK_DEFINE_HANDLE(VkPhysicalDevice)
См. также
vkCreateDevice, vkEnumerateDeviceExtensionProperties, vkEnumerateDeviceLayerProperties, vkEnumeratePhysicalDevices, vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFormatProperties, vkGetPhysicalDeviceImageFormatProperties, vkGetPhysicalDeviceMemoryProperties, vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceQueueFamilyProperties, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDevice
VkPipeline(3)
Имя
VkPipeline - Непрозрачный дескриптор объекта конвейера
C-спецификация
Вычислительные и графические конвейеры представлены дескрипторами VkPipeline;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
См. также
VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, vkCmdBindPipeline, vkCreateComputePipelines, vkCreateGraphicsPipelines, vkDestroyPipeline
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipeline
VkPipelineCache(3)
Имя
VkPipelineCache - Непрозрачный дескриптор объекта кэша конвейеров
C-спецификация
Объекты кэша конвейеров позволяют повторно использовать результат построения конвейера между конвейерами и между запусками приложения. Повторное использование между конвейерами достигается путем передачи одного и того же объекта кэша конвейеров при создании нескольких связанных конвейеров. Повторное использование между запусками приложения достигается путем извлечения содержимого кэша конвейеров в одном запуске приложения, сохранения содержимого и использования его для предварительной инициализации кэша конвейеров при последующем запуске. Содержимое объектов кэша конвейеров управляется реализацией. Приложения могут управлять памятью хоста, потребляемой объектом кэша конвейеров, и контролировать объем данных, извлекаемых из объекта кэша конвейеров.
Объекты кэша конвейеров представлены дескрипторами VkPipelineCache;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
См. также
vkCreateComputePipelines, vkCreateGraphicsPipelines, vkCreatePipelineCache, vkDestroyPipelineCache, vkGetPipelineCacheData, vkMergePipelineCaches
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCache
VkPipelineLayout(3)
Имя
VkPipelineLayout - Непрозрачный дескриптор объекта компоновки конвейера
C-спецификация
Доступ к наборам дескрипторов из конвейера осуществляется через компоновку конвейера. Нуль или более компоновок наборов дескрипторов и нуль или более диапазонов константных данных объединяются для формирования объекта компоновки конвейера, который описывает полный набор ресурсов, к которым можно получить доступ из конвейера. Компоновка конвейера представляет собой последовательность наборов дескрипторов, каждый из которых имеет определенную компоновку. Эта последовательность компоновок используется для определения интерфейса между этапами шейдера и ресурсами шейдера. Каждый конвейер создается с использованием компоновки конвейера.
Объекты компоновки конвейера представлены дескрипторами VkPipelineLayout;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
См. также
VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, vkCmdBindDescriptorSets, vkCmdPushConstants, vkCreatePipelineLayout, vkDestroyPipelineLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineLayout
VkQueryPool(3)
Имя
VkQueryPool - Непрозрачный дескриптор объекта пула запросов
C-спецификация
Запросы управляются с помощью объектов пула запросов. Каждый пул запросов представляет собой набор определенного количества запросов определенного типа.
Пулы запросов представлены дескрипторами VkQueryPool;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
См. также
vkCmdBeginQuery, vkCmdCopyQueryPoolResults, vkCmdEndQuery, vkCmdResetQueryPool, vkCmdWriteTimestamp, vkCreateQueryPool, vkDestroyQueryPool, vkGetQueryPoolResults
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryPool
VkQueue(3)
Имя
VkQueue - Непрозрачный дескриптор объекта очереди
C-спецификация
Создание логического устройства также создает очереди, связанные с этим устройством. Очереди для создания описываются набором структур VkDeviceQueueCreateInfo, которые передаются в vkCreateDevice в pQueueCreateInfos.
Очереди представлены дескрипторами VkQueue;
VK_DEFINE_HANDLE(VkQueue)
См. также
vkGetDeviceQueue, vkQueueBindSparse, vkQueueSubmit, vkQueueWaitIdle
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueue
VkRenderPass(3)
Имя
VkRenderPass - Непрозрачный дескриптор объекта прохода рендеринга
C-спецификация
Проход рендеринга представляет собой набор вложений, подпроходов и зависимостей между подпроходами и описывает, как используются вложения в течение подпроходов. Использование прохода рендеринга в буфере команд представляет собой экземпляр прохода рендеринга.
Проходы рендеринга представлены дескрипторами VkRenderPass;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
См. также
VkCommandBufferInheritanceInfo, VkFramebufferCreateInfo, VkGraphicsPipelineCreateInfo, VkRenderPassBeginInfo, vkCreateRenderPass, vkDestroyRenderPass, vkGetRenderAreaGranularity
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkRenderPass
VkSampler(3)
Имя
VkSampler - Непрозрачная дескриптор объекта семплера
C Спецификация
VkSampler объекты представляют состояние семплера изображения, который используется реализацией для чтения данных изображения и применения фильтрации и других преобразований для шейдера.
Семплеры представлены дескрипторами VkSampler;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
См. также
VkDescriptorImageInfo, VkDescriptorSetLayoutBinding, vkCreateSampler, vkDestroySampler
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSampler
VkSemaphore(3)
Имя
VkSemaphore - Непрозрачная дескриптор объекта семафора
C Спецификация
Семафоры — это примитив синхронизации, который может использоваться для вставки зависимости между пакетами, отправляемыми в очереди. Семафоры имеют два состояния — сигнальный и несигнальный. Состояние семафора может быть установлено в сигнальное после завершения выполнения пакета команд. Пакет может ожидать, пока семафор не станет сигнальным, прежде чем начать выполнение, и семафор также устанавливается в несигнальное состояние перед началом выполнения пакета.
Семафоры представлены дескрипторами VkSemaphore;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
См. также
VkBindSparseInfo, VkSubmitInfo, vkCreateSemaphore, vkDestroySemaphore
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSemaphore
VkShaderModule(3)
Имя
VkShaderModule - Непрозрачная дескриптор объекта модуля шейдера
C Спецификация
Модули шейдеров содержат код шейдера и одну или несколько точек входа. Шейдеры выбираются из модуля шейдера путем указания точки входа в рамках создания конвейера. Этапы конвейера могут использовать шейдеры из разных модулей. Код шейдера, определяющий модуль шейдера, должен быть в формате SPIR-V, как описано в приложении Vulkan Environment for SPIR-V.
Модули шейдеров представлены дескрипторами VkShaderModule;
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
См. также
VkPipelineShaderStageCreateInfo, vkCreateShaderModule, vkDestroyShaderModule
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkShaderModule
Структуры
VkAllocationCallbacks(3)
Имя
VkAllocationCallbacks - Структура, содержащая указатели на функции обратного вызова для выделения памяти
C Спецификация
Выделители предоставляются приложением в виде указателя на структуру VkAllocationCallbacks;
typedef struct VkAllocationCallbacks {
void* pUserData;
PFN_vkAllocationFunction pfnAllocation;
PFN_vkReallocationFunction pfnReallocation;
PFN_vkFreeFunction pfnFree;
PFN_vkInternalAllocationNotification pfnInternalAllocation;
PFN_vkInternalFreeNotification pfnInternalFree;
} VkAllocationCallbacks; Члены
-
pUserData— это значение, которое должно интерпретироваться реализацией обратных вызовов. Когда вызывается любой из обратных вызовов вVkAllocationCallbacks, реализация Vulkan передаст это значение в качестве первого параметра обратного вызова. Это значение может изменяться каждый раз, когда выделятель передается в команду, даже когда один и тот же объект принимает выделятель в нескольких командах. -
pfnAllocation— это указатель на функцию выделения памяти, определяемую приложением, типа PFN_vkAllocationFunction. -
pfnReallocation— это указатель на функцию перераспределения памяти, определяемую приложением, типа PFN_vkReallocationFunction. -
pfnFree— это указатель на функцию освобождения памяти, определяемую приложением, типа PFN_vkFreeFunction. -
pfnInternalAllocation— это указатель на функцию, определяемую приложением, которая вызывается реализацией, когда реализация выполняет внутренние выделения, и она имеет тип PFN_vkInternalAllocationNotification. -
pfnInternalFree— это указатель на функцию, определяемую приложением, которая вызывается реализацией, когда реализация освобождает внутренние выделения, и она имеет тип PFN_vkInternalFreeNotification.
Описание
Правильное использование
pfnAllocationдолжен быть указателем на допустимую определяемую пользователем функцию PFN_vkAllocationFunctionpfnReallocationдолжен быть указателем на допустимую определяемую пользователем функцию PFN_vkReallocationFunctionpfnFreeдолжен быть указателем на допустимую определяемую пользователем функцию PFN_vkFreeFunction- Если ни
pfnInternalAllocation, ниpfnInternalFreeне являетсяNULL, то оба должны быть допустимыми обратными вызовами
См. также
PFN_vkAllocationFunction, PFN_vkFreeFunction, PFN_vkInternalAllocationNotification, PFN_vkInternalFreeNotification, PFN_vkReallocationFunction, vkAllocateMemory, vkCreateBuffer, vkCreateBufferView, vkCreateCommandPool, vkCreateComputePipelines, vkCreateDescriptorPool, vkCreateDescriptorSetLayout, vkCreateDevice, vkCreateEvent, vkCreateFence, vkCreateFramebuffer, vkCreateGraphicsPipelines, vkCreateImage, vkCreateImageView, vkCreateInstance, vkCreatePipelineCache, vkCreatePipelineLayout, vkCreateQueryPool, vkCreateRenderPass, vkCreateSampler, vkCreateSemaphore, vkCreateShaderModule, vkDestroyBuffer, vkDestroyBufferView, vkDestroyCommandPool, vkDestroyDescriptorPool, vkDestroyDescriptorSetLayout, vkDestroyDevice, vkDestroyEvent, vkDestroyFence, vkDestroyFramebuffer, vkDestroyImage, vkDestroyImageView, vkDestroyInstance, vkDestroyPipeline, vkDestroyPipelineCache, vkDestroyPipelineLayout, vkDestroyQueryPool, vkDestroyRenderPass, vkDestroySampler, vkDestroySemaphore, vkDestroyShaderModule, vkFreeMemory
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAllocationCallbacks
VkApplicationInfo(3)
Имя
VkApplicationInfo - Структура, указывающая информацию о приложении
C Спецификация
Структура VkApplicationInfo определена как:
typedef struct VkApplicationInfo {
VkStructureType sType;
const void* pNext;
const char* pApplicationName;
uint32_t applicationVersion;
const char* pEngineName;
uint32_t engineVersion;
uint32_t apiVersion;
} VkApplicationInfo; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
pApplicationName— этоNULLили указатель на завершающуюся нулём строку UTF-8, содержащую имя приложения. -
applicationVersion— это переменная без знака целого числа, содержащая предоставленный разработчиком номер версии приложения. -
pEngineName— этоNULLили указатель на завершающуюся нулём строку UTF-8, содержащую имя движка (если таковой имеется), используемого для создания приложения. -
engineVersion— это переменная без знака целого числа, содержащая предоставленный разработчиком номер версии движка, используемого для создания приложения. -
apiVersion— это версия API Vulkan, с которой приложение ожидает работать, закодированная, как описано в разделе API Version Numbers and Semantics. ЕслиapiVersionравно 0, реализация должна игнорировать его, в противном случае, если реализация не поддерживает запрашиваемую версиюapiVersion, или эффективный заменитель дляapiVersion, она должна вернутьVK_ERROR_INCOMPATIBLE_DRIVER. Номер версии патча, указанный вapiVersion, игнорируется при создании объекта экземпляра. Только основные и второстепенные версии экземпляра должны совпадать с теми, которые запрошены вapiVersion.
Описание
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_APPLICATION_INFOpNextдолжно бытьNULL- Если
pApplicationNameнеNULL,pApplicationNameдолжно быть строкой UTF-8 с завершающим нулем- Если
pEngineNameнеNULL,pEngineNameдолжно быть строкой UTF-8 с завершающим нулем
См. также
VkInstanceCreateInfo, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkApplicationInfo
VkAttachmentDescription(3)
Имя
VkAttachmentDescription - Структура, определяющая описание вложения
C-спецификация
Структура VkAttachmentDescription определяется как:
typedef struct VkAttachmentDescription {
VkAttachmentDescriptionFlags flags;
VkFormat format;
VkSampleCountFlagBits samples;
VkAttachmentLoadOp loadOp;
VkAttachmentStoreOp storeOp;
VkAttachmentLoadOp stencilLoadOp;
VkAttachmentStoreOp stencilStoreOp;
VkImageLayout initialLayout;
VkImageLayout finalLayout;
} VkAttachmentDescription; Члены
-
flags- это битовая маска VkAttachmentDescriptionFlagBits, указывающая дополнительные свойства вложения. -
format- это значение VkFormat, указывающее формат изображения, которое будет использоваться для вложения. -
samples- это количество выборок изображения, как определено в VkSampleCountFlagBits. -
loadOp- это значение VkAttachmentLoadOp, указывающее, как обрабатывается содержимое цветовых и глубинных компонентов вложения в начале подпрохода, где оно используется впервые. -
storeOp- это значение VkAttachmentStoreOp, указывающее, как обрабатывается содержимое цветовых и глубинных компонентов вложения в конце подпрохода, где оно используется в последний раз. -
stencilLoadOp- это значение VkAttachmentLoadOp, указывающее, как обрабатывается содержимое трафаретных компонентов вложения в начале подпрохода, где оно используется впервые. -
stencilStoreOp- это значение VkAttachmentStoreOp, указывающее, как обрабатывается содержимое трафаретных компонентов вложения в конце последнего подпрохода, где оно используется. -
initialLayout- это компоновка, в которой будет находиться подобъект изображения вложения, когда начинается экземпляр прохода рендеринга. -
finalLayout- это компоновка, в которую будет переведен подобъект изображения вложения, когда заканчивается экземпляр прохода рендеринга. Во время экземпляра прохода рендеринга вложение может использовать другую компоновку в каждом подпроходе, если это необходимо.
Описание
Если вложение использует цветовой формат, то используются loadOp и storeOp, а stencilLoadOp и stencilStoreOp игнорируются. Если формат имеет компоненты глубины и/или трафарета, loadOp и storeOp применяются только к данным глубины, а stencilLoadOp и stencilStoreOp определяют, как обрабатываются данные трафарета. loadOp и stencilLoadOp определяют операции загрузки, которые выполняются как часть первого подпрохода, использующего вложение. storeOp и stencilStoreOp определяют операции хранения, которые выполняются как часть последнего подпрохода, использующего вложение.
Операция загрузки для каждой выборки во вложении происходит до любой записанной команды, которая обращается к выборке в первом подпроходе, где используется вложение. Операции загрузки для вложений с форматом глубины/трафарета выполняются на этапе конвейера VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT. Операции загрузки для вложений с цветовым форматом выполняются на этапе конвейера VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT.
Операция хранения для каждой выборки во вложении происходит после любой записанной команды, которая обращается к выборке в последнем подпроходе, где используется вложение. Операции хранения для вложений с форматом глубины/трафарета выполняются на этапе конвейера VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT. Операции хранения для вложений с цветовым форматом выполняются на этапе конвейера VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT.
Если вложение не используется ни одним подпроходом, то loadOp, storeOp, stencilStoreOp и stencilLoadOp игнорируются, и содержимое памяти вложения не будет изменено выполнением экземпляра прохода рендеринга.
Во время экземпляра прохода рендеринга входные/цветовые вложения с цветовыми форматами, имеющими размер компонента 8, 16 или 32 бита, должны быть представлены в формате вложения в течение всего экземпляра. Вложения с другими форматами цветов с плавающей или фиксированной точкой или с компонентами глубины могут быть представлены в формате с более высокой точностью, чем формат вложения, но должны быть представлены с тем же диапазоном. Когда такой компонент загружается с помощью loadOp, он будет преобразован в формат, зависящий от реализации, используемый проходом рендеринга. Такие компоненты должны быть преобразованы из формата прохода рендеринга в формат вложения, прежде чем они будут разрешены или сохранены в конце экземпляра прохода рендеринга через storeOp. Преобразования выполняются, как описано в Числовое представление и вычисления и Преобразования данных с фиксированной точкой.
Если flags включает VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, то вложение обрабатывается так, как если бы оно совместно использовало физическую память с другим вложением в одном и том же проходе рендеринга. Эта информация ограничивает способность реализации переупорядочивать определенные операции (такие как переходы компоновки и loadOp) таким образом, чтобы она не была неправильно переупорядочена по отношению к другим использованиям той же физической памяти через другое вложение. Это описано более подробно ниже.
Допустимое использование
finalLayoutне должно бытьVK_IMAGE_LAYOUT_UNDEFINEDилиVK_IMAGE_LAYOUT_PREINITIALIZED
Допустимое использование (неявное)
flagsдолжно быть допустимым сочетанием значений VkAttachmentDescriptionFlagBitsformatдолжно быть допустимым значением VkFormatsamplesдолжно быть допустимым значением VkSampleCountFlagBitsloadOpдолжно быть допустимым значением VkAttachmentLoadOpstoreOpдолжно быть допустимым значением VkAttachmentStoreOpstencilLoadOpдолжно быть допустимым значением VkAttachmentLoadOpstencilStoreOpдолжно быть допустимым значением VkAttachmentStoreOpinitialLayoutдолжно быть допустимым значением VkImageLayoutfinalLayoutдолжно быть допустимым значением VkImageLayout
См. также
VkAttachmentDescriptionFlags, VkAttachmentLoadOp, VkAttachmentStoreOp, VkFormat, VkImageLayout, VkRenderPassCreateInfo, VkSampleCountFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentDescription
VkAttachmentReference(3)
Имя
VkAttachmentReference - Структура, определяющая ссылку на вложение
C-спецификация
Структура VkAttachmentReference определяется как:
typedef struct VkAttachmentReference {
uint32_t attachment;
VkImageLayout layout;
} VkAttachmentReference; Члены
-
attachment- это индекс вложения прохода рендеринга, и соответствует индексу соответствующего элемента в массивеpAttachmentsструктурыVkRenderPassCreateInfo. Если какие-либо цветовые или глубинные/трафаретные вложенияVK_ATTACHMENT_UNUSED, то для этих вложений не происходит записи. -
layout- это значение VkImageLayout, указывающее компоновку, используемую вложением во время подпрохода.
Описание
Допустимое использование
layoutне должно бытьVK_IMAGE_LAYOUT_UNDEFINEDилиVK_IMAGE_LAYOUT_PREINITIALIZED
Допустимое использование (неявное)
layoutдолжно быть допустимым значением VkImageLayout
См. также
VkImageLayout, VkSubpassDescription
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentReference
VkBindSparseInfo(3)
Имя
VkBindSparseInfo - Структура, определяющая операцию разреженного связывания
C-спецификация
Структура VkBindSparseInfo определяется как:
typedef struct VkBindSparseInfo {
VkStructureType sType;
const void* pNext;
uint32_t waitSemaphoreCount;
const VkSemaphore* pWaitSemaphores;
uint32_t bufferBindCount;
const VkSparseBufferMemoryBindInfo* pBufferBinds;
uint32_t imageOpaqueBindCount;
const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
uint32_t imageBindCount;
const VkSparseImageMemoryBindInfo* pImageBinds;
uint32_t signalSemaphoreCount;
const VkSemaphore* pSignalSemaphores;
} VkBindSparseInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
waitSemaphoreCountis the number of semaphores upon which to wait before executing the sparse binding operations for the batch. -
pWaitSemaphoresis a pointer to an array of semaphores upon which to wait on before the sparse binding operations for this batch begin execution. If semaphores to wait on are provided, they define a semaphore wait operation. -
bufferBindCountis the number of sparse buffer bindings to perform in the batch. -
pBufferBindsis a pointer to an array of VkSparseBufferMemoryBindInfo structures. -
imageOpaqueBindCountis the number of opaque sparse image bindings to perform. -
pImageOpaqueBindsis a pointer to an array of VkSparseImageOpaqueMemoryBindInfo structures, indicating opaque sparse image bindings to perform. -
imageBindCountis the number of sparse image bindings to perform. -
pImageBindsis a pointer to an array of VkSparseImageMemoryBindInfo structures, indicating sparse image bindings to perform. -
signalSemaphoreCountis the number of semaphores to be signaled once the sparse binding operations specified by the structure have completed execution. -
pSignalSemaphoresis a pointer to an array of semaphores which will be signaled when the sparse binding operations for this batch have completed execution. If semaphores to be signaled are provided, they define a semaphore signal operation.
Описание
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_BIND_SPARSE_INFOpNextдолжно бытьNULL- Если
waitSemaphoreCountне0,pWaitSemaphoresдолжно быть указателем на массив изwaitSemaphoreCountдопустимыхVkSemaphoreдескрипторов- Если
bufferBindCountне0,pBufferBindsдолжно быть указателем на массив изbufferBindCountдопустимыхVkSparseBufferMemoryBindInfoструктур- Если
imageOpaqueBindCountне0,pImageOpaqueBindsдолжно быть указателем на массив изimageOpaqueBindCountдопустимыхVkSparseImageOpaqueMemoryBindInfoструктур- Если
imageBindCountне0,pImageBindsдолжно быть указателем на массив изimageBindCountдопустимыхVkSparseImageMemoryBindInfoструктур- Если
signalSemaphoreCountне0,pSignalSemaphoresдолжно быть указателем на массив изsignalSemaphoreCountдопустимыхVkSemaphoreдескрипторов- Оба элемента
pSignalSemaphores, и элементыpWaitSemaphores, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkSemaphore, VkSparseBufferMemoryBindInfo, VkSparseImageMemoryBindInfo, VkSparseImageOpaqueMemoryBindInfo, VkStructureType, vkQueueBindSparse
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBindSparseInfo
VkBufferCopy(3)
Имя
VkBufferCopy - Структура, определяющая операцию копирования буфера
C Спецификация
Структура VkBufferCopy определяется как:
typedef struct VkBufferCopy {
VkDeviceSize srcOffset;
VkDeviceSize dstOffset;
VkDeviceSize size;
} VkBufferCopy; Члены
-
srcOffsetis the starting offset in bytes from the start ofsrcBuffer. -
dstOffsetis the starting offset in bytes from the start ofdstBuffer. -
sizeis the number of bytes to copy.
См. также
VkDeviceSize, vkCmdCopyBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferCopy
VkBufferCreateInfo(3)
Имя
VkBufferCreateInfo - Структура, определяющая параметры вновь созданного объекта буфера
C Спецификация
Структура VkBufferCreateInfo определяется как:
typedef struct VkBufferCreateInfo {
VkStructureType sType;
const void* pNext;
VkBufferCreateFlags flags;
VkDeviceSize size;
VkBufferUsageFlags usage;
VkSharingMode sharingMode;
uint32_t queueFamilyIndexCount;
const uint32_t* pQueueFamilyIndices;
} VkBufferCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis a bitmask of VkBufferCreateFlagBits specifying additional parameters of the buffer. -
sizeis the size in bytes of the buffer to be created. -
usageis a bitmask of VkBufferUsageFlagBits specifying allowed usages of the buffer. -
sharingModeis a VkSharingMode value specifying the sharing mode of the buffer when it will be accessed by multiple queue families. -
queueFamilyIndexCountis the number of entries in thepQueueFamilyIndicesarray. -
pQueueFamilyIndicesis a list of queue families that will access this buffer (ignored ifsharingModeis notVK_SHARING_MODE_CONCURRENT).
Описание
Правильное использование
sizeдолжно быть больше0- Если
sharingModeisVK_SHARING_MODE_CONCURRENT,pQueueFamilyIndicesдолжно быть указателем на массив изqueueFamilyIndexCountuint32_tзначений- Если
sharingModeisVK_SHARING_MODE_CONCURRENT,queueFamilyIndexCountдолжно быть больше1- Если
sharingModeisVK_SHARING_MODE_CONCURRENT, каждый элементpQueueFamilyIndicesдолжен быть уникальным и должен быть меньшеpQueueFamilyPropertyCountвозвращаемого vkGetPhysicalDeviceQueueFamilyProperties дляphysicalDevice, который был использован для созданияdevice- Если функция sparse bindings не включена,
flagsне должно содержатьVK_BUFFER_CREATE_SPARSE_BINDING_BIT- Если функция sparse buffer residency не включена,
flagsне должно содержатьVK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse aliased residency не включена,
flagsне должно содержатьVK_BUFFER_CREATE_SPARSE_ALIASED_BIT- Если
flagsсодержитVK_BUFFER_CREATE_SPARSE_RESIDENCY_BITилиVK_BUFFER_CREATE_SPARSE_ALIASED_BIT, он также должен содержатьVK_BUFFER_CREATE_SPARSE_BINDING_BIT
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_BUFFER_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть допустимым сочетанием значений VkBufferCreateFlagBitsusageдолжно быть допустимым сочетанием значений VkBufferUsageFlagBitsusageне должно быть0sharingModeдолжно быть допустимым значением VkSharingMode
См. также
VkBufferCreateFlags, VkBufferUsageFlags, VkDeviceSize, VkSharingMode, VkStructureType, vkCreateBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferCreateInfo
VkBufferImageCopy(3)
Имя
VkBufferImageCopy - Структура, определяющая операцию копирования буфера изображения
C Спецификация
Для обоих vkCmdCopyBufferToImage и vkCmdCopyImageToBuffer, каждый элемент pRegions является структурой, определенной как:
typedef struct VkBufferImageCopy {
VkDeviceSize bufferOffset;
uint32_t bufferRowLength;
uint32_t bufferImageHeight;
VkImageSubresourceLayers imageSubresource;
VkOffset3D imageOffset;
VkExtent3D imageExtent;
} VkBufferImageCopy; Члены
-
bufferOffsetis the offset in bytes from the start of the buffer object where the image data is copied from or to. -
bufferRowLengthandbufferImageHeightspecify the data in buffer memory as a subregion of a larger two- or three-dimensional image, and control the addressing calculations of data in buffer memory. If either of these values is zero, that aspect of the buffer memory is considered to be tightly packed according to theimageExtent. -
imageSubresourceis a VkImageSubresourceLayers used to specify the specific image subresources of the image used for the source or destination image data. -
imageOffsetselects the initial x, y, z offsets in texels of the sub-region of the source or destination image data. -
imageExtentis the size in texels of the image to copy inwidth,heightanddepth.
Описание
При копировании в аспект глубины или трафарета, или из него, данные в буферной памяти используют макет, который представляет собой (в основном) плотно упакованное представление данных глубины или трафарета. В частности:
- данные, копируемые в аспект трафарета любого формата глубины/трафарета или из него, плотно упакованы с одним значением
VK_FORMAT_S8_UINTна тексел. - данные, копируемые в аспект глубины формата
VK_FORMAT_D16_UNORMилиVK_FORMAT_D16_UNORM_S8_UINTили из него, плотно упакованы с одним значениемVK_FORMAT_D16_UNORMна тексел. - данные, копируемые в аспект глубины формата
VK_FORMAT_D32_SFLOATилиVK_FORMAT_D32_SFLOAT_S8_UINTили из него, плотно упакованы с одним значениемVK_FORMAT_D32_SFLOATна тексел. - данные, копируемые в аспект глубины формата
VK_FORMAT_X8_D24_UNORM_PACK32илиVK_FORMAT_D24_UNORM_S8_UINTили из него, упакованы с одним 32-битным словом на тексел, со значением D24 в младших битах слова и неопределенными значениями в восьми старших битах.
Примечание
Для копирования аспектов как глубины, так и трафарета формата глубины/трафарета можно использовать две записи в
pRegions, где одна указывает аспект глубины вimageSubresource, а другая указывает аспект трафарета.
Поскольку копирование буфера аспекта глубины или трафарета в изображение может потребовать преобразования форматов на некоторых реализациях, они не поддерживаются в очередях, которые не поддерживают графику. При копировании в аспект глубины данные в буферной памяти должны находиться в диапазоне [0,1], иначе возникнут неопределенные результаты.
Копирование выполняется послойно, начиная со слоя изображения baseArrayLayer члена imageSubresource. Копируется layerCount слоев из исходного изображения или в целевое изображение.
Правильное использование
- Если формат параметра
VkImageвызывающей команды не является форматом глубины/трафарета, тоbufferOffsetдолжен быть кратен размеру элемента форматаbufferOffsetдолжен быть кратен4bufferRowLengthдолжен быть0, или больше или равен членуwidthструктурыimageExtentbufferImageHeightдолжен быть0, или больше или равен членуheightструктурыimageExtentimageOffset.xи (imageExtent.width+imageOffset.x) должны быть больше или равны0и меньше или равны ширине подуровня изображенияimageOffset.yи (imageExtent.height +imageOffset.y) должны быть больше или равны0и меньше или равны высоте подуровня изображения- Если
srcImage(vkCmdCopyImageToBuffer) илиdstImage(vkCmdCopyBufferToImage) вызывающей команды имеет типVK_IMAGE_TYPE_1D, тоimageOffset.yдолжен быть0, аimageExtent.heightдолжен быть1.imageOffset.zи (imageExtent.depth +imageOffset.z) должны быть больше или равны0и меньше или равны глубине подуровня изображения- Если
srcImage(vkCmdCopyImageToBuffer) илиdstImage(vkCmdCopyBufferToImage) вызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоimageOffset.zдолжен быть0, аimageExtent.depthдолжен быть1.- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,bufferRowLengthдолжен быть кратен ширине сжатого блока текселей- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,bufferImageHeightдолжен быть кратен высоте сжатого блока текселей- Если параметр
VkImageвызывающей команды является изображением в сжатом формате, все членыimageOffsetдолжны быть кратны соответствующим размерам сжатого блока текселей- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,bufferOffsetдолжен быть кратен размеру сжатого блока текселей в байтах- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,imageExtent.widthдолжен быть кратен ширине сжатого блока текселей или (imageExtent.width+imageOffset.x) должны быть равны ширине подуровня изображения- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,imageExtent.heightдолжен быть кратен высоте сжатого блока текселей или (imageExtent.height+imageOffset.y) должны быть равны высоте подуровня изображения- Если параметр
VkImageвызывающей команды является изображением в сжатом формате,imageExtent.depthдолжен быть кратен глубине сжатого блока текселей или (imageExtent.depth+imageOffset.z) должны быть равны глубине подуровня изображенияbufferOffset,bufferRowLength,bufferImageHeightи все членыimageOffsetиimageExtentдолжны соответствовать требованиям к гранулярности передачи изображений семейства очередей, против которого будет отправлена команда, как описано в Physical Device Enumeration- Член
aspectMaskструктурыimageSubresourceдолжен указывать аспекты, присутствующие в параметреVkImageвызывающей команды- Член
aspectMaskструктурыimageSubresourceдолжен иметь только один установленный бит- Если параметр
VkImageвызывающей команды имеет тип VkImageTypeVK_IMAGE_TYPE_3D, членыbaseArrayLayerиlayerCountструктурыimageSubresourceдолжны быть0и1, соответственно- При копировании в аспект глубины подуровня изображения данные в исходном буфере должны находиться в диапазоне [0,1]
Правильное использование (явное)
imageSubresourceдолжен быть допустимой структуройVkImageSubresourceLayers
См. также
VkDeviceSize, VkExtent3D, VkImageSubresourceLayers, VkOffset3D, vkCmdCopyBufferToImage, vkCmdCopyImageToBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferImageCopy
VkBufferMemoryBarrier(3)
Имя
VkBufferMemoryBarrier - Структура, определяющая барьер памяти буфера
C-спецификация
Структура VkBufferMemoryBarrier определяется следующим образом:
typedef struct VkBufferMemoryBarrier {
VkStructureType sType;
const void* pNext;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
uint32_t srcQueueFamilyIndex;
uint32_t dstQueueFamilyIndex;
VkBuffer buffer;
VkDeviceSize offset;
VkDeviceSize size;
} VkBufferMemoryBarrier; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
srcAccessMaskis a bitmask of VkAccessFlagBits specifying a source access mask. -
dstAccessMaskis a bitmask of VkAccessFlagBits specifying a destination access mask. -
srcQueueFamilyIndexis the source queue family for a queue family ownership transfer. -
dstQueueFamilyIndexis the destination queue family for a queue family ownership transfer. -
bufferis a handle to the buffer whose backing memory is affected by the barrier. -
offsetis an offset in bytes into the backing memory forbuffer; this is relative to the base offset as bound to the buffer (see vkBindBufferMemory). -
sizeis a size in bytes of the affected area of backing memory forbuffer, orVK_WHOLE_SIZEto use the range fromoffsetto the end of the buffer.
Описание
Первый область доступа ограничен доступом к памяти через указанный диапазон буфера, через типы доступа в маске исходного доступа, указанной srcAccessMask. Если srcAccessMask включает VK_ACCESS_HOST_WRITE_BIT, операции записи в память, выполняемые этим типом доступа, также становятся видимыми, поскольку этот тип доступа не выполняется через ресурс.
Вторая область доступа ограничен доступом к памяти через указанный диапазон буфера, через типы доступа в маске целевого доступа, указанной dstAccessMask. Если dstAccessMask включает VK_ACCESS_HOST_WRITE_BIT или VK_ACCESS_HOST_READ_BIT, доступные записи в память также становятся видимыми для доступов этих типов, поскольку эти типы доступа не выполняются через ресурс.
Если srcQueueFamilyIndex не равно dstQueueFamilyIndex, и srcQueueFamilyIndex равно текущему семейству очередей, то барьер памяти определяет операцию освобождения семейства очередей для указанного диапазона буфера, и вторая область доступа не включает доступ, как если бы dstAccessMask было 0.
Если dstQueueFamilyIndex не равно srcQueueFamilyIndex, и dstQueueFamilyIndex равно текущему семейству очередей, то барьер памяти определяет операцию приобретения семейства очередей для указанного диапазона буфера, и первая область доступа не включает доступ, как если бы srcAccessMask было 0.
Допустимое использование
offsetдолжно быть меньше размераbuffer- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть больше0- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть меньше или равно размеруbufferминусoffset- Если
bufferбыл создан с режимом общего доступаVK_SHARING_MODE_CONCURRENT,srcQueueFamilyIndexиdstQueueFamilyIndexдолжны бытьVK_QUEUE_FAMILY_IGNORED- Если
bufferбыл создан с режимом общего доступаVK_SHARING_MODE_EXCLUSIVE,srcQueueFamilyIndexиdstQueueFamilyIndexдолжны быть либо обаVK_QUEUE_FAMILY_IGNORED, либо оба являться допустимым семейством очередей (см. html/vkspec.html#devsandqueues-queueprops)- Если
bufferбыл создан с режимом общего доступаVK_SHARING_MODE_EXCLUSIVE, иsrcQueueFamilyIndexиdstQueueFamilyIndexне являютсяVK_QUEUE_FAMILY_IGNORED, по крайней мере один из них должен быть таким же, как семейство очереди, которая выполнит этот барьер
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIERpNextдолжно бытьNULLsrcAccessMaskдолжно быть допустимой комбинацией значений VkAccessFlagBitsdstAccessMaskдолжно быть допустимой комбинацией значений VkAccessFlagBitsbufferдолжно быть допустимой дескрипторомVkBuffer
См. также
VkAccessFlags, VkBuffer, VkDeviceSize, VkStructureType, vkCmdPipelineBarrier, vkCmdWaitEvents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferMemoryBarrier
VkBufferViewCreateInfo(3)
Имя
VkBufferViewCreateInfo - Структура, указывающая параметры вновь создаваемого представления буфера
C Спецификация
Структура VkBufferViewCreateInfo определяется как:
typedef struct VkBufferViewCreateInfo {
VkStructureType sType;
const void* pNext;
VkBufferViewCreateFlags flags;
VkBuffer buffer;
VkFormat format;
VkDeviceSize offset;
VkDeviceSize range;
} VkBufferViewCreateInfo; Члены
-
sTypeэто тип этой структуры. -
pNextэтоNULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущих использований. -
bufferэтоVkBuffer, на основе которого будет создано представление. -
formatэто VkFormat, описывающий формат элементов данных в буфере. -
offsetэто смещение в байтах от базового адреса буфера. Доступы к представлению буфера из шейдеров используют адресацию, которая является относительной к этому начальному смещению. -
rangeэто размер в байтах представления буфера. ЕслиrangeравноVK_WHOLE_SIZE, используется диапазон отoffsetдо конца буфера. Если используетсяVK_WHOLE_SIZEи оставшийся размер буфера не кратен размеру элементаformat, то используется ближайший меньший кратный.
Описание
Допустимое использование
offsetдолжно быть меньше размераbufferoffsetдолжно быть кратноVkPhysicalDeviceLimits::minTexelBufferOffsetAlignment- Если
rangeне равноVK_WHOLE_SIZE,rangeдолжно быть больше0- Если
rangeне равноVK_WHOLE_SIZE,rangeдолжно быть кратно размеру элементаformat- Если
rangeне равноVK_WHOLE_SIZE,rangeделенное на размер элементаformatдолжно быть меньше или равноVkPhysicalDeviceLimits::maxTexelBufferElements- Если
rangeне равноVK_WHOLE_SIZE, суммаoffsetиrangeдолжна быть меньше или равна размеруbufferbufferдолжно быть создано со значениемusage, содержащим по крайней мере одно изVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITилиVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT- Если
bufferбыло создано сusage, содержащимVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,formatдолжно поддерживаться для униформных буферов текстур, как указано флагомVK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BITвVkFormatProperties::bufferFeatures, возвращаемымvkGetPhysicalDeviceFormatProperties- Если
bufferбыло создано сusage, содержащимVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,formatдолжно поддерживаться для буферов текстур хранения, как указано флагомVK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BITвVkFormatProperties::bufferFeatures, возвращаемымvkGetPhysicalDeviceFormatProperties- Если
bufferне разреженный, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0bufferдолжно быть допустимой дескрипторомVkBufferformatдолжно быть допустимым значением VkFormat
См. также
VkBuffer, VkBufferViewCreateFlags, VkDeviceSize, VkFormat, VkStructureType, vkCreateBufferView
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferViewCreateInfo
VkClearAttachment(3)
Имя
VkClearAttachment - Структура, указывающая вложение очистки
C Спецификация
Структура VkClearAttachment определяется как:
typedef struct VkClearAttachment {
VkImageAspectFlags aspectMask;
uint32_t colorAttachment;
VkClearValue clearValue;
} VkClearAttachment; Члены
-
aspectMaskis a mask selecting the color, depth and/or stencil aspects of the attachment to be cleared.aspectMaskможет includeVK_IMAGE_ASPECT_COLOR_BITfor color attachments,VK_IMAGE_ASPECT_DEPTH_BITfor depth/stencil attachments with a depth component, andVK_IMAGE_ASPECT_STENCIL_BITfor depth/stencil attachments with a stencil component. If the subpass’s depth/stencil attachment isVK_ATTACHMENT_UNUSED, then the clear has no effect. -
colorAttachmentis only meaningful ifVK_IMAGE_ASPECT_COLOR_BITis set inaspectMask, in which case it is an index to thepColorAttachmentsarray in the VkSubpassDescription structure of the current subpass which selects the color attachment to clear. IfcolorAttachmentisVK_ATTACHMENT_UNUSEDthen the clear has no effect. -
clearValueis the color or depth/stencil value to clear the attachment to, as described in Clear Values below.
Описание
Нет необходимости в барьерах памяти между vkCmdClearAttachments и предшествующими или последующими командами отрисовки или очистки вложений в одном и том же подпроходе.
Команда vkCmdClearAttachments не зависит от привязанного состояния конвейера.
Вложения могут также очищаться в начале экземпляра прохода рендеринга, установив loadOp (или stencilLoadOp) of VkAttachmentDescription to VK_ATTACHMENT_LOAD_OP_CLEAR, as described for vkCreateRenderPass.
Допустимое использование
- If
aspectMaskincludesVK_IMAGE_ASPECT_COLOR_BIT, it должно not includeVK_IMAGE_ASPECT_DEPTH_BITorVK_IMAGE_ASPECT_STENCIL_BITaspectMaskдолжно not includeVK_IMAGE_ASPECT_METADATA_BITclearValueдолжно be a validVkClearValueunion
Допустимое использование (неявное)
aspectMaskдолжно be a valid combination of VkImageAspectFlagBits valuesaspectMaskне должно be0
См. также
VkClearValue, VkImageAspectFlags, vkCmdClearAttachments
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkClearAttachment
VkClearColorValue(3)
Имя
VkClearColorValue - Структура, определяющая значение цвета очистки
C-спецификация
Структура VkClearColorValue определяется как:
typedef union VkClearColorValue {
float float32[4];
int32_t int32[4];
uint32_t uint32[4];
} VkClearColorValue; Члены
-
float32are the color clear values when the format of the image or attachment is one of the formats in the Interpretation of Numeric Format table other than signed integer (SINT) or unsigned integer (UINT). Floating point values are automatically converted to the format of the image, with the clear value being treated as linear if the image is sRGB. -
int32are the color clear values when the format of the image or attachment is signed integer (SINT). Signed integer values are converted to the format of the image by casting to the smaller type (with negative 32-bit values mapping to negative values in the smaller type). If the integer clear value is not representable in the target type (e.g. would overflow in conversion to that type), the clear value is undefined. -
uint32are the color clear values when the format of the image or attachment is unsigned integer (UINT). Unsigned integer values are converted to the format of the image by casting to the integer type with fewer bits.
Описание
Четыре элемента массива цвета очистки соответствуют компонентам R, G, B и A форматов изображения в указанном порядке.
Если изображение имеет более одного образца, одно и то же значение записывается во все образцы для любых очищаемых пикселей.
См. также
VkClearValue, vkCmdClearColorImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkClearColorValue
VkClearDepthStencilValue(3)
Имя
VkClearDepthStencilValue - Структура, определяющая значение очистки глубины и трафарета
C-спецификация
Структура VkClearDepthStencilValue определяется как:
typedef struct VkClearDepthStencilValue {
float depth;
uint32_t stencil;
} VkClearDepthStencilValue; Члены
-
depthis the clear value for the depth aspect of the depth/stencil attachment. It is a floating-point value which is automatically converted to the attachment’s format. -
stencilis the clear value for the stencil aspect of the depth/stencil attachment. It is a 32-bit integer value which is converted to the attachment’s format by taking the appropriate number of LSBs.
Описание
Допустимое использование
depthдолжно be between0.0and1.0, inclusive
См. также
VkClearValue, vkCmdClearDepthStencilImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkClearDepthStencilValue
VkClearRect(3)
Имя
VkClearRect - Структура, определяющая прямоугольник очистки
C-спецификация
Структура VkClearRect определяется как:
typedef struct VkClearRect {
VkRect2D rect;
uint32_t baseArrayLayer;
uint32_t layerCount;
} VkClearRect; Члены
-
rectis the two-dimensional region to be cleared. -
baseArrayLayeris the first layer to be cleared. -
layerCountis the number of layers to clear.
Описание
Очищаются слои [baseArrayLayer, baseArrayLayer + layerCount) начиная с базового слоя представления изображения вложения.
См. также
VkRect2D, vkCmdClearAttachments
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkClearRect
VkClearValue(3)
Имя
VkClearValue - Структура, определяющая значение очистки
C-спецификация
Объединение VkClearValue определяется как:
typedef union VkClearValue {
VkClearColorValue color;
VkClearDepthStencilValue depthStencil;
} VkClearValue; Члены
-
colorspecifies the color image clear values to use when clearing a color image or attachment. -
depthStencilspecifies the depth and stencil clear values to use when clearing a depth/stencil image or attachment.
Описание
Это объединение используется там, где часть API требует значений очистки цвета или глубины/трафарета в зависимости от вложения, и определяет начальные значения очистки в структуре VkRenderPassBeginInfo.
Допустимое использование
depthStencilдолжно be a validVkClearDepthStencilValuestructure
См. также
VkClearAttachment, VkClearColorValue, VkClearDepthStencilValue, VkRenderPassBeginInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkClearValue
VkCommandBufferAllocateInfo(3)
Имя
VkCommandBufferAllocateInfo - Структура, определяющая параметры выделения для объекта буфера команд
C-спецификация
Структура VkCommandBufferAllocateInfo определяется как:
typedef struct VkCommandBufferAllocateInfo {
VkStructureType sType;
const void* pNext;
VkCommandPool commandPool;
VkCommandBufferLevel level;
uint32_t commandBufferCount;
} VkCommandBufferAllocateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
commandPoolis the command pool from which the command buffers are allocated. -
levelis an VkCommandBufferLevel value specifying the command buffer level. -
commandBufferCountis the number of command buffers to allocate from the pool.
Описание
Допустимое использование
commandBufferCountдолжно be greater than0
Допустимое использование (неявное)
sTypeдолжно beVK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFOpNextдолжно beNULLcommandPoolдолжно be a validVkCommandPoolhandlelevelдолжно be a valid VkCommandBufferLevel value
См. также
VkCommandBufferLevel, VkCommandPool, VkStructureType, vkAllocateCommandBuffers
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferAllocateInfo
VkCommandBufferBeginInfo(3)
Имя
VkCommandBufferBeginInfo - Структура, определяющая операцию начала буфера команд
C-спецификация
Структура VkCommandBufferBeginInfo определяется как:
typedef struct VkCommandBufferBeginInfo {
VkStructureType sType;
const void* pNext;
VkCommandBufferUsageFlags flags;
const VkCommandBufferInheritanceInfo* pInheritanceInfo;
} VkCommandBufferBeginInfo; Члены
-
sType- это тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
flags- это битовая маска VkCommandBufferUsageFlagBits, указывающая поведение использования для буфера команд. -
pInheritanceInfo- это указатель на структуруVkCommandBufferInheritanceInfo, которая используется, еслиcommandBufferявляется вторичным буфером команд. Если это основной буфер команд, то это значение игнорируется.
Описание
Допустимое использование
- Если
flagsсодержитVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, членrenderPassструктурыpInheritanceInfoдолжен быть допустимымVkRenderPass- Если
flagsсодержитVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, членsubpassструктурыpInheritanceInfoдолжен быть допустимым индексом подпрохода в членеrenderPassструктурыpInheritanceInfo- Если
flagsсодержитVK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, членframebufferструктурыpInheritanceInfoдолжен быть либо VK_NULL_HANDLE, либо допустимымVkFramebuffer, совместимым с членомrenderPassструктурыpInheritanceInfo
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFOpNextдолжен бытьNULLflagsдолжен быть допустимым сочетанием значений VkCommandBufferUsageFlagBits
См. также
VkCommandBufferInheritanceInfo, VkCommandBufferUsageFlags, VkStructureType, vkBeginCommandBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferBeginInfo
VkCommandBufferInheritanceInfo(3)
Имя
VkCommandBufferInheritanceInfo - Структура, определяющая информацию о наследовании буфера команд
C-спецификация
Если буфер команд является вторичным буфером команд, то структура VkCommandBufferInheritanceInfo определяет любое состояние, которое будет унаследовано от основного буфера команд:
typedef struct VkCommandBufferInheritanceInfo {
VkStructureType sType;
const void* pNext;
VkRenderPass renderPass;
uint32_t subpass;
VkFramebuffer framebuffer;
VkBool32 occlusionQueryEnable;
VkQueryControlFlags queryFlags;
VkQueryPipelineStatisticFlags pipelineStatistics;
} VkCommandBufferInheritanceInfo; Члены
-
sType- это тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
renderPass- это объектVkRenderPass, определяющий, с какими проходами рендерингаVkCommandBufferбудет совместим и может быть выполнен. ЕслиVkCommandBufferне будет выполняться в экземпляре прохода рендеринга,renderPassигнорируется. -
subpass- это индекс подпрохода в экземпляре прохода рендеринга, в котором будет выполнятьсяVkCommandBuffer. ЕслиVkCommandBufferне будет выполняться в экземпляре прохода рендеринга,subpassигнорируется. -
framebufferнеобязательно ссылается на объектVkFramebuffer, в который будет осуществляться рендерингVkCommandBuffer, если он выполняется в экземпляре прохода рендеринга. Он может быть VK_NULL_HANDLE, если буфер кадра неизвестен или еслиVkCommandBufferне будет выполняться в экземпляре прохода рендеринга.Примечание
Указание точного буфера кадра, с которым будет выполняться вторичный буфер команд, может привести к повышению производительности во время выполнения буфера команд.
-
occlusionQueryEnableуказывает, может ли буфер команд выполняться, когда запрос на затенение активен в основном буфере команд. Если этоVK_TRUE, то этот буфер команд может выполняться независимо от того, есть ли активный запрос на затенение в основном буфере команд или нет. Если этоVK_FALSE, то в основном буфере команд не должно быть активного запроса на затенение. -
queryFlagsуказывает флаги запроса, которые могут использоваться активным запросом на затенение в основном буфере команд при выполнении этого вторичного буфера команд. Если это значение включает битVK_QUERY_CONTROL_PRECISE_BIT, то активный запрос может возвращать булевы результаты или фактические числа выборок. Если этот бит не установлен, то активный запрос не должен использовать битVK_QUERY_CONTROL_PRECISE_BIT. -
pipelineStatistics- это битовая маска VkQueryPipelineStatisticFlagBits, указывающая набор статистических данных конвейера, которые могут подсчитываться активным запросом в основном буфере команд при выполнении этого вторичного буфера команд. Если это значение включает данный бит, то этот буфер команд может выполняться независимо от того, есть ли в основном буфере команд активный запрос статистики конвейера, включающий этот бит или нет. Если это значение исключает данный бит, то активный запрос статистики конвейера не должен поступать из пула запросов, который подсчитывает эту статистику.
Описание
Допустимое использование
- Если функция inherited queries не включена,
occlusionQueryEnableдолжен бытьVK_FALSE- Если функция inherited queries включена,
queryFlagsдолжен быть допустимым сочетанием значений VkQueryControlFlagBits- Если функция pipeline statistics queries не включена,
pipelineStatisticsдолжен быть0
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFOpNextдолжен бытьNULL- Оба
framebuffer, иrenderPass, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkBool32, VkCommandBufferBeginInfo, VkFramebuffer, VkQueryControlFlags, VkQueryPipelineStatisticFlags, VkRenderPass, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferInheritanceInfo
VkCommandPoolCreateInfo(3)
Имя
VkCommandPoolCreateInfo - Структура, определяющая параметры вновь создаваемого пула команд
C-спецификация
Структура VkCommandPoolCreateInfo определяется как:
typedef struct VkCommandPoolCreateInfo {
VkStructureType sType;
const void* pNext;
VkCommandPoolCreateFlags flags;
uint32_t queueFamilyIndex;
} VkCommandPoolCreateInfo; Члены
-
sType- это тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
flags- это битовая маска VkCommandPoolCreateFlagBits, указывающая поведение использования для пула и буферов команд, выделяемых из него. -
queueFamilyIndexуказывает семейство очередей, как описано в разделе Queue Family Properties. Все буферы команд, выделяемые из этого пула команд, должны отправляться в очереди из того же семейства очередей.
Описание
Допустимое использование
queueFamilyIndexдолжен быть индексом семейства очередей, доступного в параметреdeviceвызывающей команды
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть допустимым сочетанием значений VkCommandPoolCreateFlagBits
См. также
VkCommandPoolCreateFlags, VkStructureType, vkCreateCommandPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPoolCreateInfo
VkComponentMapping(3)
Имя
VkComponentMapping - Структура, определяющая сопоставление цветовых компонентов
C-спецификация
Структура VkComponentMapping определяется как:
typedef struct VkComponentMapping {
VkComponentSwizzle r;
VkComponentSwizzle g;
VkComponentSwizzle b;
VkComponentSwizzle a;
} VkComponentMapping; Члены
-
rявляется VkComponentSwizzle, указывающим значение компонента, помещаемое в компонент R выходного вектора. -
gявляется VkComponentSwizzle, указывающим значение компонента, помещаемое в компонент G выходного вектора. -
bявляется VkComponentSwizzle, указывающим значение компонента, помещаемое в компонент B выходного вектора. -
Aявляется VkComponentSwizzle, указывающим значение компонента, помещаемое в компонент A выходного вектора.
Описание
Допустимое использование (неявное)
rдолжен быть допустимым значением VkComponentSwizzlegдолжен быть допустимым значением VkComponentSwizzlebдолжен быть допустимым значением VkComponentSwizzleaдолжен быть допустимым значением VkComponentSwizzle
См. также
VkComponentSwizzle, VkImageViewCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkComponentMapping
VkComputePipelineCreateInfo(3)
Имя
VkComputePipelineCreateInfo - Структура, определяющая параметры вновь созданного конвейера вычислений
Спецификация C
Структура VkComputePipelineCreateInfo определяется как:
typedef struct VkComputePipelineCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineCreateFlags flags;
VkPipelineShaderStageCreateInfo stage;
VkPipelineLayout layout;
VkPipeline basePipelineHandle;
int32_t basePipelineIndex;
} VkComputePipelineCreateInfo; Члены
-
sTypeэто тип этой структуры. -
pNextэтоNULLили указатель на структуру, специфичную для расширения. -
flagsэто битовая маска VkPipelineCreateFlagBits, указывающая, как будет создан конвейер. -
stageэто VkPipelineShaderStageCreateInfo, описывающая шейдер вычислений. -
layoutэто описание мест связывания, используемых как конвейером, так и наборами дескрипторов, используемых с конвейером. -
basePipelineHandleэто конвейер для получения. -
basePipelineIndexэто индекс в параметрpCreateInfos, используемый в качестве конвейера для получения.
Описание
Параметры basePipelineHandle и basePipelineIndex описаны более подробно в Производные конвейеры.
stage указывает на структуру типа VkPipelineShaderStageCreateInfo.
Допустимое использование
- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineIndexравен -1,basePipelineHandleдолжен быть допустимой дескриптором конвейера вычисленийVkPipeline- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineHandleравен VK_NULL_HANDLE,basePipelineIndexдолжен быть допустимым индексом в параметре вызывающей командыpCreateInfos- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineIndexне равен -1,basePipelineHandleдолжен быть VK_NULL_HANDLE- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineHandleне равен VK_NULL_HANDLE,basePipelineIndexдолжен быть -1- Член
stageвstageдолжен бытьVK_SHADER_STAGE_COMPUTE_BIT- Код шейдера для точки входа, идентифицированной
stage, и остальное состояние, идентифицированное этой структурой, должны соответствовать правилам компоновки конвейера, описанным в главе Интерфейсы шейдераlayoutдолжен быть согласованным с макетом шейдера вычислений, указанным вstage
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть допустимым сочетанием значений VkPipelineCreateFlagBitsstageдолжен быть допустимой структуройVkPipelineShaderStageCreateInfolayoutдолжен быть допустимой дескрипторомVkPipelineLayout- И
basePipelineHandle, иlayout, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkPipeline, VkPipelineCreateFlags, VkPipelineLayout, VkPipelineShaderStageCreateInfo, VkStructureType, vkCreateComputePipelines
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkComputePipelineCreateInfo
VkCopyDescriptorSet(3)
Имя
VkCopyDescriptorSet - Структура, определяющая операцию копирования набора дескрипторов
Спецификация C
Структура VkCopyDescriptorSet определяется как:
typedef struct VkCopyDescriptorSet {
VkStructureType sType;
const void* pNext;
VkDescriptorSet srcSet;
uint32_t srcBinding;
uint32_t srcArrayElement;
VkDescriptorSet dstSet;
uint32_t dstBinding;
uint32_t dstArrayElement;
uint32_t descriptorCount;
} VkCopyDescriptorSet; Члены
-
sTypeэто тип этой структуры. -
pNextэтоNULLили указатель на структуру, специфичную для расширения. -
srcSet,srcBindingиsrcArrayElementэто исходный набор, место связывания и элемент массива соответственно. -
dstSet,dstBindingиdstArrayElementэто целевой набор, место связывания и элемент массива соответственно. -
descriptorCountэто количество дескрипторов для копирования из источника в назначение. ЕслиdescriptorCountбольше, чем количество оставшихся элементов массива в исходном или целевом месте связывания, это влияет на последующие места связывания аналогично VkWriteDescriptorSet выше.
Описание
Допустимое использование
srcBindingдолжен быть допустимым местом связывания вsrcSet- Сумма
srcArrayElementиdescriptorCountдолжна быть меньше или равна количеству элементов массива в место связывания набора дескрипторов, указанногоsrcBinding, и всех применимых последующих мест связывания, как описано в html/vkspec.html#descriptorsets-updates-consecutivedstBindingдолжен быть допустимым местом связывания вdstSet- Сумма
dstArrayElementиdescriptorCountдолжна быть меньше или равна количеству элементов массива в место связывания набора дескрипторов, указанногоdstBinding, и всех применимых последующих мест связывания, как описано в html/vkspec.html#descriptorsets-updates-consecutive- Если
srcSetравноdstSet, то диапазоны исходных и целевых дескрипторов не должны перекрываться, при этом диапазоны могут включать элементы массива из последующих мест связывания, как описано в html/vkspec.html#descriptorsets-updates-consecutive
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SETpNextдолжен бытьNULLsrcSetдолжен быть допустимой дескрипторомVkDescriptorSetdstSetдолжен быть допустимой дескрипторомVkDescriptorSet- И
dstSet, иsrcSetдолжны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkDescriptorSet, VkStructureType, vkUpdateDescriptorSets
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCopyDescriptorSet
VkDescriptorBufferInfo(3)
Имя
VkDescriptorBufferInfo - Структура, определяющая информацию о буфере дескрипторов
Спецификация C
Структура VkDescriptorBufferInfo определяется как:
typedef struct VkDescriptorBufferInfo {
VkBuffer buffer;
VkDeviceSize offset;
VkDeviceSize range;
} VkDescriptorBufferInfo; Члены
-
bufferявляется ресурсом буфера. -
offsetэто смещение в байтах от началаbuffer. Доступ к памяти буфера через этот дескриптор использует адресацию, которая является относительной к этому начальному смещению. -
rangeэто размер в байтах, который используется для этого обновления дескриптора, илиVK_WHOLE_SIZEдля использования диапазона отoffsetдо конца буфера.
Описание
Примечание
При установке
rangeнаVK_WHOLE_SIZE, эффективный диапазон не должен быть больше, чем максимальный диапазон для типа дескриптора (maxUniformBufferRange или maxStorageBufferRange). Это означает, чтоVK_WHOLE_SIZEобычно не полезен в распространенном случае, когда дескрипторы буфера униформы выделяются из буфера, который намного больше, чемmaxUniformBufferRange.
Для VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC и VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC типов дескрипторов, offset это базовое смещение, из которого применяется динамическое смещение, а range - это статический размер, используемый для всех динамических смещений.
Допустимое использование
offsetдолжно быть меньше размераbuffer- Если
rangeне равноVK_WHOLE_SIZE,rangeдолжно быть больше0- Если
rangeне равноVK_WHOLE_SIZE,rangeдолжно быть меньше или равно размеруbufferминусoffset
Допустимое использование (неявное)
bufferдолжно быть допустимой дескрипторомVkBuffer
См. также
VkBuffer, VkDeviceSize, VkWriteDescriptorSet
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorBufferInfo
VkDescriptorImageInfo(3)
Имя
VkDescriptorImageInfo - Структура, определяющая информацию о дескрипторе изображения
C Спецификация
Структура VkDescriptorImageInfo определяется как:
typedef struct VkDescriptorImageInfo {
VkSampler sampler;
VkImageView imageView;
VkImageLayout imageLayout;
} VkDescriptorImageInfo; Члены
-
samplerэто дескриптор семплера и используется в обновлениях дескрипторов для типовVK_DESCRIPTOR_TYPE_SAMPLERиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, если привязка, которая обновляется, не использует неизменяемые семплеры. -
imageViewэто дескриптор представления изображения и используется в обновлениях дескрипторов для типовVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT. -
imageLayoutэто макет, в котором будут находиться подресурсы изображения, доступные изimageView, в момент доступа к этому дескриптору.imageLayoutиспользуется в обновлениях дескрипторов для типовVK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT.
Описание
Члены VkDescriptorImageInfo, которые не используются в обновлении (как описано выше), игнорируются.
Допустимое использование
imageLayoutдолжен соответствовать фактическому VkImageLayout каждого подресурса, доступного изimageView, в момент доступа к этому дескриптору
Допустимое использование (неявное)
- Оба
imageViewиsampler, которые являются допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkImageLayout, VkImageView, VkSampler, VkWriteDescriptorSet
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorImageInfo
VkDescriptorPoolCreateInfo(3)
Имя
VkDescriptorPoolCreateInfo - Структура, определяющая параметры вновь создаваемого пула дескрипторов
C Спецификация
Дополнительная информация о пуле передается в экземпляре структуры VkDescriptorPoolCreateInfo:
typedef struct VkDescriptorPoolCreateInfo {
VkStructureType sType;
const void* pNext;
VkDescriptorPoolCreateFlags flags;
uint32_t maxSets;
uint32_t poolSizeCount;
const VkDescriptorPoolSize* pPoolSizes;
} VkDescriptorPoolCreateInfo; Члены
-
sTypeэто тип этой структуры. -
pNextэтоNULLили указатель на структуру, специфичную для расширения. -
flagsэто битовая маска VkDescriptorPoolCreateFlagBits, определяющая некоторые поддерживаемые операции над пулом. -
maxSetsэто максимальное количество наборов дескрипторов, которые могут быть выделены из пула. -
poolSizeCountэто количество элементов вpPoolSizes. -
pPoolSizesэто указатель на массив структурVkDescriptorPoolSize, каждая из которых содержит тип дескриптора и количество дескрипторов этого типа, которые будут выделены в пуле.
Описание
Если в массиве pPoolSizes присутствуют несколько структур VkDescriptorPoolSize, то пул будет создан с достаточным объемом памяти для общего количества дескрипторов каждого типа.
Фрагментация пула дескрипторов возможна и может привести к ошибкам выделения наборов дескрипторов. Ошибка из-за фрагментации определяется как сбой выделения набора дескрипторов, несмотря на то, что сумма всех незавершенных выделений наборов дескрипторов из пула плюс запрашиваемое выделение требуют не более общего количества дескрипторов, запрошенных при создании пула. Реализации предоставляют определенные гарантии того, когда фрагментация не должна вызывать сбой выделения, как описано ниже.
Если в пуле дескрипторов не было освобождено ни одного набора дескрипторов с момента его создания или последней перезагрузки, то фрагментация не должна вызывать сбой выделения (обратите внимание, что это всегда так для пула, созданного без установленного бита VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT). Кроме того, если все наборы, выделенные из пула с момента его создания или последней перезагрузки, используют одинаковое количество дескрипторов (каждого типа), и запрашиваемое выделение также использует это же количество дескрипторов (каждого типа), то фрагментация не должна вызывать сбой выделения.
Если происходит сбой выделения из-за фрагментации, приложение может создать дополнительный пул дескрипторов для выполнения дальнейших выделений наборов дескрипторов.
Допустимое использование
maxSetsдолжно быть больше0
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть допустимым сочетанием значений VkDescriptorPoolCreateFlagBitspPoolSizesдолжно быть указателем на массив изpoolSizeCountдопустимых структурVkDescriptorPoolSizepoolSizeCountдолжно быть больше0
См. также
VkDescriptorPoolCreateFlags, VkDescriptorPoolSize, VkStructureType, vkCreateDescriptorPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPoolCreateInfo
VkDescriptorPoolSize(3)
Имя
VkDescriptorPoolSize - Структура, определяющая размер пула дескрипторов
C Спецификация
Структура VkDescriptorPoolSize определяется как:
typedef struct VkDescriptorPoolSize {
VkDescriptorType type;
uint32_t descriptorCount;
} VkDescriptorPoolSize; Члены
-
typeэто тип дескриптора. -
descriptorCountэто количество дескрипторов этого типа для выделения.
Описание
Допустимое использование
descriptorCountдолжно быть больше0
Допустимое использование (неявное)
typeдолжно быть допустимым значением VkDescriptorType
См. также
VkDescriptorPoolCreateInfo, VkDescriptorType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPoolSize
VkDescriptorSetAllocateInfo(3)
Имя
VkDescriptorSetAllocateInfo - Структура, определяющая параметры выделения для наборов дескрипторов
C Спецификация
Структура VkDescriptorSetAllocateInfo определяется как:
typedef struct VkDescriptorSetAllocateInfo {
VkStructureType sType;
const void* pNext;
VkDescriptorPool descriptorPool;
uint32_t descriptorSetCount;
const VkDescriptorSetLayout* pSetLayouts;
} VkDescriptorSetAllocateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
descriptorPoolis the pool which the sets will be allocated from. -
descriptorSetCountdetermines the number of descriptor sets to be allocated from the pool. -
pSetLayoutsis an array of descriptor set layouts, with each member specifying how the corresponding descriptor set is allocated.
Описание
Правильное использование
descriptorSetCountдолжно быть не больше, чем количество наборов, которые в данный момент доступны для распределения вdescriptorPooldescriptorPoolдолжно иметь достаточно свободного места для описателей, чтобы выделить наборы описателей указанных макетов
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFOpNextдолжно бытьNULLdescriptorPoolдолжно быть допустимой дескрипторной областьюVkDescriptorPoolpSetLayoutsдолжно быть указателем на массивdescriptorSetCountдопустимыхVkDescriptorSetLayoutдескрипторовdescriptorSetCountдолжно быть больше0- И
descriptorPool, и элементыpSetLayoutsдолжны быть созданы, выделены или получены из одной и той жеVkDevice
См. также
VkDescriptorPool, VkDescriptorSetLayout, VkStructureType, vkAllocateDescriptorSets
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSetAllocateInfo
VkDescriptorSetLayoutBinding(3)
Имя
VkDescriptorSetLayoutBinding - Структура, определяющая привязку макета набора описателей
C-спецификация
Структура VkDescriptorSetLayoutBinding определяется следующим образом:
typedef struct VkDescriptorSetLayoutBinding {
uint32_t binding;
VkDescriptorType descriptorType;
uint32_t descriptorCount;
VkShaderStageFlags stageFlags;
const VkSampler* pImmutableSamplers;
} VkDescriptorSetLayoutBinding; Члены
-
binding— это номер привязки этой записи и соответствует ресурсу с тем же номером привязки на этапах шейдера. -
descriptorType— это VkDescriptorType, указывающий, какой тип описателей ресурсов используется для этой привязки. -
descriptorCount— это количество описателей, содержащихся в привязке, доступных в шейдере как массив. ЕслиdescriptorCountравно нулю, эта запись привязки зарезервирована, и к ресурсу нельзя обращаться ни на каком этапе через эту привязку в любом конвейере, использующем макет набора. -
Член
stageFlags— это битовая маска VkShaderStageFlagBits, указывающая, какие этапы шейдера конвейера могут обращаться к ресурсу для этой привязки.VK_SHADER_STAGE_ALL— это сокращение, указывающее, что ко всем определенным этапам шейдера, включая любые дополнительные этапы, определенные расширениями, можно получить доступ к ресурсу.Если этап шейдера не включен в
stageFlags, то к ресурсу нельзя обращаться с этого этапа через эту привязку в любом конвейере, использующем макет набора. За исключением входных вложений, которые ограничены фрагментным шейдером, нет ограничений на то, какие комбинации этапов могут использоваться привязкой описателя, и, в частности, привязку можно использовать как графическими этапами, так и вычислительным этапом.
Описание
-
pImmutableSamplersвлияет на инициализацию семплеров. ЕслиdescriptorTypeуказывает описатель типаVK_DESCRIPTOR_TYPE_SAMPLERилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, тоpImmutableSamplersможет использоваться для инициализации набора неизменяемых семплеров. Неизменяемые семплеры постоянно привязаны к макету набора; последующая привязка семплера в слот неизменяемого семплера в наборе описателей не допускается. ЕслиpImmutableSamplersнеNULL, то он считается указателем на массив дескрипторов семплеров, которые будут использоваться макетом набора для соответствующей привязки. ЕслиpImmutableSamplersравноNULL, то слоты семплера являются динамическими, и дескрипторы семплеров должны быть привязаны к наборам описателей с использованием этого макета. ЕслиdescriptorTypeне является одним из этих типов описателей, тоpImmutableSamplersигнорируется.
Приведенное выше определение макета позволяет задавать привязки описателей разреженно, так что не все номера привязки между 0 и максимальным номером привязки должны быть указаны в массиве pBindings. Привязки, которые не указаны, имеют descriptorCount и stageFlags равные нулю, а descriptorType считается неопределенным. Однако все номера привязки между 0 и максимальным номером привязки в массиве VkDescriptorSetLayoutCreateInfo::pBindings могут потреблять память в макете набора описателей, даже если не все привязки описателей используются, хотя не следует потреблять дополнительную память из пула описателей.
Примечание
Максимальный указанный номер привязки следует выбирать как можно более компактным, чтобы избежать потери памяти.
Правильное использование
- Если
descriptorTypeравноVK_DESCRIPTOR_TYPE_SAMPLERилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, иdescriptorCountне0иpImmutableSamplersнеNULL,pImmutableSamplersдолжно быть указателем на массивdescriptorCountдопустимыхVkSamplerдескрипторов- Если
descriptorCountне0,stageFlagsдолжно быть допустимой комбинацией значений VkShaderStageFlagBits- Если
descriptorTypeравноVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTиdescriptorCountне0, тоstageFlagsдолжно быть0илиVK_SHADER_STAGE_FRAGMENT_BIT
Правильное использование (неявное)
descriptorTypeдолжно быть допустимым значением VkDescriptorType
См. также
VkDescriptorSetLayoutCreateInfo, VkDescriptorType, VkSampler, VkShaderStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSetLayoutBinding
VkDescriptorSetLayoutCreateInfo(3)
Имя
VkDescriptorSetLayoutCreateInfo - Структура, определяющая параметры вновь созданного макета набора описателей
C-спецификация
Информация о макете набора описателей передается в экземпляре структуры VkDescriptorSetLayoutCreateInfo:
typedef struct VkDescriptorSetLayoutCreateInfo {
VkStructureType sType;
const void* pNext;
VkDescriptorSetLayoutCreateFlags flags;
uint32_t bindingCount;
const VkDescriptorSetLayoutBinding* pBindings;
} VkDescriptorSetLayoutCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis a bitmask specifying options for descriptor set layout creation. -
bindingCountis the number of elements inpBindings. -
pBindingsis a pointer to an array of VkDescriptorSetLayoutBinding structures.
Описание
Правильное использование
- Члены VkDescriptorSetLayoutBinding::
bindingэлементов массиваpBindingsдолжны иметь разные значения.
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть допустимой комбинацией значений VkDescriptorSetLayoutCreateFlagBits- Если
bindingCountне0,pBindingsдолжно быть указателем на массивbindingCountдопустимыхVkDescriptorSetLayoutBindingструктур
См. также
VkDescriptorSetLayoutBinding, VkDescriptorSetLayoutCreateFlags, VkStructureType, vkCreateDescriptorSetLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSetLayoutCreateInfo
VkDeviceCreateInfo(3)
Имя
VkDeviceCreateInfo - Структура, определяющая параметры вновь созданного устройства
C-спецификация
Структура VkDeviceCreateInfo определяется следующим образом:
typedef struct VkDeviceCreateInfo {
VkStructureType sType;
const void* pNext;
VkDeviceCreateFlags flags;
uint32_t queueCreateInfoCount;
const VkDeviceQueueCreateInfo* pQueueCreateInfos;
uint32_t enabledLayerCount;
const char* const* ppEnabledLayerNames;
uint32_t enabledExtensionCount;
const char* const* ppEnabledExtensionNames;
const VkPhysicalDeviceFeatures* pEnabledFeatures;
} VkDeviceCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis reserved for future use. -
queueCreateInfoCountis the unsigned integer size of thepQueueCreateInfosarray. Refer to the Queue Creation section below for further details. -
pQueueCreateInfosis a pointer to an array of VkDeviceQueueCreateInfo structures describing the queues that are requested to be created along with the logical device. Refer to the Queue Creation section below for further details. -
enabledLayerCountis deprecated and ignored. -
ppEnabledLayerNamesis deprecated and ignored. See Device Layer Deprecation. -
enabledExtensionCountis the number of device extensions to enable. -
ppEnabledExtensionNamesis a pointer to an array ofenabledExtensionCountnull-terminated UTF-8 strings containing the names of extensions to enable for the created device. See the Extensions section for further details. -
pEnabledFeaturesisNULLor a pointer to a VkPhysicalDeviceFeatures structure that contains boolean indicators of all the features to be enabled. Refer to the Features section for further details.
Описание
Допустимое использование
- Элемент
queueFamilyIndexлюбого заданного элементаpQueueCreateInfosдолжен быть уникальным вpQueueCreateInfos
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_DEVICE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть0pQueueCreateInfosдолжен быть указателем на массив изqueueCreateInfoCountдопустимыхVkDeviceQueueCreateInfoструктур- Если
enabledLayerCountне0,ppEnabledLayerNamesдолжен быть указателем на массив изenabledLayerCountnull-terminated UTF-8 строк- Если
enabledExtensionCountне0,ppEnabledExtensionNamesдолжен быть указателем на массив изenabledExtensionCountnull-terminated UTF-8 строк- Если
pEnabledFeaturesнеNULL,pEnabledFeaturesдолжен быть указателем на допустимуюVkPhysicalDeviceFeaturesструктуруqueueCreateInfoCountдолжен быть больше0
См. также
VkDeviceCreateFlags, VkDeviceQueueCreateInfo, VkPhysicalDeviceFeatures, VkStructureType, vkCreateDevice
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceCreateInfo
VkDeviceQueueCreateInfo(3)
Имя
VkDeviceQueueCreateInfo - Структура, определяющая параметры вновь созданной очереди устройства
C спецификация
Структура VkDeviceQueueCreateInfo определяется как:
typedef struct VkDeviceQueueCreateInfo {
VkStructureType sType;
const void* pNext;
VkDeviceQueueCreateFlags flags;
uint32_t queueFamilyIndex;
uint32_t queueCount;
const float* pQueuePriorities;
} VkDeviceQueueCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis reserved for future use. -
queueFamilyIndexis an unsigned integer indicating the index of the queue family to create on this device. This index corresponds to the index of an element of thepQueueFamilyPropertiesarray that was returned byvkGetPhysicalDeviceQueueFamilyProperties. -
queueCountis an unsigned integer specifying the number of queues to create in the queue family indicated byqueueFamilyIndex. -
pQueuePrioritiesis an array ofqueueCountnormalized floating point values, specifying priorities of work that will be submitted to each created queue. See Queue Priority for more information.
Описание
Допустимое использование
queueFamilyIndexдолжен быть меньшеpQueueFamilyPropertyCount, возвращаемогоvkGetPhysicalDeviceQueueFamilyPropertiesqueueCountдолжен быть меньше или равен элементуqueueCountструктурыVkQueueFamilyProperties, возвращаемогоvkGetPhysicalDeviceQueueFamilyPropertiesвpQueueFamilyProperties[queueFamilyIndex]- Каждый элемент
pQueuePrioritiesдолжен находиться в диапазоне от0.0до1.0включительно
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть0pQueuePrioritiesдолжен быть указателем на массив изqueueCountfloatзначенийqueueCountдолжен быть больше0
См. также
VkDeviceCreateInfo, VkDeviceQueueCreateFlags, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceQueueCreateInfo
VkDispatchIndirectCommand(3)
Имя
VkDispatchIndirectCommand - Структура, определяющая косвенную команду диспетчеризации
C спецификация
Структура VkDispatchIndirectCommand определяется как:
typedef struct VkDispatchIndirectCommand {
uint32_t x;
uint32_t y;
uint32_t z;
} VkDispatchIndirectCommand; Члены
-
xis the number of local workgroups to dispatch in the X dimension. -
yis the number of local workgroups to dispatch in the Y dimension. -
zis the number of local workgroups to dispatch in the Z dimension.
Описание
Члены VkDispatchIndirectCommand имеют то же значение, что и соответствующие параметры vkCmdDispatch.
Допустимое использование
xдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]yдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]zдолжен быть меньше или равенVkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDispatchIndirectCommand
VkDrawIndexedIndirectCommand(3)
Имя
VkDrawIndexedIndirectCommand - Структура, определяющая косвенную команду отрисовки с индексами
C спецификация
Структура VkDrawIndexedIndirectCommand определяется как:
typedef struct VkDrawIndexedIndirectCommand {
uint32_t indexCount;
uint32_t instanceCount;
uint32_t firstIndex;
int32_t vertexOffset;
uint32_t firstInstance;
} VkDrawIndexedIndirectCommand; Члены
-
indexCountis the number of vertices to draw. -
instanceCountis the number of instances to draw. -
firstIndexis the base index within the index buffer. -
vertexOffsetis the value added to the vertex index before indexing into the vertex buffer. -
firstInstanceis the instance ID of the first instance to draw.
Описание
Члены VkDrawIndexedIndirectCommand имеют то же значение, что и одноимённые параметры vkCmdDrawIndexed.
Допустимое использование
- Для заданного связывания буфера вершин любые извлекаемые данные атрибутов должны полностью содержаться в соответствующем связывании буфера вершин, как описано в html/vkspec.html#fxvertex-input
- (
indexSize* (firstIndex+indexCount) +offset) должен быть меньше или равен размеру текущего связанного буфера индексов, при этомindexSizeосновывается на типе, указанномindexType, где буфер индексов,indexType, иoffsetуказываются черезvkCmdBindIndexBuffer- Если функция drawIndirectFirstInstance не включена,
firstInstanceдолжен быть0
См. также
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDrawIndexedIndirectCommand
VkDrawIndirectCommand(3)
Имя
VkDrawIndirectCommand - Структура, определяющая команду непрямого вывода
C-спецификация
Структура VkDrawIndirectCommand определяется следующим образом:
typedef struct VkDrawIndirectCommand {
uint32_t vertexCount;
uint32_t instanceCount;
uint32_t firstVertex;
uint32_t firstInstance;
} VkDrawIndirectCommand; Члены
-
vertexCount— количество вершин для отрисовки. -
instanceCount— количество экземпляров для отрисовки. -
firstVertex— индекс первой вершины для отрисовки. -
firstInstance— ID экземпляра первого экземпляра для отрисовки.
Описание
Члены VkDrawIndirectCommand имеют то же значение, что и одноимённые параметры vkCmdDraw.
Допустимое использование
- Для заданного связывания буфера вершин любые извлекаемые данные атрибутов должны полностью содержаться в соответствующем связывании буфера вершин, как описано в html/vkspec.html#fxvertex-input
- Если функция drawIndirectFirstInstance не включена,
firstInstanceдолжно быть0
См. также
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDrawIndirectCommand
VkEventCreateInfo(3)
Имя
VkEventCreateInfo - Структура, определяющая параметры вновь созданного события
C-спецификация
Структура VkEventCreateInfo определяется следующим образом:
typedef struct VkEventCreateInfo {
VkStructureType sType;
const void* pNext;
VkEventCreateFlags flags;
} VkEventCreateInfo; Члены
-
sType— тип этой структуры. -
pNext—NULLили указатель на структуру, зависящую от расширения. -
flags— зарезервировано для будущих использований.
Описание
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_EVENT_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0
См. также
VkEventCreateFlags, VkStructureType, vkCreateEvent
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkEventCreateInfo
VkExtensionProperties(3)
Имя
VkExtensionProperties - Структура, определяющая свойства расширения
C-спецификация
Структура VkExtensionProperties определяется следующим образом:
typedef struct VkExtensionProperties {
char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
uint32_t specVersion;
} VkExtensionProperties; Члены
-
extensionName— строка, завершающаяся нулём, указывающая имя расширения. -
specVersion— версия этого расширения. Это целое число, увеличивающееся при изменениях, обратно совместимых.
См. также
vkEnumerateDeviceExtensionProperties, vkEnumerateInstanceExtensionProperties
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkExtensionProperties
VkExtent2D(3)
Имя
VkExtent2D - Структура, определяющая двумерную протяжённость
C-спецификация
Двумерная протяжённость определяется структурой:
typedef struct VkExtent2D {
uint32_t width;
uint32_t height;
} VkExtent2D; Члены
-
width— ширина протяжённости. -
height— высота протяжённости.
См. также
VkRect2D, vkGetRenderAreaGranularity
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkExtent2D
VkExtent3D(3)
Имя
VkExtent3D - Структура, определяющая трёхмерную протяжённость
C-спецификация
Трёхмерная протяжённость определяется структурой:
typedef struct VkExtent3D {
uint32_t width;
uint32_t height;
uint32_t depth;
} VkExtent3D; Члены
-
width— ширина протяжённости. -
height— высота протяжённости. -
depth— глубина протяжённости.
См. также
VkBufferImageCopy, VkImageCopy, VkImageCreateInfo, VkImageFormatProperties, VkImageResolve, VkQueueFamilyProperties, VkSparseImageFormatProperties, VkSparseImageMemoryBind
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkExtent3D
VkFenceCreateInfo(3)
Имя
VkFenceCreateInfo - Структура, определяющая параметры вновь созданного забора
C-спецификация
Структура VkFenceCreateInfo определяется следующим образом:
typedef struct VkFenceCreateInfo {
VkStructureType sType;
const void* pNext;
VkFenceCreateFlags flags;
} VkFenceCreateInfo; Члены
-
sType— тип этой структуры. -
pNext—NULLили указатель на структуру, зависящую от расширения. -
flags— битовая маска VkFenceCreateFlagBits, определяющая начальное состояние и поведение забора.
Описание
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_FENCE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть допустимым сочетанием значений VkFenceCreateFlagBits
См. также
VkFenceCreateFlags, VkStructureType, vkCreateFence
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFenceCreateInfo
VkFormatProperties(3)
Имя
VkFormatProperties - Структура, определяющая свойства формата изображения
C-спецификация
Структура VkFormatProperties определяется следующим образом:
typedef struct VkFormatProperties {
VkFormatFeatureFlags linearTilingFeatures;
VkFormatFeatureFlags optimalTilingFeatures;
VkFormatFeatureFlags bufferFeatures;
} VkFormatProperties; Члены
-
linearTilingFeatures— битовая маска VkFormatFeatureFlagBits, определяющая функции, поддерживаемые изображениями, созданными с параметромtilingVK_IMAGE_TILING_LINEAR. -
optimalTilingFeatures— битовая маска VkFormatFeatureFlagBits, определяющая функции, поддерживаемые изображениями, созданными с параметромtilingVK_IMAGE_TILING_OPTIMAL. -
bufferFeatures— битовая маска VkFormatFeatureFlagBits, определяющая функции, поддерживаемые буферами.
Описание
Примечание
Если не поддерживаются флаги функций формата, единственным возможным использованием будет перенос изображений — которые сами по себе не полезны. Таким образом, если не поддерживаются флаги функций формата, сам формат не поддерживается, и изображения этого формата не могут быть созданы.
Если format — это формат блочной компрессии, то буферы не должны поддерживать какие-либо функции для этого формата.
См. также
VkFormatFeatureFlags, vkGetPhysicalDeviceFormatProperties
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormatProperties
VkFramebufferCreateInfo(3)
Имя
VkFramebufferCreateInfo - Структура, определяющая параметры вновь созданного буфера кадра
C-спецификация
Структура VkFramebufferCreateInfo определяется следующим образом:
typedef struct VkFramebufferCreateInfo {
VkStructureType sType;
const void* pNext;
VkFramebufferCreateFlags flags;
VkRenderPass renderPass;
uint32_t attachmentCount;
const VkImageView* pAttachments;
uint32_t width;
uint32_t height;
uint32_t layers;
} VkFramebufferCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis reserved for future use. -
renderPassis a render pass that defines what render passes the framebuffer will be compatible with. See Render Pass Compatibility for details. -
attachmentCountis the number of attachments. -
pAttachmentsis an array ofVkImageViewhandles, each of which will be used as the corresponding attachment in a render pass instance. -
width,heightandlayersdefine the dimensions of the framebuffer.
Описание
Используемые в качестве прикреплений подобъекты изображения не должны каким-либо иным образом использоваться в течение времени существования экземпляра прохода отрисовки.
Примечание
Это ограничение означает, что проход отрисовки имеет полное представление обо всех использованиях всех прикреплений, поэтому реализация может принимать правильные решения о том, когда и как выполнять переходы компоновки, когда перекрывать выполнение подобъектов и т. д.
Допускается, чтобы подобъект не использовал цветные или глубину/трафарет прикрепления, а вместо этого использовал побочные эффекты шейдера, такие как запись изображений и атомарные операции, для создания выходных данных. В этом случае подобъект продолжает использовать width, height, и layers буфера кадра для определения размеров области отрисовки, и rasterizationSamples из VkPipelineMultisampleStateCreateInfo каждого конвейера для определения количества выборок, используемых при растеризации; однако, если VkPhysicalDeviceFeatures::variableMultisampleRate is VK_FALSE, then all pipelines to be bound with a given zero-attachment subpass must have the same value for VkPipelineMultisampleStateCreateInfo::rasterizationSamples.
Допустимое использование
attachmentCountдолжно быть равно количеству прикреплений, указанному вrenderPass- Любой заданный элемент
pAttachments, используемый в качестве цветного прикрепления или прикрепления разрешенияrenderPass, должен быть создан со значениемusage, включающимVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- Любой заданный элемент
pAttachments, используемый в качестве прикрепления глубины/трафаретаrenderPass, должен быть создан со значениемusage, включающимVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Любой заданный элемент
pAttachments, используемый в качестве входного прикрепленияrenderPass, должен быть создан со значениемusage, включающимVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- Любой заданный элемент
pAttachmentsдолжен быть создан со значением VkFormat, совпадающим со значением VkFormat, указанным соответствующимVkAttachmentDescriptionвrenderPass- Любой заданный элемент
pAttachmentsдолжен быть создан со значениемsamples, совпадающим со значениемsamples, указанным соответствующимVkAttachmentDescriptionвrenderPass- Любой заданный элемент
pAttachmentsдолжен иметь размеры не меньше соответствующего размера буфера кадра- Любой заданный элемент
pAttachmentsдолжен указывать только один уровень mip- Любой заданный элемент
pAttachmentsдолжен быть создан с тождественным преобразованиемwidthдолжно быть больше0.widthдолжно быть меньше или равноVkPhysicalDeviceLimits::maxFramebufferWidthheightдолжно быть больше0.heightдолжно быть меньше или равноVkPhysicalDeviceLimits::maxFramebufferHeightlayersдолжно быть больше0.layersдолжно быть меньше или равноVkPhysicalDeviceLimits::maxFramebufferLayers
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0renderPassдолжно быть допустимым дескрипторомVkRenderPass- Если
attachmentCountне0,pAttachmentsдолжно быть указателем на массив изattachmentCountдопустимых дескрипторовVkImageView- И
renderPass, и элементыpAttachments, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkFramebufferCreateFlags, VkImageView, VkRenderPass, VkStructureType, vkCreateFramebuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFramebufferCreateInfo
VkGraphicsPipelineCreateInfo(3)
Имя
VkGraphicsPipelineCreateInfo - Структура, задающая параметры вновь созданного графического конвейера
C Спецификация
Структура VkGraphicsPipelineCreateInfo определяется как:
typedef struct VkGraphicsPipelineCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineCreateFlags flags;
uint32_t stageCount;
const VkPipelineShaderStageCreateInfo* pStages;
const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
const VkPipelineTessellationStateCreateInfo* pTessellationState;
const VkPipelineViewportStateCreateInfo* pViewportState;
const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
const VkPipelineDynamicStateCreateInfo* pDynamicState;
VkPipelineLayout layout;
VkRenderPass renderPass;
uint32_t subpass;
VkPipeline basePipelineHandle;
int32_t basePipelineIndex;
} VkGraphicsPipelineCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis a bitmask of VkPipelineCreateFlagBits specifying how the pipeline will be generated. -
stageCountis the number of entries in thepStagesarray. -
pStagesis an array of sizestageCountstructures of type VkPipelineShaderStageCreateInfo describing the set of the shader stages to be included in the graphics pipeline. -
pVertexInputStateis a pointer to an instance of the VkPipelineVertexInputStateCreateInfo structure. -
pInputAssemblyStateis a pointer to an instance of the VkPipelineInputAssemblyStateCreateInfo structure which determines input assembly behavior, as described in Drawing Commands. -
pTessellationStateis a pointer to an instance of the VkPipelineTessellationStateCreateInfo structure, and is ignored if the pipeline does not include a tessellation control shader stage and tessellation evaluation shader stage. -
pViewportStateis a pointer to an instance of the VkPipelineViewportStateCreateInfo structure, and is ignored if the pipeline has rasterization disabled. -
pRasterizationStateis a pointer to an instance of the VkPipelineRasterizationStateCreateInfo structure. -
pMultisampleStateis a pointer to an instance of the VkPipelineMultisampleStateCreateInfo, and is ignored if the pipeline has rasterization disabled. -
pDepthStencilStateis a pointer to an instance of the VkPipelineDepthStencilStateCreateInfo structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use a depth/stencil attachment. -
pColorBlendStateis a pointer to an instance of the VkPipelineColorBlendStateCreateInfo structure, and is ignored if the pipeline has rasterization disabled or if the subpass of the render pass the pipeline is created against does not use any color attachments. -
pDynamicStateis a pointer to VkPipelineDynamicStateCreateInfo and is used to indicate which properties of the pipeline state object are dynamic and can be changed independently of the pipeline state. This can beNULL, which means no state in the pipeline is considered dynamic. -
layoutis the description of binding locations used by both the pipeline and descriptor sets used with the pipeline. -
renderPassis a handle to a render pass object describing the environment in which the pipeline will be used; the pipeline must only be used with an instance of any render pass compatible with the one provided. See Render Pass Compatibility for more information. -
subpassis the index of the subpass in the render pass where this pipeline will be used. -
basePipelineHandleis a pipeline to derive from. -
basePipelineIndexis an index into thepCreateInfosparameter to use as a pipeline to derive from.
Описание
Параметры basePipelineHandle и basePipelineIndex описаны более подробно в Pipeline Derivatives.
pStages указывает на массив структур VkPipelineShaderStageCreateInfo, которые были описаны ранее в разделе Compute Pipelines.
pDynamicState указывает на структуру типа VkPipelineDynamicStateCreateInfo.
Допустимое использование
- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineIndexравно -1,basePipelineHandleдолжен быть действительной дескриптором графическогоVkPipeline- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineHandleравно VK_NULL_HANDLE,basePipelineIndexдолжен быть действительным индексом в параметреpCreateInfosвызывающей команды- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineIndexне равно -1,basePipelineHandleдолжен быть VK_NULL_HANDLE- Если
flagsсодержит флагVK_PIPELINE_CREATE_DERIVATIVE_BIT, иbasePipelineHandleне равно VK_NULL_HANDLE,basePipelineIndexдолжен быть -1- Член
stageкаждого элементаpStagesдолжен быть уникальным- Член
stageодного элементаpStagesдолжен бытьVK_SHADER_STAGE_VERTEX_BIT- Член
stageлюбого данного элементаpStagesне должен бытьVK_SHADER_STAGE_COMPUTE_BIT- Если
pStagesвключает этап шейдера управления тесселяцией, он должен включать этап шейдера оценки тесселяции- Если
pStagesвключает этап шейдера оценки тесселяции, он должен включать этап шейдера управления тесселяцией- Если
pStagesвключает этап шейдера управления тесселяцией и этап шейдера оценки тесселяции,pTessellationStateдолжен быть указателем на действительную структуруVkPipelineTessellationStateCreateInfo- Если
pStagesвключает этапы шейдера тесселяции, код шейдера хотя бы одного этапа должен содержать инструкциюOpExecutionMode, которая указывает тип подразделения в конвейере- Если
pStagesвключает этапы шейдера тесселяции, и код шейдера обоих этапов содержит инструкциюOpExecutionMode, которая указывает тип подразделения в конвейере, они должны оба указывать один и тот же режим подразделения- Если
pStagesвключает этапы шейдера тесселяции, код шейдера хотя бы одного этапа должен содержать инструкциюOpExecutionMode, которая указывает размер выходного патча в конвейере- Если
pStagesвключает этапы шейдера тесселяции, и код шейдера обоих содержит инструкциюOpExecutionMode, которая указывает размер выходного патча в конвейере, они должны оба указывать один и тот же размер патча- Если
pStagesвключает этапы шейдера тесселяции, членtopologypInputAssemblyдолжен бытьVK_PRIMITIVE_TOPOLOGY_PATCH_LIST- Если член
topologypInputAssemblyравенVK_PRIMITIVE_TOPOLOGY_PATCH_LIST,pStagesдолжен включать этапы шейдера тесселяции- Если
pStagesвключает этап шейдера геометрии и не включает никаких этапов шейдера тесселяции, его код шейдера должен содержать инструкциюOpExecutionMode, которая указывает тип примитива ввода, совместимый с топологией примитива, указанной вpInputAssembly- Если
pStagesвключает этап шейдера геометрии, а также включает этапы шейдера тесселяции, его код шейдера должен содержать инструкциюOpExecutionMode, которая указывает тип примитива ввода, совместимый с топологией примитива, которая выводится этапами тесселяции- Если
pStagesвключает этап шейдера фрагментов и этап шейдера геометрии, и код шейдера фрагментов считывает из входной переменной, которая декорированаPrimitiveID, то код шейдера геометрии должен записывать в соответствующую выходную переменную, декорированнуюPrimitiveID, по всем путям выполнения- Если
pStagesвключает этап шейдера фрагментов, его код шейдера не должен считывать из любого вложенного ввода, который определен какVK_ATTACHMENT_UNUSEDвsubpass- Код шейдера для точек входа, идентифицированных
pStages, и остальное состояние, идентифицированное этой структурой, должны соответствовать правилам связывания конвейера, описанным в главе Интерфейсы шейдера- Если растеризация не отключена и
subpassиспользует вложение глубины/трафарета вrenderpass, которое имеет компоновкуVK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALвVkAttachmentReference, определенномsubpass, членdepthWriteEnablepDepthStencilStateдолжен бытьVK_FALSE- Если растеризация не отключена и
subpassиспользует вложение глубины/трафарета вrenderpass, которое имеет компоновкуVK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALвVkAttachmentReference, определенномsubpass, членыfailOp,passOpиdepthFailOpкаждого из членовfrontиbackpDepthStencilStateдолжны бытьVK_STENCIL_OP_KEEP- Если растеризация не отключена и подпроход использует цветовые вложения, то для каждого цветового вложения в подпроходе член
blendEnableсоответствующего элемента членаpAttachmentpColorBlendStateдолжен бытьVK_FALSE, еслиformatвложения не поддерживает операции смешивания цветов, как указано флагомVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITвVkFormatProperties::linearTilingFeaturesилиVkFormatProperties::optimalTilingFeatures, возвращаемымvkGetPhysicalDeviceFormatProperties- Если растеризация не отключена и подпроход использует цветовые вложения, член
attachmentCountpColorBlendStateдолжен быть равенcolorAttachmentCount, используемому для созданияsubpass- Если ни один элемент члена
pDynamicStatespDynamicStateне равенVK_DYNAMIC_STATE_VIEWPORT, членpViewportspViewportStateдолжен быть указателем на массив структурpViewportState::viewportCountVkViewport- Если ни один элемент члена
pDynamicStatespDynamicStateне равенVK_DYNAMIC_STATE_SCISSOR, членpScissorspViewportStateдолжен быть указателем на массив структурpViewportState::scissorCountVkRect2D- Если функция широких линий не включена, и ни один элемент члена
pDynamicStatespDynamicStateне равенVK_DYNAMIC_STATE_LINE_WIDTH, членlineWidthpRasterizationStateдолжен быть1.0- Если член
rasterizerDiscardEnablepRasterizationStateравенVK_FALSE,pViewportStateдолжен быть указателем на действительную структуруVkPipelineViewportStateCreateInfo- Если член
rasterizerDiscardEnablepRasterizationStateравенVK_FALSE,pMultisampleStateдолжен быть указателем на действительную структуруVkPipelineMultisampleStateCreateInfo- Если член
rasterizerDiscardEnablepRasterizationStateравенVK_FALSE, иsubpassиспользует вложение глубины/трафарета,pDepthStencilStateдолжен быть указателем на действительную структуруVkPipelineDepthStencilStateCreateInfo- Если член
rasterizerDiscardEnablepRasterizationStateравенVK_FALSE, иsubpassиспользует цветовые вложения,pColorBlendStateдолжен быть указателем на действительную структуруVkPipelineColorBlendStateCreateInfo- Если функция ограничения смещения глубины не включена, ни один элемент члена
pDynamicStatespDynamicStateне равенVK_DYNAMIC_STATE_DEPTH_BIAS, и членdepthBiasEnablepDepthStencilравенVK_TRUE, членdepthBiasClamppDepthStencilдолжен быть0.0- Если ни один элемент члена
pDynamicStatespDynamicStateне равенVK_DYNAMIC_STATE_DEPTH_BOUNDS, и членdepthBoundsTestEnablepDepthStencilравенVK_TRUE, членыminDepthBoundsиmaxDepthBoundspDepthStencilдолжны находиться в диапазоне от0.0до1.0, включительноlayoutдолжен быть согласованным со всеми шейдерами, указанными вpStages- Если
subpassиспользует цветовые и/или вложения глубины/трафарета, то членrasterizationSamplespMultisampleStateдолжен быть таким же, как количество выборок для этих вложений подпрохода- Если
subpassне использует никаких цветовых и/или вложений глубины/трафарета, то членrasterizationSamplespMultisampleStateдолжен следовать правилам для подпрохода без вложений
subpassдолжен быть допустимым подпроходом внутриrenderpass
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть допустимым сочетанием значений VkPipelineCreateFlagBitspStagesдолжен быть указателем на массив изstageCountдопустимыхVkPipelineShaderStageCreateInfoструктурpVertexInputStateдолжен быть указателем на допустимуюVkPipelineVertexInputStateCreateInfoструктуруpInputAssemblyStateдолжен быть указателем на допустимуюVkPipelineInputAssemblyStateCreateInfoструктуруpRasterizationStateдолжен быть указателем на допустимуюVkPipelineRasterizationStateCreateInfoструктуру- Если
pDynamicStateнеNULL,pDynamicStateдолжен быть указателем на допустимуюVkPipelineDynamicStateCreateInfoструктуруlayoutдолжен быть допустимойVkPipelineLayoutдескрипторомrenderPassдолжен быть допустимойVkRenderPassдескрипторомstageCountдолжен быть больше0- Каждый из
basePipelineHandle,layoutиrenderPass, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkPipeline, VkPipelineColorBlendStateCreateInfo, VkPipelineCreateFlags, VkPipelineDepthStencilStateCreateInfo, VkPipelineDynamicStateCreateInfo, VkPipelineInputAssemblyStateCreateInfo, VkPipelineLayout, VkPipelineMultisampleStateCreateInfo, VkPipelineRasterizationStateCreateInfo, VkPipelineShaderStageCreateInfo, VkPipelineTessellationStateCreateInfo, VkPipelineVertexInputStateCreateInfo, VkPipelineViewportStateCreateInfo, VkRenderPass, VkStructureType, vkCreateGraphicsPipelines
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkGraphicsPipelineCreateInfo
VkImageBlit(3)
Имя
VkImageBlit - Структура, определяющая операцию копирования изображения
C-спецификация
Структура VkImageBlit определяется как:
typedef struct VkImageBlit {
VkImageSubresourceLayers srcSubresource;
VkOffset3D srcOffsets[2];
VkImageSubresourceLayers dstSubresource;
VkOffset3D dstOffsets[2];
} VkImageBlit; Члены
-
srcSubresourceявляется подресурсом для копирования. -
srcOffsetsявляется массивом из двух структур VkOffset3D, определяющих границы исходной области внутриsrcSubresource. -
dstSubresourceявляется подресурсом для записи. -
dstOffsetsявляется массивом из двух структур VkOffset3D, определяющих границы целевой области внутриdstSubresource.
Описание
Для каждого элемента массива pRegions выполняется операция копирования в указанные исходную и целевую области.
Допустимое использование
- Член
aspectMasksrcSubresourceиdstSubresourceдолжны совпадать- Член
layerCountsrcSubresourceиdstSubresourceдолжны совпадать- Если любой из параметров
srcImageилиdstImageвызывающей команды имеет тип VkImageTypeVK_IMAGE_TYPE_3D, то членыbaseArrayLayerиlayerCountкакsrcSubresource, так иdstSubresourceдолжны быть0и1, соответственно- Член
aspectMasksrcSubresourceдолжен указывать на аспекты, присутствующие вsrcImageвызывающей команды- Член
aspectMaskdstSubresourceдолжен указывать на аспекты, присутствующие вdstImageвызывающей командыsrcOffset[0].xиsrcOffset[1].xдолжны быть больше или равны0и меньше или равны ширине подресурса исходного изображенияsrcOffset[0].yиsrcOffset[1].yдолжны быть больше или равны0и меньше или равны высоте подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоsrcOffset[0].y должен быть0иsrcOffset[1].y должен быть1.srcOffset[0].zиsrcOffset[1].zдолжны быть больше или равны0и меньше или равны глубине подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоsrcOffset[0].z должен быть0иsrcOffset[1].z должен быть1.dstOffset[0].xиdstOffset[1].xдолжны быть больше или равны0и меньше или равны ширине подресурса целевого изображенияdstOffset[0].yиdstOffset[1].yдолжны быть больше или равны0и меньше или равны высоте подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоdstOffset[0].y должен быть0иdstOffset[1].y должен быть1.dstOffset[0].zиdstOffset[1].zдолжны быть больше или равны0и меньше или равны глубине подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоdstOffset[0].z должен быть0иdstOffset[1].z должен быть1.
Допустимое использование (неявное)
srcSubresourceдолжен быть допустимойVkImageSubresourceLayersструктуройdstSubresourceдолжен быть допустимойVkImageSubresourceLayersструктурой
См. также
VkImageSubresourceLayers, VkOffset3D, vkCmdBlitImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageBlit
VkImageCopy(3)
Имя
VkImageCopy - Структура, определяющая операцию копирования изображения
C-спецификация
Структура VkImageCopy определяется как:
typedef struct VkImageCopy {
VkImageSubresourceLayers srcSubresource;
VkOffset3D srcOffset;
VkImageSubresourceLayers dstSubresource;
VkOffset3D dstOffset;
VkExtent3D extent;
} VkImageCopy; Члены
-
srcSubresourceиdstSubresourceявляются структурами VkImageSubresourceLayers, определяющими подресурсы изображений, используемые для исходных и целевых данных изображения, соответственно. -
srcOffsetиdstOffsetвыбирают начальные смещения x, y и z в текселях подобластей исходных и целевых данных изображения. -
extentявляется размером в текселях исходного изображения для копирования вwidth,heightиdepth.
Описание
Копирование выполняется слой за слоем, начиная с члена baseArrayLayer srcSubresource для источника и dstSubresource для назначения. layerCount слоев копируются в целевое изображение.
Правильное использование
- Элемент
aspectMasksrcSubresourceиdstSubresourceдолжны совпадать- Элемент
layerCountsrcSubresourceиdstSubresourceдолжны совпадать- Если любой из параметров
srcImageилиdstImageвызывающей команды имеет тип VkImageTypeVK_IMAGE_TYPE_3D, элементыbaseArrayLayerиlayerCountкак вsrcSubresource, так и вdstSubresourceдолжны быть0и1, соответственно- Элемент
aspectMasksrcSubresourceдолжен указывать на аспекты, присутствующие вsrcImageвызывающей команды- Элемент
aspectMaskdstSubresourceдолжен указывать на аспекты, присутствующие вdstImageвызывающей командыsrcOffset.xи (extent.width+srcOffset.x) должны быть больше или равны0и меньше или равны ширине подресурса исходного изображенияsrcOffset.yи (extent.height+srcOffset.y) должны быть больше или равны0и меньше или равны высоте подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоsrcOffset.yдолжен быть0, аextent.heightдолжен быть1.srcOffset.zи (extent.depth+srcOffset.z) должны быть больше или равны0и меньше или равны глубине подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоsrcOffset.zдолжен быть0, аextent.depthдолжен быть1.srcSubresource.baseArrayLayerдолжен быть меньше, а (srcSubresource.layerCount+srcSubresource.baseArrayLayer) должен быть меньше или равен количеству слоев в исходном изображенииdstOffset.xи (extent.width+dstOffset.x) должны быть больше или равны0и меньше или равны ширине подресурса целевого изображенияdstOffset.yи (extent.height+dstOffset.y) должны быть больше или равны0и меньше или равны высоте подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоdstOffset.yдолжен быть0, аextent.heightдолжен быть1.dstOffset.zи (extent.depth+dstOffset.z) должны быть больше или равны0и меньше или равны глубине подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоdstOffset.zдолжен быть0, аextent.depthдолжен быть1.dstSubresource.baseArrayLayerдолжен быть меньше, а (dstSubresource.layerCount+dstSubresource.baseArrayLayer) должен быть меньше или равен количеству слоев в целевом изображении- Если
srcImageвызывающей команды является изображением в сжатом формате, все членыsrcOffsetдолжны быть кратными соответствующим размерам сжатого блока текстур- Если
srcImageвызывающей команды является изображением в сжатом формате,extent.widthдолжен быть кратным ширине сжатого блока текстур, или (extent.width+srcOffset.x) должен быть равен ширине подресурса исходного изображения- Если
srcImageвызывающей команды является изображением в сжатом формате,extent.heightдолжен быть кратным высоте сжатого блока текстур, или (extent.height+srcOffset.y) должен быть равен высоте подресурса исходного изображения- Если
srcImageвызывающей команды является изображением в сжатом формате,extent.depthдолжен быть кратным глубине сжатого блока текстур, или (extent.depth+srcOffset.z) должен быть равен глубине подресурса исходного изображения- Если
dstImageвызывающей команды является изображением в сжатом формате, все членыdstOffsetдолжны быть кратными соответствующим размерам сжатого блока текстур- Если
dstImageвызывающей команды является изображением в сжатом формате,extent.widthдолжен быть кратным ширине сжатого блока текстур, или (extent.width+dstOffset.x) должен быть равен ширине подресурса целевого изображения- Если
dstImageвызывающей команды является изображением в сжатом формате,extent.heightдолжен быть кратным высоте сжатого блока текстур, или (extent.height+dstOffset.y) должен быть равен высоте подресурса целевого изображения- Если
dstImageвызывающей команды является изображением в сжатом формате,extent.depthдолжен быть кратным глубине сжатого блока текстур, или (extent.depth+dstOffset.z) должен быть равен глубине подресурса целевого изображенияsrcOffset,dstOffsetиextentдолжны соответствовать требованиям к гранулярности передачи изображений семейства очередей, к которому они будут отправлены, как описано в Physical Device Enumeration
Правильное использование (неявное)
srcSubresourceдолжен быть допустимой структуройVkImageSubresourceLayersdstSubresourceдолжен быть допустимой структуройVkImageSubresourceLayers
См. также
VkExtent3D, VkImageSubresourceLayers, VkOffset3D, vkCmdCopyImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageCopy
VkImageCreateInfo(3)
Имя
VkImageCreateInfo - Структура, определяющая параметры вновь созданного объекта изображения
C-спецификация
Структура VkImageCreateInfo определяется как:
typedef struct VkImageCreateInfo {
VkStructureType sType;
const void* pNext;
VkImageCreateFlags flags;
VkImageType imageType;
VkFormat format;
VkExtent3D extent;
uint32_t mipLevels;
uint32_t arrayLayers;
VkSampleCountFlagBits samples;
VkImageTiling tiling;
VkImageUsageFlags usage;
VkSharingMode sharingMode;
uint32_t queueFamilyIndexCount;
const uint32_t* pQueueFamilyIndices;
VkImageLayout initialLayout;
} VkImageCreateInfo; Члены
-
sType- это тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
flags- это битовая маска VkImageCreateFlagBits, описывающая дополнительные параметры изображения. -
imageType- это значение VkImageType, указывающее базовую размерность изображения. Слои в текстурах массива не считаются размерностью для целей типа изображения. -
format- это VkFormat, описывающий формат и тип элементов данных, которые будут содержаться в изображении. -
extent- это VkExtent3D, описывающий количество элементов данных в каждом измерении базового уровня. -
mipLevelsописывает количество уровней детализации, доступных для уменьшенного сэмплирования изображения. -
arrayLayers- это количество слоев в изображении. -
samples- это количество подвыборок элементов данных в изображении, как определено в VkSampleCountFlagBits. См. Multisampling. -
tiling- это значение VkImageTiling, указывающее на расположение элементов данных в памяти. -
usage- это битовая маска VkImageUsageFlagBits, описывающая предполагаемое использование изображения. -
sharingMode- это значение VkSharingMode, указывающее режим общего доступа к изображению, когда к нему будут обращаться несколько семейств очередей. -
queueFamilyIndexCount- это количество записей в массивеpQueueFamilyIndices. -
pQueueFamilyIndices- это список семейств очередей, которые будут получать доступ к этому изображению (игнорируется, еслиsharingModeнеVK_SHARING_MODE_CONCURRENT). -
initialLayout- это значение VkImageLayout, указывающее начальный VkImageLayout всех подресурсов изображения. См. Image Layouts.
Описание
Изображения, созданные с tiling равным VK_IMAGE_TILING_LINEAR, имеют дополнительные ограничения на их пределы и возможности по сравнению с изображениями, созданными с tiling равным VK_IMAGE_TILING_OPTIMAL. Создание изображений с чередованием VK_IMAGE_TILING_LINEAR может не поддерживаться, если другие параметры не удовлетворяют всем ограничениям:
-
imageTypeестьVK_IMAGE_TYPE_2D -
formatне является форматом глубины/трафарета -
mipLevelsравно 1 -
arrayLayersравно 1 -
samplesестьVK_SAMPLE_COUNT_1_BIT -
usageвключает толькоVK_IMAGE_USAGE_TRANSFER_SRC_BITи/илиVK_IMAGE_USAGE_TRANSFER_DST_BIT
Реализации могут поддерживать дополнительные ограничения и возможности, помимо перечисленных выше.
Для запроса конкретных возможностей реализации для данной комбинации format, imageType, tiling, usage и flags, вызовите vkGetPhysicalDeviceImageFormatProperties. Возвращаемое значение указывает, поддерживается ли данная комбинация настроек изображения. В случае успеха выходной параметр VkImageFormatProperties указывает набор допустимых битов samples и ограничения для extent, mipLevels и arrayLayers.
Чтобы определить набор допустимых битов usage для данного формата, вызовите vkGetPhysicalDeviceFormatProperties.
Допустимое использование
- Сочетание
format,imageType,tiling,usage, иflagsдолжно поддерживаться, как указано возвращаемым значениемVK_SUCCESSизvkGetPhysicalDeviceImageFormatProperties, вызванного с теми же значениями, переданными соответствующим параметрам.- Если
sharingModeравноVK_SHARING_MODE_CONCURRENT,pQueueFamilyIndicesдолжен быть указателем на массив значенийqueueFamilyIndexCountuint32_t- Если
sharingModeравноVK_SHARING_MODE_CONCURRENT,queueFamilyIndexCountдолжен быть больше1- Если
sharingModeравноVK_SHARING_MODE_CONCURRENT, каждый элементpQueueFamilyIndicesдолжен быть уникальным и должен быть меньшеpQueueFamilyPropertyCount, возвращаемого vkGetPhysicalDeviceQueueFamilyProperties дляphysicalDevice, который использовался для созданияdeviceformatне должен бытьVK_FORMAT_UNDEFINEDextent::widthдолжен быть больше0.extent::heightдолжен быть больше0.extent::depthдолжен быть больше0.mipLevelsдолжен быть больше0arrayLayersдолжен быть больше0- Если
flagsсодержитVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,imageTypeдолжен бытьVK_IMAGE_TYPE_2D- Если
imageTypeравноVK_IMAGE_TYPE_1D,extent.widthдолжен быть меньше или равенVkPhysicalDeviceLimits::maxImageDimension1D, илиVkImageFormatProperties::maxExtent.width(как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре) - в зависимости от того, какое значение больше- Если
imageTypeравноVK_IMAGE_TYPE_2Dиflagsне содержитVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,extent.widthиextent.heightдолжны быть меньше или равныVkPhysicalDeviceLimits::maxImageDimension2D, илиVkImageFormatProperties::maxExtent.width/height (как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре) - в зависимости от того, какое значение больше- Если
imageTypeравноVK_IMAGE_TYPE_2DиflagsсодержитVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,extent.widthиextent.heightдолжны быть меньше или равныVkPhysicalDeviceLimits::maxImageDimensionCube, илиVkImageFormatProperties::maxExtent.width/height (как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре) - в зависимости от того, какое значение больше- Если
imageTypeравноVK_IMAGE_TYPE_2DиflagsсодержитVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,extent.widthиextent.heightдолжны быть равны, иarrayLayersдолжен быть больше или равен 6- Если
imageTypeравноVK_IMAGE_TYPE_3D,extent.width,extent.heightиextent.depthдолжны быть меньше или равныVkPhysicalDeviceLimits::maxImageDimension3D, илиVkImageFormatProperties::maxExtent.width/height/depth (как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре) - в зависимости от того, какое значение больше- Если
imageTypeравноVK_IMAGE_TYPE_1D, иextent.heightиextent.depthдолжны быть1- Если
imageTypeравноVK_IMAGE_TYPE_2D,extent.depthдолжен быть1mipLevelsдолжен быть меньше или равен ⌊log2(max(extent.width,extent.height,extent.depth))⌋ + 1.- Если любой из
extent.width,extent.height, илиextent.depthбольше, чем одноимённые членыVkPhysicalDeviceLimits::maxImageDimension3D,mipLevelsдолжен быть меньше или равенVkImageFormatProperties::maxMipLevels(как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре)arrayLayersдолжен быть меньше или равенVkImageFormatProperties::maxArrayLayers(как возвращаетсяvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре)- Если
imageTypeравноVK_IMAGE_TYPE_3D,arrayLayersдолжен быть1.- Если
samplesне равноVK_SAMPLE_COUNT_1_BIT,imageTypeдолжен бытьVK_IMAGE_TYPE_2D,flagsне должен содержатьVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,tilingдолжен бытьVK_IMAGE_TILING_OPTIMAL, иmipLevelsдолжен быть равен1- Если
usageвключаетVK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, то биты, отличные отVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, иVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, не должны быть установлены- Если
usageвключаетVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, илиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,extent.widthдолжен быть меньше или равенVkPhysicalDeviceLimits::maxFramebufferWidth- Если
usageвключаетVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, илиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,extent.heightдолжен быть меньше или равенVkPhysicalDeviceLimits::maxFramebufferHeight- Если
usageвключаетVK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,usageтакже должен содержать по крайней мере один изVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, илиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT.samplesдолжен быть битовым значением, установленным вVkImageFormatProperties::sampleCounts, возвращаемымvkGetPhysicalDeviceImageFormatPropertiesсformat,imageType,tiling,usage, иflagsравными тем, что в этой структуре- Если функция multisampled storage images не включена, и
usageсодержитVK_IMAGE_USAGE_STORAGE_BIT,samplesдолжен бытьVK_SAMPLE_COUNT_1_BIT- Если функция sparse bindings не включена,
flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_BINDING_BIT- Если
imageTypeравноVK_IMAGE_TYPE_1D,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for 2D images не включена, и
imageTypeравноVK_IMAGE_TYPE_2D,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for 3D images не включена, и
imageTypeравноVK_IMAGE_TYPE_3D,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for images with 2 samples не включена,
imageTypeравноVK_IMAGE_TYPE_2D, иsamplesравноVK_SAMPLE_COUNT_2_BIT,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for images with 4 samples не включена,
imageTypeравноVK_IMAGE_TYPE_2D, иsamplesравноVK_SAMPLE_COUNT_4_BIT,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for images with 8 samples не включена,
imageTypeравноVK_IMAGE_TYPE_2D, иsamplesравноVK_SAMPLE_COUNT_8_BIT,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- Если функция sparse residency for images with 16 samples не включена,
imageTypeравноVK_IMAGE_TYPE_2D, иsamplesравноVK_SAMPLE_COUNT_16_BIT,flagsне должен содержатьVK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
- Если
tilingестьVK_IMAGE_TILING_LINEAR,formatдолжен быть форматом, который имеет по крайней мере один поддерживаемый бит признака, присутствующий в значенииVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
tilingестьVK_IMAGE_TILING_LINEAR, иVkFormatProperties::linearTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,usageне должен содержатьVK_IMAGE_USAGE_SAMPLED_BIT- Если
tilingестьVK_IMAGE_TILING_LINEAR, иVkFormatProperties::linearTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,usageне должен содержатьVK_IMAGE_USAGE_STORAGE_BIT- Если
tilingестьVK_IMAGE_TILING_LINEAR, иVkFormatProperties::linearTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,usageне должен содержатьVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- Если
tilingестьVK_IMAGE_TILING_LINEAR, иVkFormatProperties::linearTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,usageне должен содержатьVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Если
tilingестьVK_IMAGE_TILING_OPTIMAL,formatдолжен быть форматом, который имеет по крайней мере один поддерживаемый бит признака, присутствующий в значенииVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
tilingестьVK_IMAGE_TILING_OPTIMAL, иVkFormatProperties::optimalTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,usageне должен содержатьVK_IMAGE_USAGE_SAMPLED_BIT- Если
tilingестьVK_IMAGE_TILING_OPTIMAL, иVkFormatProperties::optimalTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,usageне должен содержатьVK_IMAGE_USAGE_STORAGE_BIT- Если
tilingестьVK_IMAGE_TILING_OPTIMAL, иVkFormatProperties::optimalTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,usageне должен содержатьVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- Если
tilingестьVK_IMAGE_TILING_OPTIMAL, иVkFormatProperties::optimalTilingFeatures(как возвращаетсяvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat) не включаетVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,usageне должен содержатьVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Если
flagsсодержитVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITилиVK_IMAGE_CREATE_SPARSE_ALIASED_BIT, он также должен содержатьVK_IMAGE_CREATE_SPARSE_BINDING_BITinitialLayoutдолжен бытьVK_IMAGE_LAYOUT_UNDEFINEDилиVK_IMAGE_LAYOUT_PREINITIALIZED.
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_IMAGE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть допустимым сочетанием значений VkImageCreateFlagBitsimageTypeдолжен быть допустимым значением VkImageTypeformatдолжен быть допустимым значением VkFormatsamplesдолжен быть допустимым значением VkSampleCountFlagBitstilingдолжен быть допустимым значением VkImageTilingusageдолжен быть допустимым сочетанием значений VkImageUsageFlagBitsusageне должен быть0sharingModeдолжен быть допустимым значением VkSharingModeinitialLayoutдолжен быть допустимым значением VkImageLayout
См. также
VkExtent3D, VkFormat, VkImageCreateFlags, VkImageLayout, VkImageTiling, VkImageType, VkImageUsageFlags, VkSampleCountFlagBits, VkSharingMode, VkStructureType, vkCreateImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageCreateInfo
VkImageFormatProperties(3)
Имя
VkImageFormatProperties - Структура, указывающая свойства формата изображения
C Спецификация
Структура VkImageFormatProperties определяется как:
typedef struct VkImageFormatProperties {
VkExtent3D maxExtent;
uint32_t maxMipLevels;
uint32_t maxArrayLayers;
VkSampleCountFlags sampleCounts;
VkDeviceSize maxResourceSize;
} VkImageFormatProperties; Члены
-
maxExtentявляются максимальными размерами изображения. См. раздел Разрешённые значения Extent ниже, чтобы узнать, как эти значения ограничиваютсяtype. -
maxMipLevels- это максимальное количество уровней mipmap.maxMipLevelsдолжен быть либо равен 1 (допустимо только еслиtilingестьVK_IMAGE_TILING_LINEAR) или быть равным ⌈log2(max(width,height,depth))⌉ + 1.width,height, иdepthберутся из соответствующих элементовmaxExtent. -
maxArrayLayers- это максимальное количество слоев массива.maxArrayLayersдолжен быть либо равен 1, либо быть больше или равен элементуmaxImageArrayLayersVkPhysicalDeviceLimits. Значение 1 допустимо только еслиtilingестьVK_IMAGE_TILING_LINEARили еслиtypeестьVK_IMAGE_TYPE_3D. -
sampleCounts- это битовая маска VkSampleCountFlagBits, указывающая все поддерживаемые подсчёты выборок для этого изображения, как описано ниже. -
maxResourceSize- это верхняя граница общего размера изображения в байтах, включая все подобласти изображения. Реализации могут иметь ограничение адресного пространства на общий размер ресурса, которое объявляется этим свойством.maxResourceSizeдолжен быть не менее 231.
Описание
Примечание
Нет механизма для запроса размера изображения перед его созданием, чтобы сравнить этот размер с
maxResourceSize. Если приложение пытается создать изображение, которое превышает этот предел, создание завершится неудачей или изображение будет недействительным. Хотя объявленный предел должен быть не менее 231, может быть невозможно создать изображение, размер которого приближается к этому значению, особенно дляVK_IMAGE_TYPE_1D.
Если сочетание параметров для vkGetPhysicalDeviceImageFormatProperties не поддерживается реализацией для использования в vkCreateImage, то все элементы VkImageFormatProperties будут заполнены нулями.
См. также
VkDeviceSize, VkExtent3D, VkSampleCountFlags, vkGetPhysicalDeviceImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageFormatProperties
VkImageMemoryBarrier(3)
Имя
VkImageMemoryBarrier - Структура, указывающая параметры барьера памяти изображения
C Спецификация
Структура VkImageMemoryBarrier определяется как:
typedef struct VkImageMemoryBarrier {
VkStructureType sType;
const void* pNext;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
VkImageLayout oldLayout;
VkImageLayout newLayout;
uint32_t srcQueueFamilyIndex;
uint32_t dstQueueFamilyIndex;
VkImage image;
VkImageSubresourceRange subresourceRange;
} VkImageMemoryBarrier; Члены
-
sTypeявляется типом этой структуры. -
pNextявляетсяNULLили указателем на структуру, специфичную для расширения. -
srcAccessMaskявляется битовой маской VkAccessFlagBits, указывающей маску исходного доступа. -
dstAccessMaskявляется битовой маской VkAccessFlagBits, указывающей маску целевого доступа. -
oldLayoutявляется старой компоновкой в переходе компоновки изображения. -
newLayoutявляется новой компоновкой в переходе компоновки изображения. -
srcQueueFamilyIndexявляется исходным семейством очередей для передачи владения семейством очередей. -
dstQueueFamilyIndexявляется целевым семейством очередей для передачи владения семейством очередей. -
imageявляется дескриптором изображения, затронутого этим барьером. -
subresourceRangeописывает диапазон подобъектов изображения внутриimage, который затронут этим барьером.
Описание
Первый объем доступа ограничен доступом к памяти через указанный диапазон подобъектов изображения, через типы доступа в маске исходного доступа, указанной srcAccessMask. Если srcAccessMask включает VK_ACCESS_HOST_WRITE_BIT, то записи в память, выполненные этим типом доступа, также становятся видимыми, поскольку этот тип доступа не выполняется через ресурс.
Второй объем доступа ограничен доступом к памяти через указанный диапазон подобъектов изображения, через типы доступа в маске целевого доступа, указанной dstAccessMask. Если dstAccessMask включает VK_ACCESS_HOST_WRITE_BIT или VK_ACCESS_HOST_READ_BIT, то доступные записи в память также становятся видимыми для доступов этих типов, поскольку эти типы доступа не выполняются через ресурс.
Если srcQueueFamilyIndex не равно dstQueueFamilyIndex, и srcQueueFamilyIndex равно текущему семейству очередей, то барьер памяти определяет операцию освобождения семейства очередей для указанного диапазона подобъектов изображения, и второй объем доступа не включает никакого доступа, как если бы dstAccessMask было 0.
Если dstQueueFamilyIndex не равно srcQueueFamilyIndex, и dstQueueFamilyIndex равно текущему семейству очередей, то барьер памяти определяет операцию получения семейства очередей для указанного диапазона подобъектов изображения, и первый объем доступа не включает никакого доступа, как если бы srcAccessMask было 0.
Если oldLayout не равно newLayout, то барьер памяти определяет переход компоновки изображения для указанного диапазона подобъектов изображения.
Переходы компоновки, которые выполняются через барьеры памяти изображения, выполняются полностью в порядке отправки, относительно других переходов компоновки изображения, отправленных в ту же очередь, включая те, которые выполняются проходами рендеринга. Фактически существует неявная зависимость выполнения от каждого такого перехода компоновки ко всем переходам компоновки, ранее отправленным в ту же очередь.
Допустимое использование
oldLayoutдолжно бытьVK_IMAGE_LAYOUT_UNDEFINEDили текущей компоновкой подобъектов изображения, затронутых барьеромnewLayoutне должно бытьVK_IMAGE_LAYOUT_UNDEFINEDилиVK_IMAGE_LAYOUT_PREINITIALIZED- Если
imageбыло создано с режимом обменаVK_SHARING_MODE_CONCURRENT,srcQueueFamilyIndexиdstQueueFamilyIndexдолжны быть обаVK_QUEUE_FAMILY_IGNORED- Если
imageбыло создано с режимом обменаVK_SHARING_MODE_EXCLUSIVE,srcQueueFamilyIndexиdstQueueFamilyIndexдолжны быть либо обаVK_QUEUE_FAMILY_IGNORED, либо оба действительными семействами очередей (см. html/vkspec.html#devsandqueues-queueprops).- Если
imageбыло создано с режимом обменаVK_SHARING_MODE_EXCLUSIVE, иsrcQueueFamilyIndexиdstQueueFamilyIndexне являютсяVK_QUEUE_FAMILY_IGNORED, по крайней мере один из них должен быть таким же, как семейство очереди, которая будет выполнять этот барьерsubresourceRange::baseMipLevelдолжно быть меньшеmipLevels, указанного в VkImageCreateInfo, когда было созданоimage- Если
subresourceRange::levelCountнеVK_REMAINING_MIP_LEVELS,subresourceRange::levelCountдолжно быть не нулевым, иsubresourceRange::baseMipLevel+subresourceRange::levelCountдолжно быть меньше или равноmipLevels, указанному в VkImageCreateInfo, когда было созданоimagesubresourceRange::baseArrayLayerдолжно быть меньшеarrayLayers, указанного в VkImageCreateInfo, когда было созданоimage- Если
subresourceRange::layerCountнеVK_REMAINING_ARRAY_LAYERS,subresourceRange::layerCountдолжно быть не нулевым, иsubresourceRange::baseArrayLayer+subresourceRange::layerCountдолжно быть меньше или равноarrayLayers, указанному в VkImageCreateInfo, когда было созданоimage- Если
imageимеет формат глубины/трафарета с компонентами как глубины, так и трафарета, то членaspectMasksubresourceRangeдолжен включать обаVK_IMAGE_ASPECT_DEPTH_BITиVK_IMAGE_ASPECT_STENCIL_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_SAMPLED_BITилиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_TRANSFER_SRC_BIT- Если
oldLayoutилиnewLayoutявляетсяVK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, тоimageдолжно быть создано с установленнымVK_IMAGE_USAGE_TRANSFER_DST_BIT
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIERpNextдолжно бытьNULLsrcAccessMaskдолжно быть допустимым сочетанием значений VkAccessFlagBitsdstAccessMaskдолжно быть допустимым сочетанием значений VkAccessFlagBitsoldLayoutдолжно быть допустимым значением VkImageLayoutnewLayoutдолжно быть допустимым значением VkImageLayoutimageдолжно быть допустимым дескрипторомVkImagesubresourceRangeдолжно быть допустимой структуройVkImageSubresourceRange
См. также
VkAccessFlags, VkImage, VkImageLayout, VkImageSubresourceRange, VkStructureType, vkCmdPipelineBarrier, vkCmdWaitEvents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageMemoryBarrier
VkImageResolve(3)
Имя
VkImageResolve - Структура, указывающая операцию разрешения изображения
C-спецификация
Структура VkImageResolve определяется как:
typedef struct VkImageResolve {
VkImageSubresourceLayers srcSubresource;
VkOffset3D srcOffset;
VkImageSubresourceLayers dstSubresource;
VkOffset3D dstOffset;
VkExtent3D extent;
} VkImageResolve; Члены
-
srcSubresourceиdstSubresourceявляются VkImageSubresourceLayers структурами, определяющими подресурсы изображений, используемые для исходных и целевых данных изображения соответственно. Разрешение изображений глубины/трафарета не поддерживается. -
srcOffsetиdstOffsetвыбирают начальные смещения x, y и z в текселях подобластей исходных и целевых данных изображения. -
extent- это размер в текселях исходного изображения для разрешения вwidth,heightиdepth.
Описание
Допустимое использование
- Элемент
aspectMasksrcSubresourceиdstSubresourceдолжен содержать толькоVK_IMAGE_ASPECT_COLOR_BIT- Элемент
layerCountsrcSubresourceиdstSubresourceдолжны совпадать- Если любой из параметров
srcImageилиdstImageвызывающей команды имеет тип VkImageTypeVK_IMAGE_TYPE_3D, то элементыbaseArrayLayerиlayerCountкакsrcSubresource, так иdstSubresourceдолжны быть0и1соответственноsrcOffset.xи (extent.width+srcOffset.x) должны быть больше или равны0и меньше или равны ширине подресурса исходного изображенияsrcOffset.yи (extent.height+srcOffset.y) должны быть больше или равны0и меньше или равны высоте подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоsrcOffset.yдолжен быть0, аextent.heightдолжен быть1.srcOffset.zи (extent.depth+srcOffset.z) должны быть больше или равны0и меньше или равны глубине подресурса исходного изображения- Если
srcImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоsrcOffset.zдолжен быть0, аextent.depthдолжен быть1.dstOffset.xи (extent.width+dstOffset.x) должны быть больше или равны0и меньше или равны ширине подресурса целевого изображенияdstOffset.yи (extent.height+dstOffset.y) должны быть больше или равны0и меньше или равны высоте подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1D, тоdstOffset.yдолжен быть0, аextent.heightдолжен быть1.dstOffset.zи (extent.depth+dstOffset.z) должны быть больше или равны0и меньше или равны глубине подресурса целевого изображения- Если
dstImageвызывающей команды имеет типVK_IMAGE_TYPE_1DилиVK_IMAGE_TYPE_2D, тоdstOffset.zдолжен быть0, аextent.depthдолжен быть1.
Допустимое использование (неявное)
srcSubresourceдолжна быть допустимой структуройVkImageSubresourceLayersdstSubresourceдолжна быть допустимой структуройVkImageSubresourceLayers
См. также
VkExtent3D, VkImageSubresourceLayers, VkOffset3D, vkCmdResolveImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageResolve
VkImageSubresource(3)
Имя
VkImageSubresource - Структура, определяющая подресурс изображения
C-спецификация
Структура VkImageSubresource определяется как:
typedef struct VkImageSubresource {
VkImageAspectFlags aspectMask;
uint32_t mipLevel;
uint32_t arrayLayer;
} VkImageSubresource; Члены
-
aspectMaskявляется VkImageAspectFlags, выбирающим аспект изображения. -
mipLevelвыбирает уровень mipmap. -
arrayLayerвыбирает слой массива.
Описание
Допустимое использование
mipLevelдолжен быть меньше, чемmipLevels, указанный в VkImageCreateInfo при создании изображенияarrayLayerдолжен быть меньше, чемarrayLayers, указанный в VkImageCreateInfo при создании изображения
Допустимое использование (неявное)
aspectMaskдолжно быть допустимым сочетанием значений VkImageAspectFlagBitsaspectMaskне должно быть0
См. также
VkImageAspectFlags, VkSparseImageMemoryBind, vkGetImageSubresourceLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageSubresource
VkImageSubresourceLayers(3)
Имя
VkImageSubresourceLayers - Структура, определяющая слои подресурса изображения
C-спецификация
Структура VkImageSubresourceLayers определяется как:
typedef struct VkImageSubresourceLayers {
VkImageAspectFlags aspectMask;
uint32_t mipLevel;
uint32_t baseArrayLayer;
uint32_t layerCount;
} VkImageSubresourceLayers; Члены
-
aspectMask- это сочетание VkImageAspectFlagBits, выбирающее цветовые, глубинные и/или трафаретные аспекты для копирования. -
mipLevel- это уровень mipmap для копирования. -
baseArrayLayerиlayerCount- это начальный слой и количество слоев для копирования.
Описание
Допустимое использование
- Если
aspectMaskсодержитVK_IMAGE_ASPECT_COLOR_BIT, он не должен содержать ниVK_IMAGE_ASPECT_DEPTH_BIT, ниVK_IMAGE_ASPECT_STENCIL_BITaspectMaskне должен содержатьVK_IMAGE_ASPECT_METADATA_BITmipLevelдолжен быть меньше, чемmipLevels, указанный в VkImageCreateInfo при создании изображения- (
baseArrayLayer+layerCount) должно быть меньше или равноarrayLayers, указанному в VkImageCreateInfo при создании изображения
Допустимое использование (неявное)
aspectMaskдолжно быть допустимым сочетанием значений VkImageAspectFlagBitsaspectMaskне должно быть0
См. также
VkBufferImageCopy, VkImageAspectFlags, VkImageBlit, VkImageCopy, VkImageResolve
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageSubresourceLayers
VkImageSubresourceRange(3)
Имя
VkImageSubresourceRange - Структура, определяющая диапазон подресурсов изображения
C-спецификация
Структура VkImageSubresourceRange определяется как:
typedef struct VkImageSubresourceRange {
VkImageAspectFlags aspectMask;
uint32_t baseMipLevel;
uint32_t levelCount;
uint32_t baseArrayLayer;
uint32_t layerCount;
} VkImageSubresourceRange; Члены
-
aspectMask- это битовая маска VkImageAspectFlagBits, указывающая, какие аспекты(ы) изображения включены в представление. -
baseMipLevel- это первый уровень mipmap, доступный для представления. -
levelCount- это количество уровней mipmap (начиная сbaseMipLevel), доступных для представления. -
baseArrayLayer- это первый слой массива, доступный для представления. -
layerCount- это количество слоев массива (начиная сbaseArrayLayer), доступных для представления.
Описание
Количество уровней mipmap и слоев массива должно быть подмножеством подресурсов изображения в изображении. Если приложение хочет использовать все уровни mip или слои в изображении после baseMipLevel или baseArrayLayer, оно может установить levelCount и layerCount в специальные значения VK_REMAINING_MIP_LEVELS и VK_REMAINING_ARRAY_LAYERS без знания точного количества уровней mip или слоев.
Для представлений изображений в виде куба и массива кубов, слои представления изображения, начиная с baseArrayLayer, соответствуют граням в порядке +X, -X, +Y, -Y, +Z, -Z. Для массивов кубов каждый набор из шести последовательных слоев представляет собой один куб, поэтому количество куб-карт в представлении массива куб-карт равно layerCount / 6, а слой массива изображений (baseArrayLayer + i) — это индекс грани (i mod 6) куба i / 6. Если количество слоев в представлении, заданное явно в layerCount или неявно в VK_REMAINING_ARRAY_LAYERS, не кратно 6, поведение при индексировании последнего куба не определено.
aspectMask должен быть только VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_ASPECT_DEPTH_BIT или VK_IMAGE_ASPECT_STENCIL_BIT, если format является форматом цвета, только глубины или только трафарета соответственно. При использовании формата глубины/трафарета с компонентами как глубины, так и трафарета, aspectMask должен включать как минимум один из VK_IMAGE_ASPECT_DEPTH_BIT и VK_IMAGE_ASPECT_STENCIL_BIT, и может включать оба.
При использовании imageView изображения глубины/трафарета для заполнения набора дескрипторов (например, для выборки в шейдере или для использования в качестве входного вложения), aspectMask должен включать только один бит и выбирать, используется ли imageView для чтения глубины (т.е. с использованием плавающего сэмплера или входного вложения в шейдере) или чтения трафарета (т.е. с использованием безнакового целочисленного сэмплера или входного вложения в шейдере). Когда imageView изображения глубины/трафарета используется как вложение буфера кадра глубины/трафарета, aspectMask игнорируется, и используются как подресурсы изображения глубины, так и трафарета.
Элемент components имеет тип VkComponentMapping и описывает переназначение компонентов изображения компонентам вектора, возвращаемого инструкциями изображения шейдера. Это переназначение должно быть тождественным для дескрипторов хранилища изображений, дескрипторов входных вложений и вложений буфера кадра.
Допустимое использование (неявное)
aspectMaskдолжен быть допустимым сочетанием значений VkImageAspectFlagBitsaspectMaskне должен быть0
См. также
VkImageAspectFlags, VkImageMemoryBarrier, VkImageViewCreateInfo, vkCmdClearColorImage, vkCmdClearDepthStencilImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageSubresourceRange
VkImageViewCreateInfo(3)
Имя
VkImageViewCreateInfo - Структура, определяющая параметры вновь созданного представления изображения
C-спецификация
Структура VkImageViewCreateInfo определяется как:
typedef struct VkImageViewCreateInfo {
VkStructureType sType;
const void* pNext;
VkImageViewCreateFlags flags;
VkImage image;
VkImageViewType viewType;
VkFormat format;
VkComponentMapping components;
VkImageSubresourceRange subresourceRange;
} VkImageViewCreateInfo; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
image— этоVkImage, на основе которого будет создано представление. -
viewType— это значение VkImageViewType, указывающее тип представления изображения. -
format— это VkFormat, описывающий формат и тип, используемые для интерпретации элементов данных в изображении. -
components— это VkComponentMapping, указывающий переназначение цветовых компонентов (или компонентов глубины или трафарета после их преобразования в цветовые компоненты). -
subresourceRange— это VkImageSubresourceRange, выбирающий набор уровней mipmap и слоев массива, которые будут доступны для представления.
Описание
Если image был создан с флагом VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, format может отличаться от формата изображения, но если они не равны, они должны быть совместимы. Совместимость форматов изображений определяется в разделе Классы совместимости форматов. Представления совместимых форматов будут иметь одно и то же отображение между координатами текстур и местоположениями в памяти независимо от format, при этом будет меняться только интерпретация битовой последовательности.
Примечание
Значения, предназначенные для использования с одним форматом представления, могут не сохраняться точно при записи или чтении через другой формат. Например, целочисленное значение, которое случайно имеет битовую последовательность числа с плавающей точкой, близкого к нулю, или NaN, может быть очищено или канонизировано при записи или чтении через представление с форматом с плавающей точкой. Аналогично, значение, записанное через подписанный нормализованный формат, имеющее битовую последовательность, точно равную -2b, может быть изменено на -2b + 1, как описано в Преобразование из нормализованной фиксированной точки в число с плавающей точкой.
| Dim, Arrayed, MS | Параметры изображения | Параметры представления |
|---|---|---|
|
| |
1D, 0, 0 |
|
|
1D, 1, 0 |
|
|
2D, 0, 0 |
|
|
2D, 1, 0 |
|
|
2D, 0, 1 |
|
|
2D, 1, 1 |
|
|
CUBE, 0, 0 |
|
|
CUBE, 1, 0 |
|
|
3D, 0, 0 |
|
|
Допустимое использование
- Если
imageне был создан с помощьюVK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, тоviewTypeдолжен быть неVK_IMAGE_VIEW_TYPE_CUBEи неVK_IMAGE_VIEW_TYPE_CUBE_ARRAY- Если функция image cubemap arrays не включена,
viewTypeне должен бытьVK_IMAGE_VIEW_TYPE_CUBE_ARRAY- Если
imageбыл создан с помощьюVK_IMAGE_TILING_LINEAR,formatдолжен быть форматом, имеющим хотя бы один бит поддерживаемой функции, присутствующий в значенииVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformatimageдолжен быть создан со значениемusage, содержащим хотя бы один изVK_IMAGE_USAGE_SAMPLED_BIT,VK_IMAGE_USAGE_STORAGE_BIT,VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITилиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- Если
imageбыл создан с помощьюVK_IMAGE_TILING_LINEARиusageсодержитVK_IMAGE_USAGE_SAMPLED_BIT,formatдолжен поддерживаться для выборочных изображений, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_BITвVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_LINEARиusageсодержитVK_IMAGE_USAGE_STORAGE_BIT,formatдолжен поддерживаться для хранилищ изображений, как указано флагомVK_FORMAT_FEATURE_STORAGE_IMAGE_BITвVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_LINEARиusageсодержитVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,formatдолжен поддерживаться для цветовых вложений, как указано флагомVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITвVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_LINEARиusageсодержитVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,formatдолжен поддерживаться для вложений глубины/трафарета, как указано флагомVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITвVkFormatProperties::linearTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_OPTIMAL,formatдолжен быть форматом, имеющим хотя бы один бит поддерживаемой функции, присутствующий в значенииVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_OPTIMALиusageсодержитVK_IMAGE_USAGE_SAMPLED_BIT,formatдолжен поддерживаться для выборочных изображений, как указано флагомVK_FORMAT_FEATURE_SAMPLED_IMAGE_BITвVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_OPTIMALиusageсодержитVK_IMAGE_USAGE_STORAGE_BIT,formatдолжен поддерживаться для хранилищ изображений, как указано флагомVK_FORMAT_FEATURE_STORAGE_IMAGE_BITвVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_OPTIMALиusageсодержитVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,formatдолжен поддерживаться для цветовых вложений, как указано флагомVK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITвVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformat- Если
imageбыл создан с помощьюVK_IMAGE_TILING_OPTIMALиusageсодержитVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,formatдолжен поддерживаться для вложений глубины/трафарета, как указано флагомVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITвVkFormatProperties::optimalTilingFeatures, возвращаемомvkGetPhysicalDeviceFormatPropertiesс тем же значениемformatsubresourceRange::baseMipLevelдолжно быть меньшеmipLevels, указанного в VkImageCreateInfo, когда был созданimage- Если
subresourceRange::levelCountнеVK_REMAINING_MIP_LEVELS,subresourceRange::levelCountдолжно быть не нулевым, иsubresourceRange::baseMipLevel+subresourceRange::levelCountдолжно быть меньше или равноmipLevels, указанному в VkImageCreateInfo, когда был созданimagesubresourceRange::baseArrayLayerдолжно быть меньшеarrayLayers, указанного в VkImageCreateInfo, когда был созданimage- Если
subresourceRange::layerCountнеVK_REMAINING_ARRAY_LAYERS,subresourceRange::layerCountдолжно быть не нулевым, иsubresourceRange::baseArrayLayer+subresourceRange::layerCountдолжно быть меньше или равноarrayLayers, указанному в VkImageCreateInfo, когда был созданimage- Если
imageбыл создан с флагомVK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,formatдолжен быть совместим сformat, используемым для созданияimage, как определено в Format Compatibility Classes- Если
imageне был создан с флагомVK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,formatдолжен быть идентиченformat, используемому для созданияimage- Если
imageне разреженный, то он должен быть полностью и непрерывно связан с одним объектомVkDeviceMemorysubresourceRangeиviewTypeдолжны быть совместимы с изображением, как описано в таблице совместимости
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть0imageдолжен быть допустимой дескрипторной ссылкойVkImageviewTypeдолжен быть допустимым значением VkImageViewTypeformatдолжен быть допустимым значением VkFormatcomponentsдолжен быть допустимой структуройVkComponentMappingsubresourceRangeдолжен быть допустимой структуройVkImageSubresourceRange
См. также
VkComponentMapping, VkFormat, VkImage, VkImageSubresourceRange, VkImageViewCreateFlags, VkImageViewType, VkStructureType, vkCreateImageView
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageViewCreateInfo
VkInstanceCreateInfo(3)
Имя
VkInstanceCreateInfo - Структура, задающая параметры вновь созданного экземпляра
C-спецификация
Структура VkInstanceCreateInfo определяется как:
typedef struct VkInstanceCreateInfo {
VkStructureType sType;
const void* pNext;
VkInstanceCreateFlags flags;
const VkApplicationInfo* pApplicationInfo;
uint32_t enabledLayerCount;
const char* const* ppEnabledLayerNames;
uint32_t enabledExtensionCount;
const char* const* ppEnabledExtensionNames;
} VkInstanceCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
pApplicationInfo-NULLили указатель на экземплярVkApplicationInfo. Если неNULL, эта информация помогает реализациям распознать поведение, присущее классам приложений. VkApplicationInfo подробно описан ниже. -
enabledLayerCount- количество глобальных слоев для включения. -
ppEnabledLayerNames- указатель на массивenabledLayerCountзавершающихся нулем строк UTF-8, содержащих имена слоев, которые необходимо включить для созданного экземпляра. Дополнительные сведения см. в разделе Слои. -
enabledExtensionCount- количество глобальных расширений для включения. -
ppEnabledExtensionNames- указатель на массивenabledExtensionCountзавершающихся нулем строк UTF-8, содержащих имена расширений для включения.
Описание
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_INSTANCE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0- Если
pApplicationInfoнеNULL,pApplicationInfoдолжно быть указателем на допустимую структуруVkApplicationInfo- Если
enabledLayerCountне0,ppEnabledLayerNamesдолжно быть указателем на массив изenabledLayerCountзавершающихся нулём строк UTF-8- Если
enabledExtensionCountне0,ppEnabledExtensionNamesдолжно быть указателем на массив изenabledExtensionCountзавершающихся нулём строк UTF-8
См. также
VkApplicationInfo, VkInstanceCreateFlags, VkStructureType, vkCreateInstance
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkInstanceCreateInfo
VkLayerProperties(3)
Имя
VkLayerProperties - Структура, указывающая свойства слоя
C-спецификация
Структура VkLayerProperties определяется как:
typedef struct VkLayerProperties {
char layerName[VK_MAX_EXTENSION_NAME_SIZE];
uint32_t specVersion;
uint32_t implementationVersion;
char description[VK_MAX_DESCRIPTION_SIZE];
} VkLayerProperties; Члены
-
layerName— это завершающаяся нулём строка UTF-8, указывающая имя слоя. Используйте это имя в массивеppEnabledLayerNames, переданном в структуру VkInstanceCreateInfo, чтобы включить этот слой для экземпляра. -
specVersion— это версия Vulkan, для которой был написан слой, закодированная, как описано в разделе Номера и семантика версий API. -
implementationVersion— это версия этого слоя. Это целое число, увеличивающееся с обратными совместимыми изменениями. -
description— это завершающаяся нулём строка UTF-8, предоставляющая дополнительные сведения, которые могут использоваться приложением для идентификации слоя.
См. также
vkEnumerateDeviceLayerProperties, vkEnumerateInstanceLayerProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkLayerProperties
VkMappedMemoryRange(3)
Имя
VkMappedMemoryRange - Структура, указывающая сопоставленный диапазон памяти
C-спецификация
Структура VkMappedMemoryRange определяется как:
typedef struct VkMappedMemoryRange {
VkStructureType sType;
const void* pNext;
VkDeviceMemory memory;
VkDeviceSize offset;
VkDeviceSize size;
} VkMappedMemoryRange; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
memory— это объект памяти, которому принадлежит этот диапазон. -
offset— это смещение в байтах от начала объекта памяти, отсчитываемое от нуля. -
size— это либо размер диапазона, либоVK_WHOLE_SIZE, чтобы повлиять на диапазон отoffsetдо конца текущего сопоставления выделения.
Описание
Допустимое использование
memoryдолжно в данный момент быть сопоставлено- Если
sizeне равноVK_WHOLE_SIZE,offsetиsizeдолжны указывать диапазон, содержащийся в текущем сопоставленном диапазонеmemory- Если
sizeравноVK_WHOLE_SIZE,offsetдолжно находиться в текущем сопоставленном диапазонеmemory- Если
sizeравноVK_WHOLE_SIZE, конец текущего сопоставленияmemoryдолжен быть кратнымVkPhysicalDeviceLimits::nonCoherentAtomSizeбайтам от начала объекта памяти.offsetдолжно быть кратнымVkPhysicalDeviceLimits::nonCoherentAtomSize- Если
sizeне равноVK_WHOLE_SIZE,sizeдолжно быть либо кратнымVkPhysicalDeviceLimits::nonCoherentAtomSize, либоoffsetплюсsizeдолжно равняться размеруmemory.
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGEpNextдолжно бытьNULLmemoryдолжно быть допустимой дескрипторомVkDeviceMemory
См. также
VkDeviceMemory, VkDeviceSize, VkStructureType, vkFlushMappedMemoryRanges, vkInvalidateMappedMemoryRanges
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMappedMemoryRange
VkMemoryAllocateInfo(3)
Имя
VkMemoryAllocateInfo - Структура, содержащая параметры выделения памяти
C-спецификация
Структура VkMemoryAllocateInfo определяется как:
typedef struct VkMemoryAllocateInfo {
VkStructureType sType;
const void* pNext;
VkDeviceSize allocationSize;
uint32_t memoryTypeIndex;
} VkMemoryAllocateInfo; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
allocationSize— это размер выделения в байтах. -
memoryTypeIndex— это индекс типа памяти, который выбирает свойства памяти, которая будет выделена, а также кучу, из которой будет взята память.
Описание
Допустимое использование
allocationSizeдолжно быть меньше или равно количеству памяти, доступному дляVkMemoryHeap, указанногоmemoryTypeIndexиVkDeviceвызывающей командыallocationSizeдолжно быть больше0
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFOpNextдолжно бытьNULL
См. также
VkDeviceSize, VkStructureType, vkAllocateMemory
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryAllocateInfo
VkMemoryBarrier(3)
Имя
VkMemoryBarrier - Структура, указывающая глобальный барьер памяти
C-спецификация
Структура VkMemoryBarrier определяется как:
typedef struct VkMemoryBarrier {
VkStructureType sType;
const void* pNext;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
} VkMemoryBarrier; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
srcAccessMask— это битовая маска VkAccessFlagBits, указывающая маску исходного доступа. -
dstAccessMask— это битовая маска VkAccessFlagBits, указывающая маску целевого доступа.
Описание
Первый объём доступа ограничен типами доступа в маске исходного доступа, указанной srcAccessMask.
Второй объём доступа ограничен типами доступа в маске целевого доступа, указанной dstAccessMask.
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_MEMORY_BARRIERpNextдолжно бытьNULLsrcAccessMaskдолжно быть допустимой комбинацией значений VkAccessFlagBitsdstAccessMaskдолжно быть допустимой комбинацией значений VkAccessFlagBits
См. также
VkAccessFlags, VkStructureType, vkCmdPipelineBarrier, vkCmdWaitEvents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryBarrier
VkMemoryHeap(3)
Name
VkMemoryHeap - Структура, определяющая кучу памяти
C Specification
Структура VkMemoryHeap определяется как:
typedef struct VkMemoryHeap {
VkDeviceSize size;
VkMemoryHeapFlags flags;
} VkMemoryHeap; Members
-
size- общий размер памяти в байтах в куче. -
flags- это битовая маска VkMemoryHeapFlagBits, указывающая атрибуты флагов для кучи.
See Also
VkDeviceSize, VkMemoryHeapFlags, VkPhysicalDeviceMemoryProperties
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryHeap
VkMemoryRequirements(3)
Name
VkMemoryRequirements - Структура, определяющая требования к памяти
C Specification
Структура VkMemoryRequirements определяется как:
typedef struct VkMemoryRequirements {
VkDeviceSize size;
VkDeviceSize alignment;
uint32_t memoryTypeBits;
} VkMemoryRequirements; Members
-
size- размер в байтах выделения памяти, необходимый для ресурса. -
alignment- выравнивание в байтах смещения в выделении памяти, необходимое для ресурса. -
memoryTypeBits- это битовая маска, содержащая один установленный бит для каждого поддерживаемого типа памяти для ресурса. Битiустановлен тогда и только тогда, когда тип памятиiв структуреVkPhysicalDeviceMemoryPropertiesдля физического устройства поддерживается для ресурса.
See Also
VkDeviceSize, vkGetBufferMemoryRequirements, vkGetImageMemoryRequirements
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryRequirements
VkMemoryType(3)
Name
VkMemoryType - Структура, определяющая тип памяти
C Specification
Структура VkMemoryType определяется как:
typedef struct VkMemoryType {
VkMemoryPropertyFlags propertyFlags;
uint32_t heapIndex;
} VkMemoryType; Members
-
heapIndexописывает, к какой куче памяти относится этот тип памяти, и должно быть меньше, чемmemoryHeapCountиз структурыVkPhysicalDeviceMemoryProperties. -
propertyFlags- это битовая маска VkMemoryPropertyFlagBits свойств для этого типа памяти.
See Also
VkMemoryPropertyFlags, VkPhysicalDeviceMemoryProperties
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryType
VkOffset2D(3)
Name
VkOffset2D - Структура, определяющая двумерное смещение
C Specification
Двумерные смещения определяются структурой:
typedef struct VkOffset2D {
int32_t x;
int32_t y;
} VkOffset2D; Members
-
x- смещение по оси x. -
y- смещение по оси y.
See Also
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkOffset2D
VkOffset3D(3)
Name
VkOffset3D - Структура, определяющая трехмерное смещение
C Specification
Трехмерное смещение определяется структурой:
typedef struct VkOffset3D {
int32_t x;
int32_t y;
int32_t z;
} VkOffset3D; Members
-
x- смещение по оси x. -
y- смещение по оси y. -
z- смещение по оси z.
See Also
VkBufferImageCopy, VkImageBlit, VkImageCopy, VkImageResolve, VkSparseImageMemoryBind
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkOffset3D
VkPhysicalDeviceFeatures(3)
Name
VkPhysicalDeviceFeatures - Структура, описывающая детализированные возможности, которые могут поддерживаться реализацией
C Specification
Структура VkPhysicalDeviceFeatures определяется как:
typedef struct VkPhysicalDeviceFeatures {
VkBool32 robustBufferAccess;
VkBool32 fullDrawIndexUint32;
VkBool32 imageCubeArray;
VkBool32 independentBlend;
VkBool32 geometryShader;
VkBool32 tessellationShader;
VkBool32 sampleRateShading;
VkBool32 dualSrcBlend;
VkBool32 logicOp;
VkBool32 multiDrawIndirect;
VkBool32 drawIndirectFirstInstance;
VkBool32 depthClamp;
VkBool32 depthBiasClamp;
VkBool32 fillModeNonSolid;
VkBool32 depthBounds;
VkBool32 wideLines;
VkBool32 largePoints;
VkBool32 alphaToOne;
VkBool32 multiViewport;
VkBool32 samplerAnisotropy;
VkBool32 textureCompressionETC2;
VkBool32 textureCompressionASTC_LDR;
VkBool32 textureCompressionBC;
VkBool32 occlusionQueryPrecise;
VkBool32 pipelineStatisticsQuery;
VkBool32 vertexPipelineStoresAndAtomics;
VkBool32 fragmentStoresAndAtomics;
VkBool32 shaderTessellationAndGeometryPointSize;
VkBool32 shaderImageGatherExtended;
VkBool32 shaderStorageImageExtendedFormats;
VkBool32 shaderStorageImageMultisample;
VkBool32 shaderStorageImageReadWithoutFormat;
VkBool32 shaderStorageImageWriteWithoutFormat;
VkBool32 shaderUniformBufferArrayDynamicIndexing;
VkBool32 shaderSampledImageArrayDynamicIndexing;
VkBool32 shaderStorageBufferArrayDynamicIndexing;
VkBool32 shaderStorageImageArrayDynamicIndexing;
VkBool32 shaderClipDistance;
VkBool32 shaderCullDistance;
VkBool32 shaderFloat64;
VkBool32 shaderInt64;
VkBool32 shaderInt16;
VkBool32 shaderResourceResidency;
VkBool32 shaderResourceMinLod;
VkBool32 sparseBinding;
VkBool32 sparseResidencyBuffer;
VkBool32 sparseResidencyImage2D;
VkBool32 sparseResidencyImage3D;
VkBool32 sparseResidency2Samples;
VkBool32 sparseResidency4Samples;
VkBool32 sparseResidency8Samples;
VkBool32 sparseResidency16Samples;
VkBool32 sparseResidencyAliased;
VkBool32 variableMultisampleRate;
VkBool32 inheritedQueries;
} VkPhysicalDeviceFeatures; Members
Члены структуры VkPhysicalDeviceFeatures описывают следующие возможности:
Description
-
robustBufferAccessуказывает, что доступы к буферам проверяются на соответствие границам дескриптора буфера (как определено вVkDescriptorBufferInfo::range,VkBufferViewCreateInfo::range, или размеру буфера). Доступы за пределами границ не должны приводить к завершению работы приложения, а эффекты загрузки, сохранения и атомарных операций шейдера должны соответствовать зависящему от реализации поведению, описанному ниже.-
Доступ к буферу считается выходящим за границы, если выполняется любое из следующих условий:
- Указатель был сформирован с помощью
OpImageTexelPointer, и координата меньше нуля или больше или равна количеству целых элементов в связанном диапазоне. -
Указатель не был сформирован с помощью
OpImageTexelPointer, и указанный объект не полностью содержится в связанном диапазоне.Примечание
Если инструкция SPIR-V
OpLoadзагружает структуру, а конец структуры выходит за границы, то все члены структуры считаются выходящими за границы, даже если члены в конце не используются статически. - Если какой-либо доступ к буферу в данном блоке SPIR-V определяется как выходящий за границы, то любой другой доступ того же типа (загрузка, сохранение или атомарная операция) в том же блоке SPIR-V, который обращается к адресу менее чем на 16 байт от адреса, выходящего за границы, может также считаться выходящим за границы.
- Указатель был сформирован с помощью
-
Загрузки из буфера за пределами границ будут возвращать любое из следующих значений:
- Значения из любого диапазона памяти, связанного с буфером (возможно, включая байты памяти за концом буфера, вплоть до конца связанного диапазона).
-
Нулевые значения или векторы (0,0,0,x) для векторных чтений, где x — это допустимое значение, представленное в типе компонентов вектора и может быть любым из:
- 0, 1 или максимальное представимое положительное целое значение для знаковых или беззнаковых целочисленных компонентов
- 0.0 или 1.0 для компонентов с плавающей точкой
- Записи за пределами границ могут изменять значения в диапазоне памяти, связанном с буфером, но не должны изменять другую память.
- Атомарные операции за пределами границ могут изменять значения в диапазоне памяти, связанном с буфером, но не должны изменять другую память и возвращать неопределенное значение.
-
Атрибуты входных данных вершин считаются выходящими за границы, если адрес атрибута плюс размер атрибута больше размера связанного буфера. Кроме того, если любой атрибут входных данных вершин, использующий конкретное связывание входных данных вершин, выходит за границы, то все атрибуты входных данных вершин, использующие это связывание входных данных вершин для этого вызова шейдера вершин, считаются выходящими за границы.
-
Если атрибут входных данных вершин выходит за границы, ему будет присвоено одно из следующих значений:
- Значения из любого диапазона памяти, связанного с буфером, преобразованные в соответствии с форматом атрибута.
- Нулевые значения, преобразованные в соответствии с форматом атрибута.
- Нулевые значения или векторы (0,0,0,x), как описано выше.
-
- Если
robustBufferAccessне включен, доступы за пределами границ могут повредить любую память в процессе и привести к неопределенному поведению вплоть до и включая завершение работы приложения.
-
-
fullDrawIndexUint32указывает, что поддерживается полный 32-битный диапазон индексов для вызовов индексированного рисования при использовании VkIndexTypeVK_INDEX_TYPE_UINT32.maxDrawIndexedIndexValue— это максимальное значение индекса, которое может использоваться (помимо индекса перезапуска примитива, который всегда равен 232-1, когда VkIndexType равенVK_INDEX_TYPE_UINT32). Если эта функция поддерживается,maxDrawIndexedIndexValueдолжно быть равно 232-1; в противном случае оно должно быть не меньше 224-1. См. maxDrawIndexedIndexValue. -
imageCubeArrayуказывает, могут ли быть созданы представления изображений с VkImageViewTypeVK_IMAGE_VIEW_TYPE_CUBE_ARRAY, и что соответствующие возможности SPIR-VSampledCubeArrayиImageCubeArrayмогут использоваться в коде шейдера. -
independentBlendуказывает, управляются ли параметрыVkPipelineColorBlendAttachmentStateнезависимо для каждого вложения. Если эта функция не включена, параметрыVkPipelineColorBlendAttachmentStateдля всех цветовых вложений должны быть идентичны. В противном случае для каждого связанного цветового вложения может быть предоставлен другойVkPipelineColorBlendAttachmentState. -
geometryShaderуказывает, поддерживаются ли геометрические шейдеры. Если эта функция не включена, значения перечисленияVK_SHADER_STAGE_GEOMETRY_BITиVK_PIPELINE_STAGE_GEOMETRY_SHADER_BITне должны использоваться. Это также указывает, могут ли модули шейдера объявлять возможностьGeometry. -
tessellationShaderуказывает, поддерживаются ли шейдеры управления и оценки тесселяции. Если эта функция не включена, значения перечисленияVK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BITиVK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOне должны использоваться. Это также указывает, могут ли модули шейдера объявлять возможностьTessellation. -
sampleRateShadingуказывает, поддерживаются ли затенение на основе частоты дискретизации и многовыборочная интерполяция. Если эта функция не включена, членsampleShadingEnableструктурыVkPipelineMultisampleStateCreateInfoдолжен быть установлен вVK_FALSE, а членminSampleShadingигнорируется. Это также указывает, могут ли модули шейдера объявлять возможностьSampleRateShading. -
dualSrcBlendуказывает, поддерживаются ли операции смешивания, которые принимают два источника. Если эта функция не включена, значения перечисленияVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHAиVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHAне должны использоваться в качестве исходных или целевых коэффициентов смешивания. См. html/vkspec.html#framebuffer-dsb. -
logicOpуказывает, поддерживаются ли логические операции. Если эта функция не включена, членlogicOpEnableструктурыVkPipelineColorBlendStateCreateInfoдолжен быть установлен вVK_FALSE, а членlogicOpигнорируется. -
multiDrawIndirectуказывает, поддерживается ли множественное косвенное рисование. Если эта функция не включена, параметрdrawCountкомандvkCmdDrawIndirectиvkCmdDrawIndexedIndirectдолжен быть равен 0 или 1. ЧленmaxDrawIndirectCountструктурыVkPhysicalDeviceLimitsтакже должен быть равен 1, если эта функция не поддерживается. См. maxDrawIndirectCount. -
drawIndirectFirstInstanceуказывает, поддерживают ли косвенные вызовы рисования параметрfirstInstance. Если эта функция не включена, членfirstInstanceвсех структурVkDrawIndirectCommandиVkDrawIndexedIndirectCommand, которые предоставляются командамvkCmdDrawIndirectиvkCmdDrawIndexedIndirect, должен быть равен 0. -
depthClampуказывает, поддерживается ли зажим глубины. Если эта функция не включена, членdepthClampEnableструктурыVkPipelineRasterizationStateCreateInfoдолжен быть установлен вVK_FALSE. В противном случае установкаdepthClampEnableвVK_TRUEвключит зажим глубины. -
depthBiasClampуказывает, поддерживается ли зажим смещения глубины. Если эта функция не включена, членdepthBiasClampструктурыVkPipelineRasterizationStateCreateInfoдолжен быть установлен в 0.0, если только динамическое состояниеVK_DYNAMIC_STATE_DEPTH_BIASне включено, а параметрdepthBiasClampдляvkCmdSetDepthBiasдолжен быть установлен в 0.0. -
fillModeNonSolidуказывает, поддерживаются ли режимы заливки точками и проволочной сеткой. Если эта функция не включена, значения перечисленияVK_POLYGON_MODE_POINTиVK_POLYGON_MODE_LINEне должны использоваться. -
depthBoundsуказывает, поддерживаются ли тесты границ глубины. Если эта функция не включена, членdepthBoundsTestEnableструктурыVkPipelineDepthStencilStateCreateInfoдолжен быть установлен вVK_FALSE. КогдаdepthBoundsTestEnableустановлен вVK_FALSE, членыminDepthBoundsиmaxDepthBoundsструктурыVkPipelineDepthStencilStateCreateInfoигнорируются. -
wideLinesуказывает, поддерживаются ли линии с шириной, отличной от 1.0. Если эта функция не включена, членlineWidthструктурыVkPipelineRasterizationStateCreateInfoдолжен быть установлен в 1.0, если только динамическое состояниеVK_DYNAMIC_STATE_LINE_WIDTHне включено, а параметрlineWidthдляvkCmdSetLineWidthдолжен быть установлен в 1.0. Когда эта функция поддерживается, диапазон и гранулярность поддерживаемых ширин линий указываются членамиlineWidthRangeиlineWidthGranularityструктурыVkPhysicalDeviceLimits, соответственно. -
largePointsуказывает, поддерживаются ли точки размером более 1.0. Если эта функция не включена, поддерживается только размер точки 1.0, записанный шейдером. Диапазон и гранулярность поддерживаемых размеров точек указываются членамиpointSizeRangeиpointSizeGranularityструктурыVkPhysicalDeviceLimits, соответственно. -
alphaToOneуказывает, может ли реализация заменить значение альфа цветового фрагмента, выводимого из фрагментного шейдера, на максимальное представимое значение альфа для цветов с фиксированной точкой или 1.0 для цветов с плавающей точкой. Если эта функция не включена, то членalphaToOneEnableструктурыVkPipelineMultisampleStateCreateInfoдолжен быть установлен вVK_FALSE. В противном случае установкаalphaToOneEnableвVK_TRUEвключит поведение альфа-в-единицу.
-
multiViewportуказывает, поддерживается ли более одного видового окна. Если эта функция не включена, членыviewportCountиscissorCountструктурыVkPipelineViewportStateCreateInfoдолжны быть установлены в 1. Аналогично, параметрviewportCountкомандыvkCmdSetViewportи параметрscissorCountкомандыvkCmdSetScissorдолжны быть равны 1, а параметрfirstViewportкомандыvkCmdSetViewportи параметрfirstScissorкомандыvkCmdSetScissorдолжны быть равны 0. -
samplerAnisotropyуказывает, поддерживается ли анизотропная фильтрация. Если эта функция не включена, членmaxAnisotropyструктурыVkSamplerCreateInfoдолжен быть равен 1.0. -
textureCompressionETC2указывает, поддерживаются ли все сжатые текстурные форматы ETC2 и EAC. Если эта функция включена, то функцииVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITиVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITдолжны поддерживаться вoptimalTilingFeaturesдля следующих форматов:-
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK -
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK -
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK -
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK -
VK_FORMAT_EAC_R11_UNORM_BLOCK -
VK_FORMAT_EAC_R11_SNORM_BLOCK -
VK_FORMAT_EAC_R11G11_UNORM_BLOCK -
VK_FORMAT_EAC_R11G11_SNORM_BLOCK
vkGetPhysicalDeviceFormatProperties и vkGetPhysicalDeviceImageFormatProperties могут использоваться для проверки дополнительных поддерживаемых свойств отдельных форматов.
-
-
textureCompressionASTC_LDRуказывает, поддерживаются ли все сжатые текстурные форматы ASTC LDR. Если эта функция включена, то функцииVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITиVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITдолжны поддерживаться вoptimalTilingFeaturesдля следующих форматов:-
VK_FORMAT_ASTC_4x4_UNORM_BLOCK -
VK_FORMAT_ASTC_4x4_SRGB_BLOCK -
VK_FORMAT_ASTC_5x4_UNORM_BLOCK -
VK_FORMAT_ASTC_5x4_SRGB_BLOCK -
VK_FORMAT_ASTC_5x5_UNORM_BLOCK -
VK_FORMAT_ASTC_5x5_SRGB_BLOCK -
VK_FORMAT_ASTC_6x5_UNORM_BLOCK -
VK_FORMAT_ASTC_6x5_SRGB_BLOCK -
VK_FORMAT_ASTC_6x6_UNORM_BLOCK -
VK_FORMAT_ASTC_6x6_SRGB_BLOCK -
VK_FORMAT_ASTC_8x5_UNORM_BLOCK -
VK_FORMAT_ASTC_8x5_SRGB_BLOCK -
VK_FORMAT_ASTC_8x6_UNORM_BLOCK -
VK_FORMAT_ASTC_8x6_SRGB_BLOCK -
VK_FORMAT_ASTC_8x8_UNORM_BLOCK -
VK_FORMAT_ASTC_8x8_SRGB_BLOCK -
VK_FORMAT_ASTC_10x5_UNORM_BLOCK -
VK_FORMAT_ASTC_10x5_SRGB_BLOCK -
VK_FORMAT_ASTC_10x6_UNORM_BLOCK -
VK_FORMAT_ASTC_10x6_SRGB_BLOCK -
VK_FORMAT_ASTC_10x8_UNORM_BLOCK -
VK_FORMAT_ASTC_10x8_SRGB_BLOCK -
VK_FORMAT_ASTC_10x10_UNORM_BLOCK -
VK_FORMAT_ASTC_10x10_SRGB_BLOCK -
VK_FORMAT_ASTC_12x10_UNORM_BLOCK -
VK_FORMAT_ASTC_12x10_SRGB_BLOCK -
VK_FORMAT_ASTC_12x12_UNORM_BLOCK -
VK_FORMAT_ASTC_12x12_SRGB_BLOCK
vkGetPhysicalDeviceFormatProperties и vkGetPhysicalDeviceImageFormatProperties могут использоваться для проверки дополнительных поддерживаемых свойств отдельных форматов.
-
-
textureCompressionBCуказывает, поддерживаются ли все сжатые текстурные форматы BC. Если эта функция включена, то функцииVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,VK_FORMAT_FEATURE_BLIT_SRC_BITиVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITдолжны поддерживаться вoptimalTilingFeaturesдля следующих форматов:-
VK_FORMAT_BC1_RGB_UNORM_BLOCK -
VK_FORMAT_BC1_RGB_SRGB_BLOCK -
VK_FORMAT_BC1_RGBA_UNORM_BLOCK -
VK_FORMAT_BC1_RGBA_SRGB_BLOCK -
VK_FORMAT_BC2_UNORM_BLOCK -
VK_FORMAT_BC2_SRGB_BLOCK -
VK_FORMAT_BC3_UNORM_BLOCK -
VK_FORMAT_BC3_SRGB_BLOCK -
VK_FORMAT_BC4_UNORM_BLOCK -
VK_FORMAT_BC4_SNORM_BLOCK -
VK_FORMAT_BC5_UNORM_BLOCK -
VK_FORMAT_BC5_SNORM_BLOCK -
VK_FORMAT_BC6H_UFLOAT_BLOCK -
VK_FORMAT_BC6H_SFLOAT_BLOCK -
VK_FORMAT_BC7_UNORM_BLOCK -
VK_FORMAT_BC7_SRGB_BLOCK
vkGetPhysicalDeviceFormatProperties и vkGetPhysicalDeviceImageFormatProperties могут использоваться для проверки дополнительных поддерживаемых свойств отдельных форматов.
-
-
occlusionQueryPreciseуказывает, поддерживаются ли запросы на затенение, возвращающие фактическое количество выборок. Запросы на затенение создаются вVkQueryPoolпутем указанияqueryTypeVK_QUERY_TYPE_OCCLUSIONв структуреVkQueryPoolCreateInfo, которая передается вvkCreateQueryPool. Если эта функция включена, запросы этого типа могут включатьVK_QUERY_CONTROL_PRECISE_BITв параметреflagsдляvkCmdBeginQuery. Если эта функция не поддерживается, реализация поддерживает только булевы запросы на затенение. Когда передаются какие-либо выборки, булевы запросы возвращают ненулевое значение результата, в противном случае возвращается значение результата, равное нулю. Когда эта функция включена и установленVK_QUERY_CONTROL_PRECISE_BIT, запросы на затенение будут сообщать фактическое количество переданных выборок. -
pipelineStatisticsQueryуказывает, поддерживаются ли запросы статистики конвейера. Если эта функция не включена, запросы типаVK_QUERY_TYPE_PIPELINE_STATISTICSне могут быть созданы, и ни один из битов VkQueryPipelineStatisticFlagBits не может быть установлен в членеpipelineStatisticsструктурыVkQueryPoolCreateInfo. -
vertexPipelineStoresAndAtomicsуказывает, поддерживают ли буферы и изображения хранилища операции записи и атомарные операции на этапах вершинного, тесселяционного и геометрического шейдера. Если эта функция не включена, все переменные буферов хранилища изображений, буферов текселей хранилища и буферов хранилища, используемые этими этапами в модулях шейдера, должны быть помечены декорированиемNonWriteable(или квалификатором памятиreadonlyв GLSL). -
fragmentStoresAndAtomicsуказывает, поддерживают ли буферы и изображения хранилища операции записи и атомарные операции на этапе фрагментного шейдера. Если эта функция не включена, все переменные буферов хранилища изображений, буферов текселей хранилища и буферов хранилища, используемые фрагментным этапом в модулях шейдера, должны быть помечены декорированиемNonWriteable(или квалификатором памятиreadonlyв GLSL). -
shaderTessellationAndGeometryPointSizeуказывает, доступно ли встроенное декорированиеPointSizeна этапах управления тесселяцией, оценки тесселяции и геометрического шейдера. Если эта функция не включена, члены, помеченные встроенным декорированиемPointSize, не должны считываться или записываться, и все точки, записанные из тесселяционного или геометрического шейдера, будут иметь размер 1.0. Это также указывает, могут ли модули шейдера объявлять возможностьTessellationPointSizeдля шейдеров управления и оценки тесселяции или могут ли модули шейдера объявлять возможностьGeometryPointSizeдля геометрических шейдеров. Реализация, поддерживающая эту функцию, также должна поддерживать одну или обе функцииtessellationShaderилиgeometryShader. -
shaderImageGatherExtendedуказывает, доступен ли расширенный набор инструкций сбора изображений в коде шейдера. Если эта функция не включена, инструкцииOpImage*Gatherне поддерживают операндыOffsetиConstOffsets. Это также указывает, могут ли модули шейдера объявлять возможностьImageGatherExtended. -
shaderStorageImageExtendedFormatsуказывает, доступны ли расширенные форматы изображений хранилища в коде шейдера. Если эта функция не включена, форматы, требующие возможностиStorageImageExtendedFormats, не поддерживаются для изображений хранилища. Это также указывает, могут ли модули шейдера объявлять возможностьStorageImageExtendedFormats. -
shaderStorageImageMultisampleуказывает, поддерживаются ли многовыборочные изображения хранилища. Если эта функция не включена, изображения, созданные сusage, включающимVK_IMAGE_USAGE_STORAGE_BIT, должны быть созданы сsamples, равнымVK_SAMPLE_COUNT_1_BIT. Это также указывает, могут ли модули шейдера объявлять возможностьStorageImageMultisample. -
shaderStorageImageReadWithoutFormatуказывает, требуют ли изображения хранилища квалификатора формата при чтении из изображений хранилища. Если эта функция не включена, инструкцияOpImageReadне должна иметьOpTypeImageUnknown. Это также указывает, могут ли модули шейдера объявлять возможностьStorageImageReadWithoutFormat. -
shaderStorageImageWriteWithoutFormatуказывает, требуют ли изображения хранилища квалификатора формата при записи в изображения хранилища. Если эта функция не включена, инструкцияOpImageWriteне должна иметьOpTypeImageUnknown. Это также указывает, могут ли модули шейдера объявлять возможностьStorageImageWriteWithoutFormat. -
shaderUniformBufferArrayDynamicIndexingуказывает, могут ли массивы униформных буферов индексироваться динамически однородными целочисленными выражениями в коде шейдера. Если эта функция не включена, ресурсы с типом дескриптораVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICдолжны индексироваться только константными целочисленными выражениями при агрегации в массивы в коде шейдера. Это также указывает, могут ли модули шейдера объявлять возможностьUniformBufferArrayDynamicIndexing. -
shaderSampledImageArrayDynamicIndexingуказывает, могут ли массивы семплеров или выборочных изображений индексироваться динамически однородными целочисленными выражениями в коде шейдера. Если эта функция не включена, ресурсы с типом дескриптораVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERилиVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEдолжны индексироваться только константными целочисленными выражениями при агрегации в массивы в коде шейдера. Это также указывает, могут ли модули шейдера объявлять возможностьSampledImageArrayDynamicIndexing.
-
shaderStorageBufferArrayDynamicIndexingуказывает, можно ли индексировать массивы буферов хранения с помощью динамически равномерных целочисленных выражений в коде шейдера. Если эта функция не включена, ресурсы с типом дескриптораVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICдолжны индексироваться только константными целочисленными выражениями при агрегировании в массивы в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьStorageBufferArrayDynamicIndexing. -
shaderStorageImageArrayDynamicIndexingуказывает, можно ли индексировать массивы изображений хранения с помощью динамически равномерных целочисленных выражений в коде шейдера. Если эта функция не включена, ресурсы с типом дескриптораVK_DESCRIPTOR_TYPE_STORAGE_IMAGEдолжны индексироваться только константными целочисленными выражениями при агрегировании в массивы в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьStorageImageArrayDynamicIndexing. -
shaderClipDistanceуказывает, поддерживаются ли расстояния отсечения в коде шейдера. Если эта функция не включена, любые члены, помеченные встроенным декораторомClipDistance, не должны считываться или записываться в шейдерных модулях. Это также указывает, могут ли шейдерные модули объявлять возможностьClipDistance. -
shaderCullDistanceуказывает, поддерживаются ли расстояния отбрасывания в коде шейдера. Если эта функция не включена, любые члены, помеченные встроенным декораторомCullDistance, не должны считываться или записываться в шейдерных модулях. Это также указывает, могут ли шейдерные модули объявлять возможностьCullDistance. -
shaderFloat64указывает, поддерживаются ли 64-битные числа с плавающей запятой (числа с двойной точностью) в коде шейдера. Если эта функция не включена, 64-битные типы с плавающей запятой не должны использоваться в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьFloat64. -
shaderInt64указывает, поддерживаются ли 64-битные целые числа (со знаком и без знака) в коде шейдера. Если эта функция не включена, 64-битные целочисленные типы не должны использоваться в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьInt64. -
shaderInt16указывает, поддерживаются ли 16-битные целые числа (со знаком и без знака) в коде шейдера. Если эта функция не включена, 16-битные целочисленные типы не должны использоваться в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьInt16. -
shaderResourceResidencyуказывает, поддерживаются ли в коде шейдера операции с изображениями, которые возвращают информацию о резидентности ресурса. Если эта функция не включена, инструкцииOpImageSparse* не должны использоваться в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьSparseResidency. Функция требует поддержки как минимум одной из функцийsparseResidency*. -
shaderResourceMinLodуказывает, поддерживаются ли в коде шейдера операции с изображениями, которые задают минимальный уровень детализации (LOD) ресурса. Если эта функция не включена, операнд изображенияMinLodне должен использоваться в коде шейдера. Это также указывает, могут ли шейдерные модули объявлять возможностьMinLod. -
sparseBindingуказывает, можно ли управлять памятью ресурсов на уровне непрозрачных разреженных блоков, а не на уровне объекта. Если эта функция не включена, память ресурсов должна связываться только на основе каждого объекта с помощью командvkBindBufferMemoryиvkBindImageMemory. В этом случае буферы и изображения не должны создаваться с установленнымVK_BUFFER_CREATE_SPARSE_BINDING_BITиVK_IMAGE_CREATE_SPARSE_BINDING_BITв членеflagsструктурVkBufferCreateInfoиVkImageCreateInfoсоответственно. В противном случае памятью ресурсов можно управлять, как описано в Sparse Resource Features. -
sparseResidencyBufferуказывает, может ли устройство получать доступ к частично резидентным буферам. Если эта функция не включена, буферы не должны создаваться с установленнымVK_BUFFER_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkBufferCreateInfo. -
sparseResidencyImage2Dуказывает, может ли устройство получать доступ к частично резидентным 2D-изображениям с 1 образцом на пиксель. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_2Dиsamples, установленным вVK_SAMPLE_COUNT_1_BIT, не должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidencyImage3Dуказывает, может ли устройство получать доступ к частично резидентным 3D-изображениям. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_3Dне должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidency2Samplesуказывает, может ли физическое устройство получать доступ к частично резидентным 2D-изображениям с 2 образцами на пиксель. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_2Dиsamples, установленным вVK_SAMPLE_COUNT_2_BIT, не должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidency4Samplesуказывает, может ли физическое устройство получать доступ к частично резидентным 2D-изображениям с 4 образцами на пиксель. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_2Dиsamples, установленным вVK_SAMPLE_COUNT_4_BIT, не должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidency8Samplesуказывает, может ли физическое устройство получать доступ к частично резидентным 2D-изображениям с 8 образцами на пиксель. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_2Dиsamples, установленным вVK_SAMPLE_COUNT_8_BIT, не должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidency16Samplesуказывает, может ли физическое устройство получать доступ к частично резидентным 2D-изображениям с 16 образцами на пиксель. Если эта функция не включена, изображения сimageTypeравнымVK_IMAGE_TYPE_2Dиsamples, установленным вVK_SAMPLE_COUNT_16_BIT, не должны создаваться с установленнымVK_IMAGE_CREATE_SPARSE_RESIDENCY_BITв членеflagsструктурыVkImageCreateInfo. -
sparseResidencyAliasedуказывает, может ли физическое устройство корректно получать доступ к данным, имеющим алиасы в нескольких местах. Если эта функция не включена, значения перечисленияVK_BUFFER_CREATE_SPARSE_ALIASED_BITиVK_IMAGE_CREATE_SPARSE_ALIASED_BITне должны использоваться в членахflagsструктурVkBufferCreateInfoиVkImageCreateInfoсоответственно. -
variableMultisampleRateуказывает, должны ли все конвейеры, которые будут связаны с буфером команд во время подпрохода без вложений, иметь одно и то же значение дляVkPipelineMultisampleStateCreateInfo::rasterizationSamples. Если установлено вVK_TRUE, реализация поддерживает переменные скорости многовыборки в подпроходе без вложений. Если установлено вVK_FALSE, то все конвейеры, связанные в таком подпроходе, должны иметь одинаковую скорость многовыборки. Это не оказывает влияния в ситуациях, когда подпроход использует какие-либо вложения. -
inheritedQueriesуказывает, может ли выполняться вторичный буфер команд, пока активен запрос.
См. также
VkBool32, VkDeviceCreateInfo, vkGetPhysicalDeviceFeatures
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceFeatures
VkPhysicalDeviceLimits(3)
Имя
VkPhysicalDeviceLimits - Структура, сообщающая о зависящих от реализации физических ограничениях устройства
C-спецификация
Структура VkPhysicalDeviceLimits определяется как:
typedef struct VkPhysicalDeviceLimits {
uint32_t maxImageDimension1D;
uint32_t maxImageDimension2D;
uint32_t maxImageDimension3D;
uint32_t maxImageDimensionCube;
uint32_t maxImageArrayLayers;
uint32_t maxTexelBufferElements;
uint32_t maxUniformBufferRange;
uint32_t maxStorageBufferRange;
uint32_t maxPushConstantsSize;
uint32_t maxMemoryAllocationCount;
uint32_t maxSamplerAllocationCount;
VkDeviceSize bufferImageGranularity;
VkDeviceSize sparseAddressSpaceSize;
uint32_t maxBoundDescriptorSets;
uint32_t maxPerStageDescriptorSamplers;
uint32_t maxPerStageDescriptorUniformBuffers;
uint32_t maxPerStageDescriptorStorageBuffers;
uint32_t maxPerStageDescriptorSampledImages;
uint32_t maxPerStageDescriptorStorageImages;
uint32_t maxPerStageDescriptorInputAttachments;
uint32_t maxPerStageResources;
uint32_t maxDescriptorSetSamplers;
uint32_t maxDescriptorSetUniformBuffers;
uint32_t maxDescriptorSetUniformBuffersDynamic;
uint32_t maxDescriptorSetStorageBuffers;
uint32_t maxDescriptorSetStorageBuffersDynamic;
uint32_t maxDescriptorSetSampledImages;
uint32_t maxDescriptorSetStorageImages;
uint32_t maxDescriptorSetInputAttachments;
uint32_t maxVertexInputAttributes;
uint32_t maxVertexInputBindings;
uint32_t maxVertexInputAttributeOffset;
uint32_t maxVertexInputBindingStride;
uint32_t maxVertexOutputComponents;
uint32_t maxTessellationGenerationLevel;
uint32_t maxTessellationPatchSize;
uint32_t maxTessellationControlPerVertexInputComponents;
uint32_t maxTessellationControlPerVertexOutputComponents;
uint32_t maxTessellationControlPerPatchOutputComponents;
uint32_t maxTessellationControlTotalOutputComponents;
uint32_t maxTessellationEvaluationInputComponents;
uint32_t maxTessellationEvaluationOutputComponents;
uint32_t maxGeometryShaderInvocations;
uint32_t maxGeometryInputComponents;
uint32_t maxGeometryOutputComponents;
uint32_t maxGeometryOutputVertices;
uint32_t maxGeometryTotalOutputComponents;
uint32_t maxFragmentInputComponents;
uint32_t maxFragmentOutputAttachments;
uint32_t maxFragmentDualSrcAttachments;
uint32_t maxFragmentCombinedOutputResources;
uint32_t maxComputeSharedMemorySize;
uint32_t maxComputeWorkGroupCount[3];
uint32_t maxComputeWorkGroupInvocations;
uint32_t maxComputeWorkGroupSize[3];
uint32_t subPixelPrecisionBits;
uint32_t subTexelPrecisionBits;
uint32_t mipmapPrecisionBits;
uint32_t maxDrawIndexedIndexValue;
uint32_t maxDrawIndirectCount;
float maxSamplerLodBias;
float maxSamplerAnisotropy;
uint32_t maxViewports;
uint32_t maxViewportDimensions[2];
float viewportBoundsRange[2];
uint32_t viewportSubPixelBits;
size_t minMemoryMapAlignment;
VkDeviceSize minTexelBufferOffsetAlignment;
VkDeviceSize minUniformBufferOffsetAlignment;
VkDeviceSize minStorageBufferOffsetAlignment;
int32_t minTexelOffset;
uint32_t maxTexelOffset;
int32_t minTexelGatherOffset;
uint32_t maxTexelGatherOffset;
float minInterpolationOffset;
float maxInterpolationOffset;
uint32_t subPixelInterpolationOffsetBits;
uint32_t maxFramebufferWidth;
uint32_t maxFramebufferHeight;
uint32_t maxFramebufferLayers;
VkSampleCountFlags framebufferColorSampleCounts;
VkSampleCountFlags framebufferDepthSampleCounts;
VkSampleCountFlags framebufferStencilSampleCounts;
VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
uint32_t maxColorAttachments;
VkSampleCountFlags sampledImageColorSampleCounts;
VkSampleCountFlags sampledImageIntegerSampleCounts;
VkSampleCountFlags sampledImageDepthSampleCounts;
VkSampleCountFlags sampledImageStencilSampleCounts;
VkSampleCountFlags storageImageSampleCounts;
uint32_t maxSampleMaskWords;
VkBool32 timestampComputeAndGraphics;
float timestampPeriod;
uint32_t maxClipDistances;
uint32_t maxCullDistances;
uint32_t maxCombinedClipAndCullDistances;
uint32_t discreteQueuePriorities;
float pointSizeRange[2];
float lineWidthRange[2];
float pointSizeGranularity;
float lineWidthGranularity;
VkBool32 strictLines;
VkBool32 standardSampleLocations;
VkDeviceSize optimalBufferCopyOffsetAlignment;
VkDeviceSize optimalBufferCopyRowPitchAlignment;
VkDeviceSize nonCoherentAtomSize;
} VkPhysicalDeviceLimits; Члены
-
maxImageDimension1Dis the maximum dimension (width) supported for all images created with animageTypeofVK_IMAGE_TYPE_1D. -
maxImageDimension2Dis the maximum dimension (widthorheight) supported for all images created with animageTypeofVK_IMAGE_TYPE_2Dand withoutVK_IMAGE_CREATE_CUBE_COMPATIBLE_BITset inflags. -
maxImageDimension3Dis the maximum dimension (width,height, ordepth) supported for all images created with animageTypeofVK_IMAGE_TYPE_3D. -
maxImageDimensionCubeis the maximum dimension (widthorheight) supported for all images created with animageTypeofVK_IMAGE_TYPE_2Dand withVK_IMAGE_CREATE_CUBE_COMPATIBLE_BITset inflags. -
maxImageArrayLayersis the maximum number of layers (arrayLayers) for an image. -
maxTexelBufferElementsis the maximum number of addressable texels for a buffer view created on a buffer which was created with theVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITorVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITset in theusagemember of theVkBufferCreateInfostructure. -
maxUniformBufferRangeis the maximum value that можно be specified in therangemember of any VkDescriptorBufferInfo structures passed to a call to vkUpdateDescriptorSets for descriptors of typeVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC. -
maxStorageBufferRangeis the maximum value that можно be specified in therangemember of any VkDescriptorBufferInfo structures passed to a call to vkUpdateDescriptorSets for descriptors of typeVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. -
maxPushConstantsSizeis the maximum size, in bytes, of the pool of push constant memory. For each of the push constant ranges indicated by thepPushConstantRangesmember of theVkPipelineLayoutCreateInfostructure, (offset+size) должно be less than or equal to this limit. -
maxMemoryAllocationCountis the maximum number of device memory allocations, as created by vkAllocateMemory, which можно simultaneously exist. -
maxSamplerAllocationCountis the maximum number of sampler objects, as created by vkCreateSampler, which можно simultaneously exist on a device. -
bufferImageGranularityis the granularity, in bytes, at which buffer or linear image resources, and optimal image resources можно be bound to adjacent offsets in the sameVkDeviceMemoryobject without aliasing. See Buffer-Image Granularity for more details. -
sparseAddressSpaceSizeis the total amount of address space available, in bytes, for sparse memory resources. This is an upper bound on the sum of the size of all sparse resources, regardless of whether any memory is bound to them. -
maxBoundDescriptorSetsis the maximum number of descriptor sets that можно be simultaneously used by a pipeline. AllDescriptorSetdecorations in shader modules должны have a value less thanmaxBoundDescriptorSets. See html/vkspec.html#descriptorsets-sets. -
maxPerStageDescriptorSamplersis the maximum number of samplers that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_SAMPLERorVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERcount against this limit. A descriptor is accessible to a shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See html/vkspec.html#descriptorsets-sampler and html/vkspec.html#descriptorsets-combinedimagesampler. -
maxPerStageDescriptorUniformBuffersis the maximum number of uniform buffers that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. A descriptor is accessible to a shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See html/vkspec.html#descriptorsets-uniformbuffer and html/vkspec.html#descriptorsets-uniformbufferdynamic. -
maxPerStageDescriptorStorageBuffersis the maximum number of storage buffers that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_BUFFERorVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICcount against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See html/vkspec.html#descriptorsets-storagebuffer and html/vkspec.html#descriptorsets-storagebufferdynamic. -
maxPerStageDescriptorSampledImagesis the maximum number of sampled images that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, orVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERcount against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See html/vkspec.html#descriptorsets-combinedimagesampler, html/vkspec.html#descriptorsets-sampledimage, and html/vkspec.html#descriptorsets-uniformtexelbuffer. -
maxPerStageDescriptorStorageImagesis the maximum number of storage images that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_STORAGE_IMAGE, orVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERcount against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. See html/vkspec.html#descriptorsets-storageimage, and html/vkspec.html#descriptorsets-storagetexelbuffer. -
maxPerStageDescriptorInputAttachmentsis the maximum number of input attachments that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTcount against this limit. A descriptor is accessible to a pipeline shader stage when thestageFlagsmember of theVkDescriptorSetLayoutBindingstructure has the bit for that shader stage set. These are only supported for the fragment stage. See html/vkspec.html#descriptorsets-inputattachment. -
maxPerStageResourcesis the maximum number of resources that можно be accessible to a single shader stage in a pipeline layout. Descriptors with a type ofVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, orVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTcount against this limit. For the fragment shader stage the framebuffer color attachments also count against this limit. -
maxDescriptorSetSamplersis the maximum number of samplers that можно be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_SAMPLERorVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLERcount against this limit. See html/vkspec.html#descriptorsets-sampler and html/vkspec.html#descriptorsets-combinedimagesampler. -
maxDescriptorSetUniformBuffersis the maximum number of uniform buffers that можно be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERorVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. See html/vkspec.html#descriptorsets-uniformbuffer and html/vkspec.html#descriptorsets-uniformbufferdynamic. -
maxDescriptorSetUniformBuffersDynamicis the maximum number of dynamic uniform buffers that можно be included in descriptor bindings in a pipeline layout across all pipeline shader stages and descriptor set numbers. Descriptors with a type ofVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICcount against this limit. See html/vkspec.html#descriptorsets-uniformbufferdynamic.
-
maxDescriptorSetStorageBuffers— это максимальное количество буферов хранения, которые можно включить в привязки дескрипторов в макете конвейера во всех этапах шейдера конвейера и номерах наборов дескрипторов. Дескрипторы типаVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICучитываются в этом ограничении. См. html/vkspec.html#descriptorsets-storagebuffer и html/vkspec.html#descriptorsets-storagebufferdynamic. -
maxDescriptorSetStorageBuffersDynamic— это максимальное количество динамических буферов хранения, которые можно включить в привязки дескрипторов в макете конвейера во всех этапах шейдера конвейера и номерах наборов дескрипторов. Дескрипторы типаVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICучитываются в этом ограничении. См. html/vkspec.html#descriptorsets-storagebufferdynamic. -
maxDescriptorSetSampledImages— это максимальное количество выборочных изображений, которые можно включить в привязки дескрипторов в макете конвейера во всех этапах шейдера конвейера и номерах наборов дескрипторов. Дескрипторы типаVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGEилиVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERучитываются в этом ограничении. См. html/vkspec.html#descriptorsets-combinedimagesampler, html/vkspec.html#descriptorsets-sampledimage и html/vkspec.html#descriptorsets-uniformtexelbuffer. -
maxDescriptorSetStorageImages— это максимальное количество изображений хранения, которые можно включить в привязки дескрипторов в макете конвейера во всех этапах шейдера конвейера и номерах наборов дескрипторов. Дескрипторы типаVK_DESCRIPTOR_TYPE_STORAGE_IMAGEилиVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERучитываются в этом ограничении. См. html/vkspec.html#descriptorsets-storageimage и html/vkspec.html#descriptorsets-storagetexelbuffer. -
maxDescriptorSetInputAttachments— это максимальное количество входных вложений, которые можно включить в привязки дескрипторов в макете конвейера во всех этапах шейдера конвейера и номерах наборов дескрипторов. Дескрипторы типаVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTучитываются в этом ограничении. См. html/vkspec.html#descriptorsets-inputattachment. -
maxVertexInputAttributes— это максимальное количество атрибутов входных данных вершин, которые можно указать для графического конвейера. Они описаны в массиве структурVkVertexInputAttributeDescription, которые предоставляются при создании графического конвейера через элементpVertexAttributeDescriptionsструктурыVkPipelineVertexInputStateCreateInfo. См. html/vkspec.html#fxvertex-attrib и html/vkspec.html#fxvertex-input. -
maxVertexInputBindings— это максимальное количество буферов вершин, которые можно указать для предоставления атрибутов вершин графическому конвейеру. Они описаны в массиве структурVkVertexInputBindingDescription, которые предоставляются при создании графического конвейера через элементpVertexBindingDescriptionsструктурыVkPipelineVertexInputStateCreateInfo. ЭлементbindingструктурыVkVertexInputBindingDescriptionдолжен быть меньше этого предела. См. html/vkspec.html#fxvertex-input. -
maxVertexInputAttributeOffset— это максимальный сдвиг атрибута входных данных вершин, который можно добавить к шагу привязки входных данных вершин. ЭлементoffsetструктурыVkVertexInputAttributeDescriptionдолжен быть меньше или равен этому пределу. См. html/vkspec.html#fxvertex-input. -
maxVertexInputBindingStride— это максимальный шаг привязки входных данных вершин, который можно указать в привязке входных данных вершин. ЭлементstrideструктурыVkVertexInputBindingDescriptionдолжен быть меньше или равен этому пределу. См. html/vkspec.html#fxvertex-input. -
maxVertexOutputComponents— это максимальное количество компонентов выходных переменных, которые можно вывести шейдером вершин. См. html/vkspec.html#shaders-vertex. -
maxTessellationGenerationLevel— это максимальный уровень генерации тесселяции, поддерживаемый генератором примитивов тесселяции с фиксированной функцией. См. html/vkspec.html#tessellation. -
maxTessellationPatchSize— это максимальный размер патча, в вершинах, патчей, которые можно обработать шейдером управления тесселяцией и генератором примитивов тесселяции. ЭлементpatchControlPointsструктурыVkPipelineTessellationStateCreateInfo, указанный при создании конвейера, и значение, указанное в режиме выполненияOutputVerticesмодулей шейдера, должны быть меньше или равны этому пределу. См. html/vkspec.html#tessellation. -
maxTessellationControlPerVertexInputComponents— это максимальное количество компонентов входных переменных, которые можно предоставить в качестве входных данных на вершину для этапа шейдера управления тесселяцией. -
maxTessellationControlPerVertexOutputComponents— это максимальное количество компонентов выходных переменных на вершину, которые можно вывести из этапа шейдера управления тесселяцией. -
maxTessellationControlPerPatchOutputComponents— это максимальное количество компонентов выходных переменных на патч, которые можно вывести из этапа шейдера управления тесселяцией. -
maxTessellationControlTotalOutputComponents— это максимальное общее количество компонентов выходных переменных на вершину и на патч, которые можно вывести из этапа шейдера управления тесселяцией. -
maxTessellationEvaluationInputComponents— это максимальное количество компонентов входных переменных, которые можно предоставить в качестве входных данных на вершину для этапа шейдера оценки тесселяции. -
maxTessellationEvaluationOutputComponents— это максимальное количество компонентов выходных переменных на вершину, которые можно вывести из этапа шейдера оценки тесселяции. -
maxGeometryShaderInvocations— это максимальное количество вызовов, поддерживаемых для экземпляров геометрических шейдеров. Значение, указанное в режиме выполненияInvocationsмодулей шейдера, должно быть меньше или равно этому пределу. См. html/vkspec.html#geometry. -
maxGeometryInputComponents— это максимальное количество компонентов входных переменных, которые можно предоставить в качестве входных данных для этапа геометрического шейдера. -
maxGeometryOutputComponents— это максимальное количество компонентов выходных переменных, которые можно вывести из этапа геометрического шейдера. -
maxGeometryOutputVertices— это максимальное количество вершин, которые можно выдать любым геометрическим шейдером. -
maxGeometryTotalOutputComponents— это максимальное общее количество компонентов вывода, по всем выданным вершинам, которые можно вывести из этапа геометрического шейдера. -
maxFragmentInputComponents— это максимальное количество компонентов входных переменных, которые можно предоставить в качестве входных данных для этапа фрагментного шейдера. -
maxFragmentOutputAttachments— это максимальное количество выходных вложений, в которые можно записывать с помощью этапа фрагментного шейдера. -
maxFragmentDualSrcAttachments— это максимальное количество выходных вложений, в которые можно записывать с помощью этапа фрагментного шейдера, когда включено смешивание и используется один из режимов смешивания с двумя источниками. См. html/vkspec.html#framebuffer-dsb и dualSrcBlend. -
maxFragmentCombinedOutputResources— это общее количество буферов хранения, изображений хранения и выходных буферов, которые можно использовать на этапе фрагментного шейдера. -
maxComputeWorkGroupCount[3] — это максимальное количество локальных рабочих групп, которые можно отправить одной командой отправки. Эти три значения представляют максимальное количество локальных рабочих групп для измерений X, Y и Z соответственно. Параметры количества рабочих групп для команд отправки должны быть меньше или равны соответствующему пределу. См. html/vkspec.html#dispatch.
-
maxComputeWorkGroupInvocations— это максимальное общее количество вызовов вычислительного шейдера в одной локальной рабочей группе. Произведение размеров X, Y и Z, как указано в режиме выполненияLocalSizeв модулях шейдеров и объектом, помеченным декорациейWorkgroupSize, должно быть меньше или равно этому ограничению. -
maxComputeWorkGroupSize[3] — это максимальный размер локальной вычислительной рабочей группы для каждого измерения. Эти три значения представляют максимальный размер локальной рабочей группы в измерениях X, Y и Z соответственно. Размерыx,yиz, указанные в режиме выполненияLocalSizeи объектом, помеченным декорациейWorkgroupSizeв модулях шейдеров, должны быть меньше или равны соответствующему ограничению. -
subPixelPrecisionBits— это количество битов субпиксельной точности в координатах фреймбуфера xf и yf. См. html/vkspec.html#primsrast. -
subTexelPrecisionBits— это количество битов точности в делении вдоль оси изображения, используемого для фильтров уменьшения и увеличения. 2subTexelPrecisionBits— это фактическое количество делений вдоль каждой оси изображения. Аппаратное обеспечение фильтрации будет привязываться к этим местоположениям при вычислении отфильтрованных результатов. -
mipmapPrecisionBits— это количество битов деления, к которым привязывается вычисление LOD для извлечения mipmap при определении вклада каждого уровня mip в отфильтрованные результаты mip. 2mipmapPrecisionBits— это фактическое количество делений.Примечание
Например, если это значение равно 2 битам, то при линейной фильтрации между двумя уровнями каждый уровень может вносить вклад: 0%, 33%, 66% или 100% (это всего лишь пример, и объем вклада должен быть охвачен различными уравнениями в спецификации).
-
maxDrawIndexedIndexValue— это максимальное значение индекса, которое можно использовать для индексированных вызовов отрисовки при использовании 32-битных индексов. Это исключает значение перезапуска примитива 0xFFFFFFFF. См. fullDrawIndexUint32. -
maxDrawIndirectCount— это максимальное количество отрисовок, поддерживаемое для косвенных вызовов отрисовки. См. multiDrawIndirect. -
maxSamplerLodBias— это максимальное абсолютное смещение уровня детализации семплера. Сумма элементаmipLodBiasструктурыVkSamplerCreateInfoи операндаBiasопераций выборки изображений в модулях шейдеров (или 0, если операндBiasне предоставлен для операции выборки изображения) ограничиваются диапазоном [-maxSamplerLodBias,+maxSamplerLodBias]. См. html/vkspec.html#samplers-mipLodBias. -
maxSamplerAnisotropy— это максимальная степень анизотропии семплера. Максимальная степень анизотропной фильтрации, используемая для операции выборки изображения, — это минимум элементаmaxAnisotropyструктурыVkSamplerCreateInfoи этого ограничения. См. html/vkspec.html#samplers-maxAnisotropy. -
maxViewports— это максимальное количество активных видовых экранов. ЭлементviewportCountструктурыVkPipelineViewportStateCreateInfo, предоставляемый при создании конвейера, должен быть меньше или равен этому ограничению. -
maxViewportDimensions[2] — это максимальные размеры видового экрана в измерениях X (ширина) и Y (высота) соответственно. Максимальные размеры видового экрана должны быть больше или равны наибольшему изображению, которое можно создать и использовать в качестве вложения фреймбуфера. См. Управление видовым экраном. -
viewportBoundsRange[2] — это диапазон [минимум, максимум], в котором должны находиться углы видового экрана. Этот диапазон должен быть по крайней мере [-2 ×size, 2 ×size- 1], гдеsize= max(maxViewportDimensions[0],maxViewportDimensions[1]). См. Управление видовым экраном.Примечание
Назначение ограничения
viewportBoundsRange— разрешить произвольный сдвиг видового экрана максимального размера относительно целевого объекта вывода, при условии, что по крайней мере какая-то часть пересекается. Это дало бы предел границ [-size+ 1, 2 ×size- 1], что позволило бы все возможные непустые пересечения целевого объекта вывода и видового экрана. Поскольку эти числа обычно являются степенями двойки, выбор знакового числового диапазона с использованием наименьшего возможного количества битов приводит к указанному диапазону. -
viewportSubPixelBits— это количество битов субпиксельной точности для границ видового экрана. Точность субпикселей, с которой интерпретируются границы видового экрана с плавающей запятой, определяется этим ограничением. -
minMemoryMapAlignment— это минимальное требуемое выравнивание в байтах выделений памяти, видимой хостом, в адресном пространстве хоста. При сопоставлении выделения памяти с помощью vkMapMemory вычитаниеoffsetбайтов из возвращаемого указателя всегда будет давать целое кратное этому ограничению. См. html/vkspec.html#memory-device-hostaccess. -
minTexelBufferOffsetAlignment— это минимальное требуемое выравнивание в байтах для элементаoffsetструктурыVkBufferViewCreateInfoдля буферов текселей. При создании представления буфера для буфера, созданного с помощьюVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITилиVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, установленных в элементеusageструктурыVkBufferCreateInfo,offsetдолжен быть целым кратным этому ограничению. -
minUniformBufferOffsetAlignment— это минимальное требуемое выравнивание в байтах для элементаoffsetструктурыVkDescriptorBufferInfoдля униформных буферов. При обновлении дескриптора типаVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,offsetдолжен быть целым кратным этому ограничению. Аналогично, динамические смещения для униформных буферов должны быть кратными этому ограничению. -
minStorageBufferOffsetAlignment— это минимальное требуемое выравнивание в байтах для элементаoffsetструктурыVkDescriptorBufferInfoдля буферов хранения. При обновлении дескриптора типаVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,offsetдолжен быть целым кратным этому ограничению. Аналогично, динамические смещения для буферов хранения должны быть кратными этому ограничению. -
minTexelOffset— это минимальное значение смещения для операнда изображенияConstOffsetлюбой из инструкций изображенияOpImageSample* илиOpImageFetch*. -
maxTexelOffset— это максимальное значение смещения для операнда изображенияConstOffsetлюбой из инструкций изображенияOpImageSample* илиOpImageFetch*. -
minTexelGatherOffset— это минимальное значение смещения для операндов изображенияOffsetилиConstOffsetsлюбой из инструкций изображенияOpImage*Gather. -
maxTexelGatherOffset— это максимальное значение смещения для операндов изображенияOffsetилиConstOffsetsлюбой из инструкций изображенияOpImage*Gather. -
minInterpolationOffset— это минимальное отрицательное значение смещения для операндаoffsetрасширенной инструкцииInterpolateAtOffset. -
maxInterpolationOffset— это максимальное положительное значение смещения для операндаoffsetрасширенной инструкцииInterpolateAtOffset. -
subPixelInterpolationOffsetBits— это количество дробных субпиксельных битов, к которым могут быть округлены смещенияxиyдля расширенной инструкцииInterpolateAtOffsetв виде значений с фиксированной точкой. -
maxFramebufferWidth— это максимальная ширина фреймбуфера. ЭлементwidthструктурыVkFramebufferCreateInfoдолжен быть меньше или равен этому ограничению. -
maxFramebufferHeight— это максимальная высота фреймбуфера. ЭлементheightструктурыVkFramebufferCreateInfoдолжен быть меньше или равен этому ограничению. -
maxFramebufferLayers— это максимальное количество слоев для многослойного фреймбуфера. ЭлементlayersструктурыVkFramebufferCreateInfoдолжен быть меньше или равен этому ограничению. -
framebufferColorSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на количество образцов цвета, поддерживаемых для всех цветовых вложений фреймбуфера с форматами с плавающей или фиксированной точкой. Нет ограничения, указывающего на количество образцов цвета, поддерживаемых для всех цветовых вложений с целочисленными форматами. -
framebufferDepthSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на поддерживаемые количества образцов глубины для всех вложений глубины/трафарета фреймбуфера, когда формат включает компонент глубины. -
framebufferStencilSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на поддерживаемые количества образцов трафарета для всех вложений глубины/трафарета фреймбуфера, когда формат включает компонент трафарета. -
framebufferNoAttachmentsSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на поддерживаемые количества образцов для фреймбуфера без вложений.
-
maxColorAttachments— это максимальное количество цветовых вложений, которые могут использоваться подпроходом в проходе рендеринга. ЭлементcolorAttachmentCountструктурыVkSubpassDescriptionдолжен быть меньше или равен этому ограничению. -
sampledImageColorSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на количества выборок, поддерживаемые для всех 2D-изображений, созданных с помощьюVK_IMAGE_TILING_OPTIMAL,usage, содержащихVK_IMAGE_USAGE_SAMPLED_BIT, и нецелочисленный цветовой формат. -
sampledImageIntegerSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на количества выборок, поддерживаемые для всех 2D-изображений, созданных с помощьюVK_IMAGE_TILING_OPTIMAL,usage, содержащихVK_IMAGE_USAGE_SAMPLED_BIT, и целочисленный цветовой формат. -
sampledImageDepthSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на количества выборок, поддерживаемые для всех 2D-изображений, созданных с помощьюVK_IMAGE_TILING_OPTIMAL,usage, содержащихVK_IMAGE_USAGE_SAMPLED_BIT, и формат глубины. -
sampledImageStencilSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на поддерживаемые выборки для всех 2D-изображений, созданных с помощьюVK_IMAGE_TILING_OPTIMAL,usage, содержащихVK_IMAGE_USAGE_SAMPLED_BIT, и формат трафарета. -
storageImageSampleCounts— это битовая маска1 VkSampleCountFlagBits, указывающая на количества выборок, поддерживаемые для всех 2D-изображений, созданных с помощьюVK_IMAGE_TILING_OPTIMAL, иusage, содержащихVK_IMAGE_USAGE_STORAGE_BIT. -
maxSampleMaskWords— это максимальное количество элементов массива переменной, декорированной встроенным декораторомSampleMask. -
timestampComputeAndGraphicsуказывает на поддержку меток времени во всех графических и вычислительных очередях. Если это ограничение установлено вVK_TRUE, все очереди, которые объявляютVK_QUEUE_GRAPHICS_BITилиVK_QUEUE_COMPUTE_BITвVkQueueFamilyProperties::queueFlags, поддерживаютVkQueueFamilyProperties::timestampValidBitsне менее 36. См. Запросы меток времени. -
timestampPeriod— это количество наносекунд, необходимых для увеличения запроса метки времени на 1. См. Запросы меток времени. -
maxClipDistances— это максимальное количество расстояний отсечения, которые могут использоваться на одном этапе шейдера. Размер любого массива, объявленного с помощью встроенного декоратораClipDistanceв модуле шейдера, должен быть меньше или равен этому ограничению. -
maxCullDistances— это максимальное количество расстояний отбраковки, которые могут использоваться на одном этапе шейдера. Размер любого массива, объявленного с помощью встроенного декоратораCullDistanceв модуле шейдера, должен быть меньше или равен этому ограничению. -
maxCombinedClipAndCullDistances— это максимальное комбинированное количество расстояний отсечения и отбраковки, которые могут использоваться на одном этапе шейдера. Сумма размеров любых пар массивов, объявленных с помощью встроенных декораторовClipDistanceиCullDistance, используемых одним этапом шейдера в модуле шейдера, должна быть меньше или равна этому ограничению. -
discreteQueuePriorities— это количество дискретных приоритетов, которые могут быть назначены очереди на основе значения каждого элементаVkDeviceQueueCreateInfo::pQueuePriorities. Это должно быть не менее 2, и уровни должны быть равномерно распределены по диапазону, по крайней мере, с одним уровнем на 1,0 и другим на 0,0. См. html/vkspec.html#devsandqueues-priority. -
pointSizeRange[2] — это диапазон [minimum,maximum] поддерживаемых размеров для точек. Значения, записанные в переменные, декорированные встроенным декораторомPointSize, ограничиваются этим диапазоном. -
lineWidthRange[2] — это диапазон [minimum,maximum] поддерживаемых ширин для линий. Значения, указанные членомlineWidthструктурыVkPipelineRasterizationStateCreateInfoили параметромlineWidthдляvkCmdSetLineWidth, ограничиваются этим диапазоном. -
pointSizeGranularity— это гранулярность поддерживаемых размеров точек. Не все размеры точек в диапазоне, определенномpointSizeRange, поддерживаются. Это ограничение указывает гранулярность (или приращение) между последовательными поддерживаемыми размерами точек. -
lineWidthGranularity— это гранулярность поддерживаемых ширин линий. Не все ширины линий в диапазоне, определенномlineWidthRange, поддерживаются. Это ограничение указывает гранулярность (или приращение) между последовательными поддерживаемыми ширинами линий. -
strictLinesуказывает, растризуются ли линии в соответствии с предпочтительным методом растризации. Если установлено значениеVK_FALSE, линии могут растризоваться по ослабленному набору правил. Если установлено значениеVK_TRUE, линии растризуются в соответствии со строгим определением. См. Основная растризация отрезков линий. -
standardSampleLocationsуказывает, используются ли при растризации стандартные расположения выборок, как описано в Многовыборке. Если установлено значениеVK_TRUE, реализация использует документированные расположения выборок. Если установлено значениеVK_FALSE, реализация может использовать другие расположения выборок. -
optimalBufferCopyOffsetAlignment— это оптимальное выравнивание смещения буфера в байтах дляvkCmdCopyBufferToImageиvkCmdCopyImageToBuffer. Требования к выравниванию на тексель соблюдаются, но приложениям следует использовать оптимальное выравнивание для достижения оптимальной производительности и энергопотребления. -
optimalBufferCopyRowPitchAlignment— это оптимальное выравнивание шага строки буфера в байтах дляvkCmdCopyBufferToImageиvkCmdCopyImageToBuffer. Шаг строки — это количество байтов между текселями с одинаковой координатой X в смежных строках (координаты Y отличаются на единицу). Требования к выравниванию на тексель соблюдаются, но приложениям следует использовать оптимальное выравнивание для достижения оптимальной производительности и энергопотребления. -
nonCoherentAtomSize— это размер и выравнивание в байтах, которые ограничивают одновременный доступ к отображаемой хостом памяти устройства.
Описание
- 1
- Для всех битовых масок VkSampleCountFlagBits пределы количества выборок, определенные выше, представляют минимальные поддерживаемые количества выборок для каждого типа изображения. Отдельные изображения могут поддерживать дополнительные количества выборок, которые запрашиваются с помощью vkGetPhysicalDeviceImageFormatProperties, как описано в Поддерживаемые количества выборок.
См. также
VkBool32, VkDeviceSize, VkPhysicalDeviceProperties, VkSampleCountFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceLimits
VkPhysicalDeviceMemoryProperties(3)
Имя
VkPhysicalDeviceMemoryProperties - Структура, указывающая свойства памяти физического устройства
C-спецификация
Структура VkPhysicalDeviceMemoryProperties определяется как:
typedef struct VkPhysicalDeviceMemoryProperties {
uint32_t memoryTypeCount;
VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
uint32_t memoryHeapCount;
VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
} VkPhysicalDeviceMemoryProperties; Члены
-
memoryTypeCount— это количество допустимых элементов в массивеmemoryTypes. -
memoryTypes— это массив структур VkMemoryType, описывающих типы памяти, которые могут использоваться для доступа к памяти, выделенной из куч, указанныхmemoryHeaps. -
memoryHeapCount— это количество допустимых элементов в массивеmemoryHeaps. -
memoryHeaps— это массив структур VkMemoryHeap, описывающих кучи памяти, из которых могут выделяться память.
Описание
Структура VkPhysicalDeviceMemoryProperties описывает несколько куч памяти, а также несколько типов памяти, которые могут использоваться для доступа к памяти, выделенной в этих кучах. Каждая куча описывает ресурс памяти определенного размера, а каждый тип памяти описывает набор свойств памяти (например, кэшированная хостом или некэшированная), которые могут использоваться с данной кучей памяти. Выделения, использующие определенный тип памяти, будут потреблять ресурсы из кучи, указанной индексом кучи этого типа памяти. Более одного типа памяти могут совместно использовать каждую кучу, а кучи и типы памяти предоставляют механизм для объявления точного размера ресурсов физической памяти, позволяя при этом использовать память с различными свойствами.
Количество куч памяти задается memoryHeapCount и меньше или равно VK_MAX_MEMORY_HEAPS. Каждая куча описывается элементом массива memoryHeaps как структура VkMemoryHeap. Количество типов памяти, доступных во всех кучах памяти, задается memoryTypeCount и меньше или равно VK_MAX_MEMORY_TYPES. Каждый тип памяти описывается элементом массива memoryTypes как структура VkMemoryType.
По крайней мере, одна куча должна включать VK_MEMORY_HEAP_DEVICE_LOCAL_BIT в VkMemoryHeap::flags. Если есть несколько куч, все из которых имеют схожие характеристики производительности, они могут все включать VK_MEMORY_HEAP_DEVICE_LOCAL_BIT. В системе унифицированной архитектуры памяти (UMA) часто существует только одна куча памяти, которая считается одинаково «локальной» для хоста и устройства, и такая реализация должна объявлять кучу как локальную для устройства.
Каждый тип памяти, возвращаемый функцией vkGetPhysicalDeviceMemoryProperties, должен иметь значение propertyFlags , равное одному из следующих:
- 0
-
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT -
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT -
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT -
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT -
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT -
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT -
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_CACHED_BIT|VK_MEMORY_PROPERTY_HOST_COHERENT_BIT -
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT|VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
Должен существовать как минимум один тип памяти, у которого установлены биты VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT и VK_MEMORY_PROPERTY_HOST_COHERENT_BIT в propertyFlags. Должен существовать как минимум один тип памяти, у которого установлен бит VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT в propertyFlags.
Типы памяти отсортированы в соответствии с порядком обхода, который помогает легко выбрать подходящий тип памяти. Для двух типов памяти X и Y порядок обхода определяет X ≤ Y, если:
- биты свойств памяти, установленные для X, являются строгим подмножеством битов свойств памяти, установленных для Y. Или,
- биты свойств памяти, установленные для X, совпадают с битами свойств памяти, установленными для Y, и X использует кучу памяти с большей или равной производительностью (определяется специфичным для реализации способом).
Типы памяти упорядочены в списке так, что X присваивается меньшее значение memoryTypeIndex, чем Y, если (X ≤ Y) ∧ ¬ (Y ≤ X) согласно порядку обхода. Обратите внимание, что список всех допустимых комбинаций флагов свойств памяти выше удовлетворяет этому порядку обхода, но возможны и другие порядки. Цель этой сортировки — позволить приложениям использовать простой цикл поиска при выборе подходящего типа памяти, например:
// Find a memory type in "memoryTypeBits" that includes all of "properties"
int32_t FindProperties(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties)
{
for (int32_t i = 0; i < memoryTypeCount; ++i)
{
if ((memoryTypeBits & (1 << i)) &&
((memoryTypes[i].propertyFlags & properties) == properties))
return i;
}
return -1;
}
// Try to find an optimal memory type, or if it does not exist
// find any compatible memory type
VkMemoryRequirements memoryRequirements;
vkGetImageMemoryRequirements(device, image, &memoryRequirements);
int32_t memoryType = FindProperties(memoryRequirements.memoryTypeBits, optimalProperties);
if (memoryType == -1)
memoryType = FindProperties(memoryRequirements.memoryTypeBits, requiredProperties); Цикл найдет первый поддерживаемый тип памяти, у которого установлены все запрашиваемые в properties биты. Если точного совпадения нет, он найдет наиболее близкое совпадение (т. е. тип памяти с наименьшим количеством дополнительных установленных битов), у которого установлены некоторые дополнительные биты, но которые не вредны для поведения, запрашиваемого properties. Приложение может сначала искать оптимальные свойства, например, тип памяти, который является локальным для устройства или поддерживает согласованные кэшированные доступы, в зависимости от предполагаемого использования, и если такой тип памяти отсутствует, может перейти к поиску менее оптимального, но гарантированного набора свойств, таких как "0" или "видимый и согласованный хостом".
См. также
VkMemoryHeap, VkMemoryType, vkGetPhysicalDeviceMemoryProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceMemoryProperties
VkPhysicalDeviceProperties(3)
Имя
VkPhysicalDeviceProperties - Структура, указывающая свойства физического устройства
C-спецификация
Структура VkPhysicalDeviceProperties определяется следующим образом:
typedef struct VkPhysicalDeviceProperties {
uint32_t apiVersion;
uint32_t driverVersion;
uint32_t vendorID;
uint32_t deviceID;
VkPhysicalDeviceType deviceType;
char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
uint8_t pipelineCacheUUID[VK_UUID_SIZE];
VkPhysicalDeviceLimits limits;
VkPhysicalDeviceSparseProperties sparseProperties;
} VkPhysicalDeviceProperties; Члены
-
apiVersion— версия Vulkan, поддерживаемая устройством, закодированная, как описано в разделе API Version Numbers and Semantics. -
driverVersion— версия драйвера, указанная поставщиком. -
vendorID— уникальный идентификатор поставщика (см. ниже) физического устройства. -
deviceID— уникальный идентификатор физического устройства среди устройств, доступных от поставщика. -
deviceType— VkPhysicalDeviceType, указывающий тип устройства. -
deviceName— завершающаяся нулем строка UTF-8, содержащая имя устройства. -
pipelineCacheUUID— массив размеромVK_UUID_SIZE, содержащий 8-битные значения, представляющие собой универсальный уникальный идентификатор устройства. -
limits— структура VkPhysicalDeviceLimits, которая указывает специфичные для устройства ограничения физического устройства. См. Limits для подробной информации. -
sparseProperties— структура VkPhysicalDeviceSparseProperties, которая указывает различные свойства, связанные с разреженностью, физического устройства. См. Sparse Properties для подробной информации.
Описание
Поля vendorID и deviceID предоставляются для того, чтобы приложения могли адаптироваться к характеристикам устройства, которые неадекватно отображаются другими запросами Vulkan. Они могут включать профили производительности, ошибки оборудования или другие характеристики. В реализациях на основе PCI младшие шестнадцать битов vendorID и deviceID должны содержать (соответственно) идентификаторы поставщика и устройства PCI, связанные с аппаратным устройством, а остальные биты должны быть установлены в ноль. В не-PCI реализациях выбор возвращаемых значений может определяться политиками операционной системы или платформы. В противном случае это находится на усмотрение разработчика, с учетом следующих ограничений и рекомендаций:
- Для целей идентификации физического устройства поставщиком физического устройства является субъект, ответственный за наиболее важные характеристики оборудования, представленного дескриптором физического устройства. В случае дискретного графического процессора это должен быть поставщик чипсета графического процессора. В случае графического процессора или другого ускорителя, интегрированного в систему на кристалле (SoC), это должен быть поставщик кремниевой IP, используемой для создания графического процессора или другого ускорителя.
- Если у поставщика физического устройства есть действительный идентификатор поставщика PCI, выданный PCI-SIG, этот идентификатор должен использоваться для построения
vendorID, как описано выше для реализаций на основе PCI. Реализации, которые не возвращают идентификатор поставщика PCI вvendorID, должны возвращать действительный идентификатор поставщика Khronos, полученный, как описано в документе Vulkan Documentation and Extensions в разделе “Registering a Vendor ID with Khronos”. Идентификаторы поставщиков Khronos выделяются начиная с 0x10000, чтобы отличать их от пространства имен идентификаторов поставщиков PCI. - Поставщик физического устройства отвечает за выбор
deviceID. Выбранное значение должно однозначно идентифицировать как версию устройства, так и любые основные параметры конфигурации (например, количество ядер в случае многоядерных устройств). Один и тот же идентификатор устройства должен использоваться для всех физических реализаций этой версии и конфигурации устройства. Например, все использования конкретной версии и конфигурации кремниевой IP GPU должны использовать один и тот же идентификатор устройства, даже если эти использования происходят в разных SoC.
См. также
VkPhysicalDeviceLimits, VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType, vkGetPhysicalDeviceProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceProperties
VkPhysicalDeviceSparseProperties(3)
Имя
VkPhysicalDeviceSparseProperties - Структура, указывающая свойства разреженной памяти физического устройства
C-спецификация
Структура VkPhysicalDeviceSparseProperties определяется следующим образом:
typedef struct VkPhysicalDeviceSparseProperties {
VkBool32 residencyStandard2DBlockShape;
VkBool32 residencyStandard2DMultisampleBlockShape;
VkBool32 residencyStandard3DBlockShape;
VkBool32 residencyAlignedMipSize;
VkBool32 residencyNonResidentStrict;
} VkPhysicalDeviceSparseProperties; Члены
-
residencyStandard2DBlockShapeравноVK_TRUE, если физическое устройство будет получать доступ ко всем одновыборочным 2D разреженным ресурсам, используя стандартные формы блоков разреженного изображения (на основе формата изображения), как описано в таблице Standard Sparse Image Block Shapes (Single Sample). Если это свойство не поддерживается, значение, возвращаемое в членеimageGranularityструктурыVkSparseImageFormatPropertiesдля одновыборочных 2D изображений, не обязано совпадать со стандартными размерами блоков разреженного изображения, указанными в таблице. -
residencyStandard2DMultisampleBlockShapeравноVK_TRUE, если физическое устройство будет получать доступ ко всем многовыборочным 2D разреженным ресурсам, используя стандартные формы блоков разреженного изображения (на основе формата изображения), как описано в таблице Standard Sparse Image Block Shapes (MSAA). Если это свойство не поддерживается, значение, возвращаемое в членеimageGranularityструктурыVkSparseImageFormatPropertiesдля многовыборочных 2D изображений, не обязано совпадать со стандартными размерами блоков разреженного изображения, указанными в таблице. -
residencyStandard3DBlockShapeравноVK_TRUE, если физическое устройство будет получать доступ ко всем 3D разреженным ресурсам, используя стандартные формы блоков разреженного изображения (на основе формата изображения), как описано в таблице Standard Sparse Image Block Shapes (Single Sample). Если это свойство не поддерживается, значение, возвращаемое в членеimageGranularityструктурыVkSparseImageFormatPropertiesдля 3D изображений, не обязано совпадать со стандартными размерами блоков разреженного изображения, указанными в таблице. -
residencyAlignedMipSizeравноVK_TRUE, если изображения с размерами уровня mip, которые не являются целыми кратными соответствующим размерам блока разреженного изображения, могут быть размещены в хвосте mip. Если это свойство не указано, только уровни mip с размерами меньше, чем членimageGranularityструктурыVkSparseImageFormatProperties, будут размещены в хвосте mip. Если это свойство указано, реализация может возвращатьVK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BITв членеflagsструктурыVkSparseImageFormatProperties, указывая, что размеры уровня mip, которые не являются целыми кратными соответствующим размерам блока разреженного изображения, будут размещены в хвосте mip. -
residencyNonResidentStrictуказывает, может ли физическое устройство последовательно получать доступ к нерезидентным областям ресурса. Если это свойство равноVK_TRUE, доступ к нерезидентным областям ресурсов будет гарантированно возвращать значения, как если бы ресурс был заполнен 0; записи в нерезидентные области будут отброшены.
См. также
VkBool32, VkPhysicalDeviceProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceSparseProperties
VkPipelineCacheCreateInfo(3)
Имя
VkPipelineCacheCreateInfo - Структура, определяющая параметры вновь создаваемого кэша конвейеров
Спецификация C
Структура VkPipelineCacheCreateInfo определяется как:
typedef struct VkPipelineCacheCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineCacheCreateFlags flags;
size_t initialDataSize;
const void* pInitialData;
} VkPipelineCacheCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
initialDataSize- количество байтов вpInitialData. ЕслиinitialDataSizeравно нулю, кэш конвейеров изначально будет пустым. -
pInitialData- указатель на ранее извлеченные данные кэша конвейеров. Если данные кэша конвейеров несовместимы (как определено ниже) с устройством, кэш конвейеров будет изначально пустым. ЕслиinitialDataSizeравно нулю,pInitialDataигнорируется.
Описание
Правильное использование
- Если
initialDataSizeне0, он должен быть равен размеруpInitialData, возвращаемомуvkGetPipelineCacheData, когдаpInitialDataбыл изначально извлечен- Если
initialDataSizeне0,pInitialDataдолжен был быть извлечен из предыдущего вызоваvkGetPipelineCacheData
Правильное использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть0- Если
initialDataSizeне0,pInitialDataдолжен быть указателем на массив изinitialDataSizeбайтов
См. также
VkPipelineCacheCreateFlags, VkStructureType, vkCreatePipelineCache
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCacheCreateInfo
VkPipelineColorBlendAttachmentState(3)
Имя
VkPipelineColorBlendAttachmentState - Структура, определяющая состояние вложения цвета конвейера
Спецификация C
Структура VkPipelineColorBlendAttachmentState определяется как:
typedef struct VkPipelineColorBlendAttachmentState {
VkBool32 blendEnable;
VkBlendFactor srcColorBlendFactor;
VkBlendFactor dstColorBlendFactor;
VkBlendOp colorBlendOp;
VkBlendFactor srcAlphaBlendFactor;
VkBlendFactor dstAlphaBlendFactor;
VkBlendOp alphaBlendOp;
VkColorComponentFlags colorWriteMask;
} VkPipelineColorBlendAttachmentState; Члены
-
blendEnableуправляет тем, включено ли смешение для соответствующего вложения цвета. Если смешение не включено, цвет фрагмента источника для этого вложения передается без изменений. -
srcColorBlendFactorвыбирает, какой фактор смешения используется для определения исходных факторов (Sr,Sg,Sb). -
dstColorBlendFactorвыбирает, какой фактор смешения используется для определения целевых факторов (Dr,Dg,Db). -
colorBlendOpвыбирает, какая операция смешения используется для вычисления значений RGB для записи в вложение цвета. -
srcAlphaBlendFactorвыбирает, какой фактор смешения используется для определения исходного фактора Sa. -
dstAlphaBlendFactorвыбирает, какой фактор смешения используется для определения целевого фактора Da. -
alphaBlendOpвыбирает, какая операция смешения используется для вычисления альфа-значений для записи в вложение цвета. -
colorWriteMask- это битовая маска VkColorComponentFlagBits, указывающая, какие компоненты R, G, B и/или A включены для записи, как описано для Color Write Mask.
Описание
Правильное использование
- Если функция dual source blending не включена,
srcColorBlendFactorне должно бытьVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHAилиVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA- Если функция dual source blending не включена,
dstColorBlendFactorне должно бытьVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHAилиVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA- Если функция dual source blending не включена,
srcAlphaBlendFactorне должно бытьVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHAилиVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA- Если функция dual source blending не включена,
dstAlphaBlendFactorне должно бытьVK_BLEND_FACTOR_SRC1_COLOR,VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,VK_BLEND_FACTOR_SRC1_ALPHAилиVK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
Правильное использование (неявное)
srcColorBlendFactorдолжен быть допустимым значением VkBlendFactordstColorBlendFactorдолжен быть допустимым значением VkBlendFactorcolorBlendOpдолжен быть допустимым значением VkBlendOpsrcAlphaBlendFactorдолжен быть допустимым значением VkBlendFactordstAlphaBlendFactorдолжен быть допустимым значением VkBlendFactoralphaBlendOpдолжен быть допустимым значением VkBlendOpcolorWriteMaskдолжен быть допустимым сочетанием значений VkColorComponentFlagBits
См. также
VkBlendFactor, VkBlendOp, VkBool32, VkColorComponentFlags, VkPipelineColorBlendStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineColorBlendStateCreateInfo(3)
Имя
VkPipelineColorBlendStateCreateInfo - Структура, определяющая параметры вновь создаваемого состояния смешения цвета конвейера
Спецификация C
Структура VkPipelineColorBlendStateCreateInfo определяется как:
typedef struct VkPipelineColorBlendStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineColorBlendStateCreateFlags flags;
VkBool32 logicOpEnable;
VkLogicOp logicOp;
uint32_t attachmentCount;
const VkPipelineColorBlendAttachmentState* pAttachments;
float blendConstants[4];
} VkPipelineColorBlendStateCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
logicOpEnableуправляет применением Логических операций. -
logicOpвыбирает, какую логическую операцию применить. -
attachmentCount- количество элементовVkPipelineColorBlendAttachmentStateвpAttachments. Это значение должно быть равноcolorAttachmentCountдля подпрохода, в котором используется этот конвейер. -
pAttachments: указатель на массив состояний вложения на каждый целевой объект. -
blendConstants- массив из четырех значений, используемых в качестве компонентов R, G, B и A константы смешения, которые используются при смешении в зависимости от blend factor.
Описание
Каждый элемент массива pAttachments представляет собой структуру VkPipelineColorBlendAttachmentState, определяющую состояние смешения для каждого отдельного вложения цвета. Если функция independent blending не включена на устройстве, все элементы VkPipelineColorBlendAttachmentState в массиве pAttachments должны быть идентичными.
Правильное использование
- Если функция independent blending не включена, все элементы
pAttachmentsдолжны быть идентичными- Если функция logic operations не включена,
logicOpEnableдолжен бытьVK_FALSE- Если
logicOpEnableестьVK_TRUE,logicOpдолжен быть допустимым значением VkLogicOp
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0- Если
attachmentCountне0,pAttachmentsдолжно быть указателем на массив изattachmentCountдопустимыхVkPipelineColorBlendAttachmentStateструктур
См. также
VkBool32, VkGraphicsPipelineCreateInfo, VkLogicOp, VkPipelineColorBlendAttachmentState, VkPipelineColorBlendStateCreateFlags, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineDepthStencilStateCreateInfo(3)
Имя
VkPipelineDepthStencilStateCreateInfo - Структура, определяющая параметры вновь созданного состояния трафарета глубины конвейера
C-спецификация
Структура VkPipelineDepthStencilStateCreateInfo определяется следующим образом:
typedef struct VkPipelineDepthStencilStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineDepthStencilStateCreateFlags flags;
VkBool32 depthTestEnable;
VkBool32 depthWriteEnable;
VkCompareOp depthCompareOp;
VkBool32 depthBoundsTestEnable;
VkBool32 stencilTestEnable;
VkStencilOpState front;
VkStencilOpState back;
float minDepthBounds;
float maxDepthBounds;
} VkPipelineDepthStencilStateCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для использования в будущем. -
depthTestEnableуправляет включением тестирования глубины. -
depthWriteEnableуправляет включением записи глубины, когдаdepthTestEnableравноVK_TRUE. Запись глубины всегда отключена, когдаdepthTestEnableравноVK_FALSE. -
depthCompareOp- оператор сравнения, используемый в тесте глубины. -
depthBoundsTestEnableуправляет включением тестирования границ глубины. -
stencilTestEnableуправляет включением тестирования трафарета. -
frontиbackуправляют параметрами теста трафарета. -
minDepthBoundsиmaxDepthBoundsопределяют диапазон значений, используемых в тесте границ глубины.
Описание
Допустимое использование
- Если функция тестирования границ глубины не включена,
depthBoundsTestEnableдолжно бытьVK_FALSE
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0depthCompareOpдолжно быть допустимым значением VkCompareOpfrontдолжно быть допустимой структуройVkStencilOpStatebackдолжно быть допустимой структуройVkStencilOpState
См. также
VkBool32, VkCompareOp, VkGraphicsPipelineCreateInfo, VkPipelineDepthStencilStateCreateFlags, VkStencilOpState, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineDynamicStateCreateInfo(3)
Имя
VkPipelineDynamicStateCreateInfo - Структура, определяющая параметры вновь созданного динамического состояния конвейера
C-спецификация
Структура VkPipelineDynamicStateCreateInfo определяется следующим образом:
typedef struct VkPipelineDynamicStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineDynamicStateCreateFlags flags;
uint32_t dynamicStateCount;
const VkDynamicState* pDynamicStates;
} VkPipelineDynamicStateCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для использования в будущем. -
dynamicStateCount- количество элементов в массивеpDynamicStates. -
pDynamicStates- массив значений VkDynamicState, указывающих, какие части состояния конвейера будут использовать значения из команд динамического состояния, а не из информации о создании состояния конвейера.
Описание
Допустимое использование
- Каждый элемент
pDynamicStatesдолжен быть уникальным
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0pDynamicStatesдолжно быть указателем на массив изdynamicStateCountдопустимых значений VkDynamicStatedynamicStateCountдолжно быть больше0
См. также
VkDynamicState, VkGraphicsPipelineCreateInfo, VkPipelineDynamicStateCreateFlags, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineDynamicStateCreateInfo
VkPipelineInputAssemblyStateCreateInfo(3)
Имя
VkPipelineInputAssemblyStateCreateInfo - Структура, определяющая параметры вновь созданного состояния сборки входных данных конвейера
C-спецификация
Каждый проход состоит из нуля или более вершин и нуля или более экземпляров, которые обрабатываются устройством и приводят к сборке примитивов. Примитивы собираются в соответствии с членом pInputAssemblyState структуры VkGraphicsPipelineCreateInfo, который имеет тип VkPipelineInputAssemblyStateCreateInfo:
typedef struct VkPipelineInputAssemblyStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineInputAssemblyStateCreateFlags flags;
VkPrimitiveTopology topology;
VkBool32 primitiveRestartEnable;
} VkPipelineInputAssemblyStateCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для использования в будущем. -
topology- VkPrimitiveTopology, определяющий топологию примитива, как описано ниже. -
primitiveRestartEnableуправляет тем, будет ли специальное значение индекса вершины рассматриваться как перезапуск сборки примитивов. Это включение применяется только к индексированным проходам (vkCmdDrawIndexed и vkCmdDrawIndexedIndirect), и специальное значение индекса равно 0xFFFFFFFF, когда параметрindexTypevkCmdBindIndexBufferравенVK_INDEX_TYPE_UINT32, или 0xFFFF, когдаindexTypeравноVK_INDEX_TYPE_UINT16. Перезапуск примитива не допускается для топологий «списка».
Описание
Перезапуск сборки примитивов отбрасывает последние значения индексов, если эти элементы образовали неполный примитив, и перезапускает сборку примитива, используя последующие индексы, но собирая только непосредственно следующий элемент до конца первоначально указанных элементов. Сравнение значения индекса перезапуска примитива выполняется перед добавлением значения vertexOffset к значению индекса.
Допустимое использование
- Если
topologyравноVK_PRIMITIVE_TOPOLOGY_POINT_LIST,VK_PRIMITIVE_TOPOLOGY_LINE_LIST,VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYилиVK_PRIMITIVE_TOPOLOGY_PATCH_LIST,primitiveRestartEnableдолжно бытьVK_FALSE- Если функция геометрических шейдеров не включена,
topologyне должно быть ни одним изVK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCYилиVK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY- Если функция тесселяционных шейдеров не включена,
topologyне должно бытьVK_PRIMITIVE_TOPOLOGY_PATCH_LIST
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0topologyдолжно быть допустимым значением VkPrimitiveTopology
См. также
VkBool32, VkGraphicsPipelineCreateInfo, VkPipelineInputAssemblyStateCreateFlags, VkPrimitiveTopology, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineLayoutCreateInfo(3)
Имя
VkPipelineLayoutCreateInfo - Структура, определяющая параметры вновь создаваемого объекта макета конвейера
C-спецификация
Структура VkPipelineLayoutCreateInfo определяется следующим образом:
typedef struct VkPipelineLayoutCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineLayoutCreateFlags flags;
uint32_t setLayoutCount;
const VkDescriptorSetLayout* pSetLayouts;
uint32_t pushConstantRangeCount;
const VkPushConstantRange* pPushConstantRanges;
} VkPipelineLayoutCreateInfo; Члены
-
sType— тип этой структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущих использований. -
setLayoutCount— количество наборов дескрипторов, включенных в макет конвейера. -
pSetLayouts— указатель на массив объектовVkDescriptorSetLayout. -
pushConstantRangeCount— количество диапазонов констант, передаваемых в конвейер, включенных в макет конвейера. -
pPushConstantRanges— указатель на массив структурVkPushConstantRange, определяющих набор диапазонов констант, передаваемых в конвейер, для использования в одном макете конвейера. В дополнение к макетам наборов дескрипторов макет конвейера также описывает, к скольким константам, передаваемым в конвейер, можно получить доступ каждой стадии конвейера.Примечание
Константы, передаваемые в конвейер, представляют собой высокоскоростной путь для изменения постоянных данных в конвейерах, который, как ожидается, будет работать быстрее, чем обновления ресурсов, поддерживаемые памятью.
Описание
Допустимое использование
setLayoutCountдолжно быть меньше или равноVkPhysicalDeviceLimits::maxBoundDescriptorSets- Общее количество дескрипторов типа
VK_DESCRIPTOR_TYPE_SAMPLERиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, доступных для любой заданной стадии шейдера во всех элементахpSetLayouts, должно быть меньше или равноVkPhysicalDeviceLimits::maxPerStageDescriptorSamplers- Общее количество дескрипторов типа
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFERиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, доступных для любой заданной стадии шейдера во всех элементахpSetLayouts, должно быть меньше или равноVkPhysicalDeviceLimits::maxPerStageDescriptorUniformBuffers- Общее количество дескрипторов типа
VK_DESCRIPTOR_TYPE_STORAGE_BUFFERиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, доступных для любой заданной стадии шейдера во всех элементахpSetLayouts, должно быть меньше или равноVkPhysicalDeviceLimits::maxPerStageDescriptorStorageBuffers- Общее количество дескрипторов типа
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGEиVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, доступных для любой заданной стадии шейдера во всех элементахpSetLayouts, должно быть меньше или равноVkPhysicalDeviceLimits::maxPerStageDescriptorSampledImages- Общее количество дескрипторов типа
VK_DESCRIPTOR_TYPE_STORAGE_IMAGEиVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, доступных для любой заданной стадии шейдера во всех элементахpSetLayouts, должно быть меньше или равноVkPhysicalDeviceLimits::maxPerStageDescriptorStorageImages- Любые два элемента
pPushConstantRangesне должны включать одну и ту же стадию вstageFlags
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0- Если
setLayoutCountне0,pSetLayoutsдолжно быть указателем на массивsetLayoutCountдопустимых дескрипторовVkDescriptorSetLayout- Если
pushConstantRangeCountне0,pPushConstantRangesдолжно быть указателем на массивpushConstantRangeCountдопустимых структурVkPushConstantRange
См. также
VkDescriptorSetLayout, VkPipelineLayoutCreateFlags, VkPushConstantRange, VkStructureType, vkCreatePipelineLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineLayoutCreateInfo
VkPipelineMultisampleStateCreateInfo(3)
Имя
VkPipelineMultisampleStateCreateInfo - Структура, определяющая параметры вновь созданного состояния многовыборки конвейера
C-спецификация
Структура VkPipelineMultisampleStateCreateInfo определяется следующим образом:
typedef struct VkPipelineMultisampleStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineMultisampleStateCreateFlags flags;
VkSampleCountFlagBits rasterizationSamples;
VkBool32 sampleShadingEnable;
float minSampleShading;
const VkSampleMask* pSampleMask;
VkBool32 alphaToCoverageEnable;
VkBool32 alphaToOneEnable;
} VkPipelineMultisampleStateCreateInfo; Члены
-
sType— тип этой структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущих использований. -
rasterizationSamples— это VkSampleCountFlagBits, указывающий количество выборок на пиксель, используемых при растеризации. -
sampleShadingEnableуказывает, что затенение фрагментов выполняется на выборку, еслиVK_TRUE, или на фрагмент, еслиVK_FALSE, как описано в Затенение выборок. -
minSampleShading— минимальная доля затенения выборок, как описано в Затенение выборок. -
pSampleMask— это битовая маска статической информации о покрытии, которая применяется побитовым И с информацией о покрытии, сгенерированной во время растеризации, как описано в Маска выборок. -
alphaToCoverageEnableуправляет тем, генерируется ли временное значение покрытия на основе альфа-компонента первого выходного цвета фрагмента, как указано в разделе Многовыборочное покрытие. -
alphaToOneEnableуправляет тем, заменяется ли альфа-компонент первого выходного цвета фрагмента на единицу, как описано в Многовыборочное покрытие.
Описание
Допустимое использование
- Если функция затенения с частотой выборок не включена,
sampleShadingEnableдолжно бытьVK_FALSE- Если функция альфа в единицу не включена,
alphaToOneEnableдолжно бытьVK_FALSEminSampleShadingдолжно находиться в диапазоне [0,1]
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0rasterizationSamplesдолжно быть допустимым значением VkSampleCountFlagBits- Если
pSampleMaskнеNULL,pSampleMaskдолжно быть указателем на массив \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\) значенийVkSampleMask
См. также
VkBool32, VkGraphicsPipelineCreateInfo, VkPipelineMultisampleStateCreateFlags, VkSampleCountFlagBits, VkSampleMask, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineRasterizationStateCreateInfo(3)
Имя
VkPipelineRasterizationStateCreateInfo - Структура, определяющая параметры вновь созданного состояния растеризации конвейера
C-спецификация
Структура VkPipelineRasterizationStateCreateInfo определяется следующим образом:
typedef struct VkPipelineRasterizationStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineRasterizationStateCreateFlags flags;
VkBool32 depthClampEnable;
VkBool32 rasterizerDiscardEnable;
VkPolygonMode polygonMode;
VkCullModeFlags cullMode;
VkFrontFace frontFace;
VkBool32 depthBiasEnable;
float depthBiasConstantFactor;
float depthBiasClamp;
float depthBiasSlopeFactor;
float lineWidth;
} VkPipelineRasterizationStateCreateInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis reserved for future use. -
depthClampEnablecontrols whether to clamp the fragment’s depth values instead of clipping primitives to the z planes of the frustum, as described in Primitive Clipping. -
rasterizerDiscardEnablecontrols whether primitives are discarded immediately before the rasterization stage. -
polygonModeis the triangle rendering mode. See VkPolygonMode. -
cullModeis the triangle facing direction used for primitive culling. See VkCullModeFlagBits. -
frontFaceis a VkFrontFace value specifying the front-facing triangle orientation to be used for culling. -
depthBiasEnablecontrols whether to bias fragment depth values. -
depthBiasConstantFactoris a scalar factor controlling the constant depth value added to each fragment. -
depthBiasClampis the maximum (or minimum) depth bias of a fragment. -
depthBiasSlopeFactoris a scalar factor applied to a fragment’s slope in depth bias calculations. -
lineWidthis the width of rasterized line segments.
Описание
Правильное использование
- If the depth clamping feature is not enabled,
depthClampEnableдолжно бытьVK_FALSE- If the non-solid fill modes feature is not enabled,
polygonModeдолжно бытьVK_POLYGON_MODE_FILL
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0polygonModeдолжно быть допустимым значением VkPolygonModecullModeдолжно быть допустимой комбинацией значений VkCullModeFlagBitsfrontFaceдолжно быть допустимым значением VkFrontFace
См. также
VkBool32, VkCullModeFlags, VkFrontFace, VkGraphicsPipelineCreateInfo, VkPipelineRasterizationStateCreateFlags, VkPolygonMode, VkStructureType
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineShaderStageCreateInfo(3)
Имя
VkPipelineShaderStageCreateInfo - Структура, задающая параметры вновь созданного этапа шейдера конвейера
C Спецификация
Структура VkPipelineShaderStageCreateInfo определена как:
typedef struct VkPipelineShaderStageCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineShaderStageCreateFlags flags;
VkShaderStageFlagBits stage;
VkShaderModule module;
const char* pName;
const VkSpecializationInfo* pSpecializationInfo;
} VkPipelineShaderStageCreateInfo; Элементы
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
flagsis reserved for future use. -
stageis a VkShaderStageFlagBits value specifying a single pipeline stage. -
moduleis aVkShaderModuleobject that contains the shader for this stage. -
pNameis a pointer to a null-terminated UTF-8 string specifying the entry point name of the shader for this stage. -
pSpecializationInfois a pointer to VkSpecializationInfo, as described in Specialization Constants, and can beNULL.
Описание
Правильное использование
- If the geometry shaders feature is not enabled,
stageне должно бытьVK_SHADER_STAGE_GEOMETRY_BIT- If the tessellation shaders feature is not enabled,
stageне должно бытьVK_SHADER_STAGE_TESSELLATION_CONTROL_BITorVK_SHADER_STAGE_TESSELLATION_EVALUATION_BITstageне должно бытьVK_SHADER_STAGE_ALL_GRAPHICS, orVK_SHADER_STAGE_ALLpNameдолжно быть именемOpEntryPointвmoduleс моделью выполнения, которая соответствуетstage- If the identified entry point includes any variable in its interface that is declared with the
ClipDistanceBuiltIndecoration, that variable must not have an array size greater thanVkPhysicalDeviceLimits::maxClipDistances- If the identified entry point includes any variable in its interface that is declared with the
CullDistanceBuiltIndecoration, that variable must not have an array size greater thanVkPhysicalDeviceLimits::maxCullDistances- If the identified entry point includes any variables in its interface that are declared with the
ClipDistanceorCullDistanceBuiltIndecoration, those variables must not have array sizes which sum to more thanVkPhysicalDeviceLimits::maxCombinedClipAndCullDistances- If the identified entry point includes any variable in its interface that is declared with the
SampleMaskBuiltIndecoration, that variable must not have an array size greater thanVkPhysicalDeviceLimits::maxSampleMaskWords- If
stageisVK_SHADER_STAGE_VERTEX_BIT, the identified entry point must not include any input variable in its interface that is decorated withCullDistance- If
stageisVK_SHADER_STAGE_TESSELLATION_CONTROL_BITorVK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified entry point has anOpExecutionModeinstruction that specifies a patch size withOutputVertices, the patch size must be greater than0and less than or equal toVkPhysicalDeviceLimits::maxTessellationPatchSize- If
stageisVK_SHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction that specifies a maximum output vertex count that is greater than0and less than or equal toVkPhysicalDeviceLimits::maxGeometryOutputVertices- If
stageisVK_SHADER_STAGE_GEOMETRY_BIT, the identified entry point must have anOpExecutionModeinstruction that specifies an invocation count that is greater than0and less than or equal toVkPhysicalDeviceLimits::maxGeometryShaderInvocations- If
stageisVK_SHADER_STAGE_GEOMETRY_BIT, and the identified entry point writes toLayerfor any primitive, it must write the same value toLayerfor all vertices of a given primitive- If
stageisVK_SHADER_STAGE_GEOMETRY_BIT, and the identified entry point writes toViewportIndexfor any primitive, it must write the same value toViewportIndexfor all vertices of a given primitive- If
stageisVK_SHADER_STAGE_FRAGMENT_BIT, the identified entry point must not include any output variables in its interface decorated withCullDistance- If
stageisVK_SHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes toFragDepthin any execution path, it must write toFragDepthin all execution paths
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0stageдолжно быть допустимым значением VkShaderStageFlagBitsmoduleдолжно быть допустимой дескрипторомVkShaderModulepNameдолжно быть строкой UTF-8, завершающейся нулевым символом- If
pSpecializationInfois notNULL,pSpecializationInfomust be a pointer to a validVkSpecializationInfostructure
См. также
VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkPipelineShaderStageCreateFlags, VkShaderModule, VkShaderStageFlagBits, VkSpecializationInfo, VkStructureType
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineShaderStageCreateInfo
VkPipelineTessellationStateCreateInfo(3)
Имя
VkPipelineTessellationStateCreateInfo - Структура, указывающая параметры вновь созданного состояния растеризации конвейера
Спецификация C
Структура VkPipelineTessellationStateCreateInfo определяется следующим образом:
typedef struct VkPipelineTessellationStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineTessellationStateCreateFlags flags;
uint32_t patchControlPoints;
} VkPipelineTessellationStateCreateInfo; Члены
-
sType— тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для будущих версий. -
patchControlPoints— количество контрольных точек на патч.
Описание
Допустимое использование
patchControlPointsдолжно быть больше нуля и меньше или равноVkPhysicalDeviceLimits::maxTessellationPatchSize
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0
См. также
VkGraphicsPipelineCreateInfo, VkPipelineTessellationStateCreateFlags, VkStructureType
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineVertexInputStateCreateInfo(3)
Имя
VkPipelineVertexInputStateCreateInfo - Структура, указывающая параметры вновь созданного состояния входных данных вершин конвейера
Спецификация C
Структура VkPipelineVertexInputStateCreateInfo определяется следующим образом:
typedef struct VkPipelineVertexInputStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineVertexInputStateCreateFlags flags;
uint32_t vertexBindingDescriptionCount;
const VkVertexInputBindingDescription* pVertexBindingDescriptions;
uint32_t vertexAttributeDescriptionCount;
const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
} VkPipelineVertexInputStateCreateInfo; Члены
-
sType— тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для будущих версий. -
vertexBindingDescriptionCount— количество описаний привязки вершин, предоставленных вpVertexBindingDescriptions. -
pVertexBindingDescriptions— указатель на массив структурVkVertexInputBindingDescription. -
vertexAttributeDescriptionCount— количество описаний атрибутов вершин, предоставленных вpVertexAttributeDescriptions. -
pVertexAttributeDescriptions— указатель на массив структурVkVertexInputAttributeDescription.
Описание
Допустимое использование
vertexBindingDescriptionCountдолжно быть меньше или равноVkPhysicalDeviceLimits::maxVertexInputBindingsvertexAttributeDescriptionCountдолжно быть меньше или равноVkPhysicalDeviceLimits::maxVertexInputAttributes- Для каждой
binding, указанной любым элементомpVertexAttributeDescriptions,VkVertexInputBindingDescriptionдолжно существовать вpVertexBindingDescriptionsс тем же значениемbinding- Все элементы
pVertexBindingDescriptionsдолжны описывать различные номера привязки- Все элементы
pVertexAttributeDescriptionsдолжны описывать различные расположения атрибутов
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0- Если
vertexBindingDescriptionCountне0,pVertexBindingDescriptionsдолжно быть указателем на массив изvertexBindingDescriptionCountдопустимых структурVkVertexInputBindingDescription- Если
vertexAttributeDescriptionCountне0,pVertexAttributeDescriptionsдолжно быть указателем на массив изvertexAttributeDescriptionCountдопустимых структурVkVertexInputAttributeDescription
См. также
VkGraphicsPipelineCreateInfo, VkPipelineVertexInputStateCreateFlags, VkStructureType, VkVertexInputAttributeDescription, VkVertexInputBindingDescription
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
VkPipelineViewportStateCreateInfo(3)
Имя
VkPipelineViewportStateCreateInfo - Структура, указывающая параметры вновь созданного состояния видового окна конвейера
Спецификация C
Структура VkPipelineViewportStateCreateInfo определяется следующим образом:
typedef struct VkPipelineViewportStateCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineViewportStateCreateFlags flags;
uint32_t viewportCount;
const VkViewport* pViewports;
uint32_t scissorCount;
const VkRect2D* pScissors;
} VkPipelineViewportStateCreateInfo; Члены
-
sType— тип этой структуры. -
pNext— этоNULLили указатель на структуру, зависящую от расширения. -
flagsзарезервировано для будущих версий. -
viewportCount— количество видовых окон, используемых конвейером. -
pViewports— указатель на массив структур VkViewport, определяющих преобразования видового окна. Если состояние видового окна является динамическим, этот член игнорируется. -
scissorCount— количество ножниц и должно соответствовать количеству видовых окон. -
pScissors— указатель на массив структурVkRect2D, которые определяют прямоугольные границы ножниц для соответствующего видового окна. Если состояние ножниц является динамическим, этот член игнорируется.
Описание
Допустимое использование
- Если функция множественных видовых окон не включена,
viewportCountдолжно быть1- Если функция множественных видовых окон не включена,
scissorCountдолжно быть1viewportCountдолжно быть в диапазоне от1доVkPhysicalDeviceLimits::maxViewports, включительноscissorCountдолжно быть в диапазоне от1доVkPhysicalDeviceLimits::maxViewports, включительноscissorCountиviewportCountдолжны быть идентичны
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0viewportCountдолжно быть больше0scissorCountдолжно быть больше0
См. также
VkGraphicsPipelineCreateInfo, VkPipelineViewportStateCreateFlags, VkRect2D, VkStructureType, VkViewport
Заметки к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineViewportStateCreateInfo
VkPushConstantRange(3)
Имя
VkPushConstantRange - Структура, указывающая диапазон констант push
Спецификация C
Структура VkPushConstantRange определяется следующим образом:
typedef struct VkPushConstantRange {
VkShaderStageFlags stageFlags;
uint32_t offset;
uint32_t size;
} VkPushConstantRange; Члены
-
stageFlagsпредставляет собой набор флагов этапов, описывающих этапы шейдера, которые будут получать доступ к диапазону констант push. Если определенный этап не включен в диапазон, то доступ к элементам этого диапазона констант push из соответствующего этапа шейдера приведет к чтению неопределенных данных. -
offsetиsize— это начальный смещение и размер, соответственно, потребляемые диапазоном.offsetиsizeизмеряются в байтах и должны быть кратными 4. Размещение переменных констант push указывается в шейдере.
Описание
Допустимое использование
offsetдолжен быть меньше, чемVkPhysicalDeviceLimits::maxPushConstantsSizeoffsetдолжен быть кратным4sizeдолжен быть больше0sizeдолжен быть кратным4sizeдолжен быть меньше или равенVkPhysicalDeviceLimits::maxPushConstantsSizeминусoffset
Допустимое использование (неявное)
stageFlagsдолжен быть допустимой комбинацией значений VkShaderStageFlagBitsstageFlagsне должен быть0
См. также
VkPipelineLayoutCreateInfo, VkShaderStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPushConstantRange
VkQueryPoolCreateInfo(3)
Имя
VkQueryPoolCreateInfo - Структура, определяющая параметры вновь создаваемого пула запросов
C-спецификация
Структура VkQueryPoolCreateInfo определяется следующим образом:
typedef struct VkQueryPoolCreateInfo {
VkStructureType sType;
const void* pNext;
VkQueryPoolCreateFlags flags;
VkQueryType queryType;
uint32_t queryCount;
VkQueryPipelineStatisticFlags pipelineStatistics;
} VkQueryPoolCreateInfo; Члены
-
sType— это тип этой структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
queryType— это значение VkQueryType, указывающее тип запросов, управляемых пулом. -
queryCount— это количество запросов, управляемых пулом. -
pipelineStatistics— это битовая маска VkQueryPipelineStatisticFlagBits, указывающая, какие счетчики будут возвращены в запросах к новому пулу, как описано ниже в html/vkspec.html#queries-pipestats.
Описание
pipelineStatistics игнорируется, если queryType не является VK_QUERY_TYPE_PIPELINE_STATISTICS.
Допустимое использование
- Если функция запросов статистики конвейера не включена,
queryTypeне должен бытьVK_QUERY_TYPE_PIPELINE_STATISTICS- Если
queryTypeявляетсяVK_QUERY_TYPE_PIPELINE_STATISTICS,pipelineStatisticsдолжен быть допустимой комбинацией значений VkQueryPipelineStatisticFlagBits
Допустимое использование (неявное)
sTypeдолжен бытьVK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFOpNextдолжен бытьNULLflagsдолжен быть0queryTypeдолжен быть допустимым значением VkQueryType
См. также
VkQueryPipelineStatisticFlags, VkQueryPoolCreateFlags, VkQueryType, VkStructureType, vkCreateQueryPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryPoolCreateInfo
VkQueueFamilyProperties(3)
Имя
VkQueueFamilyProperties - Структура, предоставляющая информацию о семействе очередей
C-спецификация
Структура VkQueueFamilyProperties определяется следующим образом:
typedef struct VkQueueFamilyProperties {
VkQueueFlags queueFlags;
uint32_t queueCount;
uint32_t timestampValidBits;
VkExtent3D minImageTransferGranularity;
} VkQueueFamilyProperties; Члены
-
queueFlags— это битовая маска VkQueueFlagBits, указывающая возможности очередей в этом семействе очередей. -
queueCount— это количество очередей в этом семействе очередей (беззнаковое целое число). -
timestampValidBits— это количество значимых битов (беззнаковое целое число) в метках времени, записанных черезvkCmdWriteTimestamp. Допустимый диапазон для количества составляет 36…64 бита или значение 0, указывающее на отсутствие поддержки меток времени. Биты за пределами допустимого диапазона гарантированно будут нулями. -
minImageTransferGranularity— это минимальная поддерживаемая гранулярность для операций передачи изображений в очередях этого семейства очередей.
Описание
Значение, возвращаемое в minImageTransferGranularity, имеет единицу измерения сжатых блоков текстурных элементов для изображений с блочно-сжатым форматом и единицу измерения текстурных элементов в противном случае.
Возможные значения minImageTransferGranularity:
-
(0,0,0), что указывает на то, что только целые уровни mip должны передаваться с помощью операций передачи изображений в соответствующих очередях. В этом случае к всем параметрам смещения и протяженности операций передачи изображений применяются следующие ограничения:
- Члены
x,yиzпараметра VkOffset3D всегда должны быть равны нулю. - Члены
width,heightиdepthпараметра VkExtent3D всегда должны соответствовать ширине, высоте и глубине соответствующего параметру подуровня изображения.
- Члены
-
(Ax, Ay, Az), где Ax, Ay и Az — это степени двойки. В этом случае к всем операциям передачи изображений применяются следующие ограничения:
-
x,yиzпараметра VkOffset3D должны быть кратными Ax, Ay и Az соответственно. -
widthпараметра VkExtent3D должен быть кратным Ax, илиx+widthдолжны быть равны ширине соответствующего параметру подуровня изображения. -
heightпараметра VkExtent3D должен быть кратным Ay, илиy+heightдолжны быть равны высоте соответствующего параметру подуровня изображения. -
depthпараметра VkExtent3D должен быть кратным Az, илиz+depthдолжны быть равны глубине соответствующего параметру подуровня изображения. - Если формат изображения, соответствующего параметрам, является одним из блочно-сжатых форматов, то для целей вышеуказанных вычислений гранулярность должна быть увеличена в соответствии с размерами сжатого блока текстурных элементов.
-
Очереди, поддерживающие графические и/или вычислительные операции, должны сообщать (1,1,1) в minImageTransferGranularity, что означает отсутствие дополнительных ограничений на гранулярность операций передачи изображений для этих очередей. Другие очереди, поддерживающие операции передачи изображений, обязаны только поддерживать передачу целых уровней mip, поэтому minImageTransferGranularity для очередей, принадлежащих таким семействам очередей, может быть (0,0,0).
В разделе Память устройства описываются свойства памяти, запрашиваемые у физического устройства.
Для запросов функций физического устройства см. главу Функции.
См. также
VkExtent3D, VkQueueFlags, vkGetPhysicalDeviceQueueFamilyProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueueFamilyProperties
VkRect2D(3)
Имя
VkRect2D - Структура, определяющая двумерный подрегион
C-спецификация
Прямоугольники используются для описания заданного прямоугольного региона пикселей в изображении или буфере кадра. Прямоугольники включают как смещение, так и протяженность той же размерности, как описано выше. Двумерные прямоугольники определяются структурой
typedef struct VkRect2D {
VkOffset2D offset;
VkExtent2D extent;
} VkRect2D; Члены
-
offset— это VkOffset2D, определяющий смещение прямоугольника. -
extent— это VkExtent2D, определяющий протяженность прямоугольника.
См. также
VkClearRect, VkExtent2D, VkOffset2D, VkPipelineViewportStateCreateInfo, VkRenderPassBeginInfo, vkCmdSetScissor
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkRect2D
VkRenderPassBeginInfo(3)
Имя
VkRenderPassBeginInfo - Структура, задающая информацию о начале прохода отрисовки
C Спецификация
Структура VkRenderPassBeginInfo определяется как:
typedef struct VkRenderPassBeginInfo {
VkStructureType sType;
const void* pNext;
VkRenderPass renderPass;
VkFramebuffer framebuffer;
VkRect2D renderArea;
uint32_t clearValueCount;
const VkClearValue* pClearValues;
} VkRenderPassBeginInfo; Члены
-
sType- тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
renderPass- проход отрисовки, для которого нужно начать экземпляр. -
framebuffer- фреймбуфер, содержащий вложения, используемые с проходом отрисовки. -
renderArea- область отрисовки, которая затрагивается экземпляром прохода отрисовки, и более подробно описана ниже. -
clearValueCount- количество элементов вpClearValues. -
pClearValues- массив структур VkClearValue, который содержит значения очистки для каждого вложения, если вложение использует значениеloadOpравноеVK_ATTACHMENT_LOAD_OP_CLEARили если вложение имеет формат глубины/трафарета и использует значениеstencilLoadOpравноеVK_ATTACHMENT_LOAD_OP_CLEAR. Массив индексируется по номеру вложения. Используются только элементы, соответствующие очищенным вложениям. Другие элементыpClearValuesигнорируются.
Описание
renderArea - это область отрисовки, которая затрагивается экземпляром прохода отрисовки. Эффекты операций загрузки, сохранения и разрешения мультивыборки вложений ограничены пикселями, координаты x и y которых попадают в область отрисовки на всех вложениях. Область отрисовки распространяется на все слои framebuffer. Приложение должно гарантировать (используя ножницы, если необходимо), что вся отрисовка содержится в области отрисовки, иначе пиксели за пределами области отрисовки становятся неопределенными, и побочные эффекты шейдера могут возникнуть для фрагментов за пределами области отрисовки. Область отрисовки должна находиться в пределах размеров фреймбуфера.
Примечание
Может быть потеря производительности при использовании области отрисовки меньшего размера, чем фреймбуфер, если только она не соответствует гранулярности области отрисовки для прохода отрисовки.
Допустимое использование
clearValueCountдолжно быть больше, чем наибольший индекс вложения вrenderPass, который задаётloadOp(илиstencilLoadOp, если вложение имеет формат глубины/трафарета) равноеVK_ATTACHMENT_LOAD_OP_CLEAR- Если
clearValueCountне0,pClearValuesдолжен быть указателем на массив изclearValueCountдопустимых объединенийVkClearValuerenderPassдолжен быть совместим с членомrenderPassструктурыVkFramebufferCreateInfo, указанной при созданииframebuffer.
Допустимое использование (Неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFOpNextдолжно бытьNULLrenderPassдолжно быть допустимой дескрипторомVkRenderPassframebufferдолжно быть допустимой дескрипторомVkFramebuffer- И
framebuffer, иrenderPassдолжны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkClearValue, VkFramebuffer, VkRect2D, VkRenderPass, VkStructureType, vkCmdBeginRenderPass
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkRenderPassBeginInfo
VkRenderPassCreateInfo(3)
Имя
VkRenderPassCreateInfo - Структура, задающая параметры вновь создаваемого прохода отрисовки
C Спецификация
Структура VkRenderPassCreateInfo определяется как:
typedef struct VkRenderPassCreateInfo {
VkStructureType sType;
const void* pNext;
VkRenderPassCreateFlags flags;
uint32_t attachmentCount;
const VkAttachmentDescription* pAttachments;
uint32_t subpassCount;
const VkSubpassDescription* pSubpasses;
uint32_t dependencyCount;
const VkSubpassDependency* pDependencies;
} VkRenderPassCreateInfo; Члены
-
sType- тип этой структуры. -
pNext- этоNULLили указатель на структуру, специфичную для расширения. -
flags- зарезервировано для будущего использования. -
attachmentCount- количество вложений, используемых этим проходом отрисовки, или ноль, указывающий на отсутствие вложений. Вложения ссылаются на индексы, основанные на нуле, в диапазоне [0,attachmentCount). -
pAttachmentsуказывает на массив изattachmentCountструктур VkAttachmentDescription, описывающих свойства вложений, илиNULL, еслиattachmentCountравно нулю. -
subpassCount- количество подпроходов, которые нужно создать для этого прохода отрисовки. Подпроходы ссылаются на индексы, основанные на нуле, в диапазоне [0,subpassCount). Проход отрисовки должен иметь хотя бы один подпроход. -
pSubpassesуказывает на массив изsubpassCountструктур VkSubpassDescription, описывающих свойства подпроходов. -
dependencyCount- количество зависимостей между парами подпроходов или ноль, указывающий на отсутствие зависимостей. -
pDependenciesуказывает на массив изdependencyCountструктур VkSubpassDependency, описывающих зависимости между парами подпроходов, илиNULL, еслиdependencyCountравно нулю.
Описание
Допустимое использование
- Если два подпрохода работают с вложениями, имеющими перекрывающиеся диапазоны одного и того же объекта
VkDeviceMemory, и по крайней мере один подпроход записывает в эту областьVkDeviceMemory, должна быть включена зависимость подпрохода (либо напрямую, либо через некоторые промежуточные подпроходы) между ними- Если член
attachmentлюбого элементаpInputAttachments,pColorAttachments,pResolveAttachmentsилиpDepthStencilAttachment, или вложение, проиндексированное любым элементомpPreserveAttachmentsв любом данном элементеpSubpasses, привязано к диапазону объектаVkDeviceMemory, который перекрывается с любым другим вложением в любом подпроходе (включая тот же подпроход), структурыVkAttachmentDescription, описывающие их, должны включатьVK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BITвflags- Если член
attachmentлюбого элементаpInputAttachments,pColorAttachments,pResolveAttachmentsилиpDepthStencilAttachment, или любой элементpPreserveAttachmentsв любом данном элементеpSubpassesнеVK_ATTACHMENT_UNUSED, он должен быть меньшеattachmentCount- Значение любого элемента члена
pPreserveAttachmentsв любом данном элементеpSubpassesне должно бытьVK_ATTACHMENT_UNUSED- Для любого члена
pAttachmentsсloadOpравнымVK_ATTACHMENT_LOAD_OP_CLEAR, первое использование этого вложения не должно задаватьlayoutравноеVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMALилиVK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.- Для любого элемента
pDependencies, еслиsrcSubpassнеVK_SUBPASS_EXTERNAL, все флаги этапов, включенные в членsrcStageMaskэтой зависимости, должны быть этапом конвейера, поддерживаемым конвейером, определенным членомpipelineBindPointисходного подпрохода.- Для любого элемента
pDependencies, еслиdstSubpassнеVK_SUBPASS_EXTERNAL, все флаги этапов, включенные в членdstStageMaskэтой зависимости, должны быть этапом конвейера, поддерживаемым конвейером, определенным членомpipelineBindPointисходного подпрохода.
Допустимое использование (Неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0- Если
attachmentCountне0,pAttachmentsдолжен быть указателем на массив изattachmentCountдопустимых структурVkAttachmentDescriptionpSubpassesдолжен быть указателем на массив изsubpassCountдопустимых структурVkSubpassDescription- Если
dependencyCountне0,pDependenciesдолжен быть указателем на массив изdependencyCountдопустимых структурVkSubpassDependencysubpassCountдолжно быть больше0
См. также
VkAttachmentDescription, VkRenderPassCreateFlags, VkStructureType, VkSubpassDependency, VkSubpassDescription, vkCreateRenderPass
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkRenderPassCreateInfo
VkSamplerCreateInfo(3)
Имя
VkSamplerCreateInfo - Структура, определяющая параметры вновь создаваемого семплера
C Спецификация
Структура VkSamplerCreateInfo определяется следующим образом:
typedef struct VkSamplerCreateInfo {
VkStructureType sType;
const void* pNext;
VkSamplerCreateFlags flags;
VkFilter magFilter;
VkFilter minFilter;
VkSamplerMipmapMode mipmapMode;
VkSamplerAddressMode addressModeU;
VkSamplerAddressMode addressModeV;
VkSamplerAddressMode addressModeW;
float mipLodBias;
VkBool32 anisotropyEnable;
float maxAnisotropy;
VkBool32 compareEnable;
VkCompareOp compareOp;
float minLod;
float maxLod;
VkBorderColor borderColor;
VkBool32 unnormalizedCoordinates;
} VkSamplerCreateInfo; Члены
-
sType- тип этой структуры. -
pNext-NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущих использований. -
magFilter- значение VkFilter, определяющее фильтр увеличения, применяемый к поиску. -
minFilter- значение VkFilter, определяющее фильтр уменьшения, применяемый к поиску. -
mipmapMode- значение VkSamplerMipmapMode, определяющее фильтр mipmap, применяемый к поиску. -
addressModeU- значение VkSamplerAddressMode, определяющее режим адресации для области вне [0..1] для координаты U. -
addressModeV- значение VkSamplerAddressMode, определяющее режим адресации для области вне [0..1] для координаты V. -
addressModeW- значение VkSamplerAddressMode, определяющее режим адресации для области вне [0..1] для координаты W. -
mipLodBias- смещение, которое должно быть добавлено к вычислению уровня mipmap LOD и смещению, предоставляемому функциями выборки изображений в SPIR-V, как описано в разделе Операция уровня детализации. -
anisotropyEnable-VK_TRUEдля включения анизотропной фильтрации, как описано в разделе Анизотропная фильтрация текселей, илиVK_FALSEв противном случае. -
maxAnisotropy- ограничение значения анизотропии. -
compareEnable-VK_TRUEдля включения сравнения со справочным значением во время поиска илиVK_FALSEв противном случае.- Примечание: Некоторые реализации будут использовать состояние шейдера по умолчанию, если этот член не совпадает.
-
compareOp- значение VkCompareOp, определяющее функцию сравнения, применяемую к извлеченным данным перед фильтрацией, как описано в разделе Операция сравнения глубины. -
minLodиmaxLod- значения, используемые для ограничения вычисленного значения уровня детализации, как описано в разделе Операция уровня детализации.maxLodдолжно быть больше или равноminLod. -
borderColor- значение VkBorderColor, определяющее предварительно определенный цвет границы для использования. -
unnormalizedCoordinatesуправляет использованием ненормированных или нормированных координат текселей для адресации текселей изображения. При установке вVK_TRUE, диапазон координат изображения, используемых для поиска текселя, находится в диапазоне от нуля до размеров изображения для x, y и z. При установке вVK_FALSEдиапазон координат изображения равен от нуля до единицы. КогдаunnormalizedCoordinatesравноVK_TRUE, семплеры имеют следующие требования:-
minFilterиmagFilterдолжны быть равны. -
mipmapModeдолжно бытьVK_SAMPLER_MIPMAP_MODE_NEAREST. -
minLodиmaxLodдолжны быть нулями. -
addressModeUиaddressModeVдолжны быть либоVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, либоVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER. -
anisotropyEnableдолжно бытьVK_FALSE. -
compareEnableдолжно бытьVK_FALSE.
-
-
Когда
unnormalizedCoordinatesравноVK_TRUE, изображения, используемые семплером в шейдере, имеют следующие требования:-
viewTypeдолжно быть либоVK_IMAGE_VIEW_TYPE_1D, либоVK_IMAGE_VIEW_TYPE_2D. - Представление изображения должно иметь один слой и один уровень mip.
-
-
Когда
unnormalizedCoordinatesравноVK_TRUE, встроенные функции изображения в шейдере, использующие семплер, имеют следующие требования:- Функции не должны использовать проекцию.
- Функции не должны использовать смещения.
Описание
Сопоставление режимов фильтрации OpenGL с Vulkan
Значения
VK_FILTER_NEARESTиVK_FILTER_LINEARmagFilterнапрямую соответствуют фильтрам увеличенияGL_NEARESTиGL_LINEAR.minFilterиmipmapModeв комбинации соответствуют аналогично названному фильтру уменьшения OpenGLGL_minFilter_MIPMAP_mipmapMode(например,minFilterизVK_FILTER_LINEARиmipmapModeизVK_SAMPLER_MIPMAP_MODE_NEARESTсоответствуютGL_LINEAR_MIPMAP_NEAREST).Нет режимов фильтрации Vulkan, которые напрямую соответствуют фильтрам уменьшения OpenGL
GL_LINEARилиGL_NEAREST, но их можно эмулировать с помощьюVK_SAMPLER_MIPMAP_MODE_NEAREST,minLod= 0 иmaxLod= 0.25, и используяminFilter=VK_FILTER_LINEARилиminFilter=VK_FILTER_NEAREST, соответственно.Обратите внимание, что использование
maxLodравного нулю приведет к тому, что увеличение будет всегда выполняться, и всегда будет использоватьсяmagFilter. Это допустимо, но не является точным соответствием поведению OpenGL. Ограничение максимального LOD до 0.25 позволяет значению λ быть ненулевым и выполняется уменьшение, при этом все еще всегда происходит округление вниз до базового уровня. ЕслиminFilterиmagFilterравны, то использованиеmaxLodравного нулю также работает.
Максимальное количество объектов семплера, которые могут быть одновременно созданы на устройстве, зависит от реализации и задается членом maxSamplerAllocationCount структуры VkPhysicalDeviceLimits. Если maxSamplerAllocationCount превышено, vkCreateSampler вернет VK_ERROR_TOO_MANY_OBJECTS.
Так как VkSampler является неотправляемым типом дескриптора, реализации могут возвращать один и тот же дескриптор для векторов состояния семплера, которые идентичны. В таких случаях все такие объекты будут учитываться только один раз в отношении ограничения maxSamplerAllocationCount.
Допустимое использование
- Абсолютное значение
mipLodBiasдолжно быть меньше или равноVkPhysicalDeviceLimits::maxSamplerLodBias- Если функция анизотропной выборки не включена,
anisotropyEnableдолжно бытьVK_FALSE- Если
anisotropyEnableравноVK_TRUE,maxAnisotropyдолжно быть в диапазоне от1.0доVkPhysicalDeviceLimits::maxSamplerAnisotropy, включительно- Если
unnormalizedCoordinatesравноVK_TRUE,minFilterиmagFilterдолжны быть равны- Если
unnormalizedCoordinatesравноVK_TRUE,mipmapModeдолжно бытьVK_SAMPLER_MIPMAP_MODE_NEAREST- Если
unnormalizedCoordinatesравноVK_TRUE,minLodиmaxLodдолжны быть нулями- Если
unnormalizedCoordinatesравноVK_TRUE,addressModeUиaddressModeVдолжны быть либоVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, либоVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER- Если
unnormalizedCoordinatesравноVK_TRUE,anisotropyEnableдолжно бытьVK_FALSE- Если
unnormalizedCoordinatesравноVK_TRUE,compareEnableдолжно бытьVK_FALSE- Если любой из
addressModeU,addressModeVилиaddressModeWравныVK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,borderColorдолжно быть допустимым значением VkBorderColor- Если расширение VK_KHR_sampler_mirror_clamp_to_edge не включено,
addressModeU,addressModeVиaddressModeWне должны бытьVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE- Если
compareEnableравноVK_TRUE,compareOpдолжно быть допустимым значением VkCompareOp
Допустимое использование (Неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_SAMPLER_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0magFilterдолжно быть допустимым значением VkFilterminFilterдолжно быть допустимым значением VkFiltermipmapModeдолжно быть допустимым значением VkSamplerMipmapModeaddressModeUдолжно быть допустимым значением VkSamplerAddressModeaddressModeVдолжно быть допустимым значением VkSamplerAddressModeaddressModeWдолжно быть допустимым значением VkSamplerAddressMode
См. также
VkBool32, VkBorderColor, VkCompareOp, VkFilter, VkSamplerAddressMode, VkSamplerCreateFlags, VkSamplerMipmapMode, VkStructureType, vkCreateSampler
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSamplerCreateInfo
VkSemaphoreCreateInfo(3)
Имя
VkSemaphoreCreateInfo - Структура, указывающая параметры вновь создаваемого семафора
C-спецификация
Структура VkSemaphoreCreateInfo определяется следующим образом:
typedef struct VkSemaphoreCreateInfo {
VkStructureType sType;
const void* pNext;
VkSemaphoreCreateFlags flags;
} VkSemaphoreCreateInfo; Члены
-
sType— тип этой структуры. -
pNext—NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования.
Описание
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0
См. также
VkSemaphoreCreateFlags, VkStructureType, vkCreateSemaphore
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSemaphoreCreateInfo
VkShaderModuleCreateInfo(3)
Имя
VkShaderModuleCreateInfo - Структура, указывающая параметры вновь создаваемого модуля шейдера
C-спецификация
Структура VkShaderModuleCreateInfo определяется следующим образом:
typedef struct VkShaderModuleCreateInfo {
VkStructureType sType;
const void* pNext;
VkShaderModuleCreateFlags flags;
size_t codeSize;
const uint32_t* pCode;
} VkShaderModuleCreateInfo; Члены
-
sType— тип этой структуры. -
pNext—NULLили указатель на структуру, специфичную для расширения. -
flagsзарезервировано для будущего использования. -
codeSize— размер в байтах кода, на который указываетpCode. -
pCodeуказывает на код, который используется для создания модуля шейдера. Тип и формат кода определяются из содержимого памяти по адресуpCode.
Описание
Правильное использование
codeSizeдолжно быть больше 0codeSizeдолжно быть кратно 4pCodeдолжно указывать на допустимый код SPIR-V, отформатированный и упакованный, как описано в Спецификации Khronos SPIR-VpCodeдолжно соответствовать правилам проверки, описанным в разделе Правила проверки в модуле приложения SPIR-V EnvironmentpCodeдолжно объявлять возможностьShaderдля кода SPIR-VpCodeне должно объявлять возможности, которые не поддерживаются API, как описано в разделе Возможности приложения SPIR-V Environment- Если
pCodeобъявляет какие-либо возможности, которые не требуются реализацией, соответствующая функция должна быть включена, как указано в приложении SPIR-V Environment
Правильное использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFOpNextдолжно бытьNULLflagsдолжно быть0pCodeдолжно быть указателем на массив из \(codeSize \over 4\) значенийuint32_t
См. также
VkShaderModuleCreateFlags, VkStructureType, vkCreateShaderModule
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkShaderModuleCreateInfo
VkSparseBufferMemoryBindInfo(3)
Имя
VkSparseBufferMemoryBindInfo - Структура, указывающая операцию привязки памяти разреженного буфера
C-спецификация
Память привязывается к объектам VkBuffer, созданным с флагом VK_BUFFER_CREATE_SPARSE_BINDING_BIT, используя следующую структуру:
typedef struct VkSparseBufferMemoryBindInfo {
VkBuffer buffer;
uint32_t bindCount;
const VkSparseMemoryBind* pBinds;
} VkSparseBufferMemoryBindInfo; Члены
-
buffer— объектVkBuffer, который будет привязан. -
bindCount— количество структурVkSparseMemoryBindв массивеpBinds. -
pBinds— указатель на массив структурVkSparseMemoryBind.
Описание
Правильное использование (неявное)
bufferдолжно быть допустимой дескрипторомVkBufferpBindsдолжно быть указателем на массив изbindCountдопустимых структурVkSparseMemoryBindbindCountдолжно быть больше0
См. также
VkBindSparseInfo, VkBuffer, VkSparseMemoryBind
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseBufferMemoryBindInfo
VkSparseImageFormatProperties(3)
Имя
VkSparseImageFormatProperties - Структура, указывающая свойства формата разреженного изображения
C-спецификация
Структура VkSparseImageFormatProperties определяется следующим образом:
typedef struct VkSparseImageFormatProperties {
VkImageAspectFlags aspectMask;
VkExtent3D imageGranularity;
VkSparseImageFormatFlags flags;
} VkSparseImageFormatProperties; Члены
-
aspectMask— это битовая маска VkImageAspectFlagBits, указывающая, к каким аспектам изображения применяются свойства. -
imageGranularity— ширина, высота и глубина блока разреженного изображения в текстурах или сжатых блоках текстур. -
flags— битовая маска VkSparseImageFormatFlagBits, указывающая дополнительную информацию о разреженном ресурсе.
См. также
VkExtent3D, VkImageAspectFlags, VkSparseImageFormatFlags, VkSparseImageMemoryRequirements, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageFormatProperties
VkSparseImageMemoryBind(3)
Имя
VkSparseImageMemoryBind - Структура, указывающая привязку памяти разреженного изображения
C-спецификация
Структура VkSparseImageMemoryBind определяется следующим образом:
typedef struct VkSparseImageMemoryBind {
VkImageSubresource subresource;
VkOffset3D offset;
VkExtent3D extent;
VkDeviceMemory memory;
VkDeviceSize memoryOffset;
VkSparseMemoryBindFlags flags;
} VkSparseImageMemoryBind; Члены
-
subresource— aspectMask и область интереса в изображении. -
offset— координаты первого текстура в подресурсе изображения для привязки. -
extent— размер в текстурах области в подресурсе изображения для привязки. Размер должен быть кратным размерам блока разреженного изображения, за исключением случаев привязки блоков разреженного изображения по краю подресурса изображения, в этом случае он может быть таким, чтобы любая координатаoffset+extentравнялась соответствующим размерам подресурса изображения. -
memory— объектVkDeviceMemory, к которому привязаны блоки разреженного изображения изображения. Еслиmemoryравно VK_NULL_HANDLE, блоки разреженного изображения отвязываются. -
memoryOffset— смещение в объектеVkDeviceMemory. Еслиmemoryравно VK_NULL_HANDLE, это значение игнорируется. -
flags— флаги привязки разреженной памяти.
Описание
Правильное использование
- Если функция sparse aliased residency не включена, и если какие-либо другие ресурсы связаны с диапазонами
memory, диапазонmemory, который связывается, не должен перекрываться с этими связанными диапазонамиmemoryиmemoryOffsetдолжны соответствовать требованиям к памяти вызывающей командыimage, как описано в разделе html/vkspec.html#resources-associationsubresourceдолжен быть допустимым подресурсом изображения дляimage(см. html/vkspec.html#resources-image-views)offset.xдолжен быть кратен ширине блока разреженного изображения (VkSparseImageFormatProperties::imageGranularity.width) изображенияextent.widthдолжен быть либо кратен ширине блока разреженного изображения, либо (extent.width+offset.x) должно быть равно ширине подресурса изображенияoffset.yдолжен быть кратен высоте блока разреженного изображения (VkSparseImageFormatProperties::imageGranularity.height) изображенияextent.heightдолжен быть либо кратен высоте блока разреженного изображения, либо (extent.height+offset.y) должно быть равно высоте подресурса изображенияoffset.zдолжен быть кратен глубине блока разреженного изображения (VkSparseImageFormatProperties::imageGranularity.depth) изображенияextent.depthдолжен быть либо кратен глубине блока разреженного изображения, либо (extent.depth+offset.z) должно быть равно глубине подресурса изображения
Правильное использование (неявное)
subresourceдолжен быть допустимой структуройVkImageSubresource- Если
memoryне равно VK_NULL_HANDLE,memoryдолжен быть допустимой дескрипторомVkDeviceMemoryflagsдолжен быть допустимым сочетанием значений VkSparseMemoryBindFlagBits
См. также
VkDeviceMemory, VkDeviceSize, VkExtent3D, VkImageSubresource, VkOffset3D, VkSparseImageMemoryBindInfo, VkSparseMemoryBindFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageMemoryBind
VkSparseImageMemoryBindInfo(3)
Название
VkSparseImageMemoryBindInfo - Структура, указывающая информацию о привязке памяти разреженного изображения
C Спецификация
Память может быть связана с блоками разреженного изображения объектов VkImage , созданных с флагом VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT , используя следующую структуру:
typedef struct VkSparseImageMemoryBindInfo {
VkImage image;
uint32_t bindCount;
const VkSparseImageMemoryBind* pBinds;
} VkSparseImageMemoryBindInfo; Члены
-
imageэто объектVkImage, который будет связан -
bindCountэто количество структурVkSparseImageMemoryBindв массиве pBinds -
pBindsэто указатель на массив структурVkSparseImageMemoryBind
Описание
Правильное использование (неявное)
imageдолжен быть допустимым дескрипторомVkImagepBindsдолжен быть указателем на массивbindCountдопустимых структурVkSparseImageMemoryBindbindCountдолжен быть больше0
См. также
VkBindSparseInfo, VkImage, VkSparseImageMemoryBind
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageMemoryBindInfo
VkSparseImageMemoryRequirements(3)
Название
VkSparseImageMemoryRequirements - Структура, указывающая требования к памяти разреженного изображения
C Спецификация
Структура VkSparseImageMemoryRequirements определена как:
typedef struct VkSparseImageMemoryRequirements {
VkSparseImageFormatProperties formatProperties;
uint32_t imageMipTailFirstLod;
VkDeviceSize imageMipTailSize;
VkDeviceSize imageMipTailOffset;
VkDeviceSize imageMipTailStride;
} VkSparseImageMemoryRequirements; Члены
-
formatProperties.aspectMaskэто набор аспектов изображения, к которым применяется это требование к разреженной памяти. Обычно указывается один аспект. Однако изображения глубины/трафарета могут иметь данные глубины и трафарета, перемежающиеся в одном и том же разреженном блоке, в этом случае будут присутствовать какVK_IMAGE_ASPECT_DEPTH_BIT, так иVK_IMAGE_ASPECT_STENCIL_BIT. -
formatProperties.imageGranularityописывает размеры одного связываемого блока разреженного изображения в пикселях. Для аспектаVK_IMAGE_ASPECT_METADATA_BITвсе размеры будут равны нулю пикселей. Все метаданные расположены в области хвоста mip-уровней. -
formatProperties.flagsэто битовая маска VkSparseImageFormatFlagBits:- Если установлен
VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, изображение использует один регион хвоста mip-уровней для всех слоев массива. - Если установлен
VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT, размеры уровней mip должны быть кратны соответствующим размерам блока разреженного изображения для уровней, не расположенных в хвосте mip-уровней. - Если установлен
VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, изображение использует нестандартные размеры блоков разреженного изображения. ЗначенияformatProperties.imageGranularityне соответствуют стандартным размерам блока разреженного изображения, соответствующим пиксельному формату изображения.
- Если установлен
-
imageMipTailFirstLodэто первый уровень mip, на котором подресурсы изображения включены в область хвоста mip-уровней. -
imageMipTailSizeэто размер памяти (в байтах) области хвоста mip-уровней. ЕслиformatProperties.flagsсодержитVK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, это размер всего хвоста mip-уровней, в противном случае это размер хвоста mip-уровней одного слоя массива. Гарантируется, что это значение кратно размеру блока в байтах. -
imageMipTailOffsetэто непрозрачный смещение памяти, используемое с VkSparseImageOpaqueMemoryBindInfo для связывания области(ей) хвоста mip-уровней. -
imageMipTailStrideэто шаг смещения между хвостами mip-уровней каждого слоя массива, еслиformatProperties.flagsне содержитVK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT(в противном случае значение не определено).
См. также
VkDeviceSize, VkSparseImageFormatProperties, vkGetImageSparseMemoryRequirements
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageMemoryRequirements
VkSparseImageOpaqueMemoryBindInfo(3)
Название
VkSparseImageOpaqueMemoryBindInfo - Структура, указывающая информацию о привязке непрозрачной памяти разреженного изображения
C Спецификация
Память связывается с непрозрачными областями объектов VkImage , созданных с флагом VK_IMAGE_CREATE_SPARSE_BINDING_BIT , используя следующую структуру:
typedef struct VkSparseImageOpaqueMemoryBindInfo {
VkImage image;
uint32_t bindCount;
const VkSparseMemoryBind* pBinds;
} VkSparseImageOpaqueMemoryBindInfo; Члены
-
imageэто объектVkImage, который будет связан. -
bindCountэто количество структурVkSparseMemoryBindв массивеpBinds. -
pBindsэто указатель на массив структурVkSparseMemoryBind.
Описание
Правильное использование
- Для любого заданного элемента
pBinds, если членflagsэтого элемента содержитVK_SPARSE_MEMORY_BIND_METADATA_BIT, определенный диапазон привязки должен находиться в области хвоста mip-уровней аспекта метаданныхimage
Правильное использование (неявное)
imageдолжен быть допустимым дескрипторомVkImagepBindsдолжен быть указателем на массивbindCountдопустимых структурVkSparseMemoryBindbindCountдолжен быть больше0
См. также
VkBindSparseInfo, VkImage, VkSparseMemoryBind
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageOpaqueMemoryBindInfo
VkSparseMemoryBind(3)
Название
VkSparseMemoryBind - Структура, указывающая операцию привязки разреженной памяти
C Спецификация
Структура VkSparseMemoryBind определена как:
typedef struct VkSparseMemoryBind {
VkDeviceSize resourceOffset;
VkDeviceSize size;
VkDeviceMemory memory;
VkDeviceSize memoryOffset;
VkSparseMemoryBindFlags flags;
} VkSparseMemoryBind; Члены
-
resourceOffsetis the offset into the resource. -
sizeis the size of the memory region to be bound. -
memoryis theVkDeviceMemoryobject that the range of the resource is bound to. Ifmemoryis VK_NULL_HANDLE, the range is unbound. -
memoryOffsetis the offset into theVkDeviceMemoryobject to bind the resource range to. Ifmemoryis VK_NULL_HANDLE, this value is ignored. -
flagsis a bitmask of VkSparseMemoryBindFlagBits specifying usage of the binding operation.
Описание
Диапазон связывания [resourceOffset, resourceOffset + size) имеет различные ограничения в зависимости от flags. Если flags содержит VK_SPARSE_MEMORY_BIND_METADATA_BIT, диапазон связывания должен находиться в области хвоста mip метаданных аспекта. Эта область метаданных определяется:
- metadataRegion = [base, base +
imageMipTailSize) - base =
imageMipTailOffset+imageMipTailStride× n
и значения imageMipTailOffset, imageMipTailSize и imageMipTailStride взяты из VkSparseImageMemoryRequirements, соответствующие аспекту метаданных изображения, а n - это допустимый индекс уровня массива для изображения,
imageMipTailStride считается равным нулю для аспектов, где VkSparseImageMemoryRequirements::formatProperties.flags содержит VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT.
Если flags не содержит VK_SPARSE_MEMORY_BIND_METADATA_BIT, диапазон связывания должен находиться в диапазоне [0,VkMemoryRequirements::size).
Допустимое использование
- Если
memoryне равно VK_NULL_HANDLE,memoryиmemoryOffsetдолжны соответствовать требованиям к памяти ресурса, как описано в разделе html/vkspec.html#resources-association- Если
memoryне равно VK_NULL_HANDLE,memoryне должен был создан с типом памяти, который сообщает о установленном битеVK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BITsizeдолжен быть больше0resourceOffsetдолжен быть меньше размера ресурсаsizeдолжен быть меньше или равен размеру ресурса минусresourceOffsetmemoryOffsetдолжен быть меньше размераmemorysizeдолжен быть меньше или равен размеруmemoryминусmemoryOffset
Допустимое использование (неявное)
- Если
memoryне равно VK_NULL_HANDLE,memoryдолжен быть допустимой дескрипторомVkDeviceMemoryflagsдолжен быть допустимым сочетанием значений VkSparseMemoryBindFlagBits
См. также
VkDeviceMemory, VkDeviceSize, VkSparseBufferMemoryBindInfo, VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBindFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseMemoryBind
VkSpecializationInfo(3)
Имя
VkSpecializationInfo - Структура, указывающая информацию о специализации
C Спецификация
Структура VkSpecializationInfo определяется как:
typedef struct VkSpecializationInfo {
uint32_t mapEntryCount;
const VkSpecializationMapEntry* pMapEntries;
size_t dataSize;
const void* pData;
} VkSpecializationInfo; Члены
-
mapEntryCountis the number of entries in thepMapEntriesarray. -
pMapEntriesis a pointer to an array ofVkSpecializationMapEntrywhich maps constant IDs to offsets inpData. -
dataSizeis the byte size of thepDatabuffer. -
pDatacontains the actual constant values to specialize with.
Описание
pMapEntries указывает на структуру типа VkSpecializationMapEntry.
Допустимое использование
- Член
offsetлюбого данного элементаpMapEntriesдолжен быть меньшеdataSize- Для любого данного элемента
pMapEntries,sizeдолжен быть меньше или равенdataSizeминусoffset- Если
mapEntryCountне равно0,pMapEntriesдолжен быть указателем на массив изmapEntryCountдопустимых структурVkSpecializationMapEntry
Допустимое использование (неявное)
- Если
dataSizeне равно0,pDataдолжен быть указателем на массив изdataSizeбайт
См. также
VkPipelineShaderStageCreateInfo, VkSpecializationMapEntry
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSpecializationInfo
VkSpecializationMapEntry(3)
Имя
VkSpecializationMapEntry - Структура, указывающая элемент отображения специализации
C Спецификация
Структура VkSpecializationMapEntry определяется как:
typedef struct VkSpecializationMapEntry {
uint32_t constantID;
uint32_t offset;
size_t size;
} VkSpecializationMapEntry; Члены
-
constantIDis the ID of the specialization constant in SPIR-V. -
offsetis the byte offset of the specialization constant value within the supplied data buffer. -
sizeis the byte size of the specialization constant value within the supplied data buffer.
Описание
Если значение constantID не является идентификатором константы специализации, используемым в шейдере, эта запись отображения не влияет на поведение конвейера.
Допустимое использование
- Для константы специализации
constantID, объявленной в шейдере,sizeдолжен соответствовать размеру в байтахconstantID. Если константа специализации имеет типboolean,sizeдолжен быть размером в байтахVkBool32
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSpecializationMapEntry
VkStencilOpState(3)
Имя
VkStencilOpState - Структура, указывающая состояние операции трафарета
C Спецификация
Структура VkStencilOpState определяется как:
typedef struct VkStencilOpState {
VkStencilOp failOp;
VkStencilOp passOp;
VkStencilOp depthFailOp;
VkCompareOp compareOp;
uint32_t compareMask;
uint32_t writeMask;
uint32_t reference;
} VkStencilOpState; Члены
-
failOpis a VkStencilOp value specifying the action performed on samples that fail the stencil test. -
passOpis a VkStencilOp value specifying the action performed on samples that pass both the depth and stencil tests. -
depthFailOpis a VkStencilOp value specifying the action performed on samples that pass the stencil test and fail the depth test. -
compareOpis a VkCompareOp value specifying the comparison operator used in the stencil test. -
compareMaskselects the bits of the unsigned integer stencil values participating in the stencil test. -
writeMaskselects the bits of the unsigned integer stencil values updated by the stencil test in the stencil framebuffer attachment. -
referenceis an integer reference value that is used in the unsigned stencil comparison.
Описание
Допустимое использование (неявное)
failOpдолжен быть допустимым значением VkStencilOppassOpдолжен быть допустимым значением VkStencilOpdepthFailOpдолжен быть допустимым значением VkStencilOpcompareOpдолжен быть допустимым значением VkCompareOp
См. также
VkCompareOp, VkPipelineDepthStencilStateCreateInfo, VkStencilOp
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkStencilOpState
VkSubmitInfo(3)
Имя
VkSubmitInfo - Структура, указывающая операцию отправки очереди
C Спецификация
Структура VkSubmitInfo определяется как:
typedef struct VkSubmitInfo {
VkStructureType sType;
const void* pNext;
uint32_t waitSemaphoreCount;
const VkSemaphore* pWaitSemaphores;
const VkPipelineStageFlags* pWaitDstStageMask;
uint32_t commandBufferCount;
const VkCommandBuffer* pCommandBuffers;
uint32_t signalSemaphoreCount;
const VkSemaphore* pSignalSemaphores;
} VkSubmitInfo; Члены
-
sTypeis the type of this structure. -
pNextisNULLor a pointer to an extension-specific structure. -
waitSemaphoreCountis the number of semaphores upon which to wait before executing the command buffers for the batch. -
pWaitSemaphoresis a pointer to an array of semaphores upon which to wait before the command buffers for this batch begin execution. If semaphores to wait on are provided, they define a semaphore wait operation. -
pWaitDstStageMaskis a pointer to an array of pipeline stages at which each corresponding semaphore wait will occur. -
commandBufferCountis the number of command buffers to execute in the batch. -
pCommandBuffersis a pointer to an array of command buffers to execute in the batch. -
signalSemaphoreCountis the number of semaphores to be signaled once the commands specified inpCommandBuffershave completed execution. -
pSignalSemaphoresis a pointer to an array of semaphores which will be signaled when the command buffers for this batch have completed execution. If semaphores to be signaled are provided, they define a semaphore signal operation.
Описание
Порядок, в котором буферы команд появляются в pCommandBuffers, используется для определения порядка отправки, и, таким образом, всех неявных гарантий упорядочивания, которые его учитывают. Помимо этих неявных гарантий упорядочивания и любых явных примитивов синхронизации, эти буферы команд могут перекрываться или выполняться не по порядку.
Допустимое использование
- Любой заданный элемент
pCommandBuffersне должен был быть выделен с помощьюVK_COMMAND_BUFFER_LEVEL_SECONDARY- Если функция геометрических шейдеров не включена, любой заданный элемент
pWaitDstStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция тесселяционных шейдеров не включена, любой заданный элемент
pWaitDstStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Любой заданный элемент
pWaitDstStageMaskне должен включатьVK_PIPELINE_STAGE_HOST_BIT.
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_SUBMIT_INFOpNextдолжно бытьNULL- Если
waitSemaphoreCountне0,pWaitSemaphoresдолжно быть указателем на массив изwaitSemaphoreCountдопустимых дескрипторовVkSemaphore- Если
waitSemaphoreCountне0,pWaitDstStageMaskдолжно быть указателем на массив изwaitSemaphoreCountдопустимых комбинаций значений VkPipelineStageFlagBits- Каждый элемент
pWaitDstStageMaskне должен быть0- Если
commandBufferCountне0,pCommandBuffersдолжно быть указателем на массив изcommandBufferCountдопустимых дескрипторовVkCommandBuffer- Если
signalSemaphoreCountне0,pSignalSemaphoresдолжно быть указателем на массив изsignalSemaphoreCountдопустимых дескрипторовVkSemaphore- Каждый из элементов
pCommandBuffers, элементыpSignalSemaphoresи элементыpWaitSemaphores, являющиеся допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkCommandBuffer, VkPipelineStageFlags, VkSemaphore, VkStructureType, vkQueueSubmit
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubmitInfo
VkSubpassDependency(3)
Имя
VkSubpassDependency - Структура, определяющая зависимость подпрохода
C-спецификация
Структура VkSubpassDependency определяется как:
typedef struct VkSubpassDependency {
uint32_t srcSubpass;
uint32_t dstSubpass;
VkPipelineStageFlags srcStageMask;
VkPipelineStageFlags dstStageMask;
VkAccessFlags srcAccessMask;
VkAccessFlags dstAccessMask;
VkDependencyFlags dependencyFlags;
} VkSubpassDependency; Члены
-
srcSubpassis the subpass index of the first subpass in the dependency, orVK_SUBPASS_EXTERNAL. -
dstSubpassis the subpass index of the second subpass in the dependency, orVK_SUBPASS_EXTERNAL. -
srcStageMaskis a bitmask of VkPipelineStageFlagBits specifying the source stage mask. -
dstStageMaskis a bitmask of VkPipelineStageFlagBits specifying the destination stage mask -
srcAccessMaskis a bitmask of VkAccessFlagBits specifying a source access mask. -
dstAccessMaskis a bitmask of VkAccessFlagBits specifying a destination access mask. -
dependencyFlagsis a bitmask of VkDependencyFlagBits.
Описание
Если srcSubpass равно dstSubpass, то VkSubpassDependency описывает зависимость подпрохода от самого себя и ограничивает только разрешенные барьеры конвейера внутри экземпляра подпрохода. В противном случае, когда экземпляр прохода рендеринга, который включает зависимость подпрохода, отправляется в очередь, он определяет зависимость памяти между подпроходами, идентифицированными srcSubpass и dstSubpass.
Если srcSubpass равно VK_SUBPASS_EXTERNAL, первая область синхронизации включает команды, отправленные в очередь до начала экземпляра прохода рендеринга. В противном случае первый набор команд включает все команды, отправленные как часть экземпляра подпрохода, идентифицированного srcSubpass, и любые операции загрузки, сохранения или многовыборочного разрешения на вложениях, используемых в srcSubpass. В любом случае, первая область синхронизации ограничивается операциями на этапах конвейера, определяемых маской исходного этапа, указанной srcStageMask.
Если dstSubpass равно VK_SUBPASS_EXTERNAL, вторая область синхронизации включает команды, отправленные после завершения экземпляра прохода рендеринга. В противном случае второй набор команд включает все команды, отправленные как часть экземпляра подпрохода, идентифицированного dstSubpass, и любые операции загрузки, сохранения или многовыборочного разрешения на вложениях, используемых в dstSubpass. В любом случае, вторая область синхронизации ограничивается операциями на этапах конвейера, определяемых маской целевого этапа, указанной dstStageMask.
Первая область доступа ограничивается доступом на этапах конвейера, определяемых маской исходного этапа, указанной srcStageMask. Она также ограничивается типами доступа в маске исходного доступа, указанной srcAccessMask.
Вторая область доступа ограничивается доступом на этапах конвейера, определяемых маской целевого этапа, указанной dstStageMask. Она также ограничивается типами доступа в маске целевого доступа, указанной dstAccessMask.
Операции доступности и видимости, определяемые зависимостью подпрохода, влияют на выполнение переходов макета изображения внутри прохода рендеринга.
Примечание
Для ресурсов без вложений зависимость памяти, выраженная зависимостью подпрохода, практически идентична зависимости памяти VkMemoryBarrier (с совпадающими параметрами
srcAccessMask/dstAccessMask) отправленной как часть vkCmdPipelineBarrier (с совпадающими параметрамиsrcStageMask/dstStageMask). Единственное отличие состоит в том, что её области действия ограничены указанными подпроходами, а не потенциально влияют на всё до и после.Однако для вложений зависимости подпрохода работают больше как VkImageMemoryBarrier, определённый аналогично VkMemoryBarrier, указанные выше, индексы очереди семейств установлены в
VK_QUEUE_FAMILY_IGNORED, и макеты следующие:
- Эквивалент
oldLayout— это макет вложения в соответствии с описанием подпрохода дляsrcSubpass.- Эквивалент
newLayout— это макет вложения в соответствии с описанием подпрохода дляdstSubpass.
Допустимое использование
- Если
srcSubpassнеVK_SUBPASS_EXTERNAL,srcStageMaskне должно включатьVK_PIPELINE_STAGE_HOST_BIT- Если
dstSubpassнеVK_SUBPASS_EXTERNAL,dstStageMaskне должно включатьVK_PIPELINE_STAGE_HOST_BIT- Если функция геометрических шейдеров не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция геометрических шейдеров не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- Если функция тесселяционных шейдеров не включена,
srcStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- Если функция тесселяционных шейдеров не включена,
dstStageMaskне должен содержатьVK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITилиVK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BITsrcSubpassдолжен быть меньше или равенdstSubpass, если только один из них неVK_SUBPASS_EXTERNAL, чтобы избежать циклических зависимостей и обеспечить корректный порядок выполненияsrcSubpassиdstSubpassне должны оба быть равныVK_SUBPASS_EXTERNAL- Если
srcSubpassравенdstSubpass,srcStageMaskиdstStageMaskдолжны содержать только один изVK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, илиVK_PIPELINE_STAGE_ALL_GRAPHICS_BIT- Если
srcSubpassравенdstSubpassи не все этапы вsrcStageMaskиdstStageMaskявляются этапами пространства фреймбуфера, логически последний этап конвейера вsrcStageMaskдолжен быть логически раньше или равен логически самому раннему этапу конвейера вdstStageMask- Любой флаг доступа, включенный в
srcAccessMask, должен поддерживаться одним из этапов конвейера вsrcStageMask, как указано в таблице поддерживаемых типов доступа.- Любой флаг доступа, включенный в
dstAccessMask, должен поддерживаться одним из этапов конвейера вdstStageMask, как указано в таблице поддерживаемых типов доступа.
Допустимое использование (неявное)
srcStageMaskдолжен быть допустимым сочетанием значений VkPipelineStageFlagBitssrcStageMaskне должен быть0dstStageMaskдолжен быть допустимым сочетанием значений VkPipelineStageFlagBitsdstStageMaskне должен быть0srcAccessMaskдолжен быть допустимым сочетанием значений VkAccessFlagBitsdstAccessMaskдолжен быть допустимым сочетанием значений VkAccessFlagBitsdependencyFlagsдолжен быть допустимым сочетанием значений VkDependencyFlagBits
См. также
VkAccessFlags, VkDependencyFlags, VkPipelineStageFlags, VkRenderPassCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubpassDependency
VkSubpassDescription(3)
Название
VkSubpassDescription - Структура, определяющая описание подпрохода
C-спецификация
Структура VkSubpassDescription определяется следующим образом:
typedef struct VkSubpassDescription {
VkSubpassDescriptionFlags flags;
VkPipelineBindPoint pipelineBindPoint;
uint32_t inputAttachmentCount;
const VkAttachmentReference* pInputAttachments;
uint32_t colorAttachmentCount;
const VkAttachmentReference* pColorAttachments;
const VkAttachmentReference* pResolveAttachments;
const VkAttachmentReference* pDepthStencilAttachment;
uint32_t preserveAttachmentCount;
const uint32_t* pPreserveAttachments;
} VkSubpassDescription; Элементы
-
flags— это битовая маска VkSubpassDescriptionFlagBits, указывающая использование подпрохода. -
pipelineBindPoint— это значение VkPipelineBindPoint, указывающее, является ли это вычислительным или графическим подпроходом. В настоящее время поддерживаются только графические подпроходы. -
inputAttachmentCount— это количество входных вложений. -
pInputAttachments— это массив структур VkAttachmentReference (определённых ниже), который перечисляет, какие из вложений прохода рендеринга могут считываться в шейдере во время подпрохода, и какой макет будет иметь каждое вложение во время подпрохода. Каждый элемент массива соответствует номеру блока входного вложения в шейдере, т.е. если шейдер объявляет входную переменнуюlayout(input_attachment_index=X, set=Y, binding=Z), то он использует вложение, предоставленное вpInputAttachments[X]. Входные вложения также должны быть связаны с конвейером с помощью набора дескрипторов, при этом дескриптор входного вложения записывается в местоположение (set=Y, binding=Z). -
colorAttachmentCount— это количество цветовых вложений. -
pColorAttachments— это массив изcolorAttachmentCountструктур VkAttachmentReference, который перечисляет, какие из вложений прохода рендеринга будут использоваться в качестве цветовых вложений в подпроходе, и какой макет будет иметь каждое вложение во время подпрохода. Каждый элемент массива соответствует местоположению выходных данных фрагментного шейдера, т.е. если шейдер объявил выходную переменнуюlayout(location=X), то он использует вложение, предоставленное вpColorAttachments[X]. -
pResolveAttachments— этоNULLили массив изcolorAttachmentCountструктур VkAttachmentReference, который перечисляет, к каким из вложений прохода рендеринга происходит разрешение в конце подпрохода, и какой макет будет иметь каждое вложение во время операции многовыборного разрешения. ЕслиpResolveAttachmentsнеNULL, каждый из его элементов соответствует цветовому вложению (элемент вpColorAttachmentsс тем же индексом), и для каждого вложения определяется операция многовыборного разрешения. В конце каждого подпрохода операции многовыборного разрешения считывают цветовые вложения подпрохода и разрешают выборки для каждого пикселя в то же местоположение пикселя в соответствующих разрешённых вложениях, если только индекс разрешённого вложения неVK_ATTACHMENT_UNUSED. Если первое использование вложения в проходе рендеринга является разрешённым вложением, тоloadOpэффективно игнорируется, поскольку гарантируется, что разрешение перезапишет все пиксели в области рендеринга. -
pDepthStencilAttachment— это указатель на VkAttachmentReference, указывающий, какое вложение будет использоваться для данных глубины/трафарета и какой макет оно будет иметь во время подпрохода. Установка индекса вложения вVK_ATTACHMENT_UNUSEDили оставление этого указателя какNULLуказывает на то, что в подпроходе не будет использоваться вложение глубины/трафарета. -
preserveAttachmentCount— это количество сохранённых вложений. -
pPreserveAttachments— это массив изpreserveAttachmentCountиндексов вложений прохода рендеринга, описывающих вложения, которые не используются подпроходом, но содержимое которых должно сохраняться в течение всего подпрохода.
Описание
Содержимое вложения в области рендеринга становится неопределённым в начале подпрохода S, если выполнены все следующие условия:
- Вложение используется в качестве цветового, глубины/трафарета или разрешённого вложения в любом подпроходе в проходе рендеринга.
- Существует подпроход S1, который использует или сохраняет вложение, и зависимость подпрохода от S1 до S.
- Вложение не используется и не сохраняется в подпроходе S.
Как только содержимое вложения становится неопределенным в подпроходе S, оно остается неопределенным для подпроходов в цепочках зависимостей подпроходов, начиная с подпрохода S, пока оно не будет записано снова. Однако, оно остается допустимым для подпроходов в других цепочках зависимостей подпроходов, начиная с подпрохода S1, если эти подпроходы используют или сохраняют вложение.
Допустимое использование
pipelineBindPointдолжно бытьVK_PIPELINE_BIND_POINT_GRAPHICScolorAttachmentCountдолжно быть меньше или равноVkPhysicalDeviceLimits::maxColorAttachments- Если первое использование вложения в этом проходе рендеринга является входным вложением, и вложение также не используется как цветное или глубины/трафарета вложение в том же подпроходе, то
loadOpне должно бытьVK_ATTACHMENT_LOAD_OP_CLEAR- Если
pResolveAttachmentsнеNULL, для каждого вложения разрешения, которое не имеет значенияVK_ATTACHMENT_UNUSED, соответствующее цветное вложение не должно иметь значенияVK_ATTACHMENT_UNUSED- Если
pResolveAttachmentsнеNULL, количество выборок каждого элементаpColorAttachmentsдолжно быть любым, кромеVK_SAMPLE_COUNT_1_BIT- Любой заданный элемент
pResolveAttachmentsдолжен иметь количество выборокVK_SAMPLE_COUNT_1_BIT- Любой заданный элемент
pResolveAttachmentsдолжен иметь тот же VkFormat, что и его соответствующее цветное вложение- Все вложения в
pColorAttachments, которые неVK_ATTACHMENT_UNUSED, должны иметь одинаковое количество выборок- Если
pDepthStencilAttachmentнеVK_ATTACHMENT_UNUSEDи любые вложения вpColorAttachmentsнеVK_ATTACHMENT_UNUSED, они должны иметь одинаковое количество выборок- Если какие-либо входные вложения
VK_ATTACHMENT_UNUSED, то любые конвейеры, связанные во время подпрохода, не должны обращаться к этим входным вложениям из фрагментного шейдера- Член
attachmentлюбого элементаpPreserveAttachmentsне должен бытьVK_ATTACHMENT_UNUSED- Любой заданный элемент
pPreserveAttachmentsне должен также быть элементом любого другого члена описания подпрохода- Если любое вложение используется как входное вложение и как цветное или глубины/трафарета вложение, то каждое использование должно использовать тот же
layout
Допустимое использование (неявное)
flagsдолжно быть допустимой комбинацией значений VkSubpassDescriptionFlagBitspipelineBindPointдолжно быть допустимым значением VkPipelineBindPoint- Если
inputAttachmentCountне0,pInputAttachmentsдолжно быть указателем на массив изinputAttachmentCountдопустимыхVkAttachmentReferenceструктур- Если
colorAttachmentCountне0,pColorAttachmentsдолжно быть указателем на массив изcolorAttachmentCountдопустимыхVkAttachmentReferenceструктур- Если
colorAttachmentCountне0, иpResolveAttachmentsнеNULL,pResolveAttachmentsдолжно быть указателем на массив изcolorAttachmentCountдопустимыхVkAttachmentReferenceструктур- Если
pDepthStencilAttachmentнеNULL,pDepthStencilAttachmentдолжно быть указателем на допустимуюVkAttachmentReferenceструктуру- Если
preserveAttachmentCountне0,pPreserveAttachmentsдолжно быть указателем на массив изpreserveAttachmentCountuint32_tзначений
См. также
VkAttachmentReference, VkPipelineBindPoint, VkRenderPassCreateInfo, VkSubpassDescriptionFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubpassDescription
VkSubresourceLayout(3)
Имя
VkSubresourceLayout - Структура, определяющая макет подресурса
C Спецификация
Информация о макете подресурса изображения возвращается в структуре VkSubresourceLayout:
typedef struct VkSubresourceLayout {
VkDeviceSize offset;
VkDeviceSize size;
VkDeviceSize rowPitch;
VkDeviceSize arrayPitch;
VkDeviceSize depthPitch;
} VkSubresourceLayout; Члены
-
offset- это смещение в байтах от начала изображения, где начинается подресурс изображения. -
size- это размер в байтах подресурса изображения.sizeвключает любую дополнительную память, которая требуется на основеrowPitch. -
rowPitchописывает количество байтов между каждой строкой текстур в изображении. -
arrayPitchописывает количество байтов между каждым слоем массива изображения. -
depthPitchописывает количество байтов между каждым срезом 3D изображения.
Описание
Для изображений, созданных с линейной разметкой, rowPitch, arrayPitch и depthPitch описывают макет подресурса изображения в линейной памяти. Для несжатых форматов, rowPitch - это количество байтов между текстурами с одинаковой координатой x в смежных строках (координаты y отличаются на один). arrayPitch - это количество байтов между текстурами с одинаковыми координатами x и y в смежных слоях массива изображения (значения слоя массива отличаются на один). depthPitch - это количество байтов между текстурами с одинаковыми координатами x и y в смежных срезах 3D изображения (координаты z отличаются на один). Выраженное в виде формулы адресации, начальный байт текстуры в подресурсе изображения имеет адрес:
// (x,y,z,layer) are in texel coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
Для сжатых форматов, rowPitch - это количество байтов между сжатыми блоками текстур в смежных строках. arrayPitch - это количество байтов между сжатыми блоками текстур в смежных слоях массива. depthPitch - это количество байтов между сжатыми блоками текстур в смежных срезах 3D изображения.
// (x,y,z,layer) are in compressed texel block coordinates address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
arrayPitch не определено для изображений, которые не были созданы как массивы. depthPitch определено только для 3D изображений.
Для цветовых форматов, член aspectMask VkImageSubresource должен быть VK_IMAGE_ASPECT_COLOR_BIT. Для форматов глубины/трафарета, aspectMask должен быть либо VK_IMAGE_ASPECT_DEPTH_BIT, либо VK_IMAGE_ASPECT_STENCIL_BIT. На реализациях, которые хранят аспекты глубины и трафарета отдельно, запрос каждого из этих макетов подресурсов изображения вернет разные offset и size, представляющие область памяти, используемую для этого аспекта. На реализациях, которые хранят аспекты глубины и трафарета в переплетенном виде, возвращаются одни и те же offset и size, представляющие переплетенное выделение памяти.
См. также
VkDeviceSize, vkGetImageSubresourceLayout
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubresourceLayout
VkVertexInputAttributeDescription(3)
Имя
VkVertexInputAttributeDescription - Структура, определяющая описание атрибута входных вершин
C Спецификация
Каждый атрибут входных вершин задается экземпляром структуры VkVertexInputAttributeDescription.
Структура VkVertexInputAttributeDescription определяется как:
typedef struct VkVertexInputAttributeDescription {
uint32_t location;
uint32_t binding;
VkFormat format;
uint32_t offset;
} VkVertexInputAttributeDescription; Члены
-
location- это номер места привязки шейдера для этого атрибута. -
binding- это номер привязки, из которой этот атрибут берет свои данные. -
format- это размер и тип данных атрибута вершины. -
offset- это смещение в байтах этого атрибута относительно начала элемента в привязке входных вершин.
Описание
Допустимое использование
locationдолжно быть меньшеVkPhysicalDeviceLimits::maxVertexInputAttributesbindingдолжно быть меньшеVkPhysicalDeviceLimits::maxVertexInputBindingsoffsetдолжно быть меньше или равноVkPhysicalDeviceLimits::maxVertexInputAttributeOffsetformatдолжно быть разрешено как формат буфера вершин, как указано флагомVK_FORMAT_FEATURE_VERTEX_BUFFER_BITвVkFormatProperties::bufferFeatures, возвращаемымvkGetPhysicalDeviceFormatProperties
Допустимое использование (неявное)
formatдолжно быть допустимым значением VkFormat
См. также
VkFormat, VkPipelineVertexInputStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkVertexInputAttributeDescription
VkVertexInputBindingDescription(3)
Имя
VkVertexInputBindingDescription - Структура, определяющая описание привязки входных вершин
C Спецификация
Структура VkVertexInputBindingDescription определяется как:
typedef struct VkVertexInputBindingDescription {
uint32_t binding;
uint32_t stride;
VkVertexInputRate inputRate;
} VkVertexInputBindingDescription; Краткое описание полей
-
binding— это номер привязки, который описывает данная структура. -
stride— это расстояние в байтах между двумя последовательными элементами внутри буфера. -
inputRate— это значение VkVertexInputRate, указывающее, является ли адресация атрибутов вершин функцией индекса вершины или индекса экземпляра.
Описание
Допустимое использование
bindingдолжно быть меньше, чемVkPhysicalDeviceLimits::maxVertexInputBindingsstrideдолжно быть меньше или равноVkPhysicalDeviceLimits::maxVertexInputBindingStride
Допустимое использование (неявное)
inputRateдолжно быть допустимым значением VkVertexInputRate
См. также
VkPipelineVertexInputStateCreateInfo, VkVertexInputRate
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkVertexInputBindingDescription
VkViewport(3)
Имя
VkViewport - Структура, определяющая viewport
C-спецификация
Структура VkViewport определяется как:
typedef struct VkViewport {
float x;
float y;
float width;
float height;
float minDepth;
float maxDepth;
} VkViewport; Краткое описание полей
-
xиy— это верхний левый угол (x,y) viewport. -
widthиheight— это ширина и высота viewport соответственно. -
minDepthиmaxDepth— это диапазон глубины для viewport. Допустимо, чтобыminDepthбыло больше или равноmaxDepth.
Описание
Координата глубины фреймбуфера zf может быть представлена либо в виде с фиксированной точкой, либо в виде с плавающей точкой. Однако представление с плавающей точкой должно использоваться, если вложение глубины/трафарета имеет компонент глубины с плавающей точкой. Если используется m-битное представление с фиксированной точкой, мы предполагаем, что оно представляет каждое значение \(\frac{k}{2^m - 1}\), где k ∈ { 0, 1, …, 2m-1 }, как k (например, 1.0 представлено в двоичном виде как строка из одних единиц).
Параметры viewport, показанные в приведенных выше уравнениях, находятся из этих значений как
- ox =
x+width/ 2 - oy =
y+height/ 2 - oz =
minDepth - px =
width - py =
height - pz =
maxDepth-minDepth.
Ширина и высота максимальных размеров viewport, зависящих от реализации, должны быть больше или равны ширине и высоте самого большого изображения, которое можно создать и прикрепить к фреймбуферу.
Границы viewport с плавающей точкой представлены с точностью, зависящей от реализации.
Допустимое использование
widthдолжно быть больше0.0и меньше или равноVkPhysicalDeviceLimits::maxViewportDimensions[0]heightдолжно быть больше0.0и меньше или равноVkPhysicalDeviceLimits::maxViewportDimensions[1]xиyдолжны находиться в диапазоне отviewportBoundsRange[0] доviewportBoundsRange[1] включительно- (
x+width) должно быть меньше или равноviewportBoundsRange[1]- (
y+height) должно быть меньше или равноviewportBoundsRange[1]minDepthдолжно находиться в диапазоне от0.0до1.0включительноmaxDepthдолжно находиться в диапазоне от0.0до1.0включительно
См. также
VkPipelineViewportStateCreateInfo, vkCmdSetViewport
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL-адресу
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkViewport
VkWriteDescriptorSet(3)
Имя
VkWriteDescriptorSet - Структура, определяющая параметры операции записи набора дескрипторов
C-спецификация
Структура VkWriteDescriptorSet определяется как:
typedef struct VkWriteDescriptorSet {
VkStructureType sType;
const void* pNext;
VkDescriptorSet dstSet;
uint32_t dstBinding;
uint32_t dstArrayElement;
uint32_t descriptorCount;
VkDescriptorType descriptorType;
const VkDescriptorImageInfo* pImageInfo;
const VkDescriptorBufferInfo* pBufferInfo;
const VkBufferView* pTexelBufferView;
} VkWriteDescriptorSet; Краткое описание полей
-
sType— это тип данной структуры. -
pNext— этоNULLили указатель на структуру, специфичную для расширения. -
dstSet— это целевой набор дескрипторов для обновления. -
dstBinding— это привязка дескриптора в этом наборе. -
dstArrayElement— это начальный элемент в этом массиве. -
descriptorCount— это количество дескрипторов для обновления (количество элементов вpImageInfo,pBufferInfoилиpTexelBufferView). -
descriptorType— это VkDescriptorType, указывающий тип каждого дескриптора вpImageInfo,pBufferInfoилиpTexelBufferView, как описано ниже. Он должен быть того же типа, что и указанный вVkDescriptorSetLayoutBindingдляdstSetвdstBinding. Тип дескриптора также управляет тем, из какого массива берутся дескрипторы. -
pImageInfoуказывает на массив структур VkDescriptorImageInfo или игнорируется, как описано ниже. -
pBufferInfoуказывает на массив структур VkDescriptorBufferInfo или игнорируется, как описано ниже. -
pTexelBufferViewуказывает на массив дескрипторов VkBufferView, как описано в разделе Представления буферов, или игнорируется, как описано ниже.
Описание
Только один из членов pImageInfo, pBufferInfo или pTexelBufferView используется в соответствии с типом дескриптора, указанным в члене descriptorType содержащей структуры VkWriteDescriptorSet, как указано ниже.
Если dstBinding имеет меньше, чем descriptorCount оставшихся элементов массива, начиная с dstArrayElement, то оставшиеся элементы будут использоваться для обновления последующей привязки - dstBinding+1, начиная с нулевого элемента массива. Если привязка имеет descriptorCount равное нулю, она пропускается. Это поведение применяется рекурсивно, при этом обновление затрагивает последовательные привязки по мере необходимости для обновления всех descriptorCount дескрипторов.
Допустимое использование
dstBindingдолжно быть меньше или равно максимальному значениюbindingвсех структур VkDescriptorSetLayoutBinding, указанных при создании макета набора дескрипторовdstSetdstBindingдолжно быть привязкой с ненулевымdescriptorCount- Все последовательные привязки, обновляемые с помощью одной структуры
VkWriteDescriptorSet, за исключением тех, у которыхdescriptorCountравно нулю, должны иметь одинаковыеdescriptorTypeиstageFlags.- Все последовательные привязки, обновляемые с помощью одной структуры
VkWriteDescriptorSet, за исключением тех, у которыхdescriptorCountравно нулю, должны либо все использовать неизменяемые семплеры, либо все не использовать неизменяемые семплеры.descriptorTypeдолжно соответствовать типуdstBindingвнутриdstSetdstSetдолжно быть допустимой дескрипторной ссылкой VkDescriptorSet- Сумма
dstArrayElementиdescriptorCountдолжна быть меньше или равна количеству элементов массива в привязке набора дескрипторов, указаннойdstBinding, и всех применимых последовательных привязок, как описано в html/vkspec.html#descriptorsets-updates-consecutive- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGEилиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,pImageInfoдолжно быть указателем на массив изdescriptorCountдопустимых структурVkDescriptorImageInfo- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,pTexelBufferViewдолжно быть указателем на массив изdescriptorCountдопустимых ссылокVkBufferView- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMICилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,pBufferInfoдолжно быть указателем на массив изdescriptorCountдопустимых структурVkDescriptorBufferInfo- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_SAMPLERилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, иdstSetне был выделен с макетом, который включал неизменяемые семплеры дляdstBindingсdescriptorType, членsamplerлюбого заданного элементаpImageInfoдолжен быть допустимым объектомVkSampler- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGEилиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, членыimageViewиimageLayoutлюбого заданного элементаpImageInfoдолжны быть допустимымиVkImageViewи VkImageLayout соответственно- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_IMAGE, для каждого дескриптора, который будет доступен через операции загрузки или сохранения, членimageLayoutдля соответствующих элементовpImageInfoдолжен бытьVK_IMAGE_LAYOUT_GENERAL- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, членoffsetлюбого заданного элементаpBufferInfoдолжен быть кратнымVkPhysicalDeviceLimits::minUniformBufferOffsetAlignment- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, членoffsetлюбого заданного элементаpBufferInfoдолжен быть кратнымVkPhysicalDeviceLimits::minStorageBufferOffsetAlignment- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,VK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, членbufferлюбого заданного элементаpBufferInfo, который не разрежен, должен быть полностью и непрерывно связан с одним объектомVkDeviceMemory- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, членbufferлюбого заданного элементаpBufferInfoдолжен быть создан с установленнымVK_BUFFER_USAGE_UNIFORM_BUFFER_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, членbufferлюбого заданного элементаpBufferInfoдолжен быть создан с установленнымVK_BUFFER_USAGE_STORAGE_BUFFER_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, членrangeлюбого заданного элементаpBufferInfo, или эффективный диапазон, еслиrangeестьVK_WHOLE_SIZE, должен быть меньше или равенVkPhysicalDeviceLimits::maxUniformBufferRange- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, членrangeлюбого заданного элементаpBufferInfo, или эффективный диапазон, еслиrangeестьVK_WHOLE_SIZE, должен быть меньше или равенVkPhysicalDeviceLimits::maxStorageBufferRange- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,VkBuffer, из которого был создан любой заданный элементpTexelBufferView, должен быть создан с установленнымVK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,VkBuffer, из которого был создан любой заданный элементpTexelBufferView, должен быть создан с установленнымVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_IMAGEилиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, членimageViewлюбого заданного элементаpImageInfoдолжен быть создан с идентичным перемешиванием- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, членimageViewлюбого заданного элементаpImageInfoдолжен быть создан с установленнымVK_IMAGE_USAGE_SAMPLED_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, членimageLayoutлюбого заданного элементаpImageInfoдолжен бытьVK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALилиVK_IMAGE_LAYOUT_GENERAL- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, членimageViewлюбого заданного элементаpImageInfoдолжен быть создан с установленнымVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- Если
descriptorTypeестьVK_DESCRIPTOR_TYPE_STORAGE_IMAGE, членimageViewлюбого заданного элементаpImageInfoдолжен быть создан с установленнымVK_IMAGE_USAGE_STORAGE_BIT
Допустимое использование (неявное)
sTypeдолжно бытьVK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SETpNextдолжно бытьNULLdescriptorTypeдолжно быть допустимым значением VkDescriptorTypedescriptorCountдолжно быть больше0- И
dstSet, и элементыpTexelBufferView, которые являются допустимыми дескрипторами, должны быть созданы, выделены или получены из одного и того жеVkDevice
См. также
VkBufferView, VkDescriptorBufferInfo, VkDescriptorImageInfo, VkDescriptorSet, VkDescriptorType, VkStructureType, vkUpdateDescriptorSets
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkWriteDescriptorSet
Перечисления
VkAccessFlagBits(3)
Имя
VkAccessFlagBits - Битовая маска, указывающая типы доступа к памяти, которые будут участвовать в зависимости памяти
C-спецификация
Доступ к памяти в Vulkan может осуществляться из вызовов шейдеров и через некоторые этапы фиксированной функции конвейера. Тип доступа является функцией используемого типа дескриптора или того, как этап фиксированной функции обращается к памяти. Каждый тип доступа соответствует битовому флагу в VkAccessFlagBits.
Некоторые команды синхронизации принимают наборы типов доступа в качестве параметров для определения областей доступа зависимости памяти. Если команда синхронизации включает маску исходного доступа, её первая область доступа включает только доступ через типы доступа, указанные в этой маске. Аналогично, если команда синхронизации включает маску целевого доступа, её вторая область доступа включает только доступ через типы доступа, указанные в этой маске.
Типы доступа, которые могут быть установлены в маске доступа, включают:
typedef enum VkAccessFlagBits {
VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
VK_ACCESS_INDEX_READ_BIT = 0x00000002,
VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
VK_ACCESS_SHADER_READ_BIT = 0x00000020,
VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
VK_ACCESS_HOST_READ_BIT = 0x00002000,
VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
} VkAccessFlagBits; Описание
-
VK_ACCESS_INDIRECT_COMMAND_READ_BITspecifies read access to an indirect command structure read as part of an indirect drawing or dispatch command. -
VK_ACCESS_INDEX_READ_BITspecifies read access to an index buffer as part of an indexed drawing command, bound by vkCmdBindIndexBuffer. -
VK_ACCESS_VERTEX_ATTRIBUTE_READ_BITspecifies read access to a vertex buffer as part of a drawing command, bound by vkCmdBindVertexBuffers. -
VK_ACCESS_UNIFORM_READ_BITspecifies read access to a uniform buffer. -
VK_ACCESS_INPUT_ATTACHMENT_READ_BITspecifies read access to an input attachment within a renderpass during fragment shading. -
VK_ACCESS_SHADER_READ_BITspecifies read access to a storage buffer, uniform texel buffer, storage texel buffer, sampled image, or storage image. -
VK_ACCESS_SHADER_WRITE_BITspecifies write access to a storage buffer, storage texel buffer, or storage image. -
VK_ACCESS_COLOR_ATTACHMENT_READ_BITspecifies read access to a color attachment, such as via blending, logic operations, or via certain subpass load operations. -
VK_ACCESS_COLOR_ATTACHMENT_WRITE_BITspecifies write access to a color or resolve attachment during a render pass or via certain subpass load and store operations. -
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BITspecifies read access to a depth/stencil attachment, via depth or stencil operations or via certain subpass load operations. -
VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BITspecifies write access to a depth/stencil attachment, via depth or stencil operations or via certain subpass load and store operations. -
VK_ACCESS_TRANSFER_READ_BITspecifies read access to an image or buffer in a copy operation. -
VK_ACCESS_TRANSFER_WRITE_BITspecifies write access to an image or buffer in a clear or copy operation. -
VK_ACCESS_HOST_READ_BITspecifies read access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. -
VK_ACCESS_HOST_WRITE_BITspecifies write access by a host operation. Accesses of this type are not performed through a resource, but directly on memory. -
VK_ACCESS_MEMORY_READ_BITspecifies read access via non-specific entities. These entities include the Vulkan device and host, but may also include entities external to the Vulkan device or otherwise not part of the core Vulkan pipeline. When included in a destination access mask, makes all available writes visible to all future read accesses on entities known to the Vulkan device. -
VK_ACCESS_MEMORY_WRITE_BITspecifies write access via non-specific entities. These entities include the Vulkan device and host, but may also include entities external to the Vulkan device or otherwise not part of the core Vulkan pipeline. When included in a source access mask, all writes that are performed by entities known to the Vulkan device are made available. When included in a destination access mask, makes all available writes visible to all future write accesses on entities known to the Vulkan device.
Определённые типы доступа выполняются только подмножеством этапов конвейера. Любая команда синхронизации, которая принимает как маски этапов, так и маски доступа, использует оба для определения областей доступа - только указанные типы доступа, выполняемые указанными этапами, включены в область доступа. Приложение не должно указывать флаг доступа в команде синхронизации, если он не включает этап конвейера в соответствующей маске этапов, который может выполнять доступы этого типа. В следующей таблице перечислены для каждого флага доступа этапы конвейера, которые могут выполнять этот тип доступа.
| Флаг доступа | Поддерживаемые этапы конвейера |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| N/A |
| N/A |
Если объект памяти не имеет свойства VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, то должна быть вызвана функция vkFlushMappedMemoryRanges для гарантии того, что записи в объект памяти от хоста будут видны для типа доступа VK_ACCESS_HOST_WRITE_BIT access type, где они могут быть дополнительно предоставлены устройству с помощью команд синхронизации. Аналогично, должна быть вызвана функция vkInvalidateMappedMemoryRanges для гарантии того, что записи, видимые для типа доступа VK_ACCESS_HOST_READ_BIT access type, будут видны для операций хоста.
Если объект памяти имеет флаг свойства VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, записи в объект памяти от хоста автоматически становятся видимыми для типа доступа VK_ACCESS_HOST_WRITE_BIT access type. Аналогично, записи, видимые для типа доступа VK_ACCESS_HOST_READ_BIT access type, автоматически становятся видимыми для хоста.
Примечание
Команда vkQueueSubmit автоматически гарантирует, что записи хоста, отправленные в
VK_ACCESS_HOST_WRITE_BIT, становятся доступными, если они были отправлены до выполнения команды, поэтому в большинстве случаев явный барьер памяти не требуется для этого случая. В немногих случаях, когда отправка не происходит между записью хоста и доступом к чтению устройства, доступ к записям может быть обеспечен с помощью явного барьера памяти.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAccessFlagBits
VkAttachmentDescriptionFlagBits(3)
Имя
VkAttachmentDescriptionFlagBits - Битовая маска, указывающая дополнительные свойства вложения
Спецификация C
Биты, которые могут быть установлены в VkAttachmentDescription::flags для описания дополнительных свойств вложения:
typedef enum VkAttachmentDescriptionFlagBits {
VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
} VkAttachmentDescriptionFlagBits; Описание
-
VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BITуказывает, что вложение использует ту же память устройства, что и другие вложения.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentDescriptionFlagBits
VkAttachmentLoadOp(3)
Имя
VkAttachmentLoadOp - Указывает, как обрабатывается содержимое вложения в начале подпрохода
Спецификация C
Возможные значения VkAttachmentDescription::loadOp и stencilLoadOp, указывающие, как обрабатывается содержимое вложения:
typedef enum VkAttachmentLoadOp {
VK_ATTACHMENT_LOAD_OP_LOAD = 0,
VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
} VkAttachmentLoadOp; Описание
-
VK_ATTACHMENT_LOAD_OP_LOADуказывает, что предыдущее содержимое изображения в области рендеринга будет сохранено. Для вложений с форматом глубины/трафарета используется тип доступаVK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT. Для вложений с цветовым форматом используется тип доступаVK_ACCESS_COLOR_ATTACHMENT_READ_BIT. -
VK_ATTACHMENT_LOAD_OP_CLEARуказывает, что содержимое в области рендеринга будет очищено до однородного значения, которое указывается при начале экземпляра прохода рендеринга. Для вложений с форматом глубины/трафарета используется тип доступаVK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. Для вложений с цветовым форматом используется тип доступаVK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT. -
VK_ATTACHMENT_LOAD_OP_DONT_CAREуказывает, что предыдущее содержимое в области не обязательно должно сохраняться; содержимое вложения будет неопределенным внутри области рендеринга. Для вложений с форматом глубины/трафарета используется тип доступаVK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. Для вложений с цветовым форматом используется тип доступаVK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentLoadOp
VkAttachmentStoreOp(3)
Имя
VkAttachmentStoreOp - Указывает, как обрабатывается содержимое вложения в конце подпрохода
Спецификация C
Возможные значения VkAttachmentDescription::storeOp и stencilStoreOp, указывающие, как обрабатывается содержимое вложения:
typedef enum VkAttachmentStoreOp {
VK_ATTACHMENT_STORE_OP_STORE = 0,
VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
} VkAttachmentStoreOp; Описание
-
VK_ATTACHMENT_STORE_OP_STOREуказывает, что содержимое, сгенерированное во время прохода рендеринга и в области рендеринга, записывается в память. Для вложений с форматом глубины/трафарета используется тип доступаVK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. Для вложений с цветовым форматом используется тип доступаVK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT. -
VK_ATTACHMENT_STORE_OP_DONT_CAREуказывает, что содержимое в области рендеринга не требуется после рендеринга и может быть отброшено; содержимое вложения будет неопределенным внутри области рендеринга. Для вложений с форматом глубины/трафарета используется тип доступаVK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT. Для вложений с цветовым форматом используется тип доступаVK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentStoreOp
VkBlendFactor(3)
Имя
VkBlendFactor - Факторы смешивания буфера кадра
Спецификация C
Исходные и целевые факторы смешивания цвета и альфа-канала выбираются из перечисления:
typedef enum VkBlendFactor {
VK_BLEND_FACTOR_ZERO = 0,
VK_BLEND_FACTOR_ONE = 1,
VK_BLEND_FACTOR_SRC_COLOR = 2,
VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
VK_BLEND_FACTOR_DST_COLOR = 4,
VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
VK_BLEND_FACTOR_SRC_ALPHA = 6,
VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
VK_BLEND_FACTOR_DST_ALPHA = 8,
VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
VK_BLEND_FACTOR_SRC1_COLOR = 15,
VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
VK_BLEND_FACTOR_SRC1_ALPHA = 17,
VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
} VkBlendFactor; Описание
Семантика каждого значения перечисления описана в таблице ниже:
| VkBlendFactor | Коэффициенты смешивания RGB (Sr,Sg,Sb) или (Dr,Dg,Db) | Коэффициент смешивания альфа-канала (Sa или Da) |
|---|---|---|
| (0,0,0) | 0 |
| (1,1,1) | 1 |
| (Rs0,Gs0,Bs0) | As0 |
| (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |
| (Rd,Gd,Bd) | Ad |
| (1-Rd,1-Gd,1-Bd) | 1-Ad |
| (As0,As0,As0) | As0 |
| (1-As0,1-As0,1-As0) | 1-As0 |
| (Ad,Ad,Ad) | Ad |
| (1-Ad,1-Ad,1-Ad) | 1-Ad |
| (Rc,Gc,Bc) | Ac |
| (1-Rc,1-Gc,1-Bc) | 1-Ac |
| (Ac,Ac,Ac) | Ac |
| (1-Ac,1-Ac,1-Ac) | 1-Ac |
| (f,f,f); f = min(As0,1-Ad) | 1 |
| (Rs1,Gs1,Bs1) | As1 |
| (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |
| (As1,As1,As1) | As1 |
| (1-As1,1-As1,1-As1) | 1-As1 |
В этой таблице используются следующие соглашения:
- Rs0,Gs0,Bs0 и As0 представляют собой первый исходный цвет R, G, B и A компоненты соответственно, для местоположения выходного фрагмента, соответствующего смешиваемому цветовому вложению.
- Rs1,Gs1,Bs1 и As1 представляют собой второй исходный цвет R, G, B и A компоненты соответственно, используемые в режимах смешивания двух источников, для местоположения выходного фрагмента, соответствующего смешиваемому цветовому вложению.
- Rd,Gd,Bd и Ad представляют собой R, G, B и A компоненты цвета назначения. То есть, цвет, в настоящее время находящийся в соответствующем цветовом вложении для этого фрагмента/образца.
- Rc,Gc,Bc и Ac представляют собой компоненты константы смешивания R, G, B и A соответственно.
См. также
VkPipelineColorBlendAttachmentState
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBlendFactor
VkBlendOp(3)
Название
VkBlendOp - Операции смешивания буфера кадра
Спецификация C
После того, как выбраны исходные и целевые коэффициенты смешивания, они вместе с исходными и целевыми компонентами передаются в операции смешивания. Компоненты RGB и альфа-канала могут использовать разные операции. Возможные значения VkBlendOp, указывающие операции, следующие:
typedef enum VkBlendOp {
VK_BLEND_OP_ADD = 0,
VK_BLEND_OP_SUBTRACT = 1,
VK_BLEND_OP_REVERSE_SUBTRACT = 2,
VK_BLEND_OP_MIN = 3,
VK_BLEND_OP_MAX = 4,
} VkBlendOp; Описание
Семантика каждой базовой операции смешивания описана в таблице ниже:
| VkBlendOp | Компоненты RGB | Компонент альфа-канала |
|---|---|---|
| R = Rs0 × Sr + Rd × Dr | A = As0 × Sa + Ad × Da |
| R = Rs0 × Sr - Rd × Dr | A = As0 × Sa - Ad × Da |
| R = Rd × Dr - Rs0 × Sr | A = Ad × Da - As0 × Sa |
| R = min(Rs0,Rd) | A = min(As0,Ad) |
| R = max(Rs0,Rd) | A = max(As0,Ad) |
В этой таблице используются следующие соглашения:
- Rs0, Gs0, Bs0 и As0 представляют собой компоненты первого исходного цвета R, G, B и A соответственно.
- Rd, Gd, Bd и Ad представляют собой компоненты R, G, B и A цвета назначения. То есть, цвет, в настоящее время находящийся в соответствующем цветовом приложении для этого фрагмента/образца.
- Sr, Sg, Sb и Sa представляют собой компоненты коэффициента смешивания источника R, G, B и A соответственно.
- Dr, Dg, Db и Da представляют собой компоненты коэффициента смешивания назначения R, G, B и A соответственно.
Операция смешивания создает новый набор значений R, G, B и A, которые записываются в приложение буфера кадра. Если смешивание не включено для этого приложения, то R, G, B и A назначаются Rs0, Gs0, Bs0 и As0 соответственно.
Если цветовое приложение является фиксированного размера, компоненты исходных и целевых значений и коэффициентов смешивания обрезаются до [0,1] или [-1,1] соответственно для неподписанного нормализованного или подписанного нормализованного цветового приложения перед вычислением операций смешивания. Если цветовое приложение имеет формат с плавающей запятой, обрезка не происходит.
См. также
VkPipelineColorBlendAttachmentState
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBlendOp
VkBorderColor(3)
Имя
VkBorderColor - Указывает цвет границы, используемый для поиска текстур
Спецификация C
Возможные значения VkSamplerCreateInfo::borderColor, указывающие цвет границы, используемый для поиска текстур, следующие:
typedef enum VkBorderColor {
VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
} VkBorderColor; Описание
-
VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACKзадает прозрачный черный цвет в формате с плавающей запятой. -
VK_BORDER_COLOR_INT_TRANSPARENT_BLACKзадает прозрачный черный цвет в целочисленном формате. -
VK_BORDER_COLOR_FLOAT_OPAQUE_BLACKзадает непрозрачный черный цвет в формате с плавающей запятой. -
VK_BORDER_COLOR_INT_OPAQUE_BLACKзадает непрозрачный черный цвет в целочисленном формате. -
VK_BORDER_COLOR_FLOAT_OPAQUE_WHITEзадает непрозрачный белый цвет в формате с плавающей запятой. -
VK_BORDER_COLOR_INT_OPAQUE_WHITEзадает непрозрачный белый цвет в целочисленном формате.
Эти цвета подробно описаны в Texel Replacement.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBorderColor
VkBufferCreateFlagBits(3)
Имя
VkBufferCreateFlagBits - Битовая маска, указывающая дополнительные параметры буфера
Спецификация C
Биты, которые могут быть установлены в VkBufferCreateInfo::flags, указывающие дополнительные параметры буфера, следующие:
typedef enum VkBufferCreateFlagBits {
VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
} VkBufferCreateFlagBits; Описание
-
VK_BUFFER_CREATE_SPARSE_BINDING_BITуказывает, что буфер будет поддерживаться с помощью разреженного связывания памяти. -
VK_BUFFER_CREATE_SPARSE_RESIDENCY_BITуказывает, что буфер может частично поддерживаться с помощью разреженного связывания памяти. Буферы, созданные с этим флагом, также должны быть созданы с флагомVK_BUFFER_CREATE_SPARSE_BINDING_BIT. -
VK_BUFFER_CREATE_SPARSE_ALIASED_BITуказывает, что буфер будет поддерживаться с помощью разреженного связывания памяти с диапазонами памяти, которые могут одновременно поддерживать другой буфер (или другую часть того же буфера). Буферы, созданные с этим флагом, также должны быть созданы с флагомVK_BUFFER_CREATE_SPARSE_BINDING_BIT.
См. Sparse Resource Features и Physical Device Features для получения подробной информации о функциях разреженной памяти, поддерживаемых на устройстве.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferCreateFlagBits
VkBufferUsageFlagBits(3)
Имя
VkBufferUsageFlagBits - Битовая маска, указывающая допустимое использование буфера
Спецификация C
Биты, которые могут быть установлены в VkBufferCreateInfo::usage, указывающие поведение использования буфера, следующие:
typedef enum VkBufferUsageFlagBits {
VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
} VkBufferUsageFlagBits; Описание
-
VK_BUFFER_USAGE_TRANSFER_SRC_BITуказывает, что буфер может использоваться в качестве источника команды передачи (см. определениеVK_PIPELINE_STAGE_TRANSFER_BIT). -
VK_BUFFER_USAGE_TRANSFER_DST_BITуказывает, что буфер может использоваться в качестве получателя команды передачи. -
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BITуказывает, что буфер может использоваться для созданияVkBufferView, подходящего для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER. -
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BITуказывает, что буфер может использоваться для созданияVkBufferView, подходящего для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER. -
VK_BUFFER_USAGE_UNIFORM_BUFFER_BITуказывает, что буфер может использоваться вVkDescriptorBufferInfo, подходящем для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_UNIFORM_BUFFERилиVK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC. -
VK_BUFFER_USAGE_STORAGE_BUFFER_BITуказывает, что буфер может использоваться вVkDescriptorBufferInfo, подходящем для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_STORAGE_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. -
VK_BUFFER_USAGE_INDEX_BUFFER_BITуказывает, что буфер подходит для передачи в качестве параметраbufferвvkCmdBindIndexBuffer. -
VK_BUFFER_USAGE_VERTEX_BUFFER_BITуказывает, что буфер подходит для передачи в качестве элемента массиваpBuffersвvkCmdBindVertexBuffers. -
VK_BUFFER_USAGE_INDIRECT_BUFFER_BITуказывает, что буфер подходит для передачи в качестве параметраbufferвvkCmdDrawIndirect,vkCmdDrawIndexedIndirectилиvkCmdDispatchIndirect.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferUsageFlagBits
VkColorComponentFlagBits(3)
Имя
VkColorComponentFlagBits - Битовая маска, управляющая тем, какие компоненты записываются в буфер кадра
Спецификация C
Биты, которые могут быть установлены в VkPipelineColorBlendAttachmentState::colorWriteMask для определения того, записываются ли окончательные цветовые значения R, G, B и A в приложение буфера кадра, следующие:
typedef enum VkColorComponentFlagBits {
VK_COLOR_COMPONENT_R_BIT = 0x00000001,
VK_COLOR_COMPONENT_G_BIT = 0x00000002,
VK_COLOR_COMPONENT_B_BIT = 0x00000004,
VK_COLOR_COMPONENT_A_BIT = 0x00000008,
} VkColorComponentFlagBits; Описание
-
VK_COLOR_COMPONENT_R_BITуказывает, что значение R записывается в цветовое приложение для соответствующего образца. В противном случае значение в памяти не изменяется. -
VK_COLOR_COMPONENT_G_BITуказывает, что значение G записывается в цветовое приложение для соответствующего образца. В противном случае значение в памяти не изменяется. -
VK_COLOR_COMPONENT_B_BITуказывает, что значение B записывается в цветовое приложение для соответствующего образца. В противном случае значение в памяти не изменяется. -
VK_COLOR_COMPONENT_A_BITуказывает, что значение A записывается в цветовое приложение для соответствующего образца. В противном случае значение в памяти не изменяется.
Операция маски записи цвета применяется независимо от того, включено ли смешивание.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkColorComponentFlagBits
VkCommandBufferLevel(3)
Имя
VkCommandBufferLevel - Перечислитель, указывающий уровень буфера команд
Спецификация C
Возможные значения VkCommandBufferAllocateInfo::flags, указывающие уровень буфера команд, следующие:
typedef enum VkCommandBufferLevel {
VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
} VkCommandBufferLevel; Описание
-
VK_COMMAND_BUFFER_LEVEL_PRIMARYуказывает основной буфер команд. -
VK_COMMAND_BUFFER_LEVEL_SECONDARYуказывает вторичный буфер команд.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferLevel
VkCommandBufferResetFlagBits(3)
Имя
VkCommandBufferResetFlagBits - Битовая маска, управляющая поведением сброса буфера команд
Спецификация C
Биты, которые могут быть установлены в vkResetCommandBuffer::flags для управления операцией сброса, следующие:
typedef enum VkCommandBufferResetFlagBits {
VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
} VkCommandBufferResetFlagBits; Описание
-
VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BITуказывает, что большинство или все используемые в данный момент буфером команд ресурсы памяти должны быть возвращены в родительский пул команд. Если этот флаг не установлен, то буфер команд может удерживать ресурсы памяти и повторно использовать их при записи команд.commandBufferперемещается в начальное состояние.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
END_OF_DOCUMENT_MARKERhttps://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferResetFlagBits
VkCommandBufferUsageFlagBits(3)
Имя
VkCommandBufferUsageFlagBits - Битовая маска, указывающая поведение использования буфера команд
C Спецификация
Биты, которые можно установить в VkCommandBufferBeginInfo::flags для указания поведения использования буфера команд:
typedef enum VkCommandBufferUsageFlagBits {
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
} VkCommandBufferUsageFlagBits; Описание
-
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BITуказывает, что каждая запись буфера команд будет отправлена только один раз, и буфер команд будет сброшен и записан снова между каждой отправкой. -
VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BITуказывает, что вторичный буфер команд считается полностью находящимся внутри прохода отрисовки. Если это первичный буфер команд, то этот бит игнорируется. -
VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BITуказывает, что буфер команд может быть повторно отправлен в очередь, пока он находится в состоянии ожидания, и записан в несколько первичных буферов команд.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferUsageFlagBits
VkCommandPoolCreateFlagBits(3)
Имя
VkCommandPoolCreateFlagBits - Битовая маска, указывающая поведение использования пула команд
C Спецификация
Биты, которые можно установить в VkCommandPoolCreateInfo::flags для указания поведения использования пула команд:
typedef enum VkCommandPoolCreateFlagBits {
VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
} VkCommandPoolCreateFlagBits; Описание
-
VK_COMMAND_POOL_CREATE_TRANSIENT_BITуказывает, что буферы команд, выделенные из пула, будут кратковременными, а это значит, что они будут сброшены или освобождены в относительно короткие сроки. Этот флаг может использоваться реализацией для управления поведением выделения памяти внутри пула. -
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BITпозволяет любому буферу команд, выделенному из пула, быть индивидуально сброшенным в начальное состояние; либо путем вызова vkResetCommandBuffer, либо путем неявного сброса при вызове vkBeginCommandBuffer. Если этот флаг не установлен в пуле, тоvkResetCommandBufferне должен вызываться ни для одного буфера команд, выделенного из этого пула.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPoolCreateFlagBits
VkCommandPoolResetFlagBits(3)
Имя
VkCommandPoolResetFlagBits - Битовая маска, контролирующая поведение сброса пула команд
C Спецификация
Биты, которые можно установить в vkResetCommandPool::flags для управления операцией сброса:
typedef enum VkCommandPoolResetFlagBits {
VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
} VkCommandPoolResetFlagBits; Описание
-
VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BITуказывает, что сброс пула команд возвращает все ресурсы из пула команд обратно в систему.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPoolResetFlagBits
VkCompareOp(3)
Имя
VkCompareOp - Функция сравнения трафарета
C Спецификация
Возможные значения VkStencilOpState::compareOp, указывающие функцию сравнения трафарета:
typedef enum VkCompareOp {
VK_COMPARE_OP_NEVER = 0,
VK_COMPARE_OP_LESS = 1,
VK_COMPARE_OP_EQUAL = 2,
VK_COMPARE_OP_LESS_OR_EQUAL = 3,
VK_COMPARE_OP_GREATER = 4,
VK_COMPARE_OP_NOT_EQUAL = 5,
VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
VK_COMPARE_OP_ALWAYS = 7,
} VkCompareOp; Описание
-
VK_COMPARE_OP_NEVERуказывает, что тест никогда не проходит. -
VK_COMPARE_OP_LESSуказывает, что тест проходит, когда R < S. -
VK_COMPARE_OP_EQUALуказывает, что тест проходит, когда R = S. -
VK_COMPARE_OP_LESS_OR_EQUALуказывает, что тест проходит, когда R ≤ S. -
VK_COMPARE_OP_GREATERуказывает, что тест проходит, когда R > S. -
VK_COMPARE_OP_NOT_EQUALуказывает, что тест проходит, когда R ≠ S. -
VK_COMPARE_OP_GREATER_OR_EQUALуказывает, что тест проходит, когда R ≥ S. -
VK_COMPARE_OP_ALWAYSуказывает, что тест всегда проходит.
См. также
VkPipelineDepthStencilStateCreateInfo, VkSamplerCreateInfo, VkStencilOpState
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCompareOp
VkComponentSwizzle(3)
Имя
VkComponentSwizzle - Указывает, как компонент перемешивается
C Спецификация
Возможные значения элементов VkComponentMapping, указывающие значения компонентов, размещаемые в каждом компоненте выходного вектора:
typedef enum VkComponentSwizzle {
VK_COMPONENT_SWIZZLE_IDENTITY = 0,
VK_COMPONENT_SWIZZLE_ZERO = 1,
VK_COMPONENT_SWIZZLE_ONE = 2,
VK_COMPONENT_SWIZZLE_R = 3,
VK_COMPONENT_SWIZZLE_G = 4,
VK_COMPONENT_SWIZZLE_B = 5,
VK_COMPONENT_SWIZZLE_A = 6,
} VkComponentSwizzle; Описание
-
VK_COMPONENT_SWIZZLE_IDENTITYуказывает, что компонент устанавливается в тождественное перемешивание. -
VK_COMPONENT_SWIZZLE_ZEROуказывает, что компонент устанавливается в ноль. -
VK_COMPONENT_SWIZZLE_ONEуказывает, что компонент устанавливается в значение 1 или 1.0 в зависимости от того, является ли тип формата представления изображения целочисленным или с плавающей точкой соответственно, как определено в разделе Определение формата для каждого VkFormat. -
VK_COMPONENT_SWIZZLE_Rуказывает, что компонент устанавливается в значение компонента R изображения. -
VK_COMPONENT_SWIZZLE_Gуказывает, что компонент устанавливается в значение компонента G изображения. -
VK_COMPONENT_SWIZZLE_Bуказывает, что компонент устанавливается в значение компонента B изображения. -
VK_COMPONENT_SWIZZLE_Aуказывает, что компонент устанавливается в значение компонента A изображения.
Установка тождественного перемешивания на компонент эквивалентна установке тождественного отображения на этот компонент. То есть:
| Компонент | Тождественное отображение |
|---|---|
|
|
|
|
|
|
|
|
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkComponentSwizzle
VkCullModeFlagBits(3)
Имя
VkCullModeFlagBits - Битовая маска, контролирующая отсечение треугольников
C Спецификация
После определения ориентации треугольников они отсекаются в соответствии со свойством VkPipelineRasterizationStateCreateInfo::cullMode текущего активного конвейера. Возможные значения:
typedef enum VkCullModeFlagBits {
VK_CULL_MODE_NONE = 0,
VK_CULL_MODE_FRONT_BIT = 0x00000001,
VK_CULL_MODE_BACK_BIT = 0x00000002,
VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
} VkCullModeFlagBits; Описание
-
VK_CULL_MODE_NONEуказывает, что треугольники не отбрасываются -
VK_CULL_MODE_FRONT_BITуказывает, что треугольники с передней гранью отбрасываются -
VK_CULL_MODE_BACK_BITуказывает, что треугольники с задней гранью отбрасываются -
VK_CULL_MODE_FRONT_AND_BACKуказывает, что все треугольники отбрасываются.
После отсечения фрагменты создаются для любых треугольников, которые не были отброшены.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCullModeFlagBits
VkDependencyFlagBits(3)
Имя
VkDependencyFlagBits - Битовая маска, указывающая, как формируются зависимости выполнения и памяти
C Спецификация
Биты, которые можно установить в vkCmdPipelineBarrier::dependencyFlags, указывающие, как формируются зависимости выполнения и памяти:
typedef enum VkDependencyFlagBits {
VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
} VkDependencyFlagBits; Описание
-
VK_DEPENDENCY_BY_REGION_BITуказывает, что зависимости будут локальными для буфера кадра.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDependencyFlagBits
VkDescriptorPoolCreateFlagBits(3)
Имя
VkDescriptorPoolCreateFlagBits - Битовая маска, определяющая определенные поддерживаемые операции в пуле дескрипторов
C Спецификация
Биты, которые можно установить в VkDescriptorPoolCreateInfo::flags для включения операций в пуле дескрипторов:
typedef enum VkDescriptorPoolCreateFlagBits {
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
} VkDescriptorPoolCreateFlagBits; Описание
-
VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BITуказывает, что наборы дескрипторов могут возвращать свои индивидуальные выделения в пул, т.е. разрешены все vkAllocateDescriptorSets, vkFreeDescriptorSets и vkResetDescriptorPool. В противном случае наборы дескрипторов, выделенные из пула, не должны быть индивидуально освобождены обратно в пул, т.е. разрешены только vkAllocateDescriptorSets и vkResetDescriptorPool.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPoolCreateFlagBits
VkDescriptorSetLayoutCreateFlagBits(3)
Имя
VkDescriptorSetLayoutCreateFlagBits - Битовая маска, определяющая свойства макета набора дескрипторов
C Спецификация
Биты, которые можно установить в VkDescriptorSetLayoutCreateInfo::flags для указания параметров макета набора дескрипторов:
typedef enum VkDescriptorSetLayoutCreateFlagBits {
} VkDescriptorSetLayoutCreateFlagBits; См. также
VkDescriptorSetLayoutCreateFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
VkDescriptorType(3)
Имя
VkDescriptorType - Указывает тип дескриптора в наборе дескрипторов
C Спецификация
Тип дескрипторов в наборе дескрипторов задается VkWriteDescriptorSet::descriptorType, который должен быть одним из значений:
typedef enum VkDescriptorType {
VK_DESCRIPTOR_TYPE_SAMPLER = 0,
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
} VkDescriptorType; Описание
-
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, илиVK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMICуказывают, что элементы массива VkWriteDescriptorSet::pBufferInfoструктур VkDescriptorBufferInfo будут использоваться для обновления дескрипторов, а другие массивы будут игнорироваться. -
VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFERилиVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERуказывают, что массив VkWriteDescriptorSet::pTexelBufferViewбудет использоваться для обновления дескрипторов, а другие массивы будут игнорироваться. -
VK_DESCRIPTOR_TYPE_SAMPLER,VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, илиVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENTуказывают, что элементы массива VkWriteDescriptorSet::pImageInfoструктур VkDescriptorImageInfo будут использоваться для обновления дескрипторов, а другие массивы будут игнорироваться.
См. также
VkDescriptorPoolSize, VkDescriptorSetLayoutBinding, VkWriteDescriptorSet
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorType
VkDynamicState(3)
Имя
VkDynamicState - Указывает, какое динамическое состояние берется из команд динамического состояния
C Спецификация
Источник различных частей динамического состояния задается свойством VkPipelineDynamicStateCreateInfo::pDynamicStates текущего активного конвейера, каждый элемент которого должен быть одним из значений:
typedef enum VkDynamicState {
VK_DYNAMIC_STATE_VIEWPORT = 0,
VK_DYNAMIC_STATE_SCISSOR = 1,
VK_DYNAMIC_STATE_LINE_WIDTH = 2,
VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
} VkDynamicState; Описание
-
VK_DYNAMIC_STATE_VIEWPORTуказывает, что состояниеpViewportsвVkPipelineViewportStateCreateInfoбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetViewport перед любыми командами отрисовки. Количество видовых экранов, используемых конвейером, по-прежнему задается членомviewportCountVkPipelineViewportStateCreateInfo. -
VK_DYNAMIC_STATE_SCISSORуказывает, что состояниеpScissorsвVkPipelineViewportStateCreateInfoбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetScissor перед любыми командами отрисовки. Количество прямоугольников отсечения, используемых конвейером, по-прежнему задается членомscissorCountVkPipelineViewportStateCreateInfo. -
VK_DYNAMIC_STATE_LINE_WIDTHуказывает, что состояниеlineWidthвVkPipelineRasterizationStateCreateInfoбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetLineWidth перед любыми командами отрисовки, которые генерируют примитивы линий для растеризатора. -
VK_DYNAMIC_STATE_DEPTH_BIASуказывает, что состоянияdepthBiasConstantFactor,depthBiasClampиdepthBiasSlopeFactorвVkPipelineRasterizationStateCreateInfoбудут игнорироваться и должны устанавливаться динамически с помощью vkCmdSetDepthBias перед выполнением любых отрисовок сdepthBiasEnableвVkPipelineRasterizationStateCreateInfoустановленным вVK_TRUE. -
VK_DYNAMIC_STATE_BLEND_CONSTANTSуказывает, что состояниеblendConstantsвVkPipelineColorBlendStateCreateInfoбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetBlendConstants перед выполнением любых отрисовок с состоянием конвейера, у которого членVkPipelineColorBlendAttachmentStateblendEnableустановлен вVK_TRUE, и любых функций смешивания, использующих постоянный цвет смешивания. -
VK_DYNAMIC_STATE_DEPTH_BOUNDSуказывает, что состоянияminDepthBoundsиmaxDepthBoundsVkPipelineDepthStencilStateCreateInfo будут игнорироваться и должны устанавливаться динамически с помощью vkCmdSetDepthBounds перед выполнением любых отрисовок с состоянием конвейера, у которого членVkPipelineDepthStencilStateCreateInfodepthBoundsTestEnableустановлен вVK_TRUE. -
VK_DYNAMIC_STATE_STENCIL_COMPARE_MASKуказывает, что состояниеcompareMaskвVkPipelineDepthStencilStateCreateInfoкак дляfront, так и дляbackбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetStencilCompareMask перед выполнением любых отрисовок с состоянием конвейера, у которого членVkPipelineDepthStencilStateCreateInfostencilTestEnableустановлен вVK_TRUE -
VK_DYNAMIC_STATE_STENCIL_WRITE_MASKуказывает, что состояниеwriteMaskвVkPipelineDepthStencilStateCreateInfoкак дляfront, так и дляbackбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetStencilWriteMask перед выполнением любых отрисовок с состоянием конвейера, у которого членVkPipelineDepthStencilStateCreateInfostencilTestEnableустановлен вVK_TRUE -
VK_DYNAMIC_STATE_STENCIL_REFERENCEуказывает, что состояниеreferenceвVkPipelineDepthStencilStateCreateInfoкак дляfront, так и дляbackбудет игнорироваться и должно устанавливаться динамически с помощью vkCmdSetStencilReference перед выполнением любых отрисовок с состоянием конвейера, у которого членVkPipelineDepthStencilStateCreateInfostencilTestEnableустановлен вVK_TRUE
См. также
VkPipelineDynamicStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDynamicState
VkFenceCreateFlagBits(3)
Имя
VkFenceCreateFlagBits - Битовая маска, определяющая начальное состояние и поведение ограждения
C Спецификация
typedef enum VkFenceCreateFlagBits {
VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
} VkFenceCreateFlagBits; Описание
-
VK_FENCE_CREATE_SIGNALED_BITуказывает, что объект ограждения создается в установленном состоянии. В противном случае он создается в несброшенном состоянии.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFenceCreateFlagBits
VkFilter(3)
Имя
VkFilter - Указывает фильтры, используемые для поиска текстур
C Спецификация
Возможные значения параметров VkSamplerCreateInfo::magFilter и minFilter, указывающие фильтры, используемые для поиска текстур:
typedef enum VkFilter {
VK_FILTER_NEAREST = 0,
VK_FILTER_LINEAR = 1,
} VkFilter; Описание
-
VK_FILTER_NEARESTуказывает ближайшую фильтрацию. -
VK_FILTER_LINEARуказывает линейную фильтрацию.
Эти фильтры подробно описаны в Texel Filtering.
См. также
VkSamplerCreateInfo, vkCmdBlitImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFilter
VkFormat(3)
Имя
VkFormat - Доступные форматы изображений
C Спецификация
Форматы изображений, которые можно передавать в команды Vulkan и которые могут возвращаться из них:
typedef enum VkFormat {
VK_FORMAT_UNDEFINED = 0,
VK_FORMAT_R4G4_UNORM_PACK8 = 1,
VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
VK_FORMAT_R8_UNORM = 9,
VK_FORMAT_R8_SNORM = 10,
VK_FORMAT_R8_USCALED = 11,
VK_FORMAT_R8_SSCALED = 12,
VK_FORMAT_R8_UINT = 13,
VK_FORMAT_R8_SINT = 14,
VK_FORMAT_R8_SRGB = 15,
VK_FORMAT_R8G8_UNORM = 16,
VK_FORMAT_R8G8_SNORM = 17,
VK_FORMAT_R8G8_USCALED = 18,
VK_FORMAT_R8G8_SSCALED = 19,
VK_FORMAT_R8G8_UINT = 20,
VK_FORMAT_R8G8_SINT = 21,
VK_FORMAT_R8G8_SRGB = 22,
VK_FORMAT_R8G8B8_UNORM = 23,
VK_FORMAT_R8G8B8_SNORM = 24,
VK_FORMAT_R8G8B8_USCALED = 25,
VK_FORMAT_R8G8B8_SSCALED = 26,
VK_FORMAT_R8G8B8_UINT = 27,
VK_FORMAT_R8G8B8_SINT = 28,
VK_FORMAT_R8G8B8_SRGB = 29,
VK_FORMAT_B8G8R8_UNORM = 30,
VK_FORMAT_B8G8R8_SNORM = 31,
VK_FORMAT_B8G8R8_USCALED = 32,
VK_FORMAT_B8G8R8_SSCALED = 33,
VK_FORMAT_B8G8R8_UINT = 34,
VK_FORMAT_B8G8R8_SINT = 35,
VK_FORMAT_B8G8R8_SRGB = 36,
VK_FORMAT_R8G8B8A8_UNORM = 37,
VK_FORMAT_R8G8B8A8_SNORM = 38,
VK_FORMAT_R8G8B8A8_USCALED = 39,
VK_FORMAT_R8G8B8A8_SSCALED = 40,
VK_FORMAT_R8G8B8A8_UINT = 41,
VK_FORMAT_R8G8B8A8_SINT = 42,
VK_FORMAT_R8G8B8A8_SRGB = 43,
VK_FORMAT_B8G8R8A8_UNORM = 44,
VK_FORMAT_B8G8R8A8_SNORM = 45,
VK_FORMAT_B8G8R8A8_USCALED = 46,
VK_FORMAT_B8G8R8A8_SSCALED = 47,
VK_FORMAT_B8G8R8A8_UINT = 48,
VK_FORMAT_B8G8R8A8_SINT = 49,
VK_FORMAT_B8G8R8A8_SRGB = 50,
VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
VK_FORMAT_R16_UNORM = 70,
VK_FORMAT_R16_SNORM = 71,
VK_FORMAT_R16_USCALED = 72,
VK_FORMAT_R16_SSCALED = 73,
VK_FORMAT_R16_UINT = 74,
VK_FORMAT_R16_SINT = 75,
VK_FORMAT_R16_SFLOAT = 76,
VK_FORMAT_R16G16_UNORM = 77,
VK_FORMAT_R16G16_SNORM = 78,
VK_FORMAT_R16G16_USCALED = 79,
VK_FORMAT_R16G16_SSCALED = 80,
VK_FORMAT_R16G16_UINT = 81,
VK_FORMAT_R16G16_SINT = 82,
VK_FORMAT_R16G16_SFLOAT = 83,
VK_FORMAT_R16G16B16_UNORM = 84,
VK_FORMAT_R16G16B16_SNORM = 85,
VK_FORMAT_R16G16B16_USCALED = 86,
VK_FORMAT_R16G16B16_SSCALED = 87,
VK_FORMAT_R16G16B16_UINT = 88,
VK_FORMAT_R16G16B16_SINT = 89,
VK_FORMAT_R16G16B16_SFLOAT = 90,
VK_FORMAT_R16G16B16A16_UNORM = 91,
VK_FORMAT_R16G16B16A16_SNORM = 92,
VK_FORMAT_R16G16B16A16_USCALED = 93,
VK_FORMAT_R16G16B16A16_SSCALED = 94,
VK_FORMAT_R16G16B16A16_UINT = 95,
VK_FORMAT_R16G16B16A16_SINT = 96,
VK_FORMAT_R16G16B16A16_SFLOAT = 97,
VK_FORMAT_R32_UINT = 98,
VK_FORMAT_R32_SINT = 99,
VK_FORMAT_R32_SFLOAT = 100,
VK_FORMAT_R32G32_UINT = 101,
VK_FORMAT_R32G32_SINT = 102,
VK_FORMAT_R32G32_SFLOAT = 103,
VK_FORMAT_R32G32B32_UINT = 104,
VK_FORMAT_R32G32B32_SINT = 105,
VK_FORMAT_R32G32B32_SFLOAT = 106,
VK_FORMAT_R32G32B32A32_UINT = 107,
VK_FORMAT_R32G32B32A32_SINT = 108,
VK_FORMAT_R32G32B32A32_SFLOAT = 109,
VK_FORMAT_R64_UINT = 110,
VK_FORMAT_R64_SINT = 111,
VK_FORMAT_R64_SFLOAT = 112,
VK_FORMAT_R64G64_UINT = 113,
VK_FORMAT_R64G64_SINT = 114,
VK_FORMAT_R64G64_SFLOAT = 115,
VK_FORMAT_R64G64B64_UINT = 116,
VK_FORMAT_R64G64B64_SINT = 117,
VK_FORMAT_R64G64B64_SFLOAT = 118,
VK_FORMAT_R64G64B64A64_UINT = 119,
VK_FORMAT_R64G64B64A64_SINT = 120,
VK_FORMAT_R64G64B64A64_SFLOAT = 121,
VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
VK_FORMAT_D16_UNORM = 124,
VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
VK_FORMAT_D32_SFLOAT = 126,
VK_FORMAT_S8_UINT = 127,
VK_FORMAT_D16_UNORM_S8_UINT = 128,
VK_FORMAT_D24_UNORM_S8_UINT = 129,
VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
VK_FORMAT_BC2_UNORM_BLOCK = 135,
VK_FORMAT_BC2_SRGB_BLOCK = 136,
VK_FORMAT_BC3_UNORM_BLOCK = 137,
VK_FORMAT_BC3_SRGB_BLOCK = 138,
VK_FORMAT_BC4_UNORM_BLOCK = 139,
VK_FORMAT_BC4_SNORM_BLOCK = 140,
VK_FORMAT_BC5_UNORM_BLOCK = 141,
VK_FORMAT_BC5_SNORM_BLOCK = 142,
VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
VK_FORMAT_BC7_UNORM_BLOCK = 145,
VK_FORMAT_BC7_SRGB_BLOCK = 146,
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
} VkFormat; Описание
-
VK_FORMAT_UNDEFINEDуказывает, что формат не указан. -
VK_FORMAT_R4G4_UNORM_PACK8задаёт двухкомпонентный, 8-битный упакованный беззнаковый нормализованный формат, имеющий 4-битный R-компонент в битах 4..7 и 4-битный G-компонент в битах 0..3. -
VK_FORMAT_R4G4B4A4_UNORM_PACK16задаёт четырёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 4-битный R-компонент в битах 12..15, 4-битный G-компонент в битах 8..11, 4-битный B-компонент в битах 4..7 и 4-битный A-компонент в битах 0..3. -
VK_FORMAT_B4G4R4A4_UNORM_PACK16задаёт четырёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 4-битный B-компонент в битах 12..15, 4-битный G-компонент в битах 8..11, 4-битный R-компонент в битах 4..7 и 4-битный A-компонент в битах 0..3. -
VK_FORMAT_R5G6B5_UNORM_PACK16задаёт трёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 5-битный R-компонент в битах 11..15, 6-битный G-компонент в битах 5..10 и 5-битный B-компонент в битах 0..4. -
VK_FORMAT_B5G6R5_UNORM_PACK16задаёт трёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 5-битный B-компонент в битах 11..15, 6-битный G-компонент в битах 5..10 и 5-битный R-компонент в битах 0..4. -
VK_FORMAT_R5G5B5A1_UNORM_PACK16задаёт четырёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 5-битный R-компонент в битах 11..15, 5-битный G-компонент в битах 6..10, 5-битный B-компонент в битах 1..5 и 1-битный A-компонент в бите 0. -
VK_FORMAT_B5G5R5A1_UNORM_PACK16задаёт четырёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 5-битный B-компонент в битах 11..15, 5-битный G-компонент в битах 6..10, 5-битный R-компонент в битах 1..5 и 1-битный A-компонент в бите 0. -
VK_FORMAT_A1R5G5B5_UNORM_PACK16задаёт четырёхкомпонентный, 16-битный упакованный беззнаковый нормализованный формат, имеющий 1-битный A-компонент в бите 15, 5-битный R-компонент в битах 10..14, 5-битный G-компонент в битах 5..9 и 5-битный B-компонент в битах 0..4. -
VK_FORMAT_R8_UNORMзадаёт однокомпонентный, 8-битный беззнаковый нормализованный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_SNORMзадаёт однокомпонентный, 8-битный знаковый нормализованный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_USCALEDзадаёт однокомпонентный, 8-битный беззнаковый масштабированный целочисленный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_SSCALEDзадаёт однокомпонентный, 8-битный знаковый масштабированный целочисленный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_UINTзадаёт однокомпонентный, 8-битный беззнаковый целочисленный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_SINTзадаёт однокомпонентный, 8-битный знаковый целочисленный формат, имеющий один 8-битный R-компонент. -
VK_FORMAT_R8_SRGBзадаёт однокомпонентный, 8-битный беззнаковый нормализованный формат, имеющий один 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB. -
VK_FORMAT_R8G8_UNORMзадаёт двухкомпонентный, 16-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_SNORMзадаёт двухкомпонентный, 16-битный знаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_USCALEDзадаёт двухкомпонентный, 16-битный беззнаковый масштабированный целочисленный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_SSCALEDзадаёт двухкомпонентный, 16-битный знаковый масштабированный целочисленный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_UINTзадаёт двухкомпонентный, 16-битный беззнаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_SINTзадаёт двухкомпонентный, 16-битный знаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0 и 8-битный G-компонент в байте 1. -
VK_FORMAT_R8G8_SRGBзадаёт двухкомпонентный, 16-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB в байте 0, и 8-битный G-компонент, хранящийся с нелинейным кодированием sRGB в байте 1. -
VK_FORMAT_R8G8B8_UNORMзадаёт трёхкомпонентный, 24-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_SNORMзадаёт трёхкомпонентный, 24-битный знаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_USCALEDзадаёт трёхкомпонентный, 24-битный беззнаковый масштабированный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_SSCALEDзадаёт трёхкомпонентный, 24-битный знаковый масштабированный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_UINTзадаёт трёхкомпонентный, 24-битный беззнаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_SINTзадаёт трёхкомпонентный, 24-битный знаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный B-компонент в байте 2. -
VK_FORMAT_R8G8B8_SRGBзадаёт трёхкомпонентный, 24-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB в байте 0, 8-битный G-компонент, хранящийся с нелинейным кодированием sRGB в байте 1, и 8-битный B-компонент, хранящийся с нелинейным кодированием sRGB в байте 2. -
VK_FORMAT_B8G8R8_UNORMзадаёт трёхкомпонентный, 24-битный беззнаковый нормализованный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_SNORMзадаёт трёхкомпонентный, 24-битный знаковый нормализованный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_USCALEDзадаёт трёхкомпонентный, 24-битный беззнаковый масштабированный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_SSCALEDзадаёт трёхкомпонентный, 24-битный знаковый масштабированный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_UINTзадаёт трёхкомпонентный, 24-битный беззнаковый целочисленный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_SINTзадаёт трёхкомпонентный, 24-битный знаковый целочисленный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1 и 8-битный R-компонент в байте 2. -
VK_FORMAT_B8G8R8_SRGBзадаёт трёхкомпонентный, 24-битный беззнаковый нормализованный формат, имеющий 8-битный B-компонент, хранящийся с нелинейным кодированием sRGB в байте 0, 8-битный G-компонент, хранящийся с нелинейным кодированием sRGB в байте 1, и 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB в байте 2. -
VK_FORMAT_R8G8B8A8_UNORMзадаёт четырёхкомпонентный, 32-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_SNORMзадаёт четырёхкомпонентный, 32-битный знаковый нормализованный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_USCALEDзадаёт четырёхкомпонентный, 32-битный беззнаковый масштабированный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_SSCALEDзадаёт четырёхкомпонентный, 32-битный знаковый масштабированный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_UINTзадаёт четырёхкомпонентный, 32-битный беззнаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_SINTзадаёт четырёхкомпонентный, 32-битный знаковый целочисленный формат, имеющий 8-битный R-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный B-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_R8G8B8A8_SRGBзадаёт четырёхкомпонентный, 32-битный беззнаковый нормализованный формат, имеющий 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB в байте 0, 8-битный G-компонент, хранящийся с нелинейным кодированием sRGB в байте 1, 8-битный B-компонент, хранящийся с нелинейным кодированием sRGB в байте 2, и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_UNORMзадаёт четырёхкомпонентный, 32-битный беззнаковый нормализованный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_SNORMзадаёт четырёхкомпонентный, 32-битный знаковый нормализованный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_USCALEDзадаёт четырёхкомпонентный, 32-битный беззнаковый масштабированный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_SSCALEDзадаёт четырёхкомпонентный, 32-битный знаковый масштабированный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_UINTзадаёт четырёхкомпонентный, 32-битный беззнаковый целочисленный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_SINTзадаёт четырёхкомпонентный, 32-битный знаковый целочисленный формат, имеющий 8-битный B-компонент в байте 0, 8-битный G-компонент в байте 1, 8-битный R-компонент в байте 2 и 8-битный A-компонент в байте 3. -
VK_FORMAT_B8G8R8A8_SRGBзадаёт четырёхкомпонентный, 32-битный беззнаковый нормализованный формат, имеющий 8-битный B-компонент, хранящийся с нелинейным кодированием sRGB в байте 0, 8-битный G-компонент, хранящийся с нелинейным кодированием sRGB в байте 1, 8-битный R-компонент, хранящийся с нелинейным кодированием sRGB в байте 2, и 8-битный A-компонент в байте 3. -
VK_FORMAT_A8B8G8R8_UNORM_PACK32задаёт четырёхкомпонентный, 32-битный упакованный беззнаковый нормализованный формат, имеющий 8-битный A-компонент в битах 24..31, 8-битный B-компонент в битах 16..23, 8-битный G-компонент в битах 8..15 и 8-битный R-компонент в битах 0..7. -
VK_FORMAT_A8B8G8R8_SNORM_PACK32задаёт четырёхкомпонентный, 32-битный упакованный знаковый нормализованный формат, имеющий 8-битный A-компонент в битах 24..31, 8-битный B-компонент в битах 16..23, 8-битный G-компонент в битах 8..15 и 8-битный R-компонент в битах 0..7. -
VK_FORMAT_A8B8G8R8_USCALED_PACK32задаёт четырёхкомпонентный, 32-битный упакованный беззнаковый масштабированный целочисленный формат, имеющий 8-битный A-компонент в битах 24..31, 8-битный B-компонент в битах 16..23, 8-битный G-компонент в битах 8..15 и 8-битный R-компонент в битах 0..7. -
VK_FORMAT_A8B8G8R8_SSCALED_PACK32задаёт четырёхкомпонентный, 32-битный упакованный знаковый масштабированный целочисленный формат, имеющий 8-битный A-компонент в битах 24..31, 8-битный B-компонент в битах 16..23, 8-битный G-компонент в битах 8..15 и 8-битный R-компонент в битах 0..7.
-
VK_FORMAT_A8B8G8R8_UINT_PACK32specifies a four-component, 32-bit packed unsigned integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7. -
VK_FORMAT_A8B8G8R8_SINT_PACK32specifies a four-component, 32-bit packed signed integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7. -
VK_FORMAT_A8B8G8R8_SRGB_PACK32specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in bits 0..7. -
VK_FORMAT_A2R10G10B10_UNORM_PACK32specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2R10G10B10_SNORM_PACK32specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2R10G10B10_USCALED_PACK32specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2R10G10B10_SSCALED_PACK32specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2R10G10B10_UINT_PACK32specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2R10G10B10_SINT_PACK32specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9. -
VK_FORMAT_A2B10G10R10_UNORM_PACK32specifies a four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_A2B10G10R10_SNORM_PACK32specifies a four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_A2B10G10R10_USCALED_PACK32specifies a four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_A2B10G10R10_SSCALED_PACK32specifies a four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_A2B10G10R10_UINT_PACK32specifies a four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_A2B10G10R10_SINT_PACK32specifies a four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9. -
VK_FORMAT_R16_UNORMspecifies a one-component, 16-bit unsigned normalized format that has a single 16-bit R component. -
VK_FORMAT_R16_SNORMspecifies a one-component, 16-bit signed normalized format that has a single 16-bit R component. -
VK_FORMAT_R16_USCALEDspecifies a one-component, 16-bit unsigned scaled integer format that has a single 16-bit R component. -
VK_FORMAT_R16_SSCALEDspecifies a one-component, 16-bit signed scaled integer format that has a single 16-bit R component. -
VK_FORMAT_R16_UINTspecifies a one-component, 16-bit unsigned integer format that has a single 16-bit R component. -
VK_FORMAT_R16_SINTspecifies a one-component, 16-bit signed integer format that has a single 16-bit R component. -
VK_FORMAT_R16_SFLOATspecifies a one-component, 16-bit signed floating-point format that has a single 16-bit R component. -
VK_FORMAT_R16G16_UNORMspecifies a two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_SNORMspecifies a two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_USCALEDspecifies a two-component, 32-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_SSCALEDspecifies a two-component, 32-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_UINTspecifies a two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_SINTspecifies a two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16_SFLOATspecifies a two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3. -
VK_FORMAT_R16G16B16_UNORMspecifies a three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_SNORMspecifies a three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_USCALEDspecifies a three-component, 48-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_SSCALEDspecifies a three-component, 48-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_UINTspecifies a three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_SINTspecifies a three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16_SFLOATspecifies a three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5. -
VK_FORMAT_R16G16B16A16_UNORMspecifies a four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_SNORMspecifies a four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_USCALEDspecifies a four-component, 64-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_SSCALEDspecifies a four-component, 64-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_UINTspecifies a four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_SINTspecifies a four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R16G16B16A16_SFLOATspecifies a four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7. -
VK_FORMAT_R32_UINTspecifies a one-component, 32-bit unsigned integer format that has a single 32-bit R component. -
VK_FORMAT_R32_SINTspecifies a one-component, 32-bit signed integer format that has a single 32-bit R component. -
VK_FORMAT_R32_SFLOATspecifies a one-component, 32-bit signed floating-point format that has a single 32-bit R component. -
VK_FORMAT_R32G32_UINTspecifies a two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. -
VK_FORMAT_R32G32_SINTspecifies a two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. -
VK_FORMAT_R32G32_SFLOATspecifies a two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7. -
VK_FORMAT_R32G32B32_UINTspecifies a three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. -
VK_FORMAT_R32G32B32_SINTspecifies a three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. -
VK_FORMAT_R32G32B32_SFLOATspecifies a three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11. -
VK_FORMAT_R32G32B32A32_UINTspecifies a four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. -
VK_FORMAT_R32G32B32A32_SINTspecifies a four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. -
VK_FORMAT_R32G32B32A32_SFLOATspecifies a four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15. -
VK_FORMAT_R64_UINTspecifies a one-component, 64-bit unsigned integer format that has a single 64-bit R component.
-
VK_FORMAT_R64_SINTspecifies a one-component, 64-bit signed integer format that has a single 64-bit R component. -
VK_FORMAT_R64_SFLOATspecifies a one-component, 64-bit signed floating-point format that has a single 64-bit R component. -
VK_FORMAT_R64G64_UINTspecifies a two-component, 128-bit unsigned integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15. -
VK_FORMAT_R64G64_SINTspecifies a two-component, 128-bit signed integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15. -
VK_FORMAT_R64G64_SFLOATspecifies a two-component, 128-bit signed floating-point format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15. -
VK_FORMAT_R64G64B64_UINTspecifies a three-component, 192-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23. -
VK_FORMAT_R64G64B64_SINTspecifies a three-component, 192-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23. -
VK_FORMAT_R64G64B64_SFLOATspecifies a three-component, 192-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23. -
VK_FORMAT_R64G64B64A64_UINTspecifies a four-component, 256-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31. -
VK_FORMAT_R64G64B64A64_SINTspecifies a four-component, 256-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31. -
VK_FORMAT_R64G64B64A64_SFLOATspecifies a four-component, 256-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31. -
VK_FORMAT_B10G11R11_UFLOAT_PACK32specifies a three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. See html/vkspec.html#fundamentals-fp10 and html/vkspec.html#fundamentals-fp11. -
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32specifies a three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8. -
VK_FORMAT_D16_UNORMspecifies a one-component, 16-bit unsigned normalized format that has a single 16-bit depth component. -
VK_FORMAT_X8_D24_UNORM_PACK32specifies a two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and, optionally:, 8 bits that are unused. -
VK_FORMAT_D32_SFLOATspecifies a one-component, 32-bit signed floating-point format that has 32-bits in the depth component. -
VK_FORMAT_S8_UINTspecifies a one-component, 8-bit unsigned integer format that has 8-bits in the stencil component. -
VK_FORMAT_D16_UNORM_S8_UINTspecifies a two-component, 24-bit format that has 16 unsigned normalized bits in the depth component and 8 unsigned integer bits in the stencil component. -
VK_FORMAT_D24_UNORM_S8_UINTspecifies a two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component. -
VK_FORMAT_D32_SFLOAT_S8_UINTspecifies a two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are optionally: 24-bits that are unused. -
VK_FORMAT_BC1_RGB_UNORM_BLOCKspecifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. -
VK_FORMAT_BC1_RGB_SRGB_BLOCKspecifies a three-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. -
VK_FORMAT_BC1_RGBA_UNORM_BLOCKspecifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha. -
VK_FORMAT_BC1_RGBA_SRGB_BLOCKspecifies a four-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha. -
VK_FORMAT_BC2_UNORM_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. -
VK_FORMAT_BC2_SRGB_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. -
VK_FORMAT_BC3_UNORM_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. -
VK_FORMAT_BC3_SRGB_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding. -
VK_FORMAT_BC4_UNORM_BLOCKspecifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. -
VK_FORMAT_BC4_SNORM_BLOCKspecifies a one-component, block-compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. -
VK_FORMAT_BC5_UNORM_BLOCKspecifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. -
VK_FORMAT_BC5_SNORM_BLOCKspecifies a two-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. -
VK_FORMAT_BC6H_UFLOAT_BLOCKspecifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned floating-point RGB texel data. -
VK_FORMAT_BC6H_SFLOAT_BLOCKspecifies a three-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed floating-point RGB texel data. -
VK_FORMAT_BC7_UNORM_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_BC7_SRGB_BLOCKspecifies a four-component, block-compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCKspecifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque. -
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCKspecifies a three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque. -
VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCKspecifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha. -
VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCKspecifies a four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha. -
VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCKspecifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values. -
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCKspecifies a four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied. -
VK_FORMAT_EAC_R11_UNORM_BLOCKspecifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized red texel data. -
VK_FORMAT_EAC_R11_SNORM_BLOCKspecifies a one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4×4 rectangle of signed normalized red texel data. -
VK_FORMAT_EAC_R11G11_UNORM_BLOCKspecifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. -
VK_FORMAT_EAC_R11G11_SNORM_BLOCKspecifies a two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values. -
VK_FORMAT_ASTC_4x4_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_4x4_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_5x4_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×4 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_5x4_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_5x5_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_5x5_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
-
VK_FORMAT_ASTC_6x5_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×5 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_6x5_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_6x6_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_6x6_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_8x5_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×5 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_8x5_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_8x6_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×6 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_8x6_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_8x8_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_8x8_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_10x5_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×5 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_10x5_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_10x6_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×6 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_10x6_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_10x8_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×8 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_10x8_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_10x10_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_10x10_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10×10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_12x10_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×10 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_12x10_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components. -
VK_FORMAT_ASTC_12x12_UNORM_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data. -
VK_FORMAT_ASTC_12x12_SRGB_BLOCKspecifies a four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
См. также
VkAttachmentDescription, VkBufferViewCreateInfo, VkImageCreateInfo, VkImageViewCreateInfo, VkVertexInputAttributeDescription, vkGetPhysicalDeviceFormatProperties, vkGetPhysicalDeviceImageFormatProperties, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat
VkFormatFeatureFlagBits(3)
Название
VkFormatFeatureFlagBits - Битовая маска, указывающая на функции, поддерживаемые буфером
Спецификация C
Биты, которые могут быть установлены в VkFormatProperties features linearTilingFeatures, optimalTilingFeatures, и bufferFeatures are:
typedef enum VkFormatFeatureFlagBits {
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
} VkFormatFeatureFlagBits; Описание
Следующие биты могут быть установлены в linearTilingFeatures и optimalTilingFeatures, указывая, что функции поддерживаются изображениями или представлениями изображений, созданными с запрошенным vkGetPhysicalDeviceFormatProperties::format:
-
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BITуказывает, что представление изображения может быть использовано для выборки. -
VK_FORMAT_FEATURE_STORAGE_IMAGE_BITуказывает, что представление изображения может использоваться в качестве изображений хранения. -
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BITуказывает, что представление изображения может использоваться в качестве изображения хранения, поддерживающего атомарные операции. -
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITуказывает, что представление изображения может использоваться в качестве цветового вложения фреймбуфера и в качестве входного вложения. -
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BITуказывает, что представление изображения может использоваться в качестве цветового вложения фреймбуфера, поддерживающего смешивание, и в качестве входного вложения. -
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BITуказывает, что представление изображения может использоваться в качестве вложения глубины/трафарета фреймбуфера и в качестве входного вложения. -
VK_FORMAT_FEATURE_BLIT_SRC_BITуказывает, что изображение может использоваться какsrcImageдля командыvkCmdBlitImage. -
VK_FORMAT_FEATURE_BLIT_DST_BITуказывает, что изображение может использоваться какdstImageдля командыvkCmdBlitImage. -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BITуказывает, что если также установленVK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, представление изображения может использоваться с семплером, имеющим либоmagFilterилиminFilterустановленным вVK_FILTER_LINEAR, илиmipmapModeустановленным вVK_SAMPLER_MIPMAP_MODE_LINEAR. Если также установленVK_FORMAT_FEATURE_BLIT_SRC_BIT, изображение может использоваться в качествеsrcImageдля vkCmdBlitImage сfilterравнымVK_FILTER_LINEAR. Этот бит должен быть доступен только для форматов, которые также поддерживаютVK_FORMAT_FEATURE_SAMPLED_IMAGE_BITилиVK_FORMAT_FEATURE_BLIT_SRC_BIT.Если запрашиваемый формат является форматом глубины/трафарета, этот бит указывает только на то, что аспект глубины (а не аспект трафарета) изображения этого формата поддерживает линейную фильтрацию, и что линейная фильтрация аспекта глубины поддерживается независимо от того, включено ли сравнение глубины в семплере или нет. Если этот бит отсутствует, линейная фильтрация с отключенным сравнением глубины не поддерживается, а линейная фильтрация с включенным сравнением глубины поддерживается, но может вычислять отфильтрованное значение непредсказуемым образом, отличающимся от обычных правил линейной фильтрации. Результирующее значение должно находиться в диапазоне [0,1] и должно быть пропорционально или взвешенным средним значению количества проходов или сбоев сравнения.
Следующие биты могут быть установлены в bufferFeatures, указывая, что функции поддерживаются буферами или представлениями буферов, созданными с запрошенным vkGetPhysicalDeviceProperties::format:
-
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BITуказывает, что формат может использоваться для создания представления буфера, которое может быть связано с дескрипторомVK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER. -
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BITуказывает, что формат может использоваться для создания представления буфера, которое может быть связано с дескрипторомVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER. -
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BITуказывает, что атомарные операции поддерживаются наVK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFERс этим форматом. -
VK_FORMAT_FEATURE_VERTEX_BUFFER_BITуказывает, что формат может использоваться в качестве формата атрибута вершины (VkVertexInputAttributeDescription::format).
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormatFeatureFlagBits
VkFrontFace(3)
Название
VkFrontFace - Интерпретация ориентации передней грани полигона
Спецификация C
Первым шагом растеризации полигонов является определение того, является ли треугольник обращенным назад или обращенным вперед. Это определение производится на основе знака площади (обрезанного или не обрезанного) полигона, вычисленной в координатах фреймбуфера. Одним из способов вычисления этой площади является:
где \(x_f^i\) и \(y_f^i\) — координаты x и y буфера кадра i-й вершины n-вершинного многоугольника (вершины нумеруются, начиная с нуля, для целей этого вычисления), а i ⊕ 1 — это (i + 1) mod n.
Интерпретация знака a определяется свойством VkPipelineRasterizationStateCreateInfo::frontFace активного в данный момент конвейера. Возможные значения:
typedef enum VkFrontFace {
VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
VK_FRONT_FACE_CLOCKWISE = 1,
} VkFrontFace; Описание
-
VK_FRONT_FACE_COUNTER_CLOCKWISEуказывает, что треугольник с положительной площадью считается передней гранью. -
VK_FRONT_FACE_CLOCKWISEуказывает, что треугольник с отрицательной площадью считается передней гранью.
Любой треугольник, который не является передней гранью, является задней гранью, включая треугольники с нулевой площадью.
См. также
VkPipelineRasterizationStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFrontFace
VkImageAspectFlagBits(3)
Имя
VkImageAspectFlagBits - Битовая маска, указывающая, какие аспекты изображения включены в представление
Спецификация C
Биты, которые можно установить в маске аспектов для указания аспектов изображения для таких целей, как идентификация подресурса, следующие:
typedef enum VkImageAspectFlagBits {
VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
} VkImageAspectFlagBits; Описание
-
VK_IMAGE_ASPECT_COLOR_BITуказывает цветовой аспект. -
VK_IMAGE_ASPECT_DEPTH_BITуказывает аспект глубины. -
VK_IMAGE_ASPECT_STENCIL_BITуказывает аспект трафарета. -
VK_IMAGE_ASPECT_METADATA_BITуказывает аспект метаданных, используемый для операций с разреженными разреженными ресурсами.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageAspectFlagBits
VkImageCreateFlagBits(3)
Имя
VkImageCreateFlagBits - Битовая маска, указывающая дополнительные параметры изображения
Спецификация C
Биты, которые можно установить в VkImageCreateInfo::flags, указывая дополнительные параметры изображения, следующие:
typedef enum VkImageCreateFlagBits {
VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
} VkImageCreateFlagBits; Описание
-
VK_IMAGE_CREATE_SPARSE_BINDING_BITуказывает, что изображение будет поддерживаться с помощью разреженного связывания памяти. -
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BITуказывает, что изображение может быть частично поддерживаться с помощью разреженного связывания памяти. Изображения, созданные с этим флагом, также должны быть созданы с флагомVK_IMAGE_CREATE_SPARSE_BINDING_BIT. -
VK_IMAGE_CREATE_SPARSE_ALIASED_BITуказывает, что изображение будет поддерживаться с помощью разреженного связывания памяти с диапазонами памяти, которые также могут одновременно поддерживать другое изображение (или другую часть того же изображения). Изображения, созданные с этим флагом, также должны быть созданы с флагомVK_IMAGE_CREATE_SPARSE_BINDING_BIT -
VK_IMAGE_CREATE_MUTABLE_FORMAT_BITуказывает, что изображение может использоваться для созданияVkImageViewс другим форматом, чем у изображения. -
VK_IMAGE_CREATE_CUBE_COMPATIBLE_BITуказывает, что изображение может использоваться для созданияVkImageViewтипаVK_IMAGE_VIEW_TYPE_CUBEилиVK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
Если установлены какие-либо биты VK_IMAGE_CREATE_SPARSE_BINDING_BIT, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT или VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT также не должен быть установлен.
См. Разреженные характеристики ресурсов и Разреженные характеристики физического устройства для получения дополнительной информации.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageCreateFlagBits
VkImageLayout(3)
Имя
VkImageLayout - Макет изображения и его подресурсов
Спецификация C
Множество макетов изображений состоит из:
typedef enum VkImageLayout {
VK_IMAGE_LAYOUT_UNDEFINED = 0,
VK_IMAGE_LAYOUT_GENERAL = 1,
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
} VkImageLayout; Описание
Типы доступа к устройству, поддерживаемые каждым макетом, следующие:
-
VK_IMAGE_LAYOUT_UNDEFINEDне поддерживает доступ к устройству. Этот макет должен использоваться только как членinitialLayoutVkImageCreateInfoилиVkAttachmentDescription, или какoldLayoutпри переходе изображения. При переходе из этого макета содержимое памяти не гарантируется как сохраненное. -
VK_IMAGE_LAYOUT_PREINITIALIZEDне поддерживает доступ к устройству. Этот макет должен использоваться только как членinitialLayoutVkImageCreateInfoилиVkAttachmentDescription, или какoldLayoutпри переходе изображения. При переходе из этого макета содержимое памяти сохраняется. Этот макет предназначен для использования в качестве начального макета для изображения, содержимое которого записывается узлом, и, следовательно, данные могут быть записаны в память немедленно, без предварительного выполнения перехода макета. В настоящее время,VK_IMAGE_LAYOUT_PREINITIALIZEDполезен только с изображениямиVK_IMAGE_TILING_LINEAR, поскольку стандартный макет для изображенийVK_IMAGE_TILING_OPTIMALне определен. -
VK_IMAGE_LAYOUT_GENERALподдерживает все типы доступа к устройству. -
VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMALдолжен использоваться только в качестве цветового или разрешающего вложения вVkFramebuffer. Этот макет действителен только для подресурсов изображений, созданных с включенным битом использованияVK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT. -
VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMALдолжен использоваться только в качестве вложения глубины/трафарета вVkFramebuffer. Этот макет действителен только для подресурсов изображений, созданных с включенным битом использованияVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT. -
VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALдолжен использоваться только в качестве вложения глубины/трафарета только для чтения вVkFramebufferи/или в качестве изображения только для чтения в шейдере (которое может читаться как выборочное изображение, комбинированное изображение/выборщик и/или вложение ввода). Этот макет действителен только для подресурсов изображений, созданных с включенным битом использованияVK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT. Только подресурсы изображений, созданных сVK_IMAGE_USAGE_SAMPLED_BIT, могут использоваться как выборочное изображение или комбинированное изображение/выборщик в шейдере. Аналогично, только подресурсы изображений, созданные сVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, могут использоваться как вложения ввода. -
VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMALдолжен использоваться только в качестве изображения только для чтения в шейдере (которое может читаться как выборочное изображение, комбинированное изображение/выборщик и/или вложение ввода). Этот макет действителен только для подресурсов изображений, созданных с битом использованияVK_IMAGE_USAGE_SAMPLED_BITилиVK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT. -
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMALдолжен использоваться только в качестве исходного изображения команды передачи (см. определениеVK_PIPELINE_STAGE_TRANSFER_BIT). Этот макет действителен только для подресурсов изображений, созданных с включенным битом использованияVK_IMAGE_USAGE_TRANSFER_SRC_BIT. -
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMALдолжен использоваться только в качестве целевого изображения команды передачи. Этот макет действителен только для подресурсов изображений, созданных с включенным битом использованияVK_IMAGE_USAGE_TRANSFER_DST_BIT.
Для каждого механизма доступа к изображению в API существует параметр или член структуры, который управляет макетом изображения, используемым для доступа к изображению. Для команд передачи это параметр команды (см. html/vkspec.html#clears и html/vkspec.html#copies). Для использования в качестве вложения буфера кадра это член в подструктурах VkRenderPassCreateInfo (см. Проход отрисовки). Для использования в наборе дескрипторов это член в структуре VkDescriptorImageInfo (см. html/vkspec.html#descriptorsets-updates). В момент выполнения любой команды буфера команд, обращающейся к изображению, на любой очереди макеты подресурсов изображения, к которым осуществляется доступ, должны соответствовать макету, указанному через API, управляющий этими доступами.
Макет изображения каждого подресурса изображения должен быть четко определен в каждой точке времени существования подресурса изображения. Это означает, что при выполнении перехода макета на подресурсе изображения старое значение макета должно либо равняться текущему макету подресурса изображения (в момент выполнения перехода), либо быть VK_IMAGE_LAYOUT_UNDEFINED (что подразумевает, что содержимое подресурса изображения не обязательно должно сохраняться). Новый макет, используемый при переходе, не должен быть VK_IMAGE_LAYOUT_UNDEFINED или VK_IMAGE_LAYOUT_PREINITIALIZED.
См. также
VkAttachmentDescription, VkAttachmentReference, VkDescriptorImageInfo, VkImageCreateInfo, VkImageMemoryBarrier, vkCmdBlitImage, vkCmdClearColorImage, vkCmdClearDepthStencilImage, vkCmdCopyBufferToImage, vkCmdCopyImage, vkCmdCopyImageToBuffer, vkCmdResolveImage
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageLayout
VkImageTiling(3)
Имя
VkImageTiling - Указывает расположение элементов данных в изображении
Спецификация C
Возможные значения VkImageCreateInfo::tiling, указывающие расположение элементов данных в изображении, следующие:
typedef enum VkImageTiling {
VK_IMAGE_TILING_OPTIMAL = 0,
VK_IMAGE_TILING_LINEAR = 1,
} VkImageTiling; Описание
-
VK_IMAGE_TILING_OPTIMALspecifies optimal tiling (texels are laid out in an implementation-dependent arrangement, for more optimal memory access). -
VK_IMAGE_TILING_LINEARspecifies linear tiling (texels are laid out in memory in row-major order, possibly with some padding on each row).
См. также
VkImageCreateInfo, vkGetPhysicalDeviceImageFormatProperties, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageTiling
VkImageType(3)
Имя
VkImageType - Указывает тип объекта изображения
C-спецификация
Возможные значения VkImageCreateInfo::imageType, указывающие базовую размерность изображения, следующие:
typedef enum VkImageType {
VK_IMAGE_TYPE_1D = 0,
VK_IMAGE_TYPE_2D = 1,
VK_IMAGE_TYPE_3D = 2,
} VkImageType; Описание
-
VK_IMAGE_TYPE_1Dуказывает одномерное изображение. -
VK_IMAGE_TYPE_2Dуказывает двумерное изображение. -
VK_IMAGE_TYPE_3Dуказывает трёхмерное изображение.
См. также
VkImageCreateInfo, vkGetPhysicalDeviceImageFormatProperties, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageType
VkImageUsageFlagBits(3)
Имя
VkImageUsageFlagBits - Битовая маска, указывающая предполагаемое использование изображения
C-спецификация
Биты, которые могут быть установлены в VkImageCreateInfo::usage, указывающие предполагаемое использование изображения, следующие:
typedef enum VkImageUsageFlagBits {
VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
} VkImageUsageFlagBits; Описание
-
VK_IMAGE_USAGE_TRANSFER_SRC_BITуказывает, что изображение может использоваться в качестве источника для команды передачи. -
VK_IMAGE_USAGE_TRANSFER_DST_BITуказывает, что изображение может использоваться в качестве получателя для команды передачи. -
VK_IMAGE_USAGE_SAMPLED_BITуказывает, что изображение может использоваться для созданияVkImageView, подходящего для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_SAMPLED_IMAGEилиVK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, и выборки шейдером. -
VK_IMAGE_USAGE_STORAGE_BITуказывает, что изображение может использоваться для созданияVkImageView, подходящего для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_STORAGE_IMAGE. -
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BITуказывает, что изображение может использоваться для созданияVkImageView, подходящего для использования в качестве цветного или разрешающего вложения вVkFramebuffer. -
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITуказывает, что изображение может использоваться для созданияVkImageView, подходящего для использования в качестве вложения глубины/трафарета вVkFramebuffer. -
VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BITуказывает, что память, привязанная к этому изображению, будет выделена с помощьюVK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT(см. html/vkspec.html#memory для получения дополнительной информации). Этот бит может быть установлен для любого изображения, которое может использоваться для созданияVkImageView, подходящего для использования в качестве цветного, разрешающего, глубины/трафарета или входного вложения. -
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BITуказывает, что изображение может использоваться для созданияVkImageView, подходящего для размещения в слотеVkDescriptorSetтипаVK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; чтения из шейдера как входного вложения; и использования как входного вложения во фреймбуфере.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageUsageFlagBits
VkImageViewType(3)
Имя
VkImageViewType - Типы представлений изображений
C-спецификация
Типы представлений изображений, которые могут быть созданы, следующие:
typedef enum VkImageViewType {
VK_IMAGE_VIEW_TYPE_1D = 0,
VK_IMAGE_VIEW_TYPE_2D = 1,
VK_IMAGE_VIEW_TYPE_3D = 2,
VK_IMAGE_VIEW_TYPE_CUBE = 3,
VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
} VkImageViewType; Описание
Точный тип представления изображения частично неявный, основанный на типе и количестве выборок изображения, а также на параметрах создания представления, как описано в таблице совместимости представлений изображений для vkCreateImageView. Эта таблица также показывает, какие параметры SPIR-V OpTypeImage Dim и Arrayed соответствуют каждому типу представления изображения.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageViewType
VkIndexType(3)
Имя
VkIndexType - Тип индексов буфера индексов
C-спецификация
Возможные значения vkCmdBindIndexBuffer::indexType, указывающие размер индексов, следующие:
typedef enum VkIndexType {
VK_INDEX_TYPE_UINT16 = 0,
VK_INDEX_TYPE_UINT32 = 1,
} VkIndexType; Описание
-
VK_INDEX_TYPE_UINT16указывает, что индексы являются 16-битными беззнаковыми целыми значениями. -
VK_INDEX_TYPE_UINT32указывает, что индексы являются 32-битными беззнаковыми целыми значениями.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkIndexType
VkInternalAllocationType(3)
Имя
VkInternalAllocationType - Тип выделения
C-спецификация
Параметр allocationType для функций pfnInternalAllocation и pfnInternalFree может иметь одно из следующих значений:
typedef enum VkInternalAllocationType {
VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
} VkInternalAllocationType; Описание
-
VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLEуказывает, что выделение предназначено для выполнения хостом.
См. также
PFN_vkInternalAllocationNotification, PFN_vkInternalFreeNotification
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkInternalAllocationType
VkLogicOp(3)
Имя
VkLogicOp - Логические операции фреймбуфера
C-спецификация
Логические операции контролируются членами logicOpEnable и logicOp VkPipelineColorBlendStateCreateInfo. Если logicOpEnable равно VK_TRUE, то логическая операция, выбранная logicOp, применяется между каждым цветным вложением и соответствующим выходным значением фрагмента, а смешивание всех вложений рассматривается как отключенное. Любые вложения, использующие цветовые форматы, для которых логические операции не поддерживаются, просто передают цветовые значения без изменений. Логическая операция применяется независимо для каждого из красного, зеленого, синего и альфа-компонентов. logicOp выбирается из следующих операций:
typedef enum VkLogicOp {
VK_LOGIC_OP_CLEAR = 0,
VK_LOGIC_OP_AND = 1,
VK_LOGIC_OP_AND_REVERSE = 2,
VK_LOGIC_OP_COPY = 3,
VK_LOGIC_OP_AND_INVERTED = 4,
VK_LOGIC_OP_NO_OP = 5,
VK_LOGIC_OP_XOR = 6,
VK_LOGIC_OP_OR = 7,
VK_LOGIC_OP_NOR = 8,
VK_LOGIC_OP_EQUIVALENT = 9,
VK_LOGIC_OP_INVERT = 10,
VK_LOGIC_OP_OR_REVERSE = 11,
VK_LOGIC_OP_COPY_INVERTED = 12,
VK_LOGIC_OP_OR_INVERTED = 13,
VK_LOGIC_OP_NAND = 14,
VK_LOGIC_OP_SET = 15,
} VkLogicOp; Описание
Логические операции, поддерживаемые Vulkan, суммированы в следующей таблице, в которой
- ¬ - побитовое отрицание,
- ∧ - побитовое И,
- ∨ - побитовое ИЛИ,
- ⊕ - побитовое исключающее ИЛИ,
- s - значение компонента Rs0, Gs0, Bs0 или As0 фрагмента для выходных данных фрагмента, соответствующих обновляемому цветному вложению, и
- d - значение компонента R, G, B или A цветного вложения:
| Режим | Операция |
|---|---|
| 0 |
| s ∧ d |
| s ∧ ¬ d |
| s |
| ¬ s ∧ d |
| d |
| s ⊕ d |
| s ∨ d |
| ¬ (s ∨ d) |
| ¬ (s ⊕ d) |
| ¬ d |
| s ∨ ¬ d |
| ¬ s |
| ¬ s ∨ d |
| ¬ (s ∧ d) |
| all 1s |
Результат логической операции затем записывается в цветовое приложение, в соответствии с управляемой компонентом маской записи, описанной в Операциях смешивания.
См. также
VkPipelineColorBlendStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkLogicOp
VkMemoryHeapFlagBits(3)
Имя
VkMemoryHeapFlagBits - Битовая маска, определяющая атрибуты флагов для кучи
C Спецификация
Биты, которые могут быть установлены в VkMemoryHeap::flags, указывающие атрибуты флагов для кучи, следующие:
typedef enum VkMemoryHeapFlagBits {
VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
} VkMemoryHeapFlagBits; Описание
-
VK_MEMORY_HEAP_DEVICE_LOCAL_BITуказывает, что куча соответствует памяти, локальной для устройства. Память, локальная для устройства, может иметь разные характеристики производительности, чем память, локальная для хоста, и может поддерживать разные флаги свойств памяти.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryHeapFlagBits
VkMemoryPropertyFlagBits(3)
Имя
VkMemoryPropertyFlagBits - Битовая маска, определяющая свойства для типа памяти
C Спецификация
Биты, которые могут быть установлены в VkMemoryType::propertyFlags, указывающие свойства кучи памяти, следующие:
typedef enum VkMemoryPropertyFlagBits {
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
} VkMemoryPropertyFlagBits; Описание
-
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BITбит указывает, что память, выделенная с этим типом, является наиболее эффективной для доступа к устройству. Это свойство будет установлено только для типов памяти, принадлежащих к кучам с установленнымVK_MEMORY_HEAP_DEVICE_LOCAL_BIT. -
VK_MEMORY_PROPERTY_HOST_VISIBLE_BITбит указывает, что память, выделенная с этим типом, может быть сопоставлена для доступа к хосту с использованием vkMapMemory. -
VK_MEMORY_PROPERTY_HOST_COHERENT_BITбит указывает, что команды управления кэшем хоста vkFlushMappedMemoryRanges и vkInvalidateMappedMemoryRanges не нужны для очистки записей хоста на устройство или для обеспечения видимости записей устройства для хоста соответственно. -
VK_MEMORY_PROPERTY_HOST_CACHED_BITбит указывает, что память, выделенная с этим типом, кэшируется на хосте. Доступ к памяти хоста из некэшированной памяти медленнее, чем к кэшированной памяти, однако некэшированная память всегда согласована с хостом. -
VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BITбит указывает, что тип памяти допускает только доступ к памяти устройства. Типы памяти не должны иметь одновременно установленныеVK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BITиVK_MEMORY_PROPERTY_HOST_VISIBLE_BIT. Кроме того, поддерживающая память объекта может предоставляться реализацией лениво, как указано в лениво выделяемой памяти.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryPropertyFlagBits
VkObjectType(3)
Имя
VkObjectType - Укажите перечисление для отслеживания типов дескрипторов объектов
C Спецификация
Перечисление VkObjectType определяет значения, каждое из которых соответствует определенному типу дескриптора Vulkan. Эти значения могут использоваться для сопоставления информации отладки с конкретным типом объекта с помощью одного или нескольких расширений.
typedef enum VkObjectType {
VK_OBJECT_TYPE_UNKNOWN = 0,
VK_OBJECT_TYPE_INSTANCE = 1,
VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
VK_OBJECT_TYPE_DEVICE = 3,
VK_OBJECT_TYPE_QUEUE = 4,
VK_OBJECT_TYPE_SEMAPHORE = 5,
VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
VK_OBJECT_TYPE_FENCE = 7,
VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
VK_OBJECT_TYPE_BUFFER = 9,
VK_OBJECT_TYPE_IMAGE = 10,
VK_OBJECT_TYPE_EVENT = 11,
VK_OBJECT_TYPE_QUERY_POOL = 12,
VK_OBJECT_TYPE_BUFFER_VIEW = 13,
VK_OBJECT_TYPE_IMAGE_VIEW = 14,
VK_OBJECT_TYPE_SHADER_MODULE = 15,
VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
VK_OBJECT_TYPE_RENDER_PASS = 18,
VK_OBJECT_TYPE_PIPELINE = 19,
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
VK_OBJECT_TYPE_SAMPLER = 21,
VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
VK_OBJECT_TYPE_FRAMEBUFFER = 24,
VK_OBJECT_TYPE_COMMAND_POOL = 25,
} VkObjectType; Описание
| VkObjectType | Тип дескриптора Vulkan |
|---|---|
| Неизвестный/неопределённый дескриптор |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
См. также
Перекрёстные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkObjectType
VkPhysicalDeviceType(3)
Имя
VkPhysicalDeviceType - Поддерживаемые типы физических устройств
C-спецификация
Типы физических устройств, которые могут быть возвращены в VkPhysicalDeviceProperties::deviceType:
typedef enum VkPhysicalDeviceType {
VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
} VkPhysicalDeviceType; Описание
-
VK_PHYSICAL_DEVICE_TYPE_OTHER- устройство не соответствует ни одному из других доступных типов. -
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU- устройство обычно встроено в или тесно связано с хостом. -
VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU- устройство обычно представляет собой отдельный процессор, подключенный к хосту через межсоединение. -
VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU- устройство обычно представляет собой виртуальный узел в среде виртуализации. -
VK_PHYSICAL_DEVICE_TYPE_CPU- устройство обычно работает на тех же процессорах, что и хост.
Тип физического устройства указывается только в информационных целях и не оказывает прямого влияния на работу системы. Однако тип устройства может коррелировать с другими объявленными свойствами или возможностями системы, например, с количеством куч памяти.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPhysicalDeviceType
VkPipelineBindPoint(3)
Имя
VkPipelineBindPoint - Указание точки привязки объекта конвейера к буферу команд
C-спецификация
Возможные значения vkCmdBindPipeline::pipelineBindPoint, указывающие точку привязки объекта конвейера:
typedef enum VkPipelineBindPoint {
VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
VK_PIPELINE_BIND_POINT_COMPUTE = 1,
} VkPipelineBindPoint; Описание
-
VK_PIPELINE_BIND_POINT_COMPUTEуказывает привязку как вычислительный конвейер. -
VK_PIPELINE_BIND_POINT_GRAPHICSуказывает привязку как графический конвейер.
См. также
VkSubpassDescription, vkCmdBindDescriptorSets, vkCmdBindPipeline
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineBindPoint
VkPipelineCacheHeaderVersion(3)
Имя
VkPipelineCacheHeaderVersion - Кодирование версии кэша конвейеров
C-спецификация
Возможные значения второй группы из четырёх байтов в заголовке, возвращаемом функцией vkGetPipelineCacheData, кодирующие версию кэша конвейеров:
typedef enum VkPipelineCacheHeaderVersion {
VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
} VkPipelineCacheHeaderVersion; Описание
-
VK_PIPELINE_CACHE_HEADER_VERSION_ONEуказывает первую версию кэша конвейеров.
См. также
vkCreatePipelineCache, vkGetPipelineCacheData
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCacheHeaderVersion
VkPipelineCreateFlagBits(3)
Имя
VkPipelineCreateFlagBits - Битовая маска, управляющая созданием конвейера
C-спецификация
Возможные значения элемента flags структуры VkGraphicsPipelineCreateInfo и VkComputePipelineCreateInfo, указывающие, как создаётся конвейер:
typedef enum VkPipelineCreateFlagBits {
VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
} VkPipelineCreateFlagBits; Описание
-
VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BITуказывает, что созданный конвейер не будет оптимизирован. Использование этого флага может сократить время, затрачиваемое на создание конвейера. -
VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BITуказывает, что создаваемый конвейер может быть родителем конвейера, который будет создан в последующем вызове vkCreateGraphicsPipelines или vkCreateComputePipelines. -
VK_PIPELINE_CREATE_DERIVATIVE_BITуказывает, что создаваемый конвейер будет дочерним по отношению к ранее созданному родительскому конвейеру.
Допустимо устанавливать как VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT, так и VK_PIPELINE_CREATE_DERIVATIVE_BIT. Это позволяет конвейеру быть одновременно и родительским, и, возможно, дочерним в иерархии конвейеров. Дополнительную информацию см. в разделе Pipeline Derivatives.
См. также
Примечания к документу
Дополнительную информацию см. в спецификации Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCreateFlagBits
VkPipelineStageFlagBits(3)
Имя
VkPipelineStageFlagBits - Битовая маска, указывающая этапы конвейера
C-спецификация
Несколько команд синхронизации включают параметры этапа конвейера, ограничивая области синхронизации для этой команды только этими этапами. Это позволяет точно управлять точными зависимостями выполнения и доступом, выполняемыми командами действия. Реализации должны использовать эти этапы конвейера, чтобы избежать ненужных пауз или очистки кэша.
Биты, которые могут быть установлены, указывающие этапы конвейера, следующие:
typedef enum VkPipelineStageFlagBits {
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
} VkPipelineStageFlagBits; Описание
-
VK_PIPELINE_STAGE_TOP_OF_PIPE_BITуказывает этап конвейера, на котором любые команды первоначально принимаются очередью. -
VK_PIPELINE_STAGE_DRAW_INDIRECT_BITуказывает этап конвейера, на котором используются структуры данных Draw/DispatchIndirect. -
VK_PIPELINE_STAGE_VERTEX_INPUT_BITуказывает этап конвейера, на котором используются буферы вершин и индексов. -
VK_PIPELINE_STAGE_VERTEX_SHADER_BITуказывает этап вершинного шейдера. -
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BITуказывает этап шейдера управления тесселяцией. -
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BITуказывает этап шейдера оценки тесселяции. -
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BITуказывает этап геометрического шейдера. -
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BITуказывает этап фрагментного шейдера. -
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BITуказывает этап конвейера, на котором выполняются ранние тесты фрагментов (тесты глубины и трафарета до затенения фрагментов). Этот этап также включает операции загрузки подпрохода для прикреплений фреймбуфера с форматом глубины/трафарета. -
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BITуказывает этап конвейера, на котором выполняются поздние тесты фрагментов (тесты глубины и трафарета после затенения фрагментов). Этот этап также включает операции сохранения подпрохода для прикреплений фреймбуфера с форматом глубины/трафарета. -
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BITуказывает этап конвейера после смешивания, на котором выходные значения цвета выводятся из конвейера. Этот этап также включает операции загрузки и сохранения подпрохода и операции разрешения многовыборки для прикреплений фреймбуфера с цветовым форматом. -
VK_PIPELINE_STAGE_TRANSFER_BITуказывает выполнение команд копирования. Это включает операции, полученные в результате всех команд копирования, команд очистки (за исключением vkCmdClearAttachments) и vkCmdCopyQueryPoolResults. -
VK_PIPELINE_STAGE_COMPUTE_SHADER_BITуказывает выполнение вычислительного шейдера. -
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BITуказывает заключительный этап в конвейере, на котором операции, сгенерированные всеми командами, завершают выполнение. -
VK_PIPELINE_STAGE_HOST_BITуказывает псевдоэтап, указывающий на выполнение на хосте операций чтения/записи памяти устройства. Этот этап не вызывается никакими командами, записанными в буфер команд. -
VK_PIPELINE_STAGE_ALL_GRAPHICS_BITуказывает выполнение всех этапов графического конвейера и эквивалентно логическому ИЛИ:-
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT -
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT -
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT -
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT -
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT -
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT -
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT -
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT -
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT -
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT -
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT -
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
-
-
VK_PIPELINE_STAGE_ALL_COMMANDS_BITэквивалентен логическому ИЛИ каждого другого флага этапа конвейера, который поддерживается в очереди, с которой он используется.
Примечание
Зависимость выполнения только с
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BITв маске целевого этапа будет только препятствовать выполнению этого этапа в последующих отправленных командах. Поскольку этот этап не выполняет никакого фактического выполнения, это не наблюдается - по сути, это не задерживает обработку последующих команд. Аналогично, зависимость выполнения только сVK_PIPELINE_STAGE_TOP_OF_PIPE_BITв маске исходного этапа фактически не будет ждать завершения каких-либо предыдущих команд.При определении зависимости памяти использование только
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BITилиVK_PIPELINE_STAGE_TOP_OF_PIPE_BITникогда не сделает доступными и/или видимыми какие-либо доступы, поскольку эти этапы не обращаются к памяти.
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BITиVK_PIPELINE_STAGE_TOP_OF_PIPE_BITполезны для выполнения операций перехода макета и владения очередью, когда требуемая зависимость выполнения удовлетворяется другими способами - например, операциями семафора между очередями.
См. также
VkPipelineStageFlags, vkCmdWriteTimestamp
Примечания к документу
Дополнительную информацию см. в спецификации Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineStageFlagBits
VkPolygonMode(3)
Имя
VkPolygonMode - Режим растеризации полигонов
C-спецификация
Возможные значения свойства VkPipelineRasterizationStateCreateInfo::polygonMode текущего активного конвейера, указывающего метод растеризации полигонов, следующие:
typedef enum VkPolygonMode {
VK_POLYGON_MODE_FILL = 0,
VK_POLYGON_MODE_LINE = 1,
VK_POLYGON_MODE_POINT = 2,
} VkPolygonMode; Описание
-
VK_POLYGON_MODE_POINTуказывает, что вершины полигонов рисуются как точки. -
VK_POLYGON_MODE_LINEуказывает, что края полигонов рисуются как отрезки линий. -
VK_POLYGON_MODE_FILLуказывает, что полигоны отображаются с использованием правил растеризации полигонов в этом разделе.
Эти режимы влияют только на окончательную растеризацию полигонов: в частности, вершины полигона затеняются, а полигон обрезается и, возможно, отбрасывается до применения этих режимов.
См. также
VkPipelineRasterizationStateCreateInfo
Примечания к документу
Дополнительную информацию см. в спецификации Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPolygonMode
VkPrimitiveTopology(3)
Имя
VkPrimitiveTopology - Поддерживаемые топологии примитивов
C-спецификация
Топология примитива определяет, как последовательные вершины организованы в примитивы, и определяет тип примитива, который используется в начале графического конвейера. Эффективная топология для последующих этапов конвейера изменяется тесселяцией или геометрическим затенением (если используется то или другое) и зависит от режимов выполнения этих шейдеров. Поддерживаемые топологии определяются VkPrimitiveTopology и включают:
typedef enum VkPrimitiveTopology {
VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
} VkPrimitiveTopology; См. также
VkPipelineInputAssemblyStateCreateInfo
Примечания к документу
Дополнительную информацию см. в спецификации Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPrimitiveTopology
VkQueryControlFlagBits(3)
Имя
VkQueryControlFlagBits - Битовая маска, указывающая ограничения на запрос
C-спецификация
Биты, которые могут быть установлены в vkCmdBeginQuery::flags, указывающие ограничения на типы запросов, которые могут быть выполнены, следующие:
typedef enum VkQueryControlFlagBits {
VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
} VkQueryControlFlagBits; Описание
-
VK_QUERY_CONTROL_PRECISE_BITуказывает точность запросов на затенение.
См. также
Примечания к документу
Дополнительную информацию см. в спецификации Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryControlFlagBits
VkQueryPipelineStatisticFlagBits(3)
Имя
VkQueryPipelineStatisticFlagBits - Битовая маска, указывающая запрашиваемые статистики конвейера
C-спецификация
Биты, которые могут быть установлены для индивидуального включения счетчиков статистики конвейера для пулов запросов с VkQueryPoolCreateInfo::pipelineStatistics, и для вторичных буферов команд с VkCommandBufferInheritanceInfo::pipelineStatistics, следующие:
typedef enum VkQueryPipelineStatisticFlagBits {
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
} VkQueryPipelineStatisticFlagBits; Описание
-
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вершин, обработанных этапом сборки входных данных. Вершины, соответствующие неполным примитивам, могут учитываться в подсчете. -
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BITуказывает, что запросы, управляемые пулом, будут учитывать количество примитивов, обработанных этапом сборки входных данных. Если включен перезапуск примитива, перезапуск топологии примитива не влияет на счетчик. Неполные примитивы могут учитываться. -
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вызовов вершинного шейдера. Значение этого счетчика увеличивается каждый раз, когда вызывается вершинный шейдер (вызов). -
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вызовов геометрического шейдера. Значение этого счетчика увеличивается каждый раз, когда вызывается геометрический шейдер (вызов). В случае экземпляризированных геометрических шейдеров, счетчик вызовов геометрического шейдера увеличивается для каждого отдельного экземпляризированного вызова. -
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BITуказывает, что запросы, управляемые пулом, будут учитывать количество примитивов, созданных вызовами геометрического шейдера. Значение счетчика увеличивается каждый раз, когда геометрический шейдер выдает примитив. Перезапуск топологии примитива с использованием инструкций SPIR-VOpEndPrimitiveилиOpEndStreamPrimitiveне влияет на количество выходных примитивов геометрического шейдера. -
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество примитивов, обработанных этапом обрезания примитива конвейера. Значение счетчика увеличивается каждый раз, когда примитив достигает этапа обрезания примитива. -
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BITуказывает, что запросы, управляемые пулом, будут учитывать количество примитивов, выдаваемых этапом обрезания примитива конвейера. Значение счетчика увеличивается каждый раз, когда примитив проходит этап обрезания примитива. Фактическое количество примитивов, выдаваемых этапом обрезания примитива для определенного входного примитива, зависит от реализации, но должно удовлетворять следующим условиям:- Если хотя бы одна вершина входного примитива находится внутри области отсечения, счетчик увеличивается на единицу или более.
- В противном случае счетчик увеличивается на ноль или более.
-
VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вызовов фрагментного шейдера. Значение счетчика увеличивается каждый раз, когда вызывается фрагментный шейдер (вызов). -
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BITуказывает, что запросы, управляемые пулом, будут учитывать количество патчей, обработанных шейдером управления тесселяцией. Значение счетчика увеличивается один раз для каждого патча, для которого вызывается шейдер управления тесселяцией (вызов). -
VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вызовов шейдера оценки тесселяции. Значение счетчика увеличивается каждый раз, когда вызывается шейдер оценки тесселяции (вызов). -
VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BITуказывает, что запросы, управляемые пулом, будут учитывать количество вызовов вычислительного шейдера. Значение счетчика увеличивается каждый раз, когда вызывается вычислительный шейдер. Реализации могут пропускать выполнение некоторых вызовов вычислительного шейдера или выполнять дополнительные вызовы вычислительного шейдера по причинам, зависящим от реализации, при условии, что результаты рендеринга остаются неизменными.
Эти значения предназначены для измерения относительной статистики на одной реализации. Различные архитектуры устройств будут подсчитывать эти значения по-разному. Любые или все счетчики могут быть затронуты проблемами, описанными в разделе Операция запроса.
Примечание
Например, устройства рендеринга на основе тайлов могут нуждаться в многократном воспроизведении сцены, что влияет на некоторые значения счетчиков.
Если в конвейере включен rasterizerDiscardEnable, реализации могут отбрасывать примитивы после этапа окончательной обработки вершин. В результате, если включен rasterizerDiscardEnable, счетчики входных и выходных примитивов обрезания могут не увеличиваться.
Когда запрос статистики конвейера завершается, результат этого запроса помечается как доступный. Приложение может скопировать результат в буфер (через vkCmdCopyQueryPoolResults), или запросить его помещение в память хоста (через vkGetQueryPoolResults).
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryPipelineStatisticFlagBits
VkQueryResultFlagBits(3)
Имя
VkQueryResultFlagBits - Битовая маска, указывающая как и когда возвращаются результаты запроса
Спецификация C
Биты, которые могут быть установлены в vkGetQueryPoolResults::flags и vkCmdCopyQueryPoolResults::flags, указывающие как и когда возвращаются результаты, следующие:
typedef enum VkQueryResultFlagBits {
VK_QUERY_RESULT_64_BIT = 0x00000001,
VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
} VkQueryResultFlagBits; Описание
-
VK_QUERY_RESULT_64_BITуказывает, что результаты будут записаны как массив 64-битных значений без знака. Если этот бит не установлен, результаты будут записаны как массив 32-битных значений без знака. -
VK_QUERY_RESULT_WAIT_BITуказывает, что Vulkan будет ожидать, пока статус каждого запроса станет доступным, прежде чем извлекать его результаты. -
VK_QUERY_RESULT_WITH_AVAILABILITY_BITуказывает, что статус доступности сопровождает результаты. -
VK_QUERY_RESULT_PARTIAL_BITуказывает, что возврат частичных результатов допустим.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryResultFlagBits
VkQueryType(3)
Имя
VkQueryType - Указывает тип запросов, управляемых пулом запросов
Спецификация C
Возможные значения VkQueryPoolCreateInfo::queryType, указывающие тип запросов, управляемых пулом, следующие:
typedef enum VkQueryType {
VK_QUERY_TYPE_OCCLUSION = 0,
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
VK_QUERY_TYPE_TIMESTAMP = 2,
} VkQueryType; Описание
-
VK_QUERY_TYPE_OCCLUSIONуказывает на запрос на затенение. -
VK_QUERY_TYPE_PIPELINE_STATISTICSуказывает на запрос статистики конвейера. -
VK_QUERY_TYPE_TIMESTAMPуказывает на запрос временной метки.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryType
VkQueueFlagBits(3)
Имя
VkQueueFlagBits - Битовая маска, указывающая возможности очередей в семействе очередей
Спецификация C
Биты, которые могут быть установлены в VkQueueFamilyProperties::queueFlags, указывающие возможности очередей в семействе очередей, следующие:
typedef enum VkQueueFlagBits {
VK_QUEUE_GRAPHICS_BIT = 0x00000001,
VK_QUEUE_COMPUTE_BIT = 0x00000002,
VK_QUEUE_TRANSFER_BIT = 0x00000004,
VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
} VkQueueFlagBits; Описание
-
VK_QUEUE_GRAPHICS_BITуказывает, что очереди в этом семействе очередей поддерживают графические операции. -
VK_QUEUE_COMPUTE_BITуказывает, что очереди в этом семействе очередей поддерживают вычислительные операции. -
VK_QUEUE_TRANSFER_BITуказывает, что очереди в этом семействе очередей поддерживают операции передачи. -
VK_QUEUE_SPARSE_BINDING_BITуказывает, что очереди в этом семействе очередей поддерживают операции управления разреженной памятью (см. Разреженные ресурсы). Если включены какие-либо функции разреженных ресурсов, то по крайней мере одно семейство очередей должно поддерживать этот бит.
Если реализация предоставляет любое семейство очередей, которое поддерживает графические операции, то по крайней мере одно семейство очередей по крайней мере одного физического устройства, предоставляемого реализацией, должно поддерживать как графические, так и вычислительные операции.
Примечание
Все команды, которые разрешены в очереди, поддерживающей операции передачи, также разрешены в очереди, поддерживающей графические или вычислительные операции. Таким образом, если возможности семейства очередей включают
VK_QUEUE_GRAPHICS_BITилиVK_QUEUE_COMPUTE_BIT, то отдельное сообщение о возможностиVK_QUEUE_TRANSFER_BITдля этого семейства очередей является необязательным.
Для получения дополнительной информации см. Очереди.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueueFlagBits
VkResult(3)
Имя
VkResult - Коды возврата команд Vulkan
Спецификация C
Хотя основной API Vulkan не предназначен для обнаружения неправильного использования, некоторые обстоятельства все еще требуют кодов возврата. Команды в Vulkan возвращают свой статус через коды возврата, которые относятся к одной из двух категорий:
- Коды успешного завершения возвращаются, когда команде необходимо сообщить об успехе или информации о состоянии. Все коды успешного завершения являются неотрицательными значениями.
- Коды ошибок времени выполнения возвращаются, когда команде необходимо сообщить об ошибке, которая может быть обнаружена только во время выполнения. Все коды ошибок времени выполнения являются отрицательными значениями.
Все кодовые возвраты в Vulkan сообщаются через возвращаемые значения VkResult. Возможные коды:
typedef enum VkResult {
VK_SUCCESS = 0,
VK_NOT_READY = 1,
VK_TIMEOUT = 2,
VK_EVENT_SET = 3,
VK_EVENT_RESET = 4,
VK_INCOMPLETE = 5,
VK_ERROR_OUT_OF_HOST_MEMORY = -1,
VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
VK_ERROR_INITIALIZATION_FAILED = -3,
VK_ERROR_DEVICE_LOST = -4,
VK_ERROR_MEMORY_MAP_FAILED = -5,
VK_ERROR_LAYER_NOT_PRESENT = -6,
VK_ERROR_EXTENSION_NOT_PRESENT = -7,
VK_ERROR_FEATURE_NOT_PRESENT = -8,
VK_ERROR_INCOMPATIBLE_DRIVER = -9,
VK_ERROR_TOO_MANY_OBJECTS = -10,
VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
VK_ERROR_FRAGMENTED_POOL = -12,
} VkResult; Описание
-
VK_SUCCESSКоманда успешно завершена -
VK_NOT_READYОграда или запрос еще не завершены -
VK_TIMEOUTОперация ожидания не завершена за указанное время -
VK_EVENT_SETСобытие установлено -
VK_EVENT_RESETСобытие сброшено -
VK_INCOMPLETEВозвращаемый массив был слишком мал для результата
-
VK_ERROR_OUT_OF_HOST_MEMORYВозникла ошибка выделения памяти хоста. -
VK_ERROR_OUT_OF_DEVICE_MEMORYВозникла ошибка выделения памяти устройства. -
VK_ERROR_INITIALIZATION_FAILEDИнициализацию объекта не удалось завершить по причинам, специфичным для реализации. -
VK_ERROR_DEVICE_LOSTЛогическое или физическое устройство было потеряно. См. Потерянное устройство -
VK_ERROR_MEMORY_MAP_FAILEDОтображение объекта памяти не удалось. -
VK_ERROR_LAYER_NOT_PRESENTЗапрошенный слой отсутствует или не может быть загружен. -
VK_ERROR_EXTENSION_NOT_PRESENTЗапрошенное расширение не поддерживается. -
VK_ERROR_FEATURE_NOT_PRESENTЗапрошенная функция не поддерживается. -
VK_ERROR_INCOMPATIBLE_DRIVERЗапрошенная версия Vulkan не поддерживается драйвером или несовместима по причинам, специфичным для реализации. -
VK_ERROR_TOO_MANY_OBJECTSУже создано слишком много объектов данного типа. -
VK_ERROR_FORMAT_NOT_SUPPORTEDЗапрошенный формат не поддерживается на этом устройстве. -
VK_ERROR_FRAGMENTED_POOLВыделение пула памяти не удалось из-за фрагментации памяти пула. Это должно возвращаться только в том случае, если не было предпринято попытки выделить память хоста или устройства для размещения нового выделения.
Если команда возвращает ошибку времени выполнения, она оставит все указатели результатов без изменений, если иное поведение не определено явно в спецификации.
Ошибки нехватки памяти не повреждают существующие объекты Vulkan. Объекты, которые уже были успешно созданы, могут по-прежнему использоваться приложением.
Критически важные для производительности команды обычно не имеют кодов возврата. Если в таких командах возникает ошибка времени выполнения, реализация отложит сообщение об ошибке до указанного момента. Для команд, которые записывают в буферы команд (vkCmd*) ошибки времени выполнения сообщаются vkEndCommandBuffer.
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkResult
VkSampleCountFlagBits(3)
Имя
VkSampleCountFlagBits - Битовая маска, указывающая на количество выборок, поддерживаемых для изображения, используемого для операций хранения
C Спецификация
Биты, которые могут быть установлены в пределах количества выборок, возвращаемых функцией VkPhysicalDeviceLimits, а также в других запросах и структурах, представляющих количество выборок изображения, следующие:
typedef enum VkSampleCountFlagBits {
VK_SAMPLE_COUNT_1_BIT = 0x00000001,
VK_SAMPLE_COUNT_2_BIT = 0x00000002,
VK_SAMPLE_COUNT_4_BIT = 0x00000004,
VK_SAMPLE_COUNT_8_BIT = 0x00000008,
VK_SAMPLE_COUNT_16_BIT = 0x00000010,
VK_SAMPLE_COUNT_32_BIT = 0x00000020,
VK_SAMPLE_COUNT_64_BIT = 0x00000040,
} VkSampleCountFlagBits; Описание
-
VK_SAMPLE_COUNT_1_BITуказывает изображение с одной выборкой на пиксель. -
VK_SAMPLE_COUNT_2_BITуказывает изображение с 2 выборками на пиксель. -
VK_SAMPLE_COUNT_4_BITуказывает изображение с 4 выборками на пиксель. -
VK_SAMPLE_COUNT_8_BITуказывает изображение с 8 выборками на пиксель. -
VK_SAMPLE_COUNT_16_BITуказывает изображение с 16 выборками на пиксель. -
VK_SAMPLE_COUNT_32_BITуказывает изображение с 32 выборками на пиксель. -
VK_SAMPLE_COUNT_64_BITуказывает изображение с 64 выборками на пиксель.
См. также
VkAttachmentDescription, VkImageCreateInfo, VkPipelineMultisampleStateCreateInfo, VkSampleCountFlags, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSampleCountFlagBits
VkSamplerAddressMode(3)
Имя
VkSamplerAddressMode - Указывает поведение выборки с текстурными координатами за пределами изображения
C Спецификация
Возможные значения параметров VkSamplerCreateInfo::addressMode*, указывающие поведение выборки с координатами за пределами диапазона [0,1] для соответствующих координат u, v или w, как определено в разделе Операция обёртывания, следующие:
typedef enum VkSamplerAddressMode {
VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
} VkSamplerAddressMode; Описание
-
VK_SAMPLER_ADDRESS_MODE_REPEATуказывает, что будет использоваться режим обёртывания повтора. -
VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEATуказывает, что будет использоваться режим обёртывания зеркального повтора. -
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGEуказывает, что будет использоваться режим обёртывания привязки к краю. -
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDERуказывает, что будет использоваться режим обёртывания привязки к границе. -
VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGEуказывает, что будет использоваться режим зеркальной привязки к краю. Это допустимо только в том случае, если включено расширение VK_KHR_mirror_clamp_to_edge.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSamplerAddressMode
VkSamplerMipmapMode(3)
Имя
VkSamplerMipmapMode - Указывает режим mipmap, используемый для поиска текстур
C Спецификация
Возможные значения VkSamplerCreateInfo::mipmapMode, указывающие режим mipmap, используемый для поиска текстур, следующие:
typedef enum VkSamplerMipmapMode {
VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
} VkSamplerMipmapMode; Описание
-
VK_SAMPLER_MIPMAP_MODE_NEARESTуказывает ближайшую фильтрацию. -
VK_SAMPLER_MIPMAP_MODE_LINEARуказывает линейную фильтрацию.
Эти режимы подробно описаны в разделе Фильтрация текстурных элементов.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSamplerMipmapMode
VkShaderStageFlagBits(3)
Имя
VkShaderStageFlagBits - Битовая маска, указывающая на этап конвейера
C Спецификация
Команды и структуры, которым необходимо указать один или несколько этапов шейдера, делают это с помощью битовой маски, биты которой соответствуют этапам. Биты, которые могут быть установлены для указания этапов шейдера, следующие:
typedef enum VkShaderStageFlagBits {
VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
} VkShaderStageFlagBits; Описание
-
VK_SHADER_STAGE_VERTEX_BITуказывает вершинный этап. -
VK_SHADER_STAGE_TESSELLATION_CONTROL_BITуказывает этап управления тесселяцией. -
VK_SHADER_STAGE_TESSELLATION_EVALUATION_BITуказывает этап оценки тесселяции. -
VK_SHADER_STAGE_GEOMETRY_BITуказывает геометрический этап. -
VK_SHADER_STAGE_FRAGMENT_BITуказывает фрагментный этап. -
VK_SHADER_STAGE_COMPUTE_BITуказывает вычислительный этап. -
VK_SHADER_STAGE_ALL_GRAPHICSпредставляет собой комбинацию битов, используемых в качестве сокращения для указания всех графических этапов, определенных выше (за исключением вычислительного этапа). -
VK_SHADER_STAGE_ALLпредставляет собой комбинацию битов, используемых в качестве сокращения для указания всех этапов шейдера, поддерживаемых устройством, включая все дополнительные этапы, которые вводятся расширениями.
См. также
VkPipelineShaderStageCreateInfo, VkShaderStageFlags
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkShaderStageFlagBits
VkSharingMode(3)
Имя
VkSharingMode - Режимы совместного использования буферов и изображений
C Спецификация
Объекты буферов и изображений создаются с режимом совместного использования, определяющим, как они могут быть доступны из очередей. Поддерживаемые режимы совместного использования:
typedef enum VkSharingMode {
VK_SHARING_MODE_EXCLUSIVE = 0,
VK_SHARING_MODE_CONCURRENT = 1,
} VkSharingMode; Описание
-
VK_SHARING_MODE_EXCLUSIVEуказывает, что доступ к любому диапазону или подобласти изображения объекта будет эксклюзивным для одной очереди семейства за один раз. -
VK_SHARING_MODE_CONCURRENTуказывает, что поддерживается одновременный доступ к любому диапазону или подобласти изображения объекта из нескольких семейств очередей.
Примечание
VK_SHARING_MODE_CONCURRENTможет привести к более низкой производительности доступа к буферу или изображению, чемVK_SHARING_MODE_EXCLUSIVE.
Диапазоны буферов и подобласти изображения объектов изображений, созданных с использованием VK_SHARING_MODE_EXCLUSIVE, должны быть доступны только очередям в одном семействе очередей в любой момент времени. Для того чтобы другое семейство очередей могло интерпретировать содержимое памяти диапазона или подобласти изображения, приложение должно выполнить передачу владения семейства очередей.
При создании ресурсы, использующие VK_SHARING_MODE_EXCLUSIVE, не принадлежат ни одному семейству очередей. Препятствие памяти буфера или изображения не требуется для приобретения владения, когда ни одно семейство очередей не владеет ресурсом - оно неявно приобретается при первом использовании в очереди.
END_OF_DOCUMENT_MARKERПримечание
Изображения по-прежнему требуют перехода компоновки из
VK_IMAGE_LAYOUT_UNDEFINEDилиVK_IMAGE_LAYOUT_PREINITIALIZEDперед использованием в первой очереди.
Семейство очередей может взять на себя владение подобластью изображения или диапазоном буфера ресурса, созданного с помощью VK_SHARING_MODE_EXCLUSIVE, без передачи владения, так же, как и для только что созданного ресурса; однако, взятие владения таким образом приводит к тому, что содержимое подобласти изображения или диапазона буфера не определено.
Доступ к диапазонам буферов и подобластям изображений объектов изображений, созданных с помощью VK_SHARING_MODE_CONCURRENT, должен осуществляться только очередями из семейств очередей, указанных через члены queueFamilyIndexCount и pQueueFamilyIndices соответствующих структур информации о создании.
См. также
VkBufferCreateInfo, VkImageCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSharingMode
VkSparseImageFormatFlagBits(3)
Имя
VkSparseImageFormatFlagBits - Битовая маска, указывающая дополнительную информацию о разреженном ресурсе изображения
C Спецификация
Биты, которые могут быть установлены в VkSparseImageFormatProperties::flags, указывающие дополнительную информацию о разреженном ресурсе, следующие:
typedef enum VkSparseImageFormatFlagBits {
VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
} VkSparseImageFormatFlagBits; Описание
-
VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BITуказывает, что изображение использует один регион хвоста mip для всех слоев массива. -
VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BITуказывает, что первый уровень mip, размеры которого не являются целыми кратными соответствующим размерам блока разреженного изображения, начинает регион хвоста mip. -
VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BITуказывает, что изображение использует нестандартные размеры блока разреженного изображения, и значенияimageGranularityне совпадают со стандартными размерами блока разреженного изображения для данного пиксельного формата.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageFormatFlagBits
VkSparseMemoryBindFlagBits(3)
Имя
VkSparseMemoryBindFlagBits - Битовая маска, указывающая использование операции привязки разреженной памяти
C Спецификация
Биты, которые могут быть установлены в VkSparseMemoryBind::flags, указывающие использование операции привязки разреженной памяти, следующие:
typedef enum VkSparseMemoryBindFlagBits {
VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
} VkSparseMemoryBindFlagBits; Описание
-
VK_SPARSE_MEMORY_BIND_METADATA_BITуказывает, что привязываемая память предназначена только для аспекта метаданных.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseMemoryBindFlagBits
VkStencilFaceFlagBits(3)
Имя
VkStencilFaceFlagBits - Битовая маска, указывающая наборы состояний трафарета, для которых необходимо обновить маску сравнения
C Спецификация
Биты, которые могут быть установлены в параметре vkCmdSetStencilCompareMask::faceMask, и аналогичные параметры других команд, указывающие, для каких состояний трафарета обновлять маски трафарета, следующие:
typedef enum VkStencilFaceFlagBits {
VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
VK_STENCIL_FACE_BACK_BIT = 0x00000002,
VK_STENCIL_FRONT_AND_BACK = 0x00000003,
} VkStencilFaceFlagBits; Описание
-
VK_STENCIL_FACE_FRONT_BITуказывает, что обновляется только передний набор состояний трафарета. -
VK_STENCIL_FACE_BACK_BITуказывает, что обновляется только задний набор состояний трафарета. -
VK_STENCIL_FRONT_AND_BACKявляется комбинациейVK_STENCIL_FACE_FRONT_BITиVK_STENCIL_FACE_BACK_BIT, и указывает, что обновляются оба набора состояний трафарета.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkStencilFaceFlagBits
VkStencilOp(3)
Имя
VkStencilOp - Функция сравнения трафарета
C Спецификация
Возможные значения членов failOp, passOp и depthFailOp структуры VkStencilOpState, указывающие, что происходит с сохраненным значением трафарета, если этот или некоторые последующие тесты завершаются неудачей или успешно, следующие:
typedef enum VkStencilOp {
VK_STENCIL_OP_KEEP = 0,
VK_STENCIL_OP_ZERO = 1,
VK_STENCIL_OP_REPLACE = 2,
VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
VK_STENCIL_OP_INVERT = 5,
VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
} VkStencilOp; Описание
-
VK_STENCIL_OP_KEEPсохраняет текущее значение. -
VK_STENCIL_OP_ZEROустанавливает значение в 0. -
VK_STENCIL_OP_REPLACEустанавливает значение вreference. -
VK_STENCIL_OP_INCREMENT_AND_CLAMPувеличивает текущее значение и ограничивает его максимальным представимым беззнаковым значением. -
VK_STENCIL_OP_DECREMENT_AND_CLAMPуменьшает текущее значение и ограничивает его 0. -
VK_STENCIL_OP_INVERTпобитово инвертирует текущее значение. -
VK_STENCIL_OP_INCREMENT_AND_WRAPувеличивает текущее значение и переносит его в 0, когда было бы превышено максимальное значение. -
VK_STENCIL_OP_DECREMENT_AND_WRAPуменьшает текущее значение и переносит его в максимальное возможное значение, когда значение опускается ниже 0.
Для целей увеличения и уменьшения биты трафарета рассматриваются как беззнаковое целое число.
Если тест трафарета завершается неудачей, бит покрытия образца очищается во фрагменте. Если нет вложения буфера кадра трафарета, изменение трафарета не может произойти, и это так, как если бы тесты трафарета всегда проходили.
Если тест трафарета проходит, член writeMask структур VkStencilOpState управляет тем, как обновленное значение трафарета записывается во вложение буфера кадра трафарета.
Наименее значимые s биты writeMask, где s - это количество битов во вложении буфера кадра трафарета, указывают целочисленную маску. Там, где в этой маске появляется 1, записывается соответствующий бит в значении трафарета во вложении глубины/трафарета; там, где появляется 0, бит не записывается. Значение writeMask использует либо переднее, либо заднее состояние в зависимости от направленности фрагмента. Фрагменты, созданные передними примитивами, используют переднюю маску, а фрагменты, созданные задними примитивами, используют заднюю маску.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkStencilOp
VkStructureType(3)
Имя
VkStructureType - Типы структур Vulkan (stype)
C Спецификация
Структуры Vulkan, содержащие члены sType, должны иметь значение sType, соответствующее типу структуры, как более подробно описано в Правильное использование для типов структур. Типы структур, поддерживаемые API Vulkan, включают:
typedef enum VkStructureType {
VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
} VkStructureType; См. также
VkApplicationInfo, VkBindSparseInfo, VkBufferCreateInfo, VkBufferMemoryBarrier, VkBufferViewCreateInfo, VkCommandBufferAllocateInfo, VkCommandBufferBeginInfo, VkCommandBufferInheritanceInfo, VkCommandPoolCreateInfo, VkComputePipelineCreateInfo, VkCopyDescriptorSet, VkDescriptorPoolCreateInfo, VkDescriptorSetAllocateInfo, VkDescriptorSetLayoutCreateInfo, VkDeviceCreateInfo, VkDeviceQueueCreateInfo, VkEventCreateInfo, VkFenceCreateInfo, VkFramebufferCreateInfo, VkGraphicsPipelineCreateInfo, VkImageCreateInfo, VkImageMemoryBarrier, VkImageViewCreateInfo, VkInstanceCreateInfo, VkMappedMemoryRange, VkMemoryAllocateInfo, VkMemoryBarrier, VkPipelineCacheCreateInfo, VkPipelineColorBlendStateCreateInfo, VkPipelineDepthStencilStateCreateInfo, VkPipelineDynamicStateCreateInfo, VkPipelineInputAssemblyStateCreateInfo, VkPipelineLayoutCreateInfo, VkPipelineMultisampleStateCreateInfo, VkPipelineRasterizationStateCreateInfo, VkPipelineShaderStageCreateInfo, VkPipelineTessellationStateCreateInfo, VkPipelineVertexInputStateCreateInfo, VkPipelineViewportStateCreateInfo, VkQueryPoolCreateInfo, VkRenderPassBeginInfo, VkRenderPassCreateInfo, VkSamplerCreateInfo, VkSemaphoreCreateInfo, VkShaderModuleCreateInfo, VkSubmitInfo, VkWriteDescriptorSet
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkStructureType
VkSubpassContents(3)
Имя
VkSubpassContents - Указывает, как предоставляются команды в первом субпроходе render pass
C Спецификация
Возможные значения vkCmdBeginRenderPass::contents, указывающие, как будут предоставляться команды в первом субпроходе, следующие:
typedef enum VkSubpassContents {
VK_SUBPASS_CONTENTS_INLINE = 0,
VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
} VkSubpassContents; Описание
-
VK_SUBPASS_CONTENTS_INLINEуказывает, что содержимое субпрохода будет записано встроенным образом в основной буфер команд, и вторичные буферы команд не должны выполняться в пределах субпрохода. -
VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERSуказывает, что содержимое записывается во вторичные буферы команд, которые будут вызываться из основного буфера команд, и vkCmdExecuteCommands является единственной допустимой командой в буфере команд до vkCmdNextSubpass или vkCmdEndRenderPass.
См. также
vkCmdBeginRenderPass, vkCmdNextSubpass
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubpassContents
VkSubpassDescriptionFlagBits(3)
Имя
VkSubpassDescriptionFlagBits - Битовая маска, указывающая использование субпрохода
C Спецификация
Биты, которые могут быть установлены в VkSubpassDescription::flags, указывающие использование субпрохода, следующие:
typedef enum VkSubpassDescriptionFlagBits {
} VkSubpassDescriptionFlagBits; См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubpassDescriptionFlagBits
VkSystemAllocationScope(3)
Имя
VkSystemAllocationScope - Область выделения
C Спецификация
Каждое выделение имеет область выделения, которая определяет его срок службы и с каким объектом оно связано. Возможные значения, передаваемые параметру allocationScope функций обратного вызова, указанных VkAllocationCallbacks, указывающие область выделения, следующие:
typedef enum VkSystemAllocationScope {
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
} VkSystemAllocationScope; Описание
-
VK_SYSTEM_ALLOCATION_SCOPE_COMMANDуказывает, что выделение относится к длительности выполнения команды Vulkan. -
VK_SYSTEM_ALLOCATION_SCOPE_OBJECTуказывает, что выделение относится к сроку службы объекта Vulkan, который создается или используется. -
VK_SYSTEM_ALLOCATION_SCOPE_CACHEуказывает, что выделение относится к сроку службы объектаVkPipelineCache. -
VK_SYSTEM_ALLOCATION_SCOPE_DEVICEуказывает, что выделение относится к сроку службы устройства Vulkan. -
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCEуказывает, что выделение относится к сроку службы экземпляра Vulkan.
Большинство команд Vulkan работают с одним объектом, или существует единственный объект, который создается или изменяется. Когда выделение использует область выделения VK_SYSTEM_ALLOCATION_SCOPE_OBJECT или VK_SYSTEM_ALLOCATION_SCOPE_CACHE, выделение относится к объекту, который создается или изменяется.
Когда реализации требуется память хоста, она будет делать вызовы в приложение, используя наиболее конкретный доступный распределитель и область выделения:
- Если выделение относится к длительности команды, распределитель будет использовать область выделения
VK_SYSTEM_ALLOCATION_SCOPE_COMMAND. Используется наиболее конкретный доступный распределитель: если создаваемый или изменяемый объект имеет распределитель, будет использоваться распределитель этого объекта; иначе, если родительскийVkDeviceимеет распределитель, он будет использован; иначе, если родительскийVkInstanceимеет распределитель, он будет использован. В противном случае, - Если выделение связано с объектом типа
VkPipelineCache, распределитель будет использовать область выделенияVK_SYSTEM_ALLOCATION_SCOPE_CACHE. Используется наиболее конкретный доступный распределитель (кэш конвейеров, иначе устройство, иначе экземпляр). В противном случае, - Если выделение относится к сроку службы объекта, этот объект создается или изменяется командой, и тип этого объекта не
VkDeviceилиVkInstance, распределитель будет использовать область выделенияVK_SYSTEM_ALLOCATION_SCOPE_OBJECT. Используется наиболее конкретный доступный распределитель (объект, иначе устройство, иначе экземпляр). В противном случае, - Если выделение относится к сроку службы устройства, распределитель будет использовать область выделения
VK_SYSTEM_ALLOCATION_SCOPE_DEVICE. Используется наиболее конкретный доступный распределитель (устройство, иначе экземпляр). В противном случае, - Если выделение относится к сроку службы экземпляра, и экземпляр имеет распределитель, его распределитель будет использоваться с областью выделения
VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE. - В противном случае реализация будет выделять память через альтернативный механизм, который не указан.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSystemAllocationScope
VkVertexInputRate(3)
Имя
VkVertexInputRate - Указывает скорость, с которой атрибуты вершин извлекаются из буферов
C Спецификация
Возможные значения VkVertexInputBindingDescription::inputRate, указывающие скорость, с которой атрибуты вершин извлекаются из буферов, следующие:
typedef enum VkVertexInputRate {
VK_VERTEX_INPUT_RATE_VERTEX = 0,
VK_VERTEX_INPUT_RATE_INSTANCE = 1,
} VkVertexInputRate; Описание
-
VK_VERTEX_INPUT_RATE_VERTEXуказывает, что адресация атрибутов вершин является функцией индекса вершины. -
VK_VERTEX_INPUT_RATE_INSTANCEуказывает, что адресация атрибутов вершин является функцией индекса экземпляра.
См. также
VkVertexInputBindingDescription
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkVertexInputRate
Флаги
VkAccessFlags(3)
Имя
VkAccessFlags - Битовая маска VkAccessFlagBits
C Спецификация
typedef VkFlags VkAccessFlags;
Описание
VkAccessFlags является маской из нуля или более VkAccessFlagBits. Она используется как член и/или параметр структур и команд в разделе «См. также» ниже.
См. также
VkAccessFlagBits, VkBufferMemoryBarrier, VkImageMemoryBarrier, VkMemoryBarrier, VkSubpassDependency
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAccessFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не непосредственно.
VkAttachmentDescriptionFlags(3)
Имя
VkAttachmentDescriptionFlags - Битовая маска VkAttachmentDescriptionFlagBits
C Спецификация
typedef VkFlags VkAttachmentDescriptionFlags;
Описание
VkAttachmentDescriptionFlags является маской из нуля или более VkAttachmentDescriptionFlagBits. Она используется как член и/или параметр структур и команд в разделе «См. также» ниже.
См. также
VkAttachmentDescription, VkAttachmentDescriptionFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkAttachmentDescriptionFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не непосредственно.
VkBufferCreateFlags(3)
Имя
VkBufferCreateFlags - Битовая маска VkBufferCreateFlagBits
C Спецификация
typedef VkFlags VkBufferCreateFlags;
Описание
VkBufferCreateFlags является маской из нуля или более VkBufferCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе «См. также» ниже.
См. также
VkBufferCreateFlagBits, VkBufferCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не непосредственно.
VkBufferUsageFlags(3)
Имя
VkBufferUsageFlags - Битовая маска VkBufferUsageFlagBits
C Спецификация
typedef VkFlags VkBufferUsageFlags;
Описание
VkBufferUsageFlags является маской из нуля или более VkBufferUsageFlagBits. Она используется как член и/или параметр структур и команд в разделе «См. также» ниже.
См. также
VkBufferCreateInfo, VkBufferUsageFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferUsageFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не непосредственно.
VkBufferViewCreateFlags(3)
Имя
VkBufferViewCreateFlags - Битовая маска VkBufferViewCreateFlagBits
C Спецификация
typedef VkFlags VkBufferViewCreateFlags;
Описание
VkBufferViewCreateFlags представляет собой маску из нуля или более VkBufferViewCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBufferViewCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkColorComponentFlags(3)
Имя
VkColorComponentFlags - Битовая маска VkColorComponentFlagBits
C Спецификация
typedef VkFlags VkColorComponentFlags;
Описание
VkColorComponentFlags представляет собой маску из нуля или более VkColorComponentFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkColorComponentFlagBits, VkPipelineColorBlendAttachmentState
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkColorComponentFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkCommandBufferResetFlags(3)
Имя
VkCommandBufferResetFlags - Битовая маска VkCommandBufferResetFlagBits
C Спецификация
typedef VkFlags VkCommandBufferResetFlags;
Описание
VkCommandBufferResetFlags представляет собой маску из нуля или более VkCommandBufferResetFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandBufferResetFlagBits, vkResetCommandBuffer
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferResetFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkCommandBufferUsageFlags(3)
Имя
VkCommandBufferUsageFlags - Битовая маска VkCommandBufferUsageFlagBits
C Спецификация
typedef VkFlags VkCommandBufferUsageFlags;
Описание
VkCommandBufferUsageFlags представляет собой маску из нуля или более VkCommandBufferUsageFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandBufferBeginInfo, VkCommandBufferUsageFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandBufferUsageFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkCommandPoolCreateFlags(3)
Имя
VkCommandPoolCreateFlags - Битовая маска VkCommandPoolCreateFlagBits
C Спецификация
typedef VkFlags VkCommandPoolCreateFlags;
Описание
VkCommandPoolCreateFlags представляет собой маску из нуля или более VkCommandPoolCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandPoolCreateFlagBits, VkCommandPoolCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPoolCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkCommandPoolResetFlags(3)
Имя
VkCommandPoolResetFlags - Битовая маска VkCommandPoolResetFlagBits
C Спецификация
typedef VkFlags VkCommandPoolResetFlags;
Описание
VkCommandPoolResetFlags представляет собой маску из нуля или более VkCommandPoolResetFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandPoolResetFlagBits, vkResetCommandPool
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCommandPoolResetFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkCullModeFlags(3)
Имя
VkCullModeFlags - Битовая маска VkCullModeFlagBits
C Спецификация
typedef VkFlags VkCullModeFlags;
Описание
VkCullModeFlags представляет собой маску из нуля или более VkCullModeFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCullModeFlagBits, VkPipelineRasterizationStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkCullModeFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkDependencyFlags(3)
Имя
VkDependencyFlags - Битовая маска VkDependencyFlagBits
C Спецификация
typedef VkFlags VkDependencyFlags;
Описание
VkDependencyFlags представляет собой маску из нуля или более VkDependencyFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkDependencyFlagBits, VkSubpassDependency, vkCmdPipelineBarrier
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDependencyFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkDescriptorPoolCreateFlags(3)
Имя
VkDescriptorPoolCreateFlags - Битовая маска VkDescriptorPoolCreateFlagBits
C Спецификация
typedef VkFlags VkDescriptorPoolCreateFlags;
Описание
VkDescriptorPoolCreateFlags представляет собой маску из нуля или более VkDescriptorPoolCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkDescriptorPoolCreateFlagBits, VkDescriptorPoolCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPoolCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkDescriptorPoolResetFlags(3)
Имя
VkDescriptorPoolResetFlags - Битовая маска VkDescriptorPoolResetFlagBits
C Спецификация
typedef VkFlags VkDescriptorPoolResetFlags;
Описание
VkDescriptorPoolResetFlags представляет собой маску из нуля или более VkDescriptorPoolResetFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorPoolResetFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkDescriptorSetLayoutCreateFlags(3)
Имя
VkDescriptorSetLayoutCreateFlags - Битовая маска VkDescriptorSetLayoutCreateFlagBits
C Спецификация
typedef VkFlags VkDescriptorSetLayoutCreateFlags;
Описание
VkDescriptorSetLayoutCreateFlags представляет собой маску из нуля или более VkDescriptorSetLayoutCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkDescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDescriptorSetLayoutCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
END_OF_DOCUMENT_MARKERVkDeviceCreateFlags(3)
Name
VkDeviceCreateFlags - Bitmask of VkDeviceCreateFlagBits
C Спецификация
typedef VkFlags VkDeviceCreateFlags;
Описание
VkDeviceCreateFlags представляет собой маску из нуля или более VkDeviceCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkDeviceQueueCreateFlags(3)
Name
VkDeviceQueueCreateFlags - Bitmask of VkDeviceQueueCreateFlagBits
C Спецификация
typedef VkFlags VkDeviceQueueCreateFlags;
Описание
VkDeviceQueueCreateFlags представляет собой маску из нуля или более VkDeviceQueueCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceQueueCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkEventCreateFlags(3)
Name
VkEventCreateFlags - Bitmask of VkEventCreateFlagBits
C Спецификация
typedef VkFlags VkEventCreateFlags;
Описание
VkEventCreateFlags представляет собой маску из нуля или более VkEventCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkEventCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkFenceCreateFlags(3)
Name
VkFenceCreateFlags - Bitmask of VkFenceCreateFlagBits
C Спецификация
typedef VkFlags VkFenceCreateFlags;
Описание
VkFenceCreateFlags представляет собой маску из нуля или более VkFenceCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkFenceCreateFlagBits, VkFenceCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFenceCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkFormatFeatureFlags(3)
Name
VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits
C Спецификация
typedef VkFlags VkFormatFeatureFlags;
Описание
VkFormatFeatureFlags представляет собой маску из нуля или более VkFormatFeatureFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkFormatFeatureFlagBits, VkFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormatFeatureFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkFramebufferCreateFlags(3)
Name
VkFramebufferCreateFlags - Bitmask of VkFramebufferCreateFlagBits
C Спецификация
typedef VkFlags VkFramebufferCreateFlags;
Описание
VkFramebufferCreateFlags представляет собой маску из нуля или более VkFramebufferCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFramebufferCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkImageAspectFlags(3)
Name
VkImageAspectFlags - Bitmask of VkImageAspectFlagBits
C Спецификация
typedef VkFlags VkImageAspectFlags;
Описание
VkImageAspectFlags представляет собой маску из нуля или более VkImageAspectFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkClearAttachment, VkImageAspectFlagBits, VkImageSubresource, VkImageSubresourceLayers, VkImageSubresourceRange, VkSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageAspectFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkImageCreateFlags(3)
Name
VkImageCreateFlags - Bitmask of VkImageCreateFlagBits
C Спецификация
typedef VkFlags VkImageCreateFlags;
Описание
VkImageCreateFlags представляет собой маску из нуля или более VkImageCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkImageCreateFlagBits, VkImageCreateInfo, vkGetPhysicalDeviceImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkImageUsageFlags(3)
Name
VkImageUsageFlags - Bitmask of VkImageUsageFlagBits
C Спецификация
typedef VkFlags VkImageUsageFlags;
Описание
VkImageUsageFlags представляет собой маску из нуля или более VkImageUsageFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkImageCreateInfo, VkImageUsageFlagBits, vkGetPhysicalDeviceImageFormatProperties, vkGetPhysicalDeviceSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageUsageFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkImageViewCreateFlags(3)
Name
VkImageViewCreateFlags - Bitmask of VkImageViewCreateFlagBits
C Спецификация
typedef VkFlags VkImageViewCreateFlags;
Описание
VkImageViewCreateFlags представляет собой маску из нуля или более VkImageViewCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkImageViewCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkInstanceCreateFlags(3)
Name
VkInstanceCreateFlags - Bitmask of VkInstanceCreateFlagBits
C Спецификация
typedef VkFlags VkInstanceCreateFlags;
Описание
VkInstanceCreateFlags представляет собой маску из нуля или более VkInstanceCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkInstanceCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
END_OF_DOCUMENT_MARKERVkMemoryHeapFlags(3)
Name
VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits
C Specification
typedef VkFlags VkMemoryHeapFlags;
Description
VkMemoryHeapFlags представляет собой маску из нуля или более VkMemoryHeapFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkMemoryHeap, VkMemoryHeapFlagBits
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryHeapFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkMemoryMapFlags(3)
Name
VkMemoryMapFlags - Bitmask of VkMemoryMapFlagBits
C Specification
typedef VkFlags VkMemoryMapFlags;
Description
VkMemoryMapFlags представляет собой маску из нуля или более VkMemoryMapFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryMapFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkMemoryPropertyFlags(3)
Name
VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits
C Specification
typedef VkFlags VkMemoryPropertyFlags;
Description
VkMemoryPropertyFlags представляет собой маску из нуля или более VkMemoryPropertyFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkMemoryPropertyFlagBits, VkMemoryType
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkMemoryPropertyFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineCacheCreateFlags(3)
Name
VkPipelineCacheCreateFlags - Bitmask of VkPipelineCacheCreateFlagBits
C Specification
typedef VkFlags VkPipelineCacheCreateFlags;
Description
VkPipelineCacheCreateFlags представляет собой маску из нуля или более VkPipelineCacheCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCacheCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineColorBlendStateCreateFlags(3)
Name
VkPipelineColorBlendStateCreateFlags - Bitmask of VkPipelineColorBlendStateCreateFlagBits
C Specification
typedef VkFlags VkPipelineColorBlendStateCreateFlags;
Description
VkPipelineColorBlendStateCreateFlags представляет собой маску из нуля или более VkPipelineColorBlendStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkPipelineColorBlendStateCreateInfo
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineCreateFlags(3)
Name
VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits
C Specification
typedef VkFlags VkPipelineCreateFlags;
Description
VkPipelineCreateFlags представляет собой маску из нуля или более VkPipelineCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkPipelineCreateFlagBits
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineDepthStencilStateCreateFlags(3)
Name
VkPipelineDepthStencilStateCreateFlags - Bitmask of VkPipelineDepthStencilStateCreateFlagBits
C Specification
typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
Description
VkPipelineDepthStencilStateCreateFlags представляет собой маску из нуля или более VkPipelineDepthStencilStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkPipelineDepthStencilStateCreateInfo
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineDynamicStateCreateFlags(3)
Name
VkPipelineDynamicStateCreateFlags - Bitmask of VkPipelineDynamicStateCreateFlagBits
C Specification
typedef VkFlags VkPipelineDynamicStateCreateFlags;
Description
VkPipelineDynamicStateCreateFlags представляет собой маску из нуля или более VkPipelineDynamicStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkPipelineDynamicStateCreateInfo
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineDynamicStateCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineInputAssemblyStateCreateFlags(3)
Name
VkPipelineInputAssemblyStateCreateFlags - Bitmask of VkPipelineInputAssemblyStateCreateFlagBits
C Specification
typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
Description
VkPipelineInputAssemblyStateCreateFlags представляет собой маску из нуля или более VkPipelineInputAssemblyStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkPipelineInputAssemblyStateCreateInfo
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineLayoutCreateFlags(3)
Name
VkPipelineLayoutCreateFlags - Bitmask of VkPipelineLayoutCreateFlagBits
C Specification
typedef VkFlags VkPipelineLayoutCreateFlags;
Description
VkPipelineLayoutCreateFlags представляет собой маску из нуля или более VkPipelineLayoutCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineLayoutCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineMultisampleStateCreateFlags(3)
Name
VkPipelineMultisampleStateCreateFlags - Bitmask of VkPipelineMultisampleStateCreateFlagBits
C Specification
typedef VkFlags VkPipelineMultisampleStateCreateFlags;
Description
VkPipelineMultisampleStateCreateFlags представляет собой маску из нуля или более VkPipelineMultisampleStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
See Also
VkPipelineMultisampleStateCreateInfo
Document Notes
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineRasterizationStateCreateFlags(3)
Имя
VkPipelineRasterizationStateCreateFlags - Битовая маска VkPipelineRasterizationStateCreateFlagBits
C Спецификация
typedef VkFlags VkPipelineRasterizationStateCreateFlags;
Описание
VkPipelineRasterizationStateCreateFlags является маской из нуля или более VkPipelineRasterizationStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineRasterizationStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineShaderStageCreateFlags(3)
Имя
VkPipelineShaderStageCreateFlags - Битовая маска VkPipelineShaderStageCreateFlagBits
C Спецификация
typedef VkFlags VkPipelineShaderStageCreateFlags;
Описание
VkPipelineShaderStageCreateFlags является маской из нуля или более VkPipelineShaderStageCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineShaderStageCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineShaderStageCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineStageFlags(3)
Имя
VkPipelineStageFlags - Битовая маска VkPipelineStageFlagBits
C Спецификация
typedef VkFlags VkPipelineStageFlags;
Описание
VkPipelineStageFlags является маской из нуля или более VkPipelineStageFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineStageFlagBits, VkSubmitInfo, VkSubpassDependency, vkCmdPipelineBarrier, vkCmdResetEvent, vkCmdSetEvent, vkCmdWaitEvents
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkPipelineStageFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineTessellationStateCreateFlags(3)
Имя
VkPipelineTessellationStateCreateFlags - Битовая маска VkPipelineTessellationStateCreateFlagBits
C Спецификация
typedef VkFlags VkPipelineTessellationStateCreateFlags;
Описание
VkPipelineTessellationStateCreateFlags является маской из нуля или более VkPipelineTessellationStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineTessellationStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineVertexInputStateCreateFlags(3)
Имя
VkPipelineVertexInputStateCreateFlags - Битовая маска VkPipelineVertexInputStateCreateFlagBits
C Спецификация
typedef VkFlags VkPipelineVertexInputStateCreateFlags;
Описание
VkPipelineVertexInputStateCreateFlags является маской из нуля или более VkPipelineVertexInputStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineVertexInputStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkPipelineViewportStateCreateFlags(3)
Имя
VkPipelineViewportStateCreateFlags - Битовая маска VkPipelineViewportStateCreateFlagBits
C Спецификация
typedef VkFlags VkPipelineViewportStateCreateFlags;
Описание
VkPipelineViewportStateCreateFlags является маской из нуля или более VkPipelineViewportStateCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkPipelineViewportStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkQueryControlFlags(3)
Имя
VkQueryControlFlags - Битовая маска VkQueryControlFlagBits
C Спецификация
typedef VkFlags VkQueryControlFlags;
Описание
VkQueryControlFlags является маской из нуля или более VkQueryControlFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandBufferInheritanceInfo, VkQueryControlFlagBits, vkCmdBeginQuery
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryControlFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkQueryPipelineStatisticFlags(3)
Имя
VkQueryPipelineStatisticFlags - Битовая маска VkQueryPipelineStatisticFlagBits
C Спецификация
typedef VkFlags VkQueryPipelineStatisticFlags;
Описание
VkQueryPipelineStatisticFlags является маской из нуля или более VkQueryPipelineStatisticFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkCommandBufferInheritanceInfo, VkQueryPipelineStatisticFlagBits, VkQueryPoolCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryPipelineStatisticFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkQueryPoolCreateFlags(3)
Имя
VkQueryPoolCreateFlags - Битовая маска VkQueryPoolCreateFlagBits
C Спецификация
typedef VkFlags VkQueryPoolCreateFlags;
Описание
VkQueryPoolCreateFlags является маской из нуля или более VkQueryPoolCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryPoolCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не напрямую.
VkQueryResultFlags(3)
Имя
VkQueryResultFlags - Битовая маска VkQueryResultFlagBits
C Спецификация
typedef VkFlags VkQueryResultFlags;
Описание
VkQueryResultFlags является маской из нуля или более VkQueryResultFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkQueryResultFlagBits, vkCmdCopyQueryPoolResults, vkGetQueryPoolResults
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueryResultFlags
END_OF_DOCUMENT_MARKERЭта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkQueueFlags(3)
Имя
VkQueueFlags - Битовая маска VkQueueFlagBits
C Спецификация
typedef VkFlags VkQueueFlags;
Описание
VkQueueFlags представляет собой маску из нуля или более VkQueueFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkQueueFamilyProperties, VkQueueFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkQueueFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkRenderPassCreateFlags(3)
Имя
VkRenderPassCreateFlags - Битовая маска VkRenderPassCreateFlagBits
C Спецификация
typedef VkFlags VkRenderPassCreateFlags;
Описание
VkRenderPassCreateFlags представляет собой маску из нуля или более VkRenderPassCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkRenderPassCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSampleCountFlags(3)
Имя
VkSampleCountFlags - Битовая маска VkSampleCountFlagBits
C Спецификация
typedef VkFlags VkSampleCountFlags;
Описание
VkSampleCountFlags представляет собой маску из нуля или более VkSampleCountFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkImageFormatProperties, VkPhysicalDeviceLimits, VkSampleCountFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSampleCountFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSamplerCreateFlags(3)
Имя
VkSamplerCreateFlags - Битовая маска VkSamplerCreateFlagBits
C Спецификация
typedef VkFlags VkSamplerCreateFlags;
Описание
VkSamplerCreateFlags представляет собой маску из нуля или более VkSamplerCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSamplerCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSemaphoreCreateFlags(3)
Имя
VkSemaphoreCreateFlags - Битовая маска VkSemaphoreCreateFlagBits
C Спецификация
typedef VkFlags VkSemaphoreCreateFlags;
Описание
VkSemaphoreCreateFlags представляет собой маску из нуля или более VkSemaphoreCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSemaphoreCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkShaderModuleCreateFlags(3)
Имя
VkShaderModuleCreateFlags - Битовая маска VkShaderModuleCreateFlagBits
C Спецификация
typedef VkFlags VkShaderModuleCreateFlags;
Описание
VkShaderModuleCreateFlags представляет собой маску из нуля или более VkShaderModuleCreateFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkShaderModuleCreateFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkShaderStageFlags(3)
Имя
VkShaderStageFlags - Битовая маска VkShaderStageFlagBits
C Спецификация
typedef VkFlags VkShaderStageFlags;
Описание
VkShaderStageFlags представляет собой маску из нуля или более VkShaderStageFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkDescriptorSetLayoutBinding, VkPushConstantRange, VkShaderStageFlagBits, vkCmdPushConstants
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkShaderStageFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSparseImageFormatFlags(3)
Имя
VkSparseImageFormatFlags - Битовая маска VkSparseImageFormatFlagBits
C Спецификация
typedef VkFlags VkSparseImageFormatFlags;
Описание
VkSparseImageFormatFlags представляет собой маску из нуля или более VkSparseImageFormatFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkSparseImageFormatFlagBits, VkSparseImageFormatProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseImageFormatFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSparseMemoryBindFlags(3)
Имя
VkSparseMemoryBindFlags - Битовая маска VkSparseMemoryBindFlagBits
C Спецификация
typedef VkFlags VkSparseMemoryBindFlags;
Описание
VkSparseMemoryBindFlags представляет собой маску из нуля или более VkSparseMemoryBindFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkSparseImageMemoryBind, VkSparseMemoryBind, VkSparseMemoryBindFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSparseMemoryBindFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkStencilFaceFlags(3)
Имя
VkStencilFaceFlags - Битовая маска VkStencilFaceFlagBits
C Спецификация
typedef VkFlags VkStencilFaceFlags;
Описание
VkStencilFaceFlags представляет собой маску из нуля или более VkStencilFaceFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkStencilFaceFlagBits, vkCmdSetStencilCompareMask, vkCmdSetStencilReference, vkCmdSetStencilWriteMask
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkStencilFaceFlags
Эта страница является сгенерированным документом. Исправления и изменения должны вноситься в скрипты генератора, а не напрямую.
VkSubpassDescriptionFlags(3)
Имя
VkSubpassDescriptionFlags - Битовая маска VkSubpassDescriptionFlagBits
C Спецификация
typedef VkFlags VkSubpassDescriptionFlags;
Описание
VkSubpassDescriptionFlags представляет собой маску из нуля или более VkSubpassDescriptionFlagBits. Она используется как член и/или параметр структур и команд в разделе "См. также" ниже.
См. также
VkSubpassDescription, VkSubpassDescriptionFlagBits
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSubpassDescriptionFlags
Эта страница является сгенерированным документом. Исправления и изменения следует вносить в скрипты генератора, а не непосредственно.
Типы указателей на функции
PFN_vkAllocationFunction(3)
Имя
PFN_vkAllocationFunction - Определяемая приложением функция выделения памяти
C-спецификация
Тип pfnAllocation:
typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
void* pUserData,
size_t size,
size_t alignment,
VkSystemAllocationScope allocationScope); Параметры
-
pUserData— значение, указанное для VkAllocationCallbacks::pUserDataв выделенном приложении. -
size— размер запрашиваемого выделения в байтах. -
alignment— запрашиваемое выравнивание выделения в байтах и должно быть степенью двойки. -
allocationScope— значение VkSystemAllocationScope, указывающее область действия выделения, как описано здесь.
Описание
Если pfnAllocation не может выделить запрашиваемую память, он должен вернуть NULL. Если выделение прошло успешно, он должен вернуть допустимый указатель на выделение памяти, содержащее не менее size байтов, а значение указателя должно быть кратно alignment.
Примечание
Корректная работа Vulkan не может гарантироваться, если приложение не следует этим правилам.
Например,
pfnAllocation(илиpfnReallocation) могут привести к завершению работы запущенного экземпляра (экземпляров) Vulkan при сбое выделения в целях отладки, непосредственно или косвенно. В этих условиях нельзя предполагать, что какая-либо часть любых затронутых объектов VkInstance будет работать корректно (даже vkDestroyInstance), и приложение должно обеспечить надлежащее очищение другими способами (например, завершение процесса).
Если pfnAllocation возвращает NULL, и если реализация не может продолжить корректную обработку текущей команды без запрашиваемого выделения, она должна рассматривать это как ошибку времени выполнения и генерировать VK_ERROR_OUT_OF_HOST_MEMORY в соответствующее время для команды, в которой было обнаружено условие, как описано в Коды возврата.
Если реализация может продолжить корректную обработку текущей команды без запрашиваемого выделения, то она может сделать это и не должна генерировать VK_ERROR_OUT_OF_HOST_MEMORY в результате этого сбоя выделения.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#PFN_vkAllocationFunction
PFN_vkFreeFunction(3)
Имя
PFN_vkFreeFunction - Определяемая приложением функция освобождения памяти
C-спецификация
Тип pfnFree:
typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
void* pUserData,
void* pMemory); Параметры
-
pUserData— значение, указанное для VkAllocationCallbacks::pUserDataв выделенном приложении. -
pMemory— выделение, которое необходимо освободить.
Описание
pMemory может быть NULL, что обратный вызов должен обрабатывать безопасно. Если pMemory не-NULL, он должен быть указателем, ранее выделенным pfnAllocation или pfnReallocation. Приложение должно освободить эту память.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#PFN_vkFreeFunction
PFN_vkInternalAllocationNotification(3)
Имя
PFN_vkInternalAllocationNotification - Определяемая приложением функция уведомления о выделении памяти
C-спецификация
Тип pfnInternalAllocation:
typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
void* pUserData,
size_t size,
VkInternalAllocationType allocationType,
VkSystemAllocationScope allocationScope); Параметры
-
pUserData— значение, указанное для VkAllocationCallbacks::pUserDataв выделенном приложении. -
size— запрашиваемый размер выделения. -
allocationType— значение VkInternalAllocationType, указывающее запрашиваемый тип выделения. -
allocationScope— значение VkSystemAllocationScope, указывающее область действия выделения, как описано здесь.
Описание
Это чисто информационный обратный вызов.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
PFN_vkInternalFreeNotification(3)
Имя
PFN_vkInternalFreeNotification - Определяемая приложением функция уведомления об освобождении памяти
C-спецификация
Тип pfnInternalFree:
typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
void* pUserData,
size_t size,
VkInternalAllocationType allocationType,
VkSystemAllocationScope allocationScope); Параметры
-
pUserData— значение, указанное для VkAllocationCallbacks::pUserDataв выделенном приложении. -
size— запрашиваемый размер выделения. -
allocationType— значение VkInternalAllocationType, указывающее запрашиваемый тип выделения. -
allocationScope— значение VkSystemAllocationScope, указывающее область действия выделения, как описано здесь.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#PFN_vkInternalFreeNotification
PFN_vkReallocationFunction(3)
Имя
PFN_vkReallocationFunction - Определяемая приложением функция перераспределения памяти
C-спецификация
Тип pfnReallocation:
typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
void* pUserData,
void* pOriginal,
size_t size,
size_t alignment,
VkSystemAllocationScope allocationScope); Параметры
-
pUserData— значение, указанное для VkAllocationCallbacks::pUserDataв выделенном приложении. -
pOriginalдолжно быть либоNULL, либо указателем, ранее возвращеннымpfnReallocationилиpfnAllocationтого же самого выделения. -
size— размер запрашиваемого выделения в байтах. -
alignment— запрашиваемое выравнивание выделения в байтах и должно быть степенью двойки. -
allocationScope— значение VkSystemAllocationScope, указывающее область действия выделения, как описано здесь.
Описание
pfnReallocation должен возвращать выделение с достаточным пространством для size байтов, и содержимое исходного выделения с нулевого байта до min(исходный размер, новый размер) - 1 должно сохраняться в возвращаемом выделении. Если size больше, чем старый размер, содержимое дополнительного пространства не определено. Если для выполнения этих требований необходимо создать новое выделение, то старое выделение следует освободить.
Если pOriginal равно NULL, то pfnReallocation должно вести себя эквивалентно вызову PFN_vkAllocationFunction с теми же значениями параметров (без pOriginal).
Если size равно нулю, то pfnReallocation должно вести себя эквивалентно вызову PFN_vkFreeFunction с тем же значением параметра pUserData, и pMemory равным pOriginal.
Если pOriginal не-NULL, реализация должна обеспечить, чтобы alignment равнялось alignment, использованному для первоначального выделения pOriginal.
Если эта функция завершается неудачей, и pOriginal не-NULL, приложение не должно освобождать старое выделение.
pfnReallocation должен следовать тем же правилам для возвращаемых значений, что и PFN_vkAllocationFunction.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#PFN_vkReallocationFunction
PFN_vkVoidFunction(3)
Имя
PFN_vkVoidFunction - Фиктивный тип указателя на функцию, возвращаемый запросами
C-спецификация
Определение PFN_vkVoidFunction:
typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
См. также
vkGetDeviceProcAddr, vkGetInstanceProcAddr
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#PFN_vkVoidFunction
Скалярные типы Vulkan
VkBool32(3)
Имя
VkBool32 - булевый тип Vulkan
Спецификация C
VkBool32 представляет булевы True и False значения, поскольку в C нет достаточно переносимого встроенного булевого типа:
typedef uint32_t VkBool32;
Описание
VK_TRUE представляет булево значение Истина (целое число 1), а VK_FALSE - булево значение Ложь (целое число 0).
Все значения, возвращаемые реализацией Vulkan в VkBool32, будут либо VK_TRUE, либо VK_FALSE.
Приложения не должны передавать никакие другие значения, кроме VK_TRUE или VK_FALSE, в реализацию Vulkan, где ожидается VkBool32.
См. также
VkCommandBufferInheritanceInfo, VkPhysicalDeviceFeatures, VkPhysicalDeviceLimits, VkPhysicalDeviceSparseProperties, VkPipelineColorBlendAttachmentState, VkPipelineColorBlendStateCreateInfo, VkPipelineDepthStencilStateCreateInfo, VkPipelineInputAssemblyStateCreateInfo, VkPipelineMultisampleStateCreateInfo, VkPipelineRasterizationStateCreateInfo, VkSamplerCreateInfo, vkWaitForFences
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkBool32
VkDeviceSize(3)
Имя
VkDeviceSize - размер и смещения памяти устройства Vulkan
Спецификация C
VkDeviceSize представляет значения размера и смещения памяти устройства:
typedef uint64_t VkDeviceSize;
См. также
VkBufferCopy, VkBufferCreateInfo, VkBufferImageCopy, VkBufferMemoryBarrier, VkBufferViewCreateInfo, VkDescriptorBufferInfo, VkImageFormatProperties, VkMappedMemoryRange, VkMemoryAllocateInfo, VkMemoryHeap, VkMemoryRequirements, VkPhysicalDeviceLimits, VkSparseImageMemoryBind, VkSparseImageMemoryRequirements, VkSparseMemoryBind, VkSubresourceLayout, vkBindBufferMemory, vkBindImageMemory, vkCmdBindIndexBuffer, vkCmdBindVertexBuffers, vkCmdCopyQueryPoolResults, vkCmdDispatchIndirect, vkCmdDrawIndexedIndirect, vkCmdDrawIndirect, vkCmdFillBuffer, vkCmdUpdateBuffer, vkGetDeviceMemoryCommitment, vkGetQueryPoolResults, vkMapMemory
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkDeviceSize
VkFlags(3)
Имя
VkFlags - битовые маски Vulkan
Спецификация C
Набор флагов представлен битовой маской с использованием типа VkFlags:
typedef uint32_t VkFlags;
Описание
Битовые маски передаются во многие команды и структуры для компактного представления параметров, но VkFlags не используется напрямую в API. Вместо этого используется тип Vk*Flags, который является псевдонимом VkFlags, и имя которого соответствует соответствующим Vk*FlagBits, которые допустимы для этого типа. Эти псевдонимы описаны в приложении Типы флагов спецификации.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFlags
VkSampleMask(3)
Имя
VkSampleMask - маска информации о покрытии выборки
Спецификация C
Элементы массива маски выборки имеют тип VkSampleMask, каждый из которых представляет 32 бита информации о покрытии:
typedef uint32_t VkSampleMask;
См. также
VkPipelineMultisampleStateCreateInfo
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkSampleMask
Макроопределения C
VK_API_VERSION(3)
Имя
VK_API_VERSION - устаревший макрос номера версии
Спецификация C
VK_API_VERSION теперь закомментирован в vulkan.h и не может использоваться.
// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
См. также
Нет доступных перекрестных ссылок
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_API_VERSION
VK_API_VERSION_1_0(3)
Имя
VK_API_VERSION_1_0 - возвращает номер версии API для Vulkan 1.0
Спецификация C
VK_API_VERSION_1_0 возвращает номер версии API для Vulkan 1.0. Номер версии патча в этом макросе всегда будет равен нулю. Поддерживаемая версия патча для физического устройства может быть запрошена с помощью vkGetPhysicalDeviceProperties.
// Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
См. также
vkCreateInstance, vkGetPhysicalDeviceProperties
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_API_VERSION_1_0
VK_DEFINE_HANDLE(3)
Имя
VK_DEFINE_HANDLE - объявить дескриптор объекта, доступный для диспетчеризации
Спецификация C
VK_DEFINE_HANDLE определяет тип дескриптора, доступного для диспетчеризации.
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
Описание
-
object- имя результирующего типа C.
Единственными типами дескрипторов, доступными для диспетчеризации, являются те, которые связаны с управлением устройствами и экземплярами, например, VkDevice.
См. также
VkCommandBuffer, VkDevice, VkInstance, VkPhysicalDevice, VkQueue
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_DEFINE_HANDLE
VK_DEFINE_NON_DISPATCHABLE_HANDLE(3)
Имя
VK_DEFINE_NON_DISPATCHABLE_HANDLE - объявить дескриптор объекта, недоступный для диспетчеризации
Спецификация C
VK_DEFINE_NON_DISPATCHABLE_HANDLE определяет тип дескриптора, недоступного для диспетчеризации.
#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif
#endif Описание
-
object- имя результирующего типа C.
Большинство типов дескрипторов Vulkan, таких как VkBuffer, недоступны для диспетчеризации.
Примечание
Заголовок vulkan.h позволяет переопределить определение
VK_DEFINE_NON_DISPATCHABLE_HANDLEприложением. ЕслиVK_DEFINE_NON_DISPATCHABLE_HANDLEуже определено при компиляции заголовка vulkan.h, то определение по умолчанию пропускается. Это позволяет приложению определить двоично-совместимый пользовательский дескриптор, который может обеспечить большую безопасность типов или другие функции, необходимые приложению. Поведение не определено, если приложение определяет не двоично-совместимый дескриптор, и может привести к повреждению памяти или завершению работы приложения. Двоичная совместимость зависит от платформы, поэтому приложение должно быть осторожным, если оно переопределяет определениеVK_DEFINE_NON_DISPATCHABLE_HANDLEпо умолчанию.
См. также
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_DEFINE_NON_DISPATCHABLE_HANDLE
VK_HEADER_VERSION(3)
Имя
VK_HEADER_VERSION - номер версии файла заголовка Vulkan
Спецификация C
VK_HEADER_VERSION — это номер версии заголовка vulkan.h. Это значение в настоящее время синхронизируется с номером релиза спецификации. Однако не гарантируется, что синхронизация будет поддерживаться, поскольку большинство обновлений спецификации не влияют на vulkan.h.
// Version of this file #define VK_HEADER_VERSION 59
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_HEADER_VERSION
VK_MAKE_VERSION(3)
Имя
VK_MAKE_VERSION — создание номера версии API
Спецификация C
VK_MAKE_VERSION создает номер версии API.
#define VK_MAKE_VERSION(major, minor, patch) \
(((major) << 22) | ((minor) << 12) | (patch)) Описание
-
major— это номер основной версии. -
minor— это номер дополнительной версии. -
patch— это номер патча версии.
Этот макрос может использоваться при создании параметра VkApplicationInfo::apiVersion передаваемого в vkCreateInstance.
См. также
VkApplicationInfo, vkCreateInstance
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_MAKE_VERSION
VK_NULL_HANDLE(3)
Имя
VK_NULL_HANDLE — зарезервированная недействительная дескриптор объекта
Спецификация C
VK_NULL_HANDLE — это зарезервированное значение, представляющее недействительный дескриптор объекта. Он может передаваться в команды Vulkan и возвращаться из них только тогда, когда это специально разрешено.
#define VK_NULL_HANDLE 0
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_NULL_HANDLE
VK_VERSION_MAJOR(3)
Имя
VK_VERSION_MAJOR — извлечение номера основной версии API
Спецификация C
VK_VERSION_MAJOR извлекает номер основной версии API из упакованного номера версии:
#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_VERSION_MAJOR
VK_VERSION_MINOR(3)
Имя
VK_VERSION_MINOR — извлечение номера дополнительной версии API
Спецификация C
VK_VERSION_MINOR извлекает номер дополнительной версии API из упакованного номера версии:
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_VERSION_MINOR
VK_VERSION_PATCH(3)
Имя
VK_VERSION_PATCH — извлечение номера патча версии API
Спецификация C
VK_VERSION_PATCH извлекает номер патча версии API из упакованного номера версии:
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
См. также
Перекрестные ссылки отсутствуют
Примечания к документу
Для получения дополнительной информации см. спецификацию Vulkan по адресу URL
https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VK_VERSION_PATCH
© 2014–2017 Khronos Group Inc.
Licensed under the Creative Commons Attribution 4.0 International License.
Vulkan and the Vulkan logo are registered trademarks of the Khronos Group Inc.
https://www.khronos.org/registry/vulkan/specs/1.0/apispec.html