From 08f6eb93078182c37fb27ab3e5193430758f2805 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Fri, 2 Jan 2015 18:24:05 -0700 Subject: demos: Remove CmdBindAttachments() for tiler Gpus --- demos/cube.c | 35 ++++++++++++++++++++++++++++++++--- demos/tri.c | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/demos/cube.c b/demos/cube.c index a3c6659a..14c1a5c7 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -280,13 +280,44 @@ static void demo_draw_build_cmd(struct demo *demo) const XGL_FLOAT clear_color[4] = { 0.2f, 0.2f, 0.2f, 0.2f }; const XGL_FLOAT clear_depth = 1.0f; XGL_IMAGE_SUBRESOURCE_RANGE clear_range; + XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = { + .sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO, + .pNext = NULL, + .operation = XGL_RENDER_PASS_OPERATION_BEGIN_AND_END, + }; XGL_CMD_BUFFER_BEGIN_INFO cmd_buf_info = { .sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, - .pNext = NULL, + .pNext = &graphics_cmd_buf_info, .flags = XGL_CMD_BUFFER_OPTIMIZE_GPU_SMALL_BATCH_BIT | XGL_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT, }; XGL_RESULT err; + XGL_ATTACHMENT_LOAD_OP load_op = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + XGL_ATTACHMENT_STORE_OP store_op = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + const XGL_FRAMEBUFFER_CREATE_INFO fb_info = { + .sType = XGL_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, + .pNext = NULL, + .colorAttachmentCount = 1, + .pColorAttachments = (XGL_COLOR_ATTACHMENT_BIND_INFO*) &color_attachment, + .pDepthStencilAttachment = (XGL_DEPTH_STENCIL_BIND_INFO*) &depth_stencil, + .sampleCount = 1, + }; + XGL_RENDER_PASS_CREATE_INFO rp_info; + + memset(&rp_info, 0 , sizeof(rp_info)); + err = xglCreateFramebuffer(demo->device, &fb_info, &(rp_info.framebuffer)); + assert(!err); + rp_info.sType = XGL_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + rp_info.renderArea.extent.width = demo->width; + rp_info.renderArea.extent.height = demo->height; + rp_info.pColorLoadOps = &load_op; + rp_info.pColorStoreOps = &store_op; + rp_info.depthLoadOp = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + rp_info.depthStoreOp = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + rp_info.stencilLoadOp = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + rp_info.stencilStoreOp = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + err = xglCreateRenderPass(demo->device, &rp_info, &(graphics_cmd_buf_info.renderPass)); + assert(!err); err = xglBeginCommandBuffer(demo->cmd, &cmd_buf_info); assert(!err); @@ -304,8 +335,6 @@ static void demo_draw_build_cmd(struct demo *demo) xglCmdBindStateObject(demo->cmd, XGL_STATE_BIND_DEPTH_STENCIL, demo->depth_stencil); - xglCmdBindAttachments(demo->cmd, 1, &color_attachment, &depth_stencil); - clear_range.aspect = XGL_IMAGE_ASPECT_COLOR; clear_range.baseMipLevel = 0; clear_range.mipLevels = 1; diff --git a/demos/tri.c b/demos/tri.c index 75a58e61..6686cd32 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -96,13 +96,44 @@ static void demo_draw_build_cmd(struct demo *demo) const XGL_FLOAT clear_color[4] = { 0.2f, 0.2f, 0.2f, 0.2f }; const XGL_FLOAT clear_depth = 0.9f; XGL_IMAGE_SUBRESOURCE_RANGE clear_range; + XGL_CMD_BUFFER_GRAPHICS_BEGIN_INFO graphics_cmd_buf_info = { + .sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO, + .pNext = NULL, + .operation = XGL_RENDER_PASS_OPERATION_BEGIN_AND_END, + }; XGL_CMD_BUFFER_BEGIN_INFO cmd_buf_info = { .sType = XGL_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO, - .pNext = NULL, + .pNext = &graphics_cmd_buf_info, .flags = XGL_CMD_BUFFER_OPTIMIZE_GPU_SMALL_BATCH_BIT | XGL_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT, }; XGL_RESULT err; + XGL_ATTACHMENT_LOAD_OP load_op = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + XGL_ATTACHMENT_STORE_OP store_op = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + const XGL_FRAMEBUFFER_CREATE_INFO fb_info = { + .sType = XGL_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, + .pNext = NULL, + .colorAttachmentCount = 1, + .pColorAttachments = (XGL_COLOR_ATTACHMENT_BIND_INFO*) &color_attachment, + .pDepthStencilAttachment = (XGL_DEPTH_STENCIL_BIND_INFO*) &depth_stencil, + .sampleCount = 1, + }; + XGL_RENDER_PASS_CREATE_INFO rp_info; + + memset(&rp_info, 0 , sizeof(rp_info)); + err = xglCreateFramebuffer(demo->device, &fb_info, &(rp_info.framebuffer)); + assert(!err); + rp_info.sType = XGL_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + rp_info.renderArea.extent.width = demo->width; + rp_info.renderArea.extent.height = demo->height; + rp_info.pColorLoadOps = &load_op; + rp_info.pColorStoreOps = &store_op; + rp_info.depthLoadOp = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + rp_info.depthStoreOp = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + rp_info.stencilLoadOp = XGL_ATTACHMENT_LOAD_OP_DONT_CARE; + rp_info.stencilStoreOp = XGL_ATTACHMENT_STORE_OP_DONT_CARE; + err = xglCreateRenderPass(demo->device, &rp_info, &(graphics_cmd_buf_info.renderPass)); + assert(!err); err = xglBeginCommandBuffer(demo->cmd, &cmd_buf_info); assert(!err); @@ -120,7 +151,6 @@ static void demo_draw_build_cmd(struct demo *demo) xglCmdBindStateObject(demo->cmd, XGL_STATE_BIND_DEPTH_STENCIL, demo->depth_stencil); - xglCmdBindAttachments(demo->cmd, 1, &color_attachment, &depth_stencil); xglCmdBindVertexData(demo->cmd, demo->vertices.mem, 0, 0); -- cgit v1.2.3