NAP
textureutils.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // External Includes
8 #include <vulkan/vulkan_core.h>
9 #include <utility/dllexport.h>
10 #include <utility/errorstate.h>
11 #include <nap/numeric.h>
12 
13 // Local Includes
14 #include "surfacedescriptor.h"
15 
16 namespace nap
17 {
18  // Forward declaration
19  class Texture2D;
20 
21  namespace utility
22  {
26  VkFormat NAPAPI getTextureFormat(ESurfaceDataType dataType, ESurfaceChannels channels, EColorSpace colorSpace);
27 
31  VkFormat NAPAPI getTextureFormat(const SurfaceDescriptor& descriptor);
32 
36  void NAPAPI transitionImageLayout(VkCommandBuffer commandBuffer, ImageData& image, VkImageLayout newLayout,
37  VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStage, VkPipelineStageFlags dstStage, uint mipLevel, uint mipLevelCount, VkImageAspectFlags aspect);
38 
42  void NAPAPI transitionImageLayout(VkCommandBuffer commandBuffer, ImageData& image, VkImageLayout newLayout,
43  VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStage, VkPipelineStageFlags dstStage, uint mipLevel, uint mipLevelCount, uint layer, uint layerCount, VkImageAspectFlags aspect);
44 
48  int NAPAPI computeMipLevel(const SurfaceDescriptor& descriptor);
49 
53  void NAPAPI createMipmaps(VkCommandBuffer buffer, ImageData& image, VkFormat imageFormat, VkImageLayout targetLayout, VkImageAspectFlags aspect, uint32 texWidth, uint32 texHeight, uint32 mipLevels);
54 
58  void NAPAPI createMipmaps(VkCommandBuffer buffer, ImageData& image, VkFormat imageFormat, VkImageLayout targetLayout, VkImageAspectFlags aspect, uint32 texWidth, uint32 texHeight, uint32 mipLevels, uint layer, uint layerCount);
59 
67  void NAPAPI blit(VkCommandBuffer commandBuffer, Texture2D& srcTexture, Texture2D& dstTexture);
68 
77  void NAPAPI copy(VkCommandBuffer commandBuffer, Texture2D& srcTexture, Texture2D& dstTexture);
78  }
79 }
nap::uint
unsigned int uint
Definition: numeric.h:23
nap::utility::transitionImageLayout
void NAPAPI transitionImageLayout(VkCommandBuffer commandBuffer, ImageData &image, VkImageLayout newLayout, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkPipelineStageFlags srcStage, VkPipelineStageFlags dstStage, uint mipLevel, uint mipLevelCount, VkImageAspectFlags aspect)
nap::ESurfaceChannels
ESurfaceChannels
Definition: surfacedescriptor.h:26
nap::utility::blit
void NAPAPI blit(VkCommandBuffer commandBuffer, Texture2D &srcTexture, Texture2D &dstTexture)
nap::utility::copy
void NAPAPI copy(VkCommandBuffer commandBuffer, Texture2D &srcTexture, Texture2D &dstTexture)
nap::utility::getTextureFormat
VkFormat NAPAPI getTextureFormat(ESurfaceDataType dataType, ESurfaceChannels channels, EColorSpace colorSpace)
nap::uint32
uint32_t uint32
Definition: numeric.h:20
nap::utility::createMipmaps
void NAPAPI createMipmaps(VkCommandBuffer buffer, ImageData &image, VkFormat imageFormat, VkImageLayout targetLayout, VkImageAspectFlags aspect, uint32 texWidth, uint32 texHeight, uint32 mipLevels)
nap
Definition: templateapp.h:17
nap::utility::computeMipLevel
int NAPAPI computeMipLevel(const SurfaceDescriptor &descriptor)
nap::ESurfaceDataType
ESurfaceDataType
Definition: surfacedescriptor.h:16
nap::EColorSpace
EColorSpace
Definition: surfacedescriptor.h:37