zink: prepare for multiple cmdbufs

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Erik Faye-Lund
2019-03-25 15:21:30 +01:00
parent 229cd042d3
commit 86d0e741ec
3 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ reset_cmdbuf(struct zink_screen *screen, struct zink_cmdbuf *cmdbuf)
struct zink_cmdbuf *
zink_start_cmdbuf(struct zink_context *ctx)
{
struct zink_cmdbuf *cmdbuf = &ctx->cmdbuf;
struct zink_cmdbuf *cmdbuf = &ctx->cmdbufs[0];
reset_cmdbuf(zink_screen(ctx->base.screen), cmdbuf);
VkCommandBufferBeginInfo cbbi = {};
+5 -3
View File
@@ -53,7 +53,8 @@ zink_context_destroy(struct pipe_context *pctx)
{
struct zink_context *ctx = zink_context(pctx);
struct zink_screen *screen = zink_screen(pctx->screen);
vkFreeCommandBuffers(screen->dev, ctx->cmdpool, 1, &ctx->cmdbuf.cmdbuf);
for (int i = 0; i < ARRAY_SIZE(ctx->cmdbufs); ++i)
vkFreeCommandBuffers(screen->dev, ctx->cmdpool, 1, &ctx->cmdbufs[i].cmdbuf);
vkDestroyCommandPool(screen->dev, ctx->cmdpool, NULL);
util_primconvert_destroy(ctx->primconvert);
@@ -1197,8 +1198,9 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
cbai.commandPool = ctx->cmdpool;
cbai.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
cbai.commandBufferCount = 1;
if (vkAllocateCommandBuffers(screen->dev, &cbai, &ctx->cmdbuf.cmdbuf) != VK_SUCCESS)
goto fail;
for (int i = 0; i < ARRAY_SIZE(ctx->cmdbufs); ++i)
if (vkAllocateCommandBuffers(screen->dev, &cbai, &ctx->cmdbufs[i].cmdbuf) != VK_SUCCESS)
goto fail;
VkDescriptorPoolSize sizes[] = {
{VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000}
+1 -1
View File
@@ -60,7 +60,7 @@ struct zink_context {
struct blitter_context *blitter;
VkCommandPool cmdpool;
struct zink_cmdbuf cmdbuf;
struct zink_cmdbuf cmdbufs[1];
VkQueue queue;