support dynamic uniform buffers on vulkan
This commit is contained in:
@@ -69,12 +69,12 @@ void drawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount,
|
||||
buffer->commandBuffer->changedBuffer = gnFalse;
|
||||
}
|
||||
|
||||
void bindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set) {
|
||||
void bindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets) {
|
||||
vkCmdBindDescriptorSets(
|
||||
buffer->commandBuffer->buffer,
|
||||
VK_PIPELINE_BIND_POINT_GRAPHICS,
|
||||
buffer->commandBuffer->boundGraphicsPipeline->graphicsPipeline->pipelineLayout, set, 1,
|
||||
&uniform->uniform->set, 0, NULL
|
||||
&uniform->uniform->set, dynamicOffsetCount, dynamicOffsets
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -17,5 +17,5 @@ void setScissor(gnCommandBuffer buffer, gnScissor scissor);
|
||||
void bindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
||||
void draw(gnCommandBuffer buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
||||
void drawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
||||
void bindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set);
|
||||
void bindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set, uint32_t dynamicOffsetCount, uint32_t* dynamicOffsets);
|
||||
void pushConstant(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
||||
|
@@ -13,7 +13,7 @@ void updateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info) {
|
||||
|
||||
VkWriteDescriptorSet write = {
|
||||
.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
|
||||
.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
.descriptorType = (info->dynamic) ? VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC : VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
.descriptorCount = 1,
|
||||
.pBufferInfo = &bufferInfo,
|
||||
.dstSet = uniform->uniform->set,
|
||||
|
@@ -4,6 +4,7 @@
|
||||
VkDescriptorType vkGryphnUniformType(gnUniformType type) {
|
||||
switch(type) {
|
||||
case GN_UNIFORM_BUFFER_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||
case GN_DYNAMIC_UNIFORM_BUFFER_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC;
|
||||
case GN_SHADER_STORE_BUFFER_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
|
||||
case GN_COMBINED_IMAGE_SAMPLER_DESCRIPTOR: return VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||
case GN_UNIFORM_TYPE_MAX: return VK_DESCRIPTOR_TYPE_MAX_ENUM;
|
||||
|
Reference in New Issue
Block a user