Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Mon, Jan 16, 2017 at 9:44 PM, Dave Airlie <airl...@gmail.com> wrote: > From: Dave Airlie <airl...@redhat.com> > > This is just prep work for layered clears, it doesn't change > anything. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/amd/vulkan/radv_meta_clear.c | 87 > ++++++++++++++++++++++------------------ > 1 file changed, 49 insertions(+), 38 deletions(-) > > diff --git a/src/amd/vulkan/radv_meta_clear.c > b/src/amd/vulkan/radv_meta_clear.c > index 601c3de..ff779ea 100644 > --- a/src/amd/vulkan/radv_meta_clear.c > +++ b/src/amd/vulkan/radv_meta_clear.c > @@ -205,12 +205,50 @@ create_pipeline(struct radv_device *device, > } > > static VkResult > +create_color_renderpass(struct radv_device *device, > + VkFormat vk_format, > + uint32_t samples, > + VkRenderPass *pass) > +{ > + return radv_CreateRenderPass(radv_device_to_handle(device), > + &(VkRenderPassCreateInfo) { > + .sType = > VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, > + .attachmentCount = 1, > + .pAttachments = > &(VkAttachmentDescription) { > + .format = vk_format, > + .samples = samples, > + .loadOp = > VK_ATTACHMENT_LOAD_OP_LOAD, > + .storeOp = > VK_ATTACHMENT_STORE_OP_STORE, > + .initialLayout = > VK_IMAGE_LAYOUT_GENERAL, > + .finalLayout = > VK_IMAGE_LAYOUT_GENERAL, > + }, > + .subpassCount = 1, > + .pSubpasses = > &(VkSubpassDescription) { > + .pipelineBindPoint = > VK_PIPELINE_BIND_POINT_GRAPHICS, > + .inputAttachmentCount > = 0, > + .colorAttachmentCount > = 1, > + .pColorAttachments = > &(VkAttachmentReference) { > + .attachment = > 0, > + .layout = > VK_IMAGE_LAYOUT_GENERAL, > + }, > + .pResolveAttachments = > NULL, > + > .pDepthStencilAttachment = &(VkAttachmentReference) { > + .attachment = > VK_ATTACHMENT_UNUSED, > + .layout = > VK_IMAGE_LAYOUT_GENERAL, > + }, > + > .preserveAttachmentCount = 1, > + .pPreserveAttachments > = (uint32_t[]) { 0 }, > + }, > + > .dependencyCount = 0, > + }, > &device->meta_state.alloc, pass); > +} > + > +static VkResult > create_color_pipeline(struct radv_device *device, > - VkFormat vk_format, > uint32_t samples, > uint32_t frag_output, > struct radv_pipeline **pipeline, > - VkRenderPass *pass) > + VkRenderPass pass) > { > struct nir_shader *vs_nir; > struct nir_shader *fs_nir; > @@ -270,44 +308,11 @@ create_color_pipeline(struct radv_device *device, > .pAttachments = blend_attachment_state > }; > > - result = radv_CreateRenderPass(radv_device_to_handle(device), > - &(VkRenderPassCreateInfo) { > - .sType = > VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, > - .attachmentCount = 1, > - .pAttachments = > &(VkAttachmentDescription) { > - .format = vk_format, > - .samples = samples, > - .loadOp = > VK_ATTACHMENT_LOAD_OP_LOAD, > - .storeOp = > VK_ATTACHMENT_STORE_OP_STORE, > - .initialLayout = > VK_IMAGE_LAYOUT_GENERAL, > - .finalLayout = > VK_IMAGE_LAYOUT_GENERAL, > - }, > - .subpassCount = 1, > - .pSubpasses = > &(VkSubpassDescription) { > - .pipelineBindPoint = > VK_PIPELINE_BIND_POINT_GRAPHICS, > - .inputAttachmentCount > = 0, > - .colorAttachmentCount > = 1, > - .pColorAttachments = > &(VkAttachmentReference) { > - .attachment = > 0, > - .layout = > VK_IMAGE_LAYOUT_GENERAL, > - }, > - .pResolveAttachments = > NULL, > - > .pDepthStencilAttachment = &(VkAttachmentReference) { > - .attachment = > VK_ATTACHMENT_UNUSED, > - .layout = > VK_IMAGE_LAYOUT_GENERAL, > - }, > - > .preserveAttachmentCount = 1, > - .pPreserveAttachments > = (uint32_t[]) { 0 }, > - }, > - > .dependencyCount = 0, > - }, > &device->meta_state.alloc, pass); > > - if (result != VK_SUCCESS) > - return result; > struct radv_graphics_pipeline_create_info extra = { > .use_rectlist = true, > }; > - result = create_pipeline(device, radv_render_pass_from_handle(*pass), > + result = create_pipeline(device, radv_render_pass_from_handle(pass), > samples, vs_nir, fs_nir, &vi_state, > &ds_state, &cb_state, > &extra, &device->meta_state.alloc, pipeline); > > @@ -743,8 +748,14 @@ radv_device_init_meta_clear_state(struct radv_device > *device) > VkFormat format = pipeline_formats[j]; > unsigned fs_key = radv_format_meta_fs_key(format); > assert(!state->clear[i].color_pipelines[fs_key]); > - res = create_color_pipeline(device, format, samples, > 0, &state->clear[i].color_pipelines[fs_key], > - > &state->clear[i].render_pass[fs_key]); > + > + res = create_color_renderpass(device, format, samples, > + > &state->clear[i].render_pass[fs_key]); > + if (res != VK_SUCCESS) > + goto fail; > + > + res = create_color_pipeline(device, samples, 0, > &state->clear[i].color_pipelines[fs_key], > + > state->clear[i].render_pass[fs_key]); > if (res != VK_SUCCESS) > goto fail; > > -- > 2.9.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev