1
0
mirror of https://github.com/Yours3lf/rpi-vk-driver.git synced 2025-03-21 12:29:15 +01:00

fixed varying test case

This commit is contained in:
Unknown 2019-09-22 16:40:06 +01:00
parent 1f7c80aa42
commit 554df2d709

View File

@ -138,7 +138,7 @@ void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t ins
clInsertShaderState(&commandBuffer->binCl,
0, //shader state record address
0, //extended shader state record
cb->graphicsPipeline->vertexAttributeDescriptionCount & 0x7); //0 -> 8
cb->graphicsPipeline->vertexAttributeDescriptionCount & 0x7); //number of attribute arrays, 0 -> 8
//Vertex Array Primitives (draw call)
clFit(commandBuffer, &commandBuffer->binCl, V3D21_VERTEX_ARRAY_PRIMITIVES_length);
@ -165,14 +165,14 @@ void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t ins
clFit(commandBuffer, &commandBuffer->shaderRecCl, V3D21_SHADER_RECORD_length);
ControlList relocCl = commandBuffer->shaderRecCl;
uint32_t bindingCount = 0;
uint32_t bindingSelectBits = 0;
uint32_t attribCount = 0;
uint32_t attribSelectBits = 0;
for(uint32_t c = 0 ; c < cb->graphicsPipeline->vertexAttributeDescriptionCount; ++c)
{
if(cb->vertexBuffers[cb->graphicsPipeline->vertexAttributeDescriptions[c].binding])
{
bindingCount++;
bindingSelectBits |= 1 << cb->graphicsPipeline->vertexAttributeDescriptions[c].binding;
attribCount++;
attribSelectBits |= 1 << cb->graphicsPipeline->vertexAttributeDescriptions[c].location;
}
}
@ -184,7 +184,7 @@ void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t ins
//TODO number of attribs
//3 is the number of type of possible shaders
for(int c = 0; c < (3 + bindingCount)*4; ++c)
for(int c = 0; c < (3 + attribCount)*4; ++c)
{
clInsertNop(&commandBuffer->shaderRecCl);
}
@ -201,13 +201,15 @@ void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t ins
0, //fragment uniform address?
fragCode, //fragment code address
0, //TODO vertex number of used uniforms?
bindingSelectBits, //vertex attribute array select bits
attribSelectBits, //vertex attribute array select bits
attribSize, //vertex total attribute size
0, //vertex uniform address
vertCode, //vertex shader code address
0, //TODO coordinate number of used uniforms?
bindingSelectBits, //coordinate attribute array select bits
attribSize, //coordinate total attribute size
//TODO how do we know which attribute contains the vertices?
//for now the first one will be hardcoded to have the vertices...
1 << 0, //coordinate attribute array select bits
getFormatByteSize(cb->graphicsPipeline->vertexAttributeDescriptions[0].format), //coordinate total attribute size
0, //coordinate uniform address
coordCode //coordinate shader code address
);
@ -230,8 +232,8 @@ void vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t ins
vertexBuffer, //reloc address
getFormatByteSize(cb->graphicsPipeline->vertexAttributeDescriptions[cb->graphicsPipeline->vertexAttributeDescriptions[c].binding].format),
cb->graphicsPipeline->vertexBindingDescriptions[cb->graphicsPipeline->vertexAttributeDescriptions[c].binding].stride, //stride
0, //vertex vpm offset
0 //coordinte vpm offset
cb->graphicsPipeline->vertexAttributeDescriptions[c].offset, //vertex vpm offset
cb->graphicsPipeline->vertexAttributeDescriptions[c].offset //coordinte vpm offset
);
}
}