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.
--Jason
On December 15, 2017 03:36:07 Samuel Iglesias Gonsálvez
<[email protected]> 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 <[email protected]>
---
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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev