VK_FUCHSIA_buffer_collection(3)

# VK_FUCHSIA_buffer_collection(3) Manual Page

## Name

VK_FUCHSIA_buffer_collection - device extension

## Registered Extension Number

367

## Revision

2

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_FUCHSIA_external_memory
and
VK_KHR_sampler_ycbcr_conversion
or
Vulkan Version 1.1

## API Interactions

- Interacts with VK_EXT_debug_report

## Contact

- John Rosasco [GitHub]rosasco

## Other Extension Metadata

Last Modified Date

  2021-09-23

IP Status

  No known IP claims.

Contributors

  - Craig Stout, Google

  - John Bauman, Google

  - John Rosasco, Google

## Description

A buffer collection is a collection of one or more buffers which were allocated together as a group and which all have the same properties. These properties describe the buffers' internal representation such as its dimensions and memory layout. This ensures that all of the buffers can be used interchangeably by tasks that require swapping among multiple buffers, such as double-buffered graphics rendering.

By sharing such a collection of buffers between components, communication about buffer lifecycle can be made much simpler and more efficient. For example, when a content producer finishes writing to a buffer, it can message the consumer of the buffer with the buffer index, rather than passing a handle to the shared memory.

On Fuchsia, the Sysmem service uses buffer collections as a core construct in its design. VK_FUCHSIA_buffer_collection is the Vulkan extension that allows Vulkan applications to interoperate with the Sysmem service on Fuchsia.

## New Object Types

- VkBufferCollectionFUCHSIA

## New Commands

- vkCreateBufferCollectionFUCHSIA

- vkDestroyBufferCollectionFUCHSIA

- vkGetBufferCollectionPropertiesFUCHSIA

- vkSetBufferCollectionBufferConstraintsFUCHSIA

- vkSetBufferCollectionImageConstraintsFUCHSIA

## New Structures

- VkBufferCollectionConstraintsInfoFUCHSIA

- VkBufferCollectionCreateInfoFUCHSIA

- VkBufferCollectionPropertiesFUCHSIA

- VkBufferConstraintsInfoFUCHSIA

- VkImageConstraintsInfoFUCHSIA

- VkImageFormatConstraintsInfoFUCHSIA

- VkSysmemColorSpaceFUCHSIA

- Extending VkBufferCreateInfo:

  - VkBufferCollectionBufferCreateInfoFUCHSIA

- Extending VkImageCreateInfo:

  - VkBufferCollectionImageCreateInfoFUCHSIA

- Extending VkMemoryAllocateInfo:

  - VkImportMemoryBufferCollectionFUCHSIA

## New Enums

- VkImageConstraintsInfoFlagBitsFUCHSIA

## New Bitmasks

- VkImageConstraintsInfoFlagsFUCHSIA

- VkImageFormatConstraintsFlagsFUCHSIA

## New Enum Constants

- `VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME`

- `VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION`

- Extending VkObjectType:

  - VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA

  - VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA

  - VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA

  - VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA

If VK_EXT_debug_report is supported:

- Extending VkDebugReportObjectTypeEXT:

  - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT

## Issues

1) When configuring a VkImageConstraintsInfoFUCHSIA structure for constraint setting, should a NULL `pFormatConstraints` parameter be allowed ?

RESOLVED: No. Specifying a NULL `pFormatConstraints` results in logical complexity of interpreting the relationship between the VkImageCreateInfo::`usage` settings of the elements of the `pImageCreateInfos` array and the implied or desired VkFormatFeatureFlags.

The explicit requirement for `pFormatConstraints` to be non-NULL simplifies the implied logic of the implementation and expectations for the Vulkan application.

## Version History

- Revision 2, 2021-09-23 (John Rosasco)

  - Review passes

- Revision 1, 2021-03-09 (John Rosasco)

  - Initial revision

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0