// Copyright 2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_FUCHSIA_buffer_collection.txt[]

=== 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.

include::{generated}/interfaces/VK_FUCHSIA_buffer_collection.txt[]

=== Issues

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

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

The explicit requirement for pname: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
