Android-cuttlefish cvd tool
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
gfxstream::Vk Class Reference

#include <vulkan.h>

Collaboration diagram for gfxstream::Vk:
Collaboration graph
[legend]

Classes

struct  BufferWithMemory
 
struct  FramebufferWithAttachments
 
struct  ImageWithMemory
 
struct  YuvImageWithMemory
 

Public Member Functions

 Vk (const Vk &)=delete
 
Vkoperator= (const Vk &)=delete
 
 Vk (Vk &&)=default
 
Vkoperator= (Vk &&)=default
 
gfxstream::expected< BufferWithMemory, vk::Result > CreateBuffer (vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages, vk::MemoryPropertyFlags buffer_memory_properties)
 
gfxstream::expected< BufferWithMemory, vk::Result > CreateBufferWithData (vk::DeviceSize buffer_size, vk::BufferUsageFlags buffer_usages, vk::MemoryPropertyFlags buffer_memory_properties, const uint8_t *buffer_data)
 
vk::Result DoCommandsImmediate (const std::function< vk::Result(vk::UniqueCommandBuffer &)> &func, const std::vector< vk::UniqueSemaphore > &semaphores_wait={}, const std::vector< vk::UniqueSemaphore > &semaphores_signal={})
 
gfxstream::expected< ImageWithMemory, vk::Result > CreateImage (uint32_t width, uint32_t height, vk::Format format, vk::ImageUsageFlags usages, vk::MemoryPropertyFlags memory_properties, vk::ImageLayout returned_layout)
 
gfxstream::expected< std::vector< uint8_t >, vk::Result > DownloadImage (uint32_t width, uint32_t height, const vk::UniqueImage &image, vk::ImageLayout current_layout, vk::ImageLayout returned_layout)
 
gfxstream::expected< YuvImageWithMemory, vk::Result > CreateYuvImage (uint32_t width, uint32_t height, vk::ImageUsageFlags usages, vk::MemoryPropertyFlags memory_properties, vk::ImageLayout returned_layout)
 
vk::Result LoadYuvImage (const vk::UniqueImage &image, uint32_t width, uint32_t height, const std::vector< uint8_t > &image_data_y, const std::vector< uint8_t > &image_data_u, const std::vector< uint8_t > &image_data_v, vk::ImageLayout current_layout, vk::ImageLayout returned_layout)
 
gfxstream::expected< FramebufferWithAttachments, vk::Result > CreateFramebuffer (uint32_t width, uint32_t height, vk::Format colorAttachmentFormat=vk::Format::eUndefined, vk::Format depthAttachmentFormat=vk::Format::eUndefined)
 
vk::Instance & instance ()
 
vk::Device & device ()
 

Static Public Member Functions

static gfxstream::expected< Vk, vk::Result > Load (const std::vector< std::string > &instance_extensions={}, const std::vector< std::string > &instance_layers={}, const std::vector< std::string > &device_extensions={})
 

Private Member Functions

 Vk (vk::detail::DynamicLoader loader, vk::UniqueInstance instance, std::optional< vk::UniqueDebugUtilsMessengerEXT > debug, vk::PhysicalDevice physical_device, vk::UniqueDevice device, vk::Queue queue, uint32_t queue_family_index, vk::UniqueCommandPool command_pool, vk::UniqueBuffer stagingBuffer, vk::UniqueDeviceMemory stagingBufferMemory)
 

Private Attributes

vk::detail::DynamicLoader mLoader
 
vk::UniqueInstance mInstance
 
std::optional< vk::UniqueDebugUtilsMessengerEXT > mDebugMessenger
 
vk::PhysicalDevice mPhysicalDevice
 
vk::UniqueDevice mDevice
 
vk::Queue mQueue
 
uint32_t mQueueFamilyIndex
 
vk::UniqueCommandPool mCommandPool
 
vk::UniqueBuffer mStagingBuffer
 
vk::UniqueDeviceMemory mStagingBufferMemory
 

Static Private Attributes

static constexpr const VkDeviceSize kStagingBufferSize = 32 * 1024 * 1024
 

Constructor & Destructor Documentation

◆ Vk() [1/3]

gfxstream::Vk::Vk ( const Vk )
delete

◆ Vk() [2/3]

gfxstream::Vk::Vk ( Vk &&  )
default

◆ Vk() [3/3]

gfxstream::Vk::Vk ( vk::detail::DynamicLoader  loader,
vk::UniqueInstance  instance,
std::optional< vk::UniqueDebugUtilsMessengerEXT >  debug,
vk::PhysicalDevice  physical_device,
vk::UniqueDevice  device,
vk::Queue  queue,
uint32_t  queue_family_index,
vk::UniqueCommandPool  command_pool,
vk::UniqueBuffer  stagingBuffer,
vk::UniqueDeviceMemory  stagingBufferMemory 
)
inlineprivate

