@ -135,11 +135,11 @@ VkDescriptorUpdateTemplateEntryKHR BuildQuadArrayPassDescriptorUpdateTemplateEnt
return entry ;
}
VkPushConstantRange Build QuadArrayPassPushConstantRange( ) {
VkPushConstantRange Build ComputePushConstantRange( std : : size_t size ) {
VkPushConstantRange range ;
range . stageFlags = VK_SHADER_STAGE_COMPUTE_BIT ;
range . offset = 0 ;
range . size = s izeof( u32 ) ;
range . size = s tatic_cast< u32 > ( size ) ;
return range ;
}
@ -220,7 +220,130 @@ constexpr u8 uint8_pass[] = {
0xf9 , 0x00 , 0x02 , 0x00 , 0x1d , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x1d , 0x00 , 0x00 , 0x00 ,
0xfd , 0x00 , 0x01 , 0x00 , 0x38 , 0x00 , 0x01 , 0x00 } ;
std : : array < VkDescriptorSetLayoutBinding , 2 > BuildUint8PassDescriptorSetBindings ( ) {
// Quad indexed SPIR-V module. Generated from the "shaders/" directory.
constexpr u8 QUAD_INDEXED_SPV [ ] = {
0x03 , 0x02 , 0x23 , 0x07 , 0x00 , 0x00 , 0x01 , 0x00 , 0x07 , 0x00 , 0x08 , 0x00 , 0x7c , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x11 , 0x00 , 0x02 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x0b , 0x00 , 0x06 , 0x00 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x47 , 0x4c , 0x53 , 0x4c , 0x2e , 0x73 , 0x74 , 0x64 , 0x2e , 0x34 , 0x35 , 0x30 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x0e , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 ,
0x0f , 0x00 , 0x06 , 0x00 , 0x05 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x6d , 0x61 , 0x69 , 0x6e ,
0x00 , 0x00 , 0x00 , 0x00 , 0x0c , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x06 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 ,
0x11 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 ,
0x47 , 0x00 , 0x04 , 0x00 , 0x0c , 0x00 , 0x00 , 0x00 , 0x0b , 0x00 , 0x00 , 0x00 , 0x1c , 0x00 , 0x00 , 0x00 ,
0x47 , 0x00 , 0x04 , 0x00 , 0x15 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 ,
0x48 , 0x00 , 0x04 , 0x00 , 0x16 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x19 , 0x00 , 0x00 , 0x00 ,
0x48 , 0x00 , 0x05 , 0x00 , 0x16 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x23 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x03 , 0x00 , 0x16 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 ,
0x47 , 0x00 , 0x04 , 0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x47 , 0x00 , 0x04 , 0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x21 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 ,
0x48 , 0x00 , 0x05 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x23 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x48 , 0x00 , 0x05 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 ,
0x23 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x03 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x04 , 0x00 , 0x56 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x04 , 0x00 , 0x00 , 0x00 , 0x48 , 0x00 , 0x04 , 0x00 , 0x57 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x18 , 0x00 , 0x00 , 0x00 , 0x48 , 0x00 , 0x05 , 0x00 , 0x57 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x23 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x03 , 0x00 , 0x57 , 0x00 , 0x00 , 0x00 ,
0x03 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x04 , 0x00 , 0x59 , 0x00 , 0x00 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x04 , 0x00 , 0x59 , 0x00 , 0x00 , 0x00 , 0x21 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x04 , 0x00 , 0x72 , 0x00 , 0x00 , 0x00 , 0x0b , 0x00 , 0x00 , 0x00 ,
0x19 , 0x00 , 0x00 , 0x00 , 0x13 , 0x00 , 0x02 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x21 , 0x00 , 0x03 , 0x00 ,
0x03 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x15 , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x20 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x07 , 0x00 , 0x00 , 0x00 ,
0x07 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x15 , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 ,
0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x17 , 0x00 , 0x04 , 0x00 , 0x0a , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x0b , 0x00 , 0x00 , 0x00 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x0a , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x04 , 0x00 , 0x0b , 0x00 , 0x00 , 0x00 ,
0x0c , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 ,
0x0d , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x0e , 0x00 , 0x00 , 0x00 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x13 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x1d , 0x00 , 0x03 , 0x00 , 0x15 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x1e , 0x00 , 0x03 , 0x00 , 0x16 , 0x00 , 0x00 , 0x00 , 0x15 , 0x00 , 0x00 , 0x00 ,
0x20 , 0x00 , 0x04 , 0x00 , 0x17 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x16 , 0x00 , 0x00 , 0x00 ,
0x3b , 0x00 , 0x04 , 0x00 , 0x17 , 0x00 , 0x00 , 0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 ,
0x14 , 0x00 , 0x02 , 0x00 , 0x1b , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x21 , 0x00 , 0x00 , 0x00 , 0x08 , 0x00 , 0x00 , 0x00 , 0x1e , 0x00 , 0x04 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x23 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x22 , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x04 , 0x00 , 0x23 , 0x00 , 0x00 , 0x00 ,
0x24 , 0x00 , 0x00 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x25 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x26 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x2b , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 ,
0x3b , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x3f , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x1c , 0x00 , 0x04 , 0x00 , 0x41 , 0x00 , 0x00 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x42 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x43 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 , 0x2c , 0x00 , 0x09 , 0x00 , 0x41 , 0x00 , 0x00 , 0x00 ,
0x44 , 0x00 , 0x00 , 0x00 , 0x42 , 0x00 , 0x00 , 0x00 , 0x25 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x00 , 0x00 ,
0x42 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x00 , 0x00 , 0x43 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 ,
0x46 , 0x00 , 0x00 , 0x00 , 0x07 , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x00 , 0x00 , 0x1d , 0x00 , 0x03 , 0x00 ,
0x56 , 0x00 , 0x00 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x1e , 0x00 , 0x03 , 0x00 , 0x57 , 0x00 , 0x00 , 0x00 ,
0x56 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x58 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 ,
0x57 , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x04 , 0x00 , 0x58 , 0x00 , 0x00 , 0x00 , 0x59 , 0x00 , 0x00 , 0x00 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x5b , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x20 , 0x00 , 0x04 , 0x00 , 0x69 , 0x00 , 0x00 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x70 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x04 , 0x00 , 0x00 , 0x2b , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x71 , 0x00 , 0x00 , 0x00 ,
0x01 , 0x00 , 0x00 , 0x00 , 0x2c , 0x00 , 0x06 , 0x00 , 0x0a , 0x00 , 0x00 , 0x00 , 0x72 , 0x00 , 0x00 , 0x00 ,
0x70 , 0x00 , 0x00 , 0x00 , 0x71 , 0x00 , 0x00 , 0x00 , 0x71 , 0x00 , 0x00 , 0x00 , 0x36 , 0x00 , 0x05 , 0x00 ,
0x02 , 0x00 , 0x00 , 0x00 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 ,
0xf8 , 0x00 , 0x02 , 0x00 , 0x05 , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x04 , 0x00 , 0x46 , 0x00 , 0x00 , 0x00 ,
0x47 , 0x00 , 0x00 , 0x00 , 0x07 , 0x00 , 0x00 , 0x00 , 0xf9 , 0x00 , 0x02 , 0x00 , 0x74 , 0x00 , 0x00 , 0x00 ,
0xf8 , 0x00 , 0x02 , 0x00 , 0x74 , 0x00 , 0x00 , 0x00 , 0xf6 , 0x00 , 0x04 , 0x00 , 0x73 , 0x00 , 0x00 , 0x00 ,
0x76 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xf9 , 0x00 , 0x02 , 0x00 , 0x75 , 0x00 , 0x00 , 0x00 ,
0xf8 , 0x00 , 0x02 , 0x00 , 0x75 , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x05 , 0x00 , 0x0e , 0x00 , 0x00 , 0x00 ,
0x0f , 0x00 , 0x00 , 0x00 , 0x0c , 0x00 , 0x00 , 0x00 , 0x0d , 0x00 , 0x00 , 0x00 , 0x3d , 0x00 , 0x04 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 , 0x0f , 0x00 , 0x00 , 0x00 , 0x7c , 0x00 , 0x04 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x11 , 0x00 , 0x00 , 0x00 , 0x10 , 0x00 , 0x00 , 0x00 , 0x84 , 0x00 , 0x05 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x14 , 0x00 , 0x00 , 0x00 , 0x11 , 0x00 , 0x00 , 0x00 , 0x13 , 0x00 , 0x00 , 0x00 ,
0x44 , 0x00 , 0x05 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x19 , 0x00 , 0x00 , 0x00 , 0x18 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x7c , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x1a , 0x00 , 0x00 , 0x00 ,
0x19 , 0x00 , 0x00 , 0x00 , 0xaf , 0x00 , 0x05 , 0x00 , 0x1b , 0x00 , 0x00 , 0x00 , 0x1c , 0x00 , 0x00 , 0x00 ,
0x14 , 0x00 , 0x00 , 0x00 , 0x1a , 0x00 , 0x00 , 0x00 , 0xf7 , 0x00 , 0x03 , 0x00 , 0x1e , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0xfa , 0x00 , 0x04 , 0x00 , 0x1c , 0x00 , 0x00 , 0x00 , 0x1d , 0x00 , 0x00 , 0x00 ,
0x1e , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x1d , 0x00 , 0x00 , 0x00 , 0xf9 , 0x00 , 0x02 , 0x00 ,
0x73 , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x1e , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x05 , 0x00 ,
0x26 , 0x00 , 0x00 , 0x00 , 0x27 , 0x00 , 0x00 , 0x00 , 0x24 , 0x00 , 0x00 , 0x00 , 0x25 , 0x00 , 0x00 , 0x00 ,
0x3d , 0x00 , 0x04 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x28 , 0x00 , 0x00 , 0x00 , 0x27 , 0x00 , 0x00 , 0x00 ,
0xc4 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x29 , 0x00 , 0x00 , 0x00 , 0x21 , 0x00 , 0x00 , 0x00 ,
0x28 , 0x00 , 0x00 , 0x00 , 0x82 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x2e , 0x00 , 0x00 , 0x00 ,
0x2b , 0x00 , 0x00 , 0x00 , 0x28 , 0x00 , 0x00 , 0x00 , 0xc4 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x31 , 0x00 , 0x00 , 0x00 , 0x25 , 0x00 , 0x00 , 0x00 , 0x2e , 0x00 , 0x00 , 0x00 , 0x82 , 0x00 , 0x05 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x32 , 0x00 , 0x00 , 0x00 , 0x31 , 0x00 , 0x00 , 0x00 , 0x25 , 0x00 , 0x00 , 0x00 ,
0xf9 , 0x00 , 0x02 , 0x00 , 0x35 , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x35 , 0x00 , 0x00 , 0x00 ,
0xf5 , 0x00 , 0x07 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x7b , 0x00 , 0x00 , 0x00 , 0x0d , 0x00 , 0x00 , 0x00 ,
0x1e , 0x00 , 0x00 , 0x00 , 0x6f , 0x00 , 0x00 , 0x00 , 0x36 , 0x00 , 0x00 , 0x00 , 0xb0 , 0x00 , 0x05 , 0x00 ,
0x1b , 0x00 , 0x00 , 0x00 , 0x3c , 0x00 , 0x00 , 0x00 , 0x7b , 0x00 , 0x00 , 0x00 , 0x3b , 0x00 , 0x00 , 0x00 ,
0xf6 , 0x00 , 0x04 , 0x00 , 0x37 , 0x00 , 0x00 , 0x00 , 0x36 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0xfa , 0x00 , 0x04 , 0x00 , 0x3c , 0x00 , 0x00 , 0x00 , 0x36 , 0x00 , 0x00 , 0x00 , 0x37 , 0x00 , 0x00 , 0x00 ,
0xf8 , 0x00 , 0x02 , 0x00 , 0x36 , 0x00 , 0x00 , 0x00 , 0x84 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x40 , 0x00 , 0x00 , 0x00 , 0x11 , 0x00 , 0x00 , 0x00 , 0x3f , 0x00 , 0x00 , 0x00 , 0x3e , 0x00 , 0x03 , 0x00 ,
0x47 , 0x00 , 0x00 , 0x00 , 0x44 , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x05 , 0x00 , 0x07 , 0x00 , 0x00 , 0x00 ,
0x48 , 0x00 , 0x00 , 0x00 , 0x47 , 0x00 , 0x00 , 0x00 , 0x7b , 0x00 , 0x00 , 0x00 , 0x3d , 0x00 , 0x04 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x49 , 0x00 , 0x00 , 0x00 , 0x48 , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x05 , 0x00 ,
0x06 , 0x00 , 0x00 , 0x00 , 0x4a , 0x00 , 0x00 , 0x00 , 0x40 , 0x00 , 0x00 , 0x00 , 0x49 , 0x00 , 0x00 , 0x00 ,
0xc3 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x4e , 0x00 , 0x00 , 0x00 , 0x4a , 0x00 , 0x00 , 0x00 ,
0x2e , 0x00 , 0x00 , 0x00 , 0xc7 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , 0x52 , 0x00 , 0x00 , 0x00 ,
0x4a , 0x00 , 0x00 , 0x00 , 0x32 , 0x00 , 0x00 , 0x00 , 0x84 , 0x00 , 0x05 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 ,
0x54 , 0x00 , 0x00 , 0x00 , 0x52 , 0x00 , 0x00 , 0x00 , 0x29 , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x06 , 0x00 ,
0x5b , 0x00 , 0x00 , 0x00 , 0x5c , 0x00 , 0x00 , 0x00 , 0x59 , 0x00 , 0x00 , 0x00 , 0x42 , 0x00 , 0x00 , 0x00 ,
0x4e , 0x00 , 0x00 , 0x00 , 0x3d , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x5d , 0x00 , 0x00 , 0x00 ,
0x5c , 0x00 , 0x00 , 0x00 , 0xcb , 0x00 , 0x06 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x62 , 0x00 , 0x00 , 0x00 ,
0x5d , 0x00 , 0x00 , 0x00 , 0x54 , 0x00 , 0x00 , 0x00 , 0x29 , 0x00 , 0x00 , 0x00 , 0x7c , 0x00 , 0x04 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x65 , 0x00 , 0x00 , 0x00 , 0x14 , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x05 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x67 , 0x00 , 0x00 , 0x00 , 0x65 , 0x00 , 0x00 , 0x00 , 0x7b , 0x00 , 0x00 , 0x00 ,
0x41 , 0x00 , 0x05 , 0x00 , 0x69 , 0x00 , 0x00 , 0x00 , 0x6a , 0x00 , 0x00 , 0x00 , 0x24 , 0x00 , 0x00 , 0x00 ,
0x42 , 0x00 , 0x00 , 0x00 , 0x3d , 0x00 , 0x04 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x6b , 0x00 , 0x00 , 0x00 ,
0x6a , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x05 , 0x00 , 0x09 , 0x00 , 0x00 , 0x00 , 0x6c , 0x00 , 0x00 , 0x00 ,
0x62 , 0x00 , 0x00 , 0x00 , 0x6b , 0x00 , 0x00 , 0x00 , 0x41 , 0x00 , 0x06 , 0x00 , 0x5b , 0x00 , 0x00 , 0x00 ,
0x6d , 0x00 , 0x00 , 0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x42 , 0x00 , 0x00 , 0x00 , 0x67 , 0x00 , 0x00 , 0x00 ,
0x3e , 0x00 , 0x03 , 0x00 , 0x6d , 0x00 , 0x00 , 0x00 , 0x6c , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x05 , 0x00 ,
0x09 , 0x00 , 0x00 , 0x00 , 0x6f , 0x00 , 0x00 , 0x00 , 0x7b , 0x00 , 0x00 , 0x00 , 0x25 , 0x00 , 0x00 , 0x00 ,
0xf9 , 0x00 , 0x02 , 0x00 , 0x35 , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x37 , 0x00 , 0x00 , 0x00 ,
0xf9 , 0x00 , 0x02 , 0x00 , 0x73 , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x76 , 0x00 , 0x00 , 0x00 ,
0xf9 , 0x00 , 0x02 , 0x00 , 0x74 , 0x00 , 0x00 , 0x00 , 0xf8 , 0x00 , 0x02 , 0x00 , 0x73 , 0x00 , 0x00 , 0x00 ,
0xfd , 0x00 , 0x01 , 0x00 , 0x38 , 0x00 , 0x01 , 0x00 } ;
std : : array < VkDescriptorSetLayoutBinding , 2 > BuildInputOutputDescriptorSetBindings ( ) {
std : : array < VkDescriptorSetLayoutBinding , 2 > bindings ;
bindings [ 0 ] . binding = 0 ;
bindings [ 0 ] . descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ;
@ -235,7 +358,7 @@ std::array<VkDescriptorSetLayoutBinding, 2> BuildUint8PassDescriptorSetBindings(
return bindings ;
}
VkDescriptorUpdateTemplateEntryKHR Build Uint8PassDescriptorUpdateTemplateEntry ( ) {
VkDescriptorUpdateTemplateEntryKHR Build InputOutputDescriptorUpdateTemplate ( ) {
VkDescriptorUpdateTemplateEntryKHR entry ;
entry . dstBinding = 0 ;
entry . dstArrayElement = 0 ;
@ -337,14 +460,14 @@ QuadArrayPass::QuadArrayPass(const VKDevice& device, VKScheduler& scheduler,
VKUpdateDescriptorQueue & update_descriptor_queue )
: VKComputePass ( device , descriptor_pool , BuildQuadArrayPassDescriptorSetLayoutBinding ( ) ,
BuildQuadArrayPassDescriptorUpdateTemplateEntry ( ) ,
Build QuadArrayPassPushConstantRange( ) , std : : size ( quad_array ) , quad_array ) ,
Build ComputePushConstantRange( sizeof ( u32 ) ) , std : : size ( quad_array ) , quad_array ) ,
scheduler { scheduler } , staging_buffer_pool { staging_buffer_pool } ,
update_descriptor_queue { update_descriptor_queue } { }
QuadArrayPass : : ~ QuadArrayPass ( ) = default ;
std : : pair < VkBuffer , VkDeviceSize > QuadArrayPass : : Assemble ( u32 num_vertices , u32 first ) {
const u32 num_triangle_vertices = num_vertices * 6 / 4 ;
const u32 num_triangle_vertices = ( num_vertices / 4 ) * 6 ;
const std : : size_t staging_size = num_triangle_vertices * sizeof ( u32 ) ;
auto & buffer = staging_buffer_pool . GetUnusedBuffer ( staging_size , false ) ;
@ -383,8 +506,8 @@ std::pair<VkBuffer, VkDeviceSize> QuadArrayPass::Assemble(u32 num_vertices, u32
Uint8Pass : : Uint8Pass ( const VKDevice & device , VKScheduler & scheduler ,
VKDescriptorPool & descriptor_pool , VKStagingBufferPool & staging_buffer_pool ,
VKUpdateDescriptorQueue & update_descriptor_queue )
: VKComputePass ( device , descriptor_pool , Build Uint8Pass DescriptorSetBindings( ) ,
Build Uint8PassDescriptorUpdateTemplateEntry ( ) , { } , std : : size ( uint8_pass ) ,
: VKComputePass ( device , descriptor_pool , Build InputOutput DescriptorSetBindings( ) ,
Build InputOutputDescriptorUpdateTemplate ( ) , { } , std : : size ( uint8_pass ) ,
uint8_pass ) ,
scheduler { scheduler } , staging_buffer_pool { staging_buffer_pool } ,
update_descriptor_queue { update_descriptor_queue } { }
@ -425,4 +548,70 @@ std::pair<VkBuffer, u64> Uint8Pass::Assemble(u32 num_vertices, VkBuffer src_buff
return { * buffer . handle , 0 } ;
}
QuadIndexedPass : : QuadIndexedPass ( const VKDevice & device , VKScheduler & scheduler ,
VKDescriptorPool & descriptor_pool ,
VKStagingBufferPool & staging_buffer_pool ,
VKUpdateDescriptorQueue & update_descriptor_queue )
: VKComputePass ( device , descriptor_pool , BuildInputOutputDescriptorSetBindings ( ) ,
BuildInputOutputDescriptorUpdateTemplate ( ) ,
BuildComputePushConstantRange ( sizeof ( u32 ) * 2 ) , std : : size ( QUAD_INDEXED_SPV ) ,
QUAD_INDEXED_SPV ) ,
scheduler { scheduler } , staging_buffer_pool { staging_buffer_pool } ,
update_descriptor_queue { update_descriptor_queue } { }
QuadIndexedPass : : ~ QuadIndexedPass ( ) = default ;
std : : pair < VkBuffer , u64 > QuadIndexedPass : : Assemble (
Tegra : : Engines : : Maxwell3D : : Regs : : IndexFormat index_format , u32 num_vertices , u32 base_vertex ,
VkBuffer src_buffer , u64 src_offset ) {
const u32 index_shift = [ index_format ] {
switch ( index_format ) {
case Tegra : : Engines : : Maxwell3D : : Regs : : IndexFormat : : UnsignedByte :
return 0 ;
case Tegra : : Engines : : Maxwell3D : : Regs : : IndexFormat : : UnsignedShort :
return 1 ;
case Tegra : : Engines : : Maxwell3D : : Regs : : IndexFormat : : UnsignedInt :
return 2 ;
}
UNREACHABLE ( ) ;
return 2 ;
} ( ) ;
const u32 input_size = num_vertices < < index_shift ;
const u32 num_tri_vertices = ( num_vertices / 4 ) * 6 ;
const std : : size_t staging_size = num_tri_vertices * sizeof ( u32 ) ;
auto & buffer = staging_buffer_pool . GetUnusedBuffer ( staging_size , false ) ;
update_descriptor_queue . Acquire ( ) ;
update_descriptor_queue . AddBuffer ( src_buffer , src_offset , input_size ) ;
update_descriptor_queue . AddBuffer ( * buffer . handle , 0 , staging_size ) ;
const auto set = CommitDescriptorSet ( update_descriptor_queue , scheduler . GetFence ( ) ) ;
scheduler . RequestOutsideRenderPassOperationContext ( ) ;
scheduler . Record ( [ layout = * layout , pipeline = * pipeline , buffer = * buffer . handle , set ,
num_tri_vertices , base_vertex , index_shift ] ( vk : : CommandBuffer cmdbuf ) {
static constexpr u32 dispatch_size = 1024 ;
const std : : array push_constants = { base_vertex , index_shift } ;
cmdbuf . BindPipeline ( VK_PIPELINE_BIND_POINT_COMPUTE , pipeline ) ;
cmdbuf . BindDescriptorSets ( VK_PIPELINE_BIND_POINT_COMPUTE , layout , 0 , set , { } ) ;
cmdbuf . PushConstants ( layout , VK_SHADER_STAGE_COMPUTE_BIT , 0 , sizeof ( push_constants ) ,
& push_constants ) ;
cmdbuf . Dispatch ( Common : : AlignUp ( num_tri_vertices , dispatch_size ) / dispatch_size , 1 , 1 ) ;
VkBufferMemoryBarrier barrier ;
barrier . sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER ;
barrier . pNext = nullptr ;
barrier . srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT ;
barrier . dstAccessMask = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT ;
barrier . srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
barrier . dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED ;
barrier . buffer = buffer ;
barrier . offset = 0 ;
barrier . size = static_cast < VkDeviceSize > ( num_tri_vertices * sizeof ( u32 ) ) ;
cmdbuf . PipelineBarrier ( VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT ,
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT , 0 , { } , barrier , { } ) ;
} ) ;
return { * buffer . handle , 0 } ;
}
} // namespace Vulkan