2018-05-07 17:13:39 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//we need something like the other platforms to create surfaces on the RPI
|
|
|
|
//so I created this little "extension"
|
|
|
|
//full spec in this file ;)
|
|
|
|
|
2019-05-06 17:58:34 +02:00
|
|
|
typedef enum VkRpiSurfaceCreateFlagsEXT {
|
2018-05-07 17:13:39 +02:00
|
|
|
//reserved
|
|
|
|
VK_RPI_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
2019-05-06 17:58:34 +02:00
|
|
|
} VkRpiSurfaceCreateFlagsEXT;
|
2018-05-07 17:13:39 +02:00
|
|
|
|
2019-05-06 17:58:34 +02:00
|
|
|
typedef enum VkRpiAssemblyTypeEXT {
|
2018-09-23 21:55:30 +02:00
|
|
|
VK_RPI_ASSEMBLY_TYPE_COORDINATE = 0,
|
|
|
|
VK_RPI_ASSEMBLY_TYPE_VERTEX = 1,
|
|
|
|
VK_RPI_ASSEMBLY_TYPE_FRAGMENT = 2,
|
|
|
|
VK_RPI_ASSEMBLY_TYPE_COMPUTE = 3,
|
|
|
|
VK_RPI_ASSEMBLY_TYPE_MAX,
|
|
|
|
} VkRpiAssemblyTypeKHR;
|
|
|
|
|
2019-05-06 17:58:34 +02:00
|
|
|
typedef struct VkRpiSurfaceCreateInfoEXT {
|
2018-05-13 20:29:47 +02:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2019-05-06 17:58:34 +02:00
|
|
|
VkRpiSurfaceCreateFlagsEXT flags; //reserved
|
2018-05-13 20:29:47 +02:00
|
|
|
//maybe include some other stuff dunno
|
2019-05-06 17:58:34 +02:00
|
|
|
} VkRpiSurfaceCreateInfoEXT;
|
2018-05-07 17:13:39 +02:00
|
|
|
|
2019-05-06 17:58:34 +02:00
|
|
|
typedef struct VkRpiShaderModuleAssemblyCreateInfoEXT {
|
2018-09-23 21:55:30 +02:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2019-05-06 17:58:34 +02:00
|
|
|
char** asmStrings;
|
|
|
|
uint32_t* descriptorBindings;
|
|
|
|
uint32_t* descriptorSets;
|
|
|
|
VkDescriptorType* descriptorTypes;
|
|
|
|
uint32_t* descriptorCounts;
|
|
|
|
uint32_t* descriptorArrayElems;
|
|
|
|
uint32_t* numDescriptorBindings;
|
|
|
|
} VkRpiShaderModuleAssemblyCreateInfoEXT;
|
2018-09-23 21:55:30 +02:00
|
|
|
|
2018-05-12 14:24:25 +02:00
|
|
|
//extension name something like: VK_KHR_rpi_surface
|
2018-09-18 22:22:43 +02:00
|
|
|
//extension that allows developers to create a surface to render to on Raspbian Stretch Lite
|
2019-05-06 17:58:34 +02:00
|
|
|
VkResult vkCreateRpiSurfaceEXT(
|
2018-05-13 20:29:47 +02:00
|
|
|
VkInstance instance,
|
2019-05-06 17:58:34 +02:00
|
|
|
const VkRpiSurfaceCreateInfoEXT* pCreateInfo,
|
2018-05-13 20:29:47 +02:00
|
|
|
const VkAllocationCallbacks* pAllocator,
|
|
|
|
VkSurfaceKHR* pSurface);
|
2018-05-07 17:13:39 +02:00
|
|
|
|
2018-09-18 22:22:43 +02:00
|
|
|
//extension that allows developers to submit QPU assembly directly and thus hand optimise code
|
2019-05-06 17:58:34 +02:00
|
|
|
VkResult vkCreateShaderModuleFromRpiAssemblyEXT(
|
2018-09-18 22:22:43 +02:00
|
|
|
VkDevice device,
|
2019-05-06 17:58:34 +02:00
|
|
|
VkRpiShaderModuleAssemblyCreateInfoEXT* pCreateInfo,
|
2018-09-23 21:55:30 +02:00
|
|
|
const VkAllocationCallbacks* pAllocator,
|
2018-09-18 22:22:43 +02:00
|
|
|
VkShaderModule* pShaderModule
|
|
|
|
);
|
|
|
|
|
2018-05-07 17:13:39 +02:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|