Member Function Documentation

◆ CreateBuffer()

gfxstream::expected< Vk::BufferWithMemory, vk::Result > gfxstream::Vk::CreateBuffer ( vk::DeviceSize  buffer_size,
vk::BufferUsageFlags  buffer_usages,
vk::MemoryPropertyFlags  buffer_memory_properties 
)

◆ CreateBufferWithData()

gfxstream::expected< Vk::BufferWithMemory, vk::Result > gfxstream::Vk::CreateBufferWithData ( vk::DeviceSize  buffer_size,
vk::BufferUsageFlags  buffer_usages,
vk::MemoryPropertyFlags  buffer_memory_properties,
const uint8_t *  buffer_data 
)

◆ CreateFramebuffer()

gfxstream::expected< Vk::FramebufferWithAttachments, vk::Result > gfxstream::Vk::CreateFramebuffer ( uint32_t  width,
uint32_t  height,
vk::Format  colorAttachmentFormat = vk::Format::eUndefined,
vk::Format  depthAttachmentFormat = vk::Format::eUndefined 
)

◆ CreateImage()

gfxstream::expected< Vk::ImageWithMemory, vk::Result > gfxstream::Vk::CreateImage ( uint32_t  width,
uint32_t  height,
vk::Format  format,
vk::ImageUsageFlags  usages,
vk::MemoryPropertyFlags  memory_properties,
vk::ImageLayout  returned_layout 
)

◆ CreateYuvImage()

gfxstream::expected< Vk::YuvImageWithMemory, vk::Result > gfxstream::Vk::CreateYuvImage ( uint32_t  width,
uint32_t  height,
vk::ImageUsageFlags  usages,
vk::MemoryPropertyFlags  memory_properties,
vk::ImageLayout  returned_layout 
)

◆ device()

vk::Device & gfxstream::Vk::device ( )
inline

◆ DoCommandsImmediate()

vk::Result gfxstream::Vk::DoCommandsImmediate ( const std::function< vk::Result(vk::UniqueCommandBuffer &)> &  func,
const std::vector< vk::UniqueSemaphore > &  semaphores_wait = {},
const std::vector< vk::UniqueSemaphore > &  semaphores_signal = {} 
)

◆ DownloadImage()

gfxstream::expected< std::vector< uint8_t >, vk::Result > gfxstream::Vk::DownloadImage ( uint32_t  width,
uint32_t  height,
const vk::UniqueImage &  image,
vk::ImageLayout  current_layout,
vk::ImageLayout  returned_layout 
)

◆ instance()

vk::Instance & gfxstream::Vk::instance ( )
inline

◆ Load()

gfxstream::expected< Vk, vk::Result > gfxstream::Vk::Load ( const std::vector< std::string > &  instance_extensions = {},
const std::vector< std::string > &  instance_layers = {},
const std::vector< std::string > &  device_extensions = {} 
)
static

◆ LoadYuvImage()

vk::Result gfxstream::Vk::LoadYuvImage ( const vk::UniqueImage &  image,
uint32_t  width,
uint32_t  height,
const std::vector< uint8_t > &  image_data_y,
const std::vector< uint8_t > &  image_data_u,
const std::vector< uint8_t > &  image_data_v,
vk::ImageLayout  current_layout,
vk::ImageLayout  returned_layout 
)

◆ operator=() [1/2]

Vk & gfxstream::Vk::operator= ( const Vk )
delete

◆ operator=() [2/2]

Vk & gfxstream::Vk::operator= ( Vk &&  )
default

Member Data Documentation

◆ kStagingBufferSize

constexpr const VkDeviceSize gfxstream::Vk::kStagingBufferSize = 32 * 1024 * 1024
staticconstexprprivate

◆ mCommandPool

vk::UniqueCommandPool gfxstream::Vk::mCommandPool
private

◆ mDebugMessenger

std::optional<vk::UniqueDebugUtilsMessengerEXT> gfxstream::Vk::mDebugMessenger
private

◆ mDevice

vk::UniqueDevice gfxstream::Vk::mDevice
private

◆ mInstance

vk::UniqueInstance gfxstream::Vk::mInstance
private

◆ mLoader

vk::detail::DynamicLoader gfxstream::Vk::mLoader
private

◆ mPhysicalDevice

vk::PhysicalDevice gfxstream::Vk::mPhysicalDevice
private

◆ mQueue

vk::Queue gfxstream::Vk::mQueue
private

◆ mQueueFamilyIndex

uint32_t gfxstream::Vk::mQueueFamilyIndex
private

◆ mStagingBuffer

vk::UniqueBuffer gfxstream::Vk::mStagingBuffer
private

◆ mStagingBufferMemory

vk::UniqueDeviceMemory gfxstream::Vk::mStagingBufferMemory
private

The documentation for this class was generated from the following files: