HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RV_VKImage Class Reference

#include <RV_VKImage.h>

Public Member Functions

const RV_VKImageCreateInfogetInfo () const
 The image properties. More...
 
VkImage getVkImage ()
 
RV_VKMemory & getMemory ()
 
RV_VKSamplergetSampler ()
 
VkImageLayout getLayout () const
 
exint getID () const
 
RV_VKImageViewgetFullView ()
 
RV_VKImageViewgetPrimaryView ()
 
RV_VKImageView createView ()
 Create new VkImageView for whole VkImage range. More...
 
RV_VKImageView createView (const VkImageSubresourceRange &subres)
 Create new VkImageView for specific VkImage subresource range. More...
 
RV_VKImageView createView (const VkImageSubresourceRange &subres, VkImageViewType type)
 Create new VkImageView for specific VkImage subresource range, with type. More...
 
RV_VKImageView createView (VkImageViewType type)
 Create new VkImageView for specific type, trying to use full subresource range. More...
 
void transitionImage (RV_VKCommandBuffer *cb, VkImageLayout new_layout, VkImageUsageFlags new_usage, bool keep_data=true, VkImageSubresourceRange subres=VkImageSubresourceRange{})
 Record a command to transition image into new layout. More...
 
void transitionToSampling (RV_VKCommandBuffer *cb)
 Record a command to transition the image for sampling in a shader. More...
 
template<typename T , typename std::enable_if<!std::is_pointer< T >::value, int >::type = 0>
bool uploadData (RV_Render *r, const T &data, int level=0, int index=0)
 Upload data to the image. Must be in a state for upload. More...
 
bool uploadData (RV_Render *r, const void *data, exint data_size, int level=0, int index=0)
 
bool uploadData (RV_Instance *inst, RV_VKCommandBuffer *cb, const void *data, exint data_size, int level=0, int index=0)
 
bool uploadData (RV_Render *r, RV_VKBuffer *buf, int level=0, int index=0)
 Copy image data to this image from buffer. More...
 
bool uploadData (RV_Instance *inst, RV_VKCommandBuffer *cb, RV_VKBuffer *buf, int level=0, int index=0)
 
bool copyData (RV_Render *r, RV_VKImage *other)
 Copy image data from this image to other. More...
 
void generateMipmaps (RV_Render *r)
 Generate higher mipmap levels from the base level. More...
 
bool downloadData (RV_Render *r, void *data, exint data_size, int level=0, int index=0, bool primary_aspect=true)
 Download image data into data. More...
 
virtual ~RV_VKImage ()
 
void print () const
 Debug print out of image properties (not image data). More...
 

Static Public Member Functions

static RV_VKImagePtr allocateImage (RV_Instance *inst, RV_VKImageCreateInfo *info, const char *name=nullptr)
 Creates new Image based on create info. More...
 
static UT_UniquePtr< RV_VKSamplerallocateSampler (RV_Instance *inst, const RV_VKImageCreateInfo *img_info)
 
static bool queryIsUsable (RV_Instance *inst, RV_VKImageCreateInfo *info)
 

Public Attributes

UT_StringHolder myName
 
VkImageLayout myLastLayout = VK_IMAGE_LAYOUT_UNDEFINED
 
VkAccessFlags myLastAccess = 0
 
VkImageUsageFlags myLastUsage = 0
 
VkPipelineStageFlags myLastStage = 0
 
uint32_t myLastQueueFam = 0
 
RV_StageGroup myWaitingBarrierStage = RV_STAGE_NONE
 

Protected Member Functions

 RV_VKImage (RV_Instance *inst, const RV_VKImageCreateInfo *img_info, VkImage vk_img, RV_VKMemoryPtr mem, RV_VKImageViewPtr view, RV_VKImageViewPtr primary_view, RV_VKSamplerPtr sampler)
 

Static Protected Member Functions

