1 // Copyright 2022 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 use bitflags::bitflags; 6 7 use crate::bindings; 8 9 bitflags! { 10 /// Gives the driver a hint of intended usage to optimize allocation (e.g. tiling). 11 #[derive(Debug, Clone, Copy)] 12 pub struct UsageHint: u32 { 13 /// Surface used by video decoder. 14 const USAGE_HINT_DECODER = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_DECODER; 15 /// Surface used by video encoder. 16 const USAGE_HINT_ENCODER = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_ENCODER; 17 /// Surface read by video post-processing. 18 const USAGE_HINT_VPP_READ = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_VPP_READ; 19 /// Surface written by video post-processing. 20 const USAGE_HINT_VPP_WRITE = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_VPP_WRITE; 21 /// Surface used for display. 22 const USAGE_HINT_DISPLAY = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_DISPLAY; 23 /// Surface used for export to third-party APIs, e.g. via `vaExportSurfaceHandle()`. 24 const USAGE_HINT_EXPORT = bindings::VA_SURFACE_ATTRIB_USAGE_HINT_EXPORT; 25 } 26 } 27