mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-25 22:10:59 +00:00
vk: get rid of static vk_rectIbo
This commit is contained in:
parent
0773d3c3fe
commit
070b2345c0
2 changed files with 18 additions and 16 deletions
|
@ -331,7 +331,7 @@ uint8_t* QVk_GetUniformBuffer(VkDeviceSize size, uint32_t *dstOffset, VkDescript
|
||||||
uint8_t* QVk_GetStagingBuffer(VkDeviceSize size, int alignment, VkCommandBuffer *cmdBuffer, VkBuffer *buffer, uint32_t *dstOffset);
|
uint8_t* QVk_GetStagingBuffer(VkDeviceSize size, int alignment, VkCommandBuffer *cmdBuffer, VkBuffer *buffer, uint32_t *dstOffset);
|
||||||
void GenFanIndexes(uint16_t *data, int from, int to);
|
void GenFanIndexes(uint16_t *data, int from, int to);
|
||||||
void GenStripIndexes(uint16_t *data, int from, int to);
|
void GenStripIndexes(uint16_t *data, int from, int to);
|
||||||
VkBuffer* UpdateIndexBuffer(uint16_t *data, VkDeviceSize bufferSize, VkDeviceSize *dstOffset);
|
VkBuffer* UpdateIndexBuffer(const uint16_t *data, VkDeviceSize bufferSize, VkDeviceSize *dstOffset);
|
||||||
void QVk_DrawColorRect(float *ubo, VkDeviceSize uboSize, qvkrenderpasstype_t rpType);
|
void QVk_DrawColorRect(float *ubo, VkDeviceSize uboSize, qvkrenderpasstype_t rpType);
|
||||||
void QVk_DrawTexRect(const float *ubo, VkDeviceSize uboSize, qvktexture_t *texture);
|
void QVk_DrawTexRect(const float *ubo, VkDeviceSize uboSize, qvktexture_t *texture);
|
||||||
void QVk_BindPipeline(qvkpipeline_t *pipeline);
|
void QVk_BindPipeline(qvkpipeline_t *pipeline);
|
||||||
|
|
|
@ -225,7 +225,6 @@ enum {
|
||||||
// global static buffers (reused, never changing)
|
// global static buffers (reused, never changing)
|
||||||
static qvkbuffer_t vk_texRectVbo;
|
static qvkbuffer_t vk_texRectVbo;
|
||||||
static qvkbuffer_t vk_colorRectVbo;
|
static qvkbuffer_t vk_colorRectVbo;
|
||||||
static qvkbuffer_t vk_rectIbo;
|
|
||||||
|
|
||||||
// global dynamic buffers (double buffered)
|
// global dynamic buffers (double buffered)
|
||||||
static qvkbuffer_t vk_dynVertexBuffers[NUM_DYNBUFFERS];
|
static qvkbuffer_t vk_dynVertexBuffers[NUM_DYNBUFFERS];
|
||||||
|
@ -1118,7 +1117,7 @@ GenStripIndexes(uint16_t *data, int from, int to)
|
||||||
}
|
}
|
||||||
|
|
||||||
VkBuffer*
|
VkBuffer*
|
||||||
UpdateIndexBuffer(uint16_t *data, VkDeviceSize bufferSize, VkDeviceSize *dstOffset)
|
UpdateIndexBuffer(const uint16_t *data, VkDeviceSize bufferSize, VkDeviceSize *dstOffset)
|
||||||
{
|
{
|
||||||
uint16_t *iboData = NULL;
|
uint16_t *iboData = NULL;
|
||||||
|
|
||||||
|
@ -1236,14 +1235,10 @@ static void CreateStaticBuffers()
|
||||||
-1., 1.,
|
-1., 1.,
|
||||||
1., -1. };
|
1., -1. };
|
||||||
|
|
||||||
const uint32_t indices[] = { 0, 1, 2, 0, 3, 1 };
|
|
||||||
|
|
||||||
QVk_CreateVertexBuffer(texVerts, sizeof(texVerts),
|
QVk_CreateVertexBuffer(texVerts, sizeof(texVerts),
|
||||||
&vk_texRectVbo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0);
|
&vk_texRectVbo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0);
|
||||||
QVk_CreateVertexBuffer(colorVerts, sizeof(colorVerts),
|
QVk_CreateVertexBuffer(colorVerts, sizeof(colorVerts),
|
||||||
&vk_colorRectVbo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0);
|
&vk_colorRectVbo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0);
|
||||||
QVk_CreateIndexBuffer(indices, sizeof(indices),
|
|
||||||
&vk_rectIbo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, 0);
|
|
||||||
|
|
||||||
QVk_DebugSetObjectName((uint64_t)vk_texRectVbo.resource.buffer,
|
QVk_DebugSetObjectName((uint64_t)vk_texRectVbo.resource.buffer,
|
||||||
VK_OBJECT_TYPE_BUFFER, "Static Buffer: Textured Rectangle VBO");
|
VK_OBJECT_TYPE_BUFFER, "Static Buffer: Textured Rectangle VBO");
|
||||||
|
@ -1253,10 +1248,6 @@ static void CreateStaticBuffers()
|
||||||
VK_OBJECT_TYPE_BUFFER, "Static Buffer: Colored Rectangle VBO");
|
VK_OBJECT_TYPE_BUFFER, "Static Buffer: Colored Rectangle VBO");
|
||||||
QVk_DebugSetObjectName((uint64_t)vk_colorRectVbo.resource.memory,
|
QVk_DebugSetObjectName((uint64_t)vk_colorRectVbo.resource.memory,
|
||||||
VK_OBJECT_TYPE_DEVICE_MEMORY, "Memory: Colored Rectangle VBO");
|
VK_OBJECT_TYPE_DEVICE_MEMORY, "Memory: Colored Rectangle VBO");
|
||||||
QVk_DebugSetObjectName((uint64_t)vk_rectIbo.resource.buffer,
|
|
||||||
VK_OBJECT_TYPE_BUFFER, "Static Buffer: Rectangle IBO");
|
|
||||||
QVk_DebugSetObjectName((uint64_t)vk_rectIbo.resource.memory,
|
|
||||||
VK_OBJECT_TYPE_DEVICE_MEMORY, "Memory: Rectangle IBO");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1567,7 +1558,6 @@ void QVk_Shutdown( void )
|
||||||
QVk_DestroyPipeline(&vk_postprocessPipeline);
|
QVk_DestroyPipeline(&vk_postprocessPipeline);
|
||||||
QVk_FreeBuffer(&vk_texRectVbo);
|
QVk_FreeBuffer(&vk_texRectVbo);
|
||||||
QVk_FreeBuffer(&vk_colorRectVbo);
|
QVk_FreeBuffer(&vk_colorRectVbo);
|
||||||
QVk_FreeBuffer(&vk_rectIbo);
|
|
||||||
for (int i = 0; i < NUM_DYNBUFFERS; ++i)
|
for (int i = 0; i < NUM_DYNBUFFERS; ++i)
|
||||||
{
|
{
|
||||||
if (vk_dynUniformBuffers[i].resource.buffer != VK_NULL_HANDLE)
|
if (vk_dynUniformBuffers[i].resource.buffer != VK_NULL_HANDLE)
|
||||||
|
@ -2653,25 +2643,32 @@ VkSampler QVk_UpdateTextureSampler(qvktexture_t *texture, qvksampler_t samplerTy
|
||||||
|
|
||||||
void QVk_DrawColorRect(float *ubo, VkDeviceSize uboSize, qvkrenderpasstype_t rpType)
|
void QVk_DrawColorRect(float *ubo, VkDeviceSize uboSize, qvkrenderpasstype_t rpType)
|
||||||
{
|
{
|
||||||
|
VkBuffer *buffer;
|
||||||
|
VkDeviceSize dstOffset;
|
||||||
uint32_t uboOffset;
|
uint32_t uboOffset;
|
||||||
VkDescriptorSet uboDescriptorSet;
|
VkDescriptorSet uboDescriptorSet;
|
||||||
uint8_t *vertData = QVk_GetUniformBuffer(uboSize,
|
uint8_t *vertData = QVk_GetUniformBuffer(uboSize,
|
||||||
&uboOffset, &uboDescriptorSet);
|
&uboOffset, &uboDescriptorSet);
|
||||||
memcpy(vertData, ubo, uboSize);
|
memcpy(vertData, ubo, uboSize);
|
||||||
|
|
||||||
|
const uint16_t indices[] = { 0, 1, 2, 0, 3, 1 };
|
||||||
|
buffer = UpdateIndexBuffer(indices, sizeof(indices), &dstOffset);
|
||||||
|
|
||||||
QVk_BindPipeline(&vk_drawColorQuadPipeline[rpType]);
|
QVk_BindPipeline(&vk_drawColorQuadPipeline[rpType]);
|
||||||
VkDeviceSize offsets = 0;
|
VkDeviceSize offsets = 0;
|
||||||
vkCmdBindDescriptorSets(vk_activeCmdbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
|
vkCmdBindDescriptorSets(vk_activeCmdbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
|
||||||
vk_drawColorQuadPipeline[rpType].layout, 0, 1, &uboDescriptorSet, 1, &uboOffset);
|
vk_drawColorQuadPipeline[rpType].layout, 0, 1, &uboDescriptorSet, 1, &uboOffset);
|
||||||
vkCmdBindVertexBuffers(vk_activeCmdbuffer, 0, 1,
|
vkCmdBindVertexBuffers(vk_activeCmdbuffer, 0, 1,
|
||||||
&vk_colorRectVbo.resource.buffer, &offsets);
|
&vk_colorRectVbo.resource.buffer, &offsets);
|
||||||
vkCmdBindIndexBuffer(vk_activeCmdbuffer, vk_rectIbo.resource.buffer,
|
vkCmdBindIndexBuffer(vk_activeCmdbuffer,
|
||||||
0, VK_INDEX_TYPE_UINT32);
|
*buffer, dstOffset, VK_INDEX_TYPE_UINT16);
|
||||||
vkCmdDrawIndexed(vk_activeCmdbuffer, 6, 1, 0, 0, 0);
|
vkCmdDrawIndexed(vk_activeCmdbuffer, 6, 1, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QVk_DrawTexRect(const float *ubo, VkDeviceSize uboSize, qvktexture_t *texture)
|
void QVk_DrawTexRect(const float *ubo, VkDeviceSize uboSize, qvktexture_t *texture)
|
||||||
{
|
{
|
||||||
|
VkBuffer *buffer;
|
||||||
|
VkDeviceSize dstOffset;
|
||||||
uint32_t uboOffset;
|
uint32_t uboOffset;
|
||||||
VkDescriptorSet uboDescriptorSet;
|
VkDescriptorSet uboDescriptorSet;
|
||||||
uint8_t *uboData = QVk_GetUniformBuffer(uboSize, &uboOffset, &uboDescriptorSet);
|
uint8_t *uboData = QVk_GetUniformBuffer(uboSize, &uboOffset, &uboDescriptorSet);
|
||||||
|
@ -2689,11 +2686,16 @@ void QVk_DrawTexRect(const float *ubo, VkDeviceSize uboSize, qvktexture_t *textu
|
||||||
vkCmdPushConstants(vk_activeCmdbuffer, vk_drawTexQuadPipeline[vk_state.current_renderpass].layout,
|
vkCmdPushConstants(vk_activeCmdbuffer, vk_drawTexQuadPipeline[vk_state.current_renderpass].layout,
|
||||||
VK_SHADER_STAGE_FRAGMENT_BIT, 17 * sizeof(float), sizeof(gamma), &gamma);
|
VK_SHADER_STAGE_FRAGMENT_BIT, 17 * sizeof(float), sizeof(gamma), &gamma);
|
||||||
|
|
||||||
vkCmdBindDescriptorSets(vk_activeCmdbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, vk_drawTexQuadPipeline[vk_state.current_renderpass].layout, 0, 2, descriptorSets, 1, &uboOffset);
|
const uint16_t indices[] = { 0, 1, 2, 0, 3, 1 };
|
||||||
|
|
||||||
|
buffer = UpdateIndexBuffer(indices, sizeof(indices), &dstOffset);
|
||||||
|
|
||||||
|
vkCmdBindDescriptorSets(vk_activeCmdbuffer, VK_PIPELINE_BIND_POINT_GRAPHICS,
|
||||||
|
vk_drawTexQuadPipeline[vk_state.current_renderpass].layout, 0, 2, descriptorSets, 1, &uboOffset);
|
||||||
vkCmdBindVertexBuffers(vk_activeCmdbuffer, 0, 1,
|
vkCmdBindVertexBuffers(vk_activeCmdbuffer, 0, 1,
|
||||||
&vk_texRectVbo.resource.buffer, &offsets);
|
&vk_texRectVbo.resource.buffer, &offsets);
|
||||||
vkCmdBindIndexBuffer(vk_activeCmdbuffer,
|
vkCmdBindIndexBuffer(vk_activeCmdbuffer,
|
||||||
vk_rectIbo.resource.buffer, 0, VK_INDEX_TYPE_UINT32);
|
*buffer, dstOffset, VK_INDEX_TYPE_UINT16);
|
||||||
vkCmdDrawIndexed(vk_activeCmdbuffer, 6, 1, 0, 0, 0);
|
vkCmdDrawIndexed(vk_activeCmdbuffer, 6, 1, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue