mirror of
https://github.com/Yours3lf/rpi-vk-driver.git
synced 2025-03-21 12:29:15 +01:00
changed mapping so that coordinate shaders can have separate
This commit is contained in:
parent
eb81806cee
commit
13d73f26ae
@ -243,21 +243,13 @@ typedef struct VkFramebuffer_T
|
||||
uint32_t width, height, layers;
|
||||
} _framebuffer;
|
||||
|
||||
typedef enum RpiAssemblyType {
|
||||
RPI_ASSEMBLY_TYPE_COORDINATE = 0,
|
||||
RPI_ASSEMBLY_TYPE_VERTEX = 1,
|
||||
RPI_ASSEMBLY_TYPE_FRAGMENT = 2,
|
||||
RPI_ASSEMBLY_TYPE_COMPUTE = 3,
|
||||
RPI_ASSEMBLY_TYPE_MAX,
|
||||
} RpiAssemblyType;
|
||||
|
||||
typedef struct VkShaderModule_T
|
||||
{
|
||||
uint32_t bos[RPI_ASSEMBLY_TYPE_MAX];
|
||||
uint32_t sizes[RPI_ASSEMBLY_TYPE_MAX];
|
||||
uint32_t bos[VK_RPI_ASSEMBLY_TYPE_MAX];
|
||||
uint32_t sizes[VK_RPI_ASSEMBLY_TYPE_MAX];
|
||||
//uint64_t* instructions[RPI_ASSEMBLY_TYPE_MAX];
|
||||
VkRpiAssemblyMappingEXT* mappings;
|
||||
uint32_t numMappings;
|
||||
VkRpiAssemblyMappingEXT* mappings[VK_RPI_ASSEMBLY_TYPE_MAX];
|
||||
uint32_t numMappings[VK_RPI_ASSEMBLY_TYPE_MAX];
|
||||
uint32_t hasThreadSwitch;
|
||||
uint32_t numVaryings;
|
||||
} _shaderModule;
|
||||
|
@ -513,7 +513,7 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)blit_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT blit_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -522,7 +522,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -531,7 +530,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -540,7 +538,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -549,10 +546,10 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -561,7 +558,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -570,7 +566,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -579,7 +574,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -588,7 +582,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -597,20 +590,27 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = blit_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(blit_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
//TODO use allocator
|
||||
|
||||
@ -641,9 +641,6 @@ void createBufferToTextureShaderModule(VkDevice device, VkShaderModule* blitShad
|
||||
assemble_qpu_asm(blit_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
@ -808,7 +805,7 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT blit_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -817,7 +814,6 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -826,7 +822,6 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -835,7 +830,6 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -844,10 +838,10 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -856,7 +850,6 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -865,21 +858,28 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = blit_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(blit_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
//TODO use allocator
|
||||
|
||||
@ -910,9 +910,6 @@ void createTextureToTextureShaderModule(VkDevice device, VkShaderModule* blitSha
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
321
driver/draw.c
321
driver/draw.c
@ -128,19 +128,43 @@ static uint32_t drawCommon(VkCommandBuffer commandBuffer)
|
||||
0, //extended shader state record
|
||||
cb->graphicsPipeline->vertexAttributeDescriptionCount & 0x7); //number of attribute arrays, 0 -> 8
|
||||
|
||||
_shaderModule* vertModule = 0, *fragModule = 0;
|
||||
|
||||
//it could be that all stages are contained in a single module, or have separate modules
|
||||
|
||||
if(cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)])
|
||||
{
|
||||
fragModule = cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)];
|
||||
}
|
||||
|
||||
if(cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)])
|
||||
{
|
||||
fragModule = cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)];
|
||||
}
|
||||
|
||||
if(!vertModule)
|
||||
{
|
||||
vertModule = fragModule;
|
||||
}
|
||||
|
||||
if(!fragModule)
|
||||
{
|
||||
fragModule = vertModule;
|
||||
}
|
||||
|
||||
//emit shader record
|
||||
ControlListAddress fragCode = {
|
||||
.handle = ((_shaderModule*)(cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]))->bos[RPI_ASSEMBLY_TYPE_FRAGMENT],
|
||||
.handle = fragModule->bos[VK_RPI_ASSEMBLY_TYPE_FRAGMENT],
|
||||
.offset = 0,
|
||||
};
|
||||
|
||||
ControlListAddress vertCode = {
|
||||
.handle = ((_shaderModule*)(cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)]))->bos[RPI_ASSEMBLY_TYPE_VERTEX],
|
||||
.handle = vertModule->bos[VK_RPI_ASSEMBLY_TYPE_VERTEX],
|
||||
.offset = 0,
|
||||
};
|
||||
|
||||
ControlListAddress coordCode = {
|
||||
.handle = ((_shaderModule*)(cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)]))->bos[RPI_ASSEMBLY_TYPE_COORDINATE],
|
||||
.handle = vertModule->bos[VK_RPI_ASSEMBLY_TYPE_COORDINATE],
|
||||
.offset = 0,
|
||||
};
|
||||
|
||||
@ -177,11 +201,11 @@ static uint32_t drawCommon(VkCommandBuffer commandBuffer)
|
||||
&commandBuffer->handlesCl,
|
||||
cb->binCl.currMarker->handlesBuf,
|
||||
cb->binCl.currMarker->handlesSize,
|
||||
!cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->hasThreadSwitch,
|
||||
!fragModule->hasThreadSwitch,
|
||||
0, //TODO point size included in shaded vertex data?
|
||||
1, //enable clipping
|
||||
0, //TODO fragment number of used uniforms?
|
||||
cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->numVaryings, //fragment number of varyings
|
||||
fragModule->numVaryings, //fragment number of varyings
|
||||
0, //fragment uniform address?
|
||||
fragCode, //fragment code address
|
||||
0, //TODO vertex number of used uniforms?
|
||||
@ -242,172 +266,187 @@ static uint32_t drawCommon(VkCommandBuffer commandBuffer)
|
||||
//write uniforms
|
||||
_pipelineLayout* pl = cb->graphicsPipeline->layout;
|
||||
|
||||
|
||||
//kernel side expects relocations first!
|
||||
for(uint32_t c = 0; c < cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->numMappings; ++c)
|
||||
for(uint32_t c = 0; c < fragModule->numMappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT]; ++c)
|
||||
{
|
||||
VkRpiAssemblyMappingEXT mapping = cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->mappings[c];
|
||||
VkRpiAssemblyMappingEXT mapping = fragModule->mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT][c];
|
||||
|
||||
if(mapping.shaderStage & VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
|
||||
{
|
||||
if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorImage* di = getMapElement(ds->imageBindingMap, mapping.descriptorBinding);
|
||||
di += mapping.descriptorArrayElement;
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorImage* di = getMapElement(ds->imageBindingMap, mapping.descriptorBinding);
|
||||
di += mapping.descriptorArrayElement;
|
||||
|
||||
//emit reloc for texture BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, di->imageView->image->boundMem->bo);
|
||||
//emit reloc for texture BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, di->imageView->image->boundMem->bo);
|
||||
|
||||
//emit tex bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorBuffer* db = getMapElement(ds->bufferBindingMap, mapping.descriptorBinding);
|
||||
db += mapping.descriptorArrayElement;
|
||||
//emit tex bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorBuffer* db = getMapElement(ds->bufferBindingMap, mapping.descriptorBinding);
|
||||
db += mapping.descriptorArrayElement;
|
||||
|
||||
//emit reloc for BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, db->buffer->boundMem->bo);
|
||||
//emit reloc for BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, db->buffer->boundMem->bo);
|
||||
|
||||
//emit bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorTexelBuffer* dtb = getMapElement(ds->texelBufferBindingMap, mapping.descriptorBinding);
|
||||
dtb += mapping.descriptorArrayElement;
|
||||
//emit bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorTexelBuffer* dtb = getMapElement(ds->texelBufferBindingMap, mapping.descriptorBinding);
|
||||
dtb += mapping.descriptorArrayElement;
|
||||
|
||||
//emit reloc for BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, dtb->bufferView->buffer->boundMem->bo);
|
||||
//emit reloc for BO
|
||||
clFit(commandBuffer, &commandBuffer->handlesCl, 4);
|
||||
uint32_t idx = clGetHandleIndex(&commandBuffer->handlesCl, cb->binCl.currMarker->handlesBuf, cb->binCl.currMarker->handlesSize, dtb->bufferView->buffer->boundMem->bo);
|
||||
|
||||
//emit bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //shouldn't happen
|
||||
}
|
||||
//emit bo reloc index
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, &idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //shouldn't happen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//after relocs we can proceed with the usual uniforms
|
||||
for(uint32_t c = 0; c < cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->numMappings; ++c)
|
||||
for(uint32_t c = 0; c < fragModule->numMappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT]; ++c)
|
||||
{
|
||||
VkRpiAssemblyMappingEXT mapping = cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_FRAGMENT_BIT)]->mappings[c];
|
||||
VkRpiAssemblyMappingEXT mapping = fragModule->mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT][c];
|
||||
|
||||
if(mapping.shaderStage & VK_SHADER_STAGE_FRAGMENT_BIT)
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT)
|
||||
{
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT)
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, cb->pushConstantBufferPixel + mapping.resourceOffset);
|
||||
}
|
||||
else if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
|
||||
{
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, cb->pushConstantBufferPixel + mapping.resourceOffset);
|
||||
}
|
||||
else if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
if(mapping.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ||
|
||||
mapping.descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorImage* di = getMapElement(ds->imageBindingMap, mapping.descriptorBinding);
|
||||
di += mapping.descriptorArrayElement;
|
||||
|
||||
uint32_t cubemapStride = (di->imageView->image->width * di->imageView->image->height * getFormatBpp(di->imageView->interpretedFormat)) >> 3;
|
||||
|
||||
fprintf(stderr, "cubemap stride %i\n", cubemapStride);
|
||||
|
||||
//TODO handle miplevels according to subresource rage?
|
||||
uint32_t params[4];
|
||||
encodeTextureUniform(params,
|
||||
di->imageView->subresourceRange.levelCount - 1,
|
||||
getTextureDataType(di->imageView->interpretedFormat),
|
||||
di->imageView->viewType == VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
cubemapStride >> 12, //TODO cubemap stride in multiples of 4KB
|
||||
di->imageView->image->levelOffsets[0] >> 12, //Image level 0 offset in multiples of 4KB
|
||||
di->imageView->image->height & 2047,
|
||||
di->imageView->image->width & 2047,
|
||||
getMinFilterType(di->sampler->minFilter, di->sampler->mipmapMode),// di->sampler->maxLod),
|
||||
di->sampler->magFilter == VK_FILTER_NEAREST,
|
||||
getWrapMode(di->sampler->addressModeU),
|
||||
getWrapMode(di->sampler->addressModeV),
|
||||
di->sampler->disableAutoLod
|
||||
);
|
||||
|
||||
uint32_t size = 0;
|
||||
if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_1D)
|
||||
{
|
||||
_descriptorSet* ds = getMapElement(pl->descriptorSetBindingMap, mapping.descriptorSet);
|
||||
_descriptorImage* di = getMapElement(ds->imageBindingMap, mapping.descriptorBinding);
|
||||
di += mapping.descriptorArrayElement;
|
||||
|
||||
uint32_t cubemapStride = (di->imageView->image->width * di->imageView->image->height * getFormatBpp(di->imageView->interpretedFormat)) >> 3;
|
||||
|
||||
fprintf(stderr, "cubemap stride %i\n", cubemapStride);
|
||||
|
||||
//TODO handle miplevels according to subresource rage?
|
||||
uint32_t params[4];
|
||||
encodeTextureUniform(params,
|
||||
di->imageView->subresourceRange.levelCount - 1,
|
||||
getTextureDataType(di->imageView->interpretedFormat),
|
||||
di->imageView->viewType == VK_IMAGE_VIEW_TYPE_CUBE,
|
||||
cubemapStride >> 12, //TODO cubemap stride in multiples of 4KB
|
||||
di->imageView->image->levelOffsets[0] >> 12, //Image level 0 offset in multiples of 4KB
|
||||
di->imageView->image->height & 2047,
|
||||
di->imageView->image->width & 2047,
|
||||
getMinFilterType(di->sampler->minFilter, di->sampler->mipmapMode),// di->sampler->maxLod),
|
||||
di->sampler->magFilter == VK_FILTER_NEAREST,
|
||||
getWrapMode(di->sampler->addressModeU),
|
||||
getWrapMode(di->sampler->addressModeV),
|
||||
di->sampler->disableAutoLod
|
||||
);
|
||||
|
||||
uint32_t size = 0;
|
||||
if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_1D)
|
||||
{
|
||||
size = 4;
|
||||
}
|
||||
else if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_2D)
|
||||
{
|
||||
size = 8;
|
||||
}
|
||||
else if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_CUBE)
|
||||
{
|
||||
size = 12;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //unsupported
|
||||
}
|
||||
|
||||
//TODO handle this properly
|
||||
//TMU0_B requires an extra uniform written
|
||||
//we need to signal that somehow from API side
|
||||
//if mode is cubemap we don't need an extra uniform, it's included!
|
||||
if(di->imageView->viewType != VK_IMAGE_VIEW_TYPE_CUBE && di->sampler->disableAutoLod)
|
||||
{
|
||||
size += 4;
|
||||
}
|
||||
|
||||
//emit tex parameters
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, size);
|
||||
clInsertData(&commandBuffer->uniformsCl, size, params);
|
||||
size = 4;
|
||||
}
|
||||
else if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_2D)
|
||||
{
|
||||
size = 8;
|
||||
}
|
||||
else if(di->imageView->viewType == VK_IMAGE_VIEW_TYPE_CUBE)
|
||||
{
|
||||
size = 12;
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //unsupported
|
||||
}
|
||||
|
||||
//TODO handle this properly
|
||||
//TMU0_B requires an extra uniform written
|
||||
//we need to signal that somehow from API side
|
||||
//if mode is cubemap we don't need an extra uniform, it's included!
|
||||
if(di->imageView->viewType != VK_IMAGE_VIEW_TYPE_CUBE && di->sampler->disableAutoLod)
|
||||
{
|
||||
size += 4;
|
||||
}
|
||||
|
||||
//emit tex parameters
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, size);
|
||||
clInsertData(&commandBuffer->uniformsCl, size, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//do it twice for vertex and then coordinate
|
||||
for(uint32_t d = 0; d < 2; ++d)
|
||||
//vertex and then coordinate
|
||||
for(uint32_t c = 0; c < vertModule->numMappings[VK_RPI_ASSEMBLY_TYPE_VERTEX]; ++c)
|
||||
{
|
||||
for(uint32_t c = 0; c < cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)]->numMappings; ++c)
|
||||
VkRpiAssemblyMappingEXT mapping = vertModule->mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX][c];
|
||||
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT)
|
||||
{
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, cb->pushConstantBufferVertex + mapping.resourceOffset);
|
||||
}
|
||||
else if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
VkRpiAssemblyMappingEXT mapping = cb->graphicsPipeline->modules[ulog2(VK_SHADER_STAGE_VERTEX_BIT)]->mappings[c];
|
||||
|
||||
if(mapping.shaderStage & VK_SHADER_STAGE_VERTEX_BIT)
|
||||
{
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT)
|
||||
{
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, cb->pushConstantBufferVertex + mapping.resourceOffset);
|
||||
}
|
||||
else if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //shouldn't happen
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //shouldn't happen
|
||||
}
|
||||
}
|
||||
//if there are no coordinate mappings, just use the vertex ones
|
||||
VkRpiAssemblyTypeEXT coordMappingType = VK_RPI_ASSEMBLY_TYPE_COORDINATE;
|
||||
if(vertModule->numMappings[VK_RPI_ASSEMBLY_TYPE_COORDINATE] < 1)
|
||||
{
|
||||
coordMappingType = VK_RPI_ASSEMBLY_TYPE_VERTEX;
|
||||
}
|
||||
|
||||
for(uint32_t c = 0; c < vertModule->numMappings[coordMappingType]; ++c)
|
||||
{
|
||||
VkRpiAssemblyMappingEXT mapping = vertModule->mappings[coordMappingType][c];
|
||||
|
||||
if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT)
|
||||
{
|
||||
clFit(commandBuffer, &commandBuffer->uniformsCl, 4);
|
||||
clInsertData(&commandBuffer->uniformsCl, 4, cb->pushConstantBufferVertex + mapping.resourceOffset);
|
||||
}
|
||||
else if(mapping.mappingType == VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(0); //shouldn't happen
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,10 +38,21 @@ VkResult rpi_vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInf
|
||||
|
||||
shader->hasThreadSwitch = 0;
|
||||
|
||||
for(int c = 0; c < RPI_ASSEMBLY_TYPE_MAX; ++c)
|
||||
uint32_t hadVertex = 0, hadCoordinate = 0;
|
||||
|
||||
for(int c = 0; c < VK_RPI_ASSEMBLY_TYPE_MAX; ++c)
|
||||
{
|
||||
if(ci->instructions[c])
|
||||
{
|
||||
if(c == VK_RPI_ASSEMBLY_TYPE_VERTEX)
|
||||
{
|
||||
hadVertex = 1;
|
||||
}
|
||||
else if(c == VK_RPI_ASSEMBLY_TYPE_COORDINATE)
|
||||
{
|
||||
hadCoordinate = 1;
|
||||
}
|
||||
|
||||
for(uint64_t d = 0; d < ci->numInstructions[c]; ++d)
|
||||
{
|
||||
uint64_t s = (ci->instructions[c][d] & (0xfll << 60)) >> 60;
|
||||
@ -93,22 +104,24 @@ VkResult rpi_vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInf
|
||||
shader->bos[c] = 0;
|
||||
shader->sizes[c] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
shader->numMappings = ci->numMappings;
|
||||
shader->numMappings[c] = ci->numMappings[c];
|
||||
|
||||
if(ci->numMappings > 0)
|
||||
{
|
||||
shader->mappings = ALLOCATE(sizeof(VkRpiAssemblyMappingEXT)*ci->numMappings, 1, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
|
||||
if(!shader->mappings)
|
||||
if(ci->numMappings[c] > 0)
|
||||
{
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
}
|
||||
shader->mappings[c] = ALLOCATE(sizeof(VkRpiAssemblyMappingEXT)*ci->numMappings[c], 1, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
|
||||
memcpy(shader->mappings, ci->mappings, sizeof(VkRpiAssemblyMappingEXT)*ci->numMappings);
|
||||
if(!shader->mappings[c])
|
||||
{
|
||||
return VK_ERROR_OUT_OF_HOST_MEMORY;
|
||||
}
|
||||
|
||||
memcpy(shader->mappings[c], ci->mappings[c], sizeof(VkRpiAssemblyMappingEXT)*ci->numMappings[c]);
|
||||
}
|
||||
}
|
||||
|
||||
assert(hadVertex == hadCoordinate);
|
||||
|
||||
*pShaderModule = shader;
|
||||
|
||||
return VK_SUCCESS;
|
||||
@ -122,7 +135,7 @@ void rpi_vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, con
|
||||
|
||||
if(shader)
|
||||
{
|
||||
for(int c = 0; c < RPI_ASSEMBLY_TYPE_MAX; ++c)
|
||||
for(int c = 0; c < VK_RPI_ASSEMBLY_TYPE_MAX; ++c)
|
||||
{
|
||||
if(shader->bos[c])
|
||||
{
|
||||
|
@ -59,10 +59,22 @@ typedef struct LoaderTrampoline
|
||||
* and the driver should be able to figure out what to put in the uniform queue
|
||||
* based on the mapping
|
||||
*
|
||||
* vertex and coordinate shader mappings are shared
|
||||
* Coordinate shader mappings are tricky as they are not a concept in Vulkan.
|
||||
* However, assuming they were compiled from the same vertex shader, they must share the same uniforms.
|
||||
* Therefore Coordinate shaders will share the same uniforms, but may employ a different mappping.
|
||||
* If coordinate shader mapping is absent, they'll just use the same mapping as vertex shaders.
|
||||
*
|
||||
* Vertex and coordinate shaders must be in the same shader module.
|
||||
*
|
||||
*/
|
||||
|
||||
typedef enum VkRpiAssemblyTypeEXT {
|
||||
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,
|
||||
} VkRpiAssemblyTypeEXT;
|
||||
|
||||
typedef enum VkRpiAssemblyMappingTypeEXT {
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR = 0,
|
||||
@ -78,7 +90,6 @@ typedef struct VkRpiAssemblyMappingEXT {
|
||||
uint32_t descriptorBinding;
|
||||
uint32_t descriptorArrayElement;
|
||||
uint32_t resourceOffset; //in bytes
|
||||
VkShaderStageFlagBits shaderStage;
|
||||
} VkRpiAssemblyMappingEXT;
|
||||
|
||||
typedef struct VkRpiShaderModuleAssemblyCreateInfoEXT {
|
||||
@ -86,8 +97,8 @@ typedef struct VkRpiShaderModuleAssemblyCreateInfoEXT {
|
||||
const void* pNext;
|
||||
uint64_t** instructions;
|
||||
uint32_t* numInstructions;
|
||||
VkRpiAssemblyMappingEXT* mappings;
|
||||
uint32_t numMappings;
|
||||
VkRpiAssemblyMappingEXT** mappings;
|
||||
uint32_t* numMappings;
|
||||
} VkRpiShaderModuleAssemblyCreateInfoEXT;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -1129,7 +1129,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1138,7 +1138,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1147,7 +1146,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1156,7 +1154,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1165,8 +1162,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -1175,20 +1174,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1211,9 +1217,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1139,7 +1139,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)hdr_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1148,7 +1148,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1157,7 +1156,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1166,7 +1164,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1175,8 +1172,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -1185,20 +1184,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1221,9 +1227,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1029,7 +1029,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1038,7 +1038,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1047,7 +1046,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1056,7 +1054,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1065,20 +1062,25 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1101,9 +1103,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1020,7 +1020,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1029,7 +1029,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1038,7 +1037,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1047,7 +1045,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1056,7 +1053,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1065,8 +1061,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
16, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
VK_DESCRIPTOR_TYPE_MAX_ENUM, //descriptor type
|
||||
@ -1074,20 +1072,28 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1110,9 +1116,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1061,7 +1061,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1070,7 +1070,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1079,7 +1078,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1088,7 +1086,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1097,7 +1094,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1106,8 +1102,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
16, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -1116,20 +1114,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1152,9 +1157,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1140,7 +1140,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1149,7 +1149,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1158,7 +1157,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1167,7 +1165,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1176,7 +1173,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1185,8 +1181,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
16, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
VK_DESCRIPTOR_TYPE_MAX_ENUM, //descriptor type
|
||||
@ -1194,20 +1192,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1230,9 +1235,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1056,7 +1056,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1065,7 +1065,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1074,7 +1073,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1083,7 +1081,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1092,8 +1089,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -1102,7 +1101,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1111,20 +1109,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1147,9 +1152,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -985,7 +985,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -994,7 +994,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1003,7 +1002,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1012,7 +1010,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1021,20 +1018,25 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1057,9 +1059,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1072,7 +1072,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1081,7 +1081,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1090,7 +1089,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1099,7 +1097,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1108,7 +1105,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1117,8 +1113,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
16, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
// {
|
||||
// VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1136,20 +1134,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1172,9 +1177,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1052,7 +1052,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1061,7 +1061,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1070,7 +1069,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1079,7 +1077,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1088,20 +1085,25 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1124,9 +1126,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1155,7 +1155,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1164,7 +1164,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1173,7 +1172,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1182,7 +1180,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1191,7 +1188,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1200,8 +1196,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
16, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
VK_DESCRIPTOR_TYPE_MAX_ENUM, //descriptor type
|
||||
@ -1209,20 +1207,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1245,9 +1250,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1047,7 +1047,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)sample_fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT sample_mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1056,7 +1056,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1065,7 +1064,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1074,7 +1072,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1083,8 +1080,10 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT fragmentMappings[] = {
|
||||
//fragment shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_DESCRIPTOR,
|
||||
@ -1093,20 +1092,27 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = sample_mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(sample_mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = fragmentMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_FRAGMENT] = sizeof(fragmentMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1129,9 +1135,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(sample_fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1037,7 +1037,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1046,7 +1046,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1055,7 +1054,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1064,7 +1062,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1073,20 +1070,25 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
@ -1109,9 +1111,6 @@ void CreateShaders()
|
||||
assemble_qpu_asm(fs_asm_code, asm_ptrs[2]);
|
||||
}
|
||||
|
||||
asm_sizes[3] = 0;
|
||||
asm_ptrs[3] = 0;
|
||||
|
||||
spirv[0] = 0x07230203;
|
||||
spirv[1] = 0x00010000;
|
||||
spirv[2] = 0x14E45250;
|
||||
|
@ -1043,7 +1043,7 @@ void CreateShaders()
|
||||
(char*)cs_asm_code, (char*)vs_asm_code, (char*)fs_asm_code, 0
|
||||
};
|
||||
|
||||
VkRpiAssemblyMappingEXT mappings[] = {
|
||||
VkRpiAssemblyMappingEXT vertexMappings[] = {
|
||||
//vertex shader uniforms
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1052,7 +1052,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
0, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1061,7 +1060,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
4, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1070,7 +1068,6 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
8, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
},
|
||||
{
|
||||
VK_RPI_ASSEMBLY_MAPPING_TYPE_PUSH_CONSTANT,
|
||||
@ -1079,20 +1076,25 @@ void CreateShaders()
|
||||
0, //descriptor binding #
|
||||
0, //descriptor array element #
|
||||
12, //resource offset
|
||||
VK_SHADER_STAGE_VERTEX_BIT
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t spirv[6];
|
||||
|
||||
uint64_t* asm_ptrs[4];
|
||||
uint32_t asm_sizes[4];
|
||||
uint64_t* asm_ptrs[4] = {};
|
||||
uint32_t asm_sizes[4] = {};
|
||||
|
||||
VkRpiAssemblyMappingEXT* asm_mappings[4] = {};
|
||||
uint32_t asm_mappings_sizes[4] = {};
|
||||
|
||||
VkRpiShaderModuleAssemblyCreateInfoEXT shaderModuleCreateInfo = {};
|
||||
shaderModuleCreateInfo.instructions = asm_ptrs;
|
||||
shaderModuleCreateInfo.numInstructions = asm_sizes;
|
||||
shaderModuleCreateInfo.mappings = mappings;
|
||||
shaderModuleCreateInfo.numMappings = sizeof(mappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
shaderModuleCreateInfo.mappings = asm_mappings;
|
||||
shaderModuleCreateInfo.numMappings = asm_mappings_sizes;
|
||||
|
||||
asm_mappings[VK_RPI_ASSEMBLY_TYPE_VERTEX] = vertexMappings;
|
||||
asm_mappings_sizes[VK_RPI_ASSEMBLY_TYPE_VERTEX] = sizeof(vertexMappings) / sizeof(VkRpiAssemblyMappingEXT);
|
||||
|
||||
{ //assemble cs code
|
||||
asm_sizes[0] = get_num_instructions(cs_asm_code);
|
||||
|
Loading…
x
Reference in New Issue
Block a user