1// Copyright 2018 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5library fuchsia.sysmem; 6 7// Describes how a client will access the contents of a buffer. 8// TODO(ZX-2260): change struct to table 9struct BufferUsage { 10 uint32 cpu; 11 uint32 vulkan; 12 uint32 display; 13 uint32 video; 14}; 15 16// Flags for "cpu" usage. 17// The "often" variants prefer cacheable memory. 18const uint32 cpuUsageRead = 1; 19const uint32 cpuUsageReadOften = 2; 20const uint32 cpuUsageWrite = 4; 21const uint32 cpuUsageWriteOften = 8; 22 23// Flags for "vulkan" usage. 24// Based on https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkImageUsageFlagBits.html 25const uint32 vulkanUsageTransferSrc = 0x0001; 26const uint32 vulkanUsageTransferDst = 0x0002; 27const uint32 vulkanUsageSampled = 0x0004; 28const uint32 vulkanUsageStorage = 0x0008; 29const uint32 vulkanUsageColorAttachment = 0x0010; 30const uint32 vulkanUsageStencilAttachment = 0x0020; 31const uint32 vulkanUsageTransientAttachment = 0x0040; 32const uint32 vulkanUsageInputAttachment = 0x0080; 33 34// Flags for "display" usage. 35const uint32 displayUsageLayer = 1; 36const uint32 displayUsageCursor = 2; 37 38// Flags for "video" usage. 39// TODO(ZX-2259): Add more specific HwDecoder flags if needed. 40const uint32 videoUsageHwDecoder = 1; 41const uint32 videoUsageHwEncoder = 2; 42const uint32 videoUsageHwProtected = 4; 43