Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> for the series.
On Mon, Dec 18, 2017 at 7:38 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > They are dummy objects but the spec requires layout to not be > NULL, this just makes sure we are creating valid pipeline layout > objects. This will allow us to remove some useless checks. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/amd/vulkan/radv_meta_decompress.c | 28 ++++++++++++++++++++++++++++ > src/amd/vulkan/radv_meta_fast_clear.c | 33 +++++++++++++++++++++++++++++++-- > src/amd/vulkan/radv_meta_resolve.c | 18 ++++++++++++++++++ > src/amd/vulkan/radv_private.h | 3 +++ > 4 files changed, 80 insertions(+), 2 deletions(-) > > diff --git a/src/amd/vulkan/radv_meta_decompress.c > b/src/amd/vulkan/radv_meta_decompress.c > index b86f3925cf..7a5681414f 100644 > --- a/src/amd/vulkan/radv_meta_decompress.c > +++ b/src/amd/vulkan/radv_meta_decompress.c > @@ -75,11 +75,29 @@ create_pass(struct radv_device *device, > return result; > } > > +static VkResult > +create_pipeline_layout(struct radv_device *device, VkPipelineLayout *layout) > +{ > + VkPipelineLayoutCreateInfo pl_create_info = { > + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, > + .setLayoutCount = 0, > + .pSetLayouts = NULL, > + .pushConstantRangeCount = 0, > + .pPushConstantRanges = NULL, > + }; > + > + return radv_CreatePipelineLayout(radv_device_to_handle(device), > + &pl_create_info, > + &device->meta_state.alloc, > + layout); > +} > + > static VkResult > create_pipeline(struct radv_device *device, > VkShaderModule vs_module_h, > uint32_t samples, > VkRenderPass pass, > + VkPipelineLayout layout, > VkPipeline *decompress_pipeline, > VkPipeline *resummarize_pipeline) > { > @@ -165,6 +183,7 @@ create_pipeline(struct radv_device *device, > VK_DYNAMIC_STATE_SCISSOR, > }, > }, > + .layout = layout, > .renderPass = pass, > .subpass = 0, > }; > @@ -212,6 +231,9 @@ radv_device_finish_meta_depth_decomp_state(struct > radv_device *device) > radv_DestroyRenderPass(radv_device_to_handle(device), > state->depth_decomp[i].pass, > &state->alloc); > + radv_DestroyPipelineLayout(radv_device_to_handle(device), > + state->depth_decomp[i].p_layout, > + &state->alloc); > radv_DestroyPipeline(radv_device_to_handle(device), > > state->depth_decomp[i].decompress_pipeline, > &state->alloc); > @@ -243,8 +265,14 @@ radv_device_init_meta_depth_decomp_state(struct > radv_device *device) > if (res != VK_SUCCESS) > goto fail; > > + res = create_pipeline_layout(device, > + > &state->depth_decomp[i].p_layout); > + if (res != VK_SUCCESS) > + goto fail; > + > res = create_pipeline(device, vs_module_h, samples, > state->depth_decomp[i].pass, > + state->depth_decomp[i].p_layout, > > &state->depth_decomp[i].decompress_pipeline, > > &state->depth_decomp[i].resummarize_pipeline); > if (res != VK_SUCCESS) > diff --git a/src/amd/vulkan/radv_meta_fast_clear.c > b/src/amd/vulkan/radv_meta_fast_clear.c > index 38da63246a..1acf510359 100644 > --- a/src/amd/vulkan/radv_meta_fast_clear.c > +++ b/src/amd/vulkan/radv_meta_fast_clear.c > @@ -74,9 +74,27 @@ create_pass(struct radv_device *device) > return result; > } > > +static VkResult > +create_pipeline_layout(struct radv_device *device, VkPipelineLayout *layout) > +{ > + VkPipelineLayoutCreateInfo pl_create_info = { > + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, > + .setLayoutCount = 0, > + .pSetLayouts = NULL, > + .pushConstantRangeCount = 0, > + .pPushConstantRanges = NULL, > + }; > + > + return radv_CreatePipelineLayout(radv_device_to_handle(device), > + &pl_create_info, > + &device->meta_state.alloc, > + layout); > +} > + > static VkResult > create_pipeline(struct radv_device *device, > - VkShaderModule vs_module_h) > + VkShaderModule vs_module_h, > + VkPipelineLayout layout) > { > VkResult result; > VkDevice device_h = radv_device_to_handle(device); > @@ -173,6 +191,7 @@ create_pipeline(struct radv_device *device, > > VK_DYNAMIC_STATE_SCISSOR, > }, > }, > + .layout = layout, > .renderPass = > device->meta_state.fast_clear_flush.pass, > .subpass = 0, > }, > @@ -218,6 +237,7 @@ create_pipeline(struct radv_device *device, > > VK_DYNAMIC_STATE_SCISSOR, > }, > }, > + .layout = layout, > .renderPass = > device->meta_state.fast_clear_flush.pass, > .subpass = 0, > }, > @@ -245,6 +265,9 @@ radv_device_finish_meta_fast_clear_flush_state(struct > radv_device *device) > > radv_DestroyRenderPass(radv_device_to_handle(device), > state->fast_clear_flush.pass, &state->alloc); > + radv_DestroyPipelineLayout(radv_device_to_handle(device), > + state->fast_clear_flush.p_layout, > + &state->alloc); > radv_DestroyPipeline(radv_device_to_handle(device), > state->fast_clear_flush.cmask_eliminate_pipeline, > &state->alloc); > @@ -269,8 +292,14 @@ radv_device_init_meta_fast_clear_flush_state(struct > radv_device *device) > if (res != VK_SUCCESS) > goto fail; > > + res = create_pipeline_layout(device, > + > &device->meta_state.fast_clear_flush.p_layout); > + if (res != VK_SUCCESS) > + goto fail; > + > VkShaderModule vs_module_h = radv_shader_module_to_handle(&vs_module); > - res = create_pipeline(device, vs_module_h); > + res = create_pipeline(device, vs_module_h, > + device->meta_state.fast_clear_flush.p_layout); > if (res != VK_SUCCESS) > goto fail; > > diff --git a/src/amd/vulkan/radv_meta_resolve.c > b/src/amd/vulkan/radv_meta_resolve.c > index 254861ad18..e73a950ab7 100644 > --- a/src/amd/vulkan/radv_meta_resolve.c > +++ b/src/amd/vulkan/radv_meta_resolve.c > @@ -121,6 +121,21 @@ create_pipeline(struct radv_device *device, > goto cleanup; > } > > + VkPipelineLayoutCreateInfo pl_create_info = { > + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, > + .setLayoutCount = 0, > + .pSetLayouts = NULL, > + .pushConstantRangeCount = 0, > + .pPushConstantRanges = NULL, > + }; > + > + result = radv_CreatePipelineLayout(radv_device_to_handle(device), > + &pl_create_info, > + &device->meta_state.alloc, > + > &device->meta_state.resolve.p_layout); > + if (result != VK_SUCCESS) > + goto cleanup; > + > result = radv_graphics_pipeline_create(device_h, > > radv_pipeline_cache_to_handle(&device->meta_state.cache), > > &(VkGraphicsPipelineCreateInfo) { > @@ -196,6 +211,7 @@ create_pipeline(struct radv_device *device, > > VK_DYNAMIC_STATE_SCISSOR, > }, > }, > + .layout = > device->meta_state.resolve.p_layout, > > .renderPass = > device->meta_state.resolve.pass, > > .subpass = 0, > > }, > @@ -222,6 +238,8 @@ radv_device_finish_meta_resolve_state(struct radv_device > *device) > > radv_DestroyRenderPass(radv_device_to_handle(device), > state->resolve.pass, &state->alloc); > + radv_DestroyPipelineLayout(radv_device_to_handle(device), > + state->resolve.p_layout, &state->alloc); > radv_DestroyPipeline(radv_device_to_handle(device), > state->resolve.pipeline, &state->alloc); > } > diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h > index 9ef1f78932..244ab8967b 100644 > --- a/src/amd/vulkan/radv_private.h > +++ b/src/amd/vulkan/radv_private.h > @@ -434,6 +434,7 @@ struct radv_meta_state { > } cleari; > > struct { > + VkPipelineLayout p_layout; > VkPipeline pipeline; > VkRenderPass pass; > } resolve; > @@ -459,12 +460,14 @@ struct radv_meta_state { > } resolve_fragment; > > struct { > + VkPipelineLayout p_layout; > VkPipeline decompress_pipeline; > VkPipeline > resummarize_pipeline; > VkRenderPass pass; > } depth_decomp[1 + MAX_SAMPLES_LOG2]; > > struct { > + VkPipelineLayout p_layout; > VkPipeline > cmask_eliminate_pipeline; > VkPipeline > fmask_decompress_pipeline; > VkRenderPass pass; > -- > 2.15.1 > > _______________________________________________ > 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