On 15/12/17 16:46, Jason Ekstrand wrote: > Ugh... The problem here is that we may not know the framebuffer in > CmdCearAttachments if it's in a secondary command buffer. I'm not > actually sure what to do in that case. I guess we could store the > number of later somewhere and teach blorp how to do an indirect draw. > Really, I think it makes more sense to just disallow VK_REMAINING_LAYERS > in that function. >
Makes sense. How do you want to disallow it? assert(), print an error and return...? because this function doesn't return a VkResult. Sam > --Jason > > > On December 15, 2017 03:36:07 Samuel Iglesias Gonsálvez > <sigles...@igalia.com> wrote: > >> Blorp was not supporting the use of the constant >> VK_REMAINING_ARRAY_LAYERS >> (whose value is ~0) in the VkClearRect structure. If we receive it, we >> need >> to calculate the layer count as the image layers count minus the base >> array >> layer. >> >> Signed-off-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com> >> --- >> src/intel/vulkan/anv_blorp.c | 14 ++++++++++++-- >> 1 file changed, 12 insertions(+), 2 deletions(-) >> >> diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c >> index e244468e03..4ab4458246 100644 >> --- a/src/intel/vulkan/anv_blorp.c >> +++ b/src/intel/vulkan/anv_blorp.c >> @@ -989,10 +989,15 @@ clear_color_attachment(struct anv_cmd_buffer >> *cmd_buffer, >> for (uint32_t r = 0; r < rectCount; ++r) { >> const VkOffset2D offset = pRects[r].rect.offset; >> const VkExtent2D extent = pRects[r].rect.extent; >> + unsigned layer_count = >> + anv_get_layerCount( >> + cmd_buffer->state.framebuffer->attachments[att_idx]->image, >> + &pRects[r]); >> + >> blorp_clear_attachments(batch, binding_table, >> ISL_FORMAT_UNSUPPORTED, pass_att->samples, >> pRects[r].baseArrayLayer, >> - pRects[r].layerCount, >> + layer_count, >> offset.x, offset.y, >> offset.x + extent.width, offset.y + >> extent.height, >> true, clear_color, false, 0.0f, 0, 0); >> @@ -1059,11 +1064,16 @@ clear_depth_stencil_attachment(struct >> anv_cmd_buffer *cmd_buffer, >> for (uint32_t r = 0; r < rectCount; ++r) { >> const VkOffset2D offset = pRects[r].rect.offset; >> const VkExtent2D extent = pRects[r].rect.extent; >> + unsigned layer_count = >> + anv_get_layerCount( >> + cmd_buffer->state.framebuffer->attachments[att_idx]->image, >> + &pRects[r]); >> + >> VkClearDepthStencilValue value = >> attachment->clearValue.depthStencil; >> blorp_clear_attachments(batch, binding_table, >> depth_format, pass_att->samples, >> pRects[r].baseArrayLayer, >> - pRects[r].layerCount, >> + layer_count, >> offset.x, offset.y, >> offset.x + extent.width, offset.y + >> extent.height, >> false, color_value, >> -- >> 2.14.1 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev