5#include "config_aeolus.h"
7#include "vulkan/vulkan.h"
13#define UNDEFINED_TYPE 127
20#ifdef ENABLED_VULKAN_OPTIX
36#define VISIBLEOBJECTSVK 6
38#define ATTACHMENTSVK 7
47 if (std::is_same<T, ContextVk>::value)
return CONTEXTVK;
48 else if (std::is_same<T, WindowVk>::value)
return WINDOWVK;
49 else if (std::is_same<T, DescriptorVk>::value)
return DESCRIPTORVK;
50 else if (std::is_same<T, ImagesVk>::value)
return IMAGESVK;
51 else if (std::is_same<T, OVR>::value)
return OVRVK;
52 else if (std::is_same<T, ObjectsVk>::value)
return OBJECTSVK;
54 else if (std::is_same<T, AttachmentsVk>::value)
return ATTACHMENTSVK;
55 else if (std::is_same<T, PipelineVk>::value)
return PIPELINEVK;
114#define $instance __instance
115#define $physicaldevice __physicaldevice
116#define $device __device
117#define $queue __queue
118#define $queueIdx __queueFamilyIndices
119#define $format __format
120#define $properties __properties
121#define $features __features
122#define $memoryProperties __memoryProperties
127#define $pallocator __vkmmallocator
128#define $allocator (*__vkmmallocator)
146 return buffer != VK_NULL_HANDLE;
149 if (
buffer != VK_NULL_HANDLE) {
150 vkDestroyBuffer($device,
buffer,
nullptr);
151 vkFreeMemory($device,
memory,
nullptr);
181 vkDestroyBuffer($device,
buffer,
nullptr);
182 vkFreeMemory($device,
memory,
nullptr);
194 return buffer != VK_NULL_HANDLE;
208 if (
buffer != VK_NULL_HANDLE) {
209 vkDestroyBuffer($device,
buffer,
nullptr);
210 vkFreeMemory($device,
memory,
nullptr);
215 return buffer != VK_NULL_HANDLE;
237 image(VK_NULL_HANDLE),
238 view(VK_NULL_HANDLE),
247 w =
h =
d =
l =
c = 0;
250 if (
sampler != VK_NULL_HANDLE) vkDestroySampler($device,
sampler,
nullptr);
251 if (
view != VK_NULL_HANDLE) vkDestroyImageView($device,
view,
nullptr);
252 if (
image != VK_NULL_HANDLE) vkDestroyImage($device,
image,
nullptr);
253 if (
memory != VK_NULL_HANDLE) vkFreeMemory($device,
memory,
nullptr);
256 image = VK_NULL_HANDLE,
257 view = VK_NULL_HANDLE,
260 w =
h =
d =
l =
c = 0;
261 if (
next !=
nullptr) {
267 return memory != VK_NULL_HANDLE;
288 image(VK_NULL_HANDLE),
289 view(VK_NULL_HANDLE),
297 w =
h =
d =
l =
c = 0;
301 if (
sampler != VK_NULL_HANDLE) vkDestroySampler($device,
sampler,
nullptr);
302 if (
view != VK_NULL_HANDLE) vkDestroyImageView($device,
view,
nullptr);
303 if (
image != VK_NULL_HANDLE) vkDestroyImage($device,
image,
nullptr);
304 if (
buffer != VK_NULL_HANDLE) vkDestroyBuffer($device,
buffer,
nullptr);
305 if (
memory != VK_NULL_HANDLE) vkFreeMemory($device,
memory,
nullptr);
308 image = VK_NULL_HANDLE,
309 view = VK_NULL_HANDLE,
314 return memory != VK_NULL_HANDLE;
329 image(VK_NULL_HANDLE),
330 view(VK_NULL_HANDLE),
334 w =
h =
d =
l =
c = 0;
338 if (
view != VK_NULL_HANDLE) vkDestroyImageView($device,
view,
nullptr);
339 if (
image != VK_NULL_HANDLE) vkDestroyImage($device,
image,
nullptr);
340 if (
memory != VK_NULL_HANDLE) vkFreeMemory($device,
memory,
nullptr);
343 image = VK_NULL_HANDLE,
344 view = VK_NULL_HANDLE;
348 return memory != VK_NULL_HANDLE;
364 vkDestroyShaderModule($device, shaderModule,
nullptr);
366 vkDestroyPipeline($device,
pipeline,
nullptr);
382 if (
memory != VK_NULL_HANDLE) {
383 vkFreeMemory($device,
memory,
nullptr);
388 return memory != VK_NULL_HANDLE;
401 if (
buffer != VK_NULL_HANDLE) {
402 vkDestroyBuffer($device,
buffer,
nullptr);
407 return buffer != VK_NULL_HANDLE;
412typedef struct ImVvk :VkDescriptorBufferInfo {
459 template<
typename Tret,
typename T>
461 return (Tret)(*(T*)fn<T>())();
466 template<
typename Tret,
typename T,
typename ...In>
468 return (Tret)(*(T*)fn<T>())(arguments...);
472 template<
typename Tret =
void,
typename T>
474 using Tfp = Tret(*)(void);
476 return (Tfp)lambda_ptr_exec<Tret, T>;
480 template<
typename Tret = void,
typename ...In,
typename T>
482 using Tfp = Tret(*)(In ...);
488 static void*
fn(
void* new_fn =
nullptr) {
491 if (new_fn !=
nullptr)
498typedef std::vector<VkPipelineShaderStageCreateInfo>& (*ShaderStagesTy)(
void*);
499typedef VkPipelineDynamicStateCreateInfo* (*DynamicTy)(
void*);
500typedef VkPipelineViewportStateCreateInfo* (*ViewportTy)(
void*);
501typedef VkPipelineMultisampleStateCreateInfo* (*MultisampleTy)(
void*);
502typedef VkPipelineInputAssemblyStateCreateInfo* (*InputAssemblyTy)(
void*);
503typedef VkPipelineRasterizationStateCreateInfo* (*RasterizationTy)(
void*);
504typedef VkPipelineDepthStencilStateCreateInfo* (*DepthStencilTy)(
void*);
505typedef VkPipelineColorBlendStateCreateInfo* (*ColorBlendTy)(
void*);
542 extern constexpr UINT
MAX_BLEND_OP = UINT(VK_BLEND_OP_BLUE_EXT) - (UINT)0x3b9d0c20;
543 extern constexpr UINT
MAX_OVERLAP_OP = UINT(VK_BLEND_OVERLAP_CONJOINT_EXT) + 1;
const char * String_VkBlendOverlap(VkBlendOverlapEXT op)
const char * String_VkBlendOp(VkBlendOp op)
constexpr UINT MAX_BLEND_OP
constexpr UINT MAX_OVERLAP_OP
UINT getVkBlendOpNum(const VkBlendOp op) noexcept
VkBlendOp getVkBlendOp(const uint32_t N) noexcept
struct Allocator_T * Allocator
static void * fn(void *new_fn=nullptr)
static Tret lambda_ptr_exec()
static Tret lambda_ptr_exec(In... arguments)
VkDescriptorBufferInfo info
VkMemoryRequirements memReqs
VkDescriptorBufferInfo bInfo
VkDescriptorImageInfo Info
VkDescriptorBufferInfo info
VkDescriptorBufferInfo info
VkDescriptorImageInfo Info
VkMemoryRequirements memReqs
VkDescriptorImageInfo Info
MultisampleTy Multisample
RasterizationTy Rasterization
ShaderStagesTy ShaderStages
DepthStencilTy DepthStencil
InputAssemblyTy InputAssembly
std::vector< VkShaderModule > shaderModules
VkDescriptorSetLayout Layout
VkBlendOverlapEXT overlap
VkPipelineDynamicStateCreateInfo *(* DynamicTy)(void *)
#define IMAGESVK
DescriptorVk.
VkPipelineColorBlendStateCreateInfo *(* ColorBlendTy)(void *)
VkPhysicalDeviceMemoryProperties __memoryProperties
vkmm::Allocator __vkmmallocator
#define WINDOWVK
Context1Vk.
VkPhysicalDeviceFeatures __features
VkPhysicalDevice __physicaldevice
struct _Vkformat _Vkformat
VkPipelineDepthStencilStateCreateInfo *(* DepthStencilTy)(void *)
VkPipelineInputAssemblyStateCreateInfo *(* InputAssemblyTy)(void *)
#define CONTEXTVK
Exculsive Class Definition.
VkPipelineMultisampleStateCreateInfo *(* MultisampleTy)(void *)
VkPhysicalDeviceProperties __properties
VkPipelineRasterizationStateCreateInfo *(* RasterizationTy)(void *)
queueFamilyIndices __queueFamilyIndices
struct Context0Vk ContextVk
VkPipelineViewportStateCreateInfo *(* ViewportTy)(void *)
#define DESCRIPTORVK
WindowVk.
std::vector< VkPipelineShaderStageCreateInfo > &(* ShaderStagesTy)(void *)
struct PipelineVk PipelineVk