static void deleteImage (RV_Instance *inst, VkImage *img, VkDeviceMemory *mem)
 

Protected Attributes

RV_InstancemyInst = nullptr
 
VkImage myVkImg = VK_NULL_HANDLE
 
exint myId = 0
 
UT_UniquePtr< const
RV_VKImageCreateInfo
myCreateInfo
 
UT_UniquePtr< RV_VKImageViewmyView
 
UT_UniquePtr< RV_VKImageViewmyPrimaryView
 
UT_UniquePtr< RV_VKMemory > myMemory
 
UT_UniquePtr< RV_VKSamplermySampler
 

Friends

class RV_VKImageCreateInfo
 

Detailed Description

Class hodling VkImage handle and bound Memory allocation cleans up resources on destruction

Definition at line 381 of file RV_VKImage.h.

Constructor & Destructor Documentation

virtual RV_VKImage::~RV_VKImage ( )
virtual
RV_VKImage::RV_VKImage ( RV_Instance inst,
const RV_VKImageCreateInfo img_info,
VkImage  vk_img,
RV_VKMemoryPtr  mem,
RV_VKImageViewPtr  view,
RV_VKImageViewPtr  primary_view,
RV_VKSamplerPtr  sampler 
)
protected

Member Function Documentation

static RV_VKImagePtr RV_VKImage::allocateImage ( RV_Instance inst,
RV_VKImageCreateInfo info,
const char *  name = nullptr 
)
static

Creates new Image based on create info.

static UT_UniquePtr<RV_VKSampler> RV_VKImage::allocateSampler ( RV_Instance inst,
const RV_VKImageCreateInfo img_info 
)
static

Allocate a new Image Sampler using parameters from img_info, ignoring non-sampler parameters

bool RV_VKImage::copyData ( RV_Render r,
RV_VKImage other 
)

Copy image data from this image to other.

RV_VKImageView RV_VKImage::createView ( )

Create new VkImageView for whole VkImage range.

RV_VKImageView RV_VKImage::createView ( const VkImageSubresourceRange subres)

Create new VkImageView for specific VkImage subresource range.

RV_VKImageView RV_VKImage::createView ( const VkImageSubresourceRange subres,
VkImageViewType  type 
)

Create new VkImageView for specific VkImage subresource range, with type.

RV_VKImageView RV_VKImage::createView ( VkImageViewType  type)

Create new VkImageView for specific type, trying to use full subresource range.

static void RV_VKImage::deleteImage ( RV_Instance inst,
VkImage *  img,
VkDeviceMemory *  mem 
)
staticprotected
bool RV_VKImage::downloadData ( RV_Render r,
void data,
exint  data_size,
int  level = 0,
int  index = 0,
bool  primary_aspect = true 
)

Download image data into data.

void RV_VKImage::generateMipmaps ( RV_Render r)

Generate higher mipmap levels from the base level.

RV_VKImageView& RV_VKImage::getFullView ( )
inline

Definition at line 412 of file RV_VKImage.h.

exint RV_VKImage::getID ( ) const
inline

Definition at line 410 of file RV_VKImage.h.

const RV_VKImageCreateInfo& RV_VKImage::getInfo ( ) const
inline

The image properties.

Definition at line 403 of file RV_VKImage.h.

VkImageLayout RV_VKImage::getLayout ( ) const
inline

Definition at line 409 of file RV_VKImage.h.

RV_VKMemory& RV_VKImage::getMemory ( )
inline

Definition at line 407 of file RV_VKImage.h.

RV_VKImageView& RV_VKImage::getPrimaryView ( )
inline

Definition at line 413 of file RV_VKImage.h.

RV_VKSampler* RV_VKImage::getSampler ( )
inline

Definition at line 408 of file RV_VKImage.h.

VkImage RV_VKImage::getVkImage ( )
inline

Definition at line 406 of file RV_VKImage.h.

void RV_VKImage::print ( ) const

Debug print out of image properties (not image data).

static bool RV_VKImage::queryIsUsable ( RV_Instance inst,
RV_VKImageCreateInfo info 
)
static

check whether the format info in pInfo can create a valid Vulkan image

void RV_VKImage::transitionImage ( RV_VKCommandBuffer cb,
VkImageLayout  new_layout,
VkImageUsageFlags  new_usage,
bool  keep_data = true,
VkImageSubresourceRange  subres = VkImageSubresourceRange{} 
)

Record a command to transition image into new layout.

void RV_VKImage::transitionToSampling ( RV_VKCommandBuffer cb)
inline

Record a command to transition the image for sampling in a shader.

Definition at line 438 of file RV_VKImage.h.

template<typename T , typename std::enable_if<!std::is_pointer< T >::value, int >::type = 0>
bool RV_VKImage::uploadData ( RV_Render r,
const T data,
int  level = 0,
int  index = 0 
)
inline

Upload data to the image. Must be in a state for upload.

Definition at line 446 of file RV_VKImage.h.

bool RV_VKImage::uploadData ( RV_Render r,
const void data,
exint  data_size,
int  level = 0,
int  index = 0 
)
bool RV_VKImage::uploadData ( RV_Instance inst,
RV_VKCommandBuffer cb,
const void data,
exint  data_size,
int  level = 0,
int  index = 0 
)
bool RV_VKImage::uploadData ( RV_Render r,
RV_VKBuffer buf,
int  level = 0,
int  index = 0 
)

Copy image data to this image from buffer.

bool RV_VKImage::uploadData ( RV_Instance inst,
RV_VKCommandBuffer cb,
RV_VKBuffer buf,
int  level = 0,
int  index = 0 
)

Friends And Related Function Documentation

friend class RV_VKImageCreateInfo
friend

Definition at line 542 of file RV_VKImage.h.

Member Data Documentation

UT_UniquePtr<const RV_VKImageCreateInfo> RV_VKImage::myCreateInfo
protected

Definition at line 523 of file RV_VKImage.h.

exint RV_VKImage::myId = 0
protected

Definition at line 522 of file RV_VKImage.h.

RV_Instance* RV_VKImage::myInst = nullptr
protected

Definition at line 520 of file RV_VKImage.h.

VkAccessFlags RV_VKImage::myLastAccess = 0

Definition at line 535 of file RV_VKImage.h.

VkImageLayout RV_VKImage::myLastLayout = VK_IMAGE_LAYOUT_UNDEFINED

Definition at line 534 of file RV_VKImage.h.

uint32_t RV_VKImage::myLastQueueFam = 0

Definition at line 538 of file RV_VKImage.h.

VkPipelineStageFlags RV_VKImage::myLastStage = 0

Definition at line 537 of file RV_VKImage.h.

VkImageUsageFlags RV_VKImage::myLastUsage = 0

Definition at line 536 of file RV_VKImage.h.

UT_UniquePtr<RV_VKMemory> RV_VKImage::myMemory
protected

Definition at line 527 of file RV_VKImage.h.

UT_StringHolder RV_VKImage::myName

Definition at line 531 of file RV_VKImage.h.

UT_UniquePtr<RV_VKImageView> RV_VKImage::myPrimaryView
protected

Definition at line 526 of file RV_VKImage.h.

UT_UniquePtr<RV_VKSampler> RV_VKImage::mySampler
protected

Definition at line 528 of file RV_VKImage.h.

UT_UniquePtr<RV_VKImageView> RV_VKImage::myView
protected

Definition at line 525 of file RV_VKImage.h.

VkImage RV_VKImage::myVkImg = VK_NULL_HANDLE
protected

Definition at line 521 of file RV_VKImage.h.

RV_StageGroup RV_VKImage::myWaitingBarrierStage = RV_STAGE_NONE

Definition at line 540 of file RV_VKImage.h.


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