diff options
author | Dave Airlie <[email protected]> | 2017-08-22 13:35:53 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-09-13 08:40:18 +1000 |
commit | 2f5b4490b59062f224e73f7a2d5cc0d8bd8eaa7b (patch) | |
tree | d27f29f8a0b2b17ed4f541671dd802251042dc8c /src/amd/vulkan/radv_meta_clear.c | |
parent | d496780fb2c7f2cf0e32b6a79dc528e5156dfcb3 (diff) |
radv: don't use iview for meta image width/height.
Work out the width/height from the level manually, as on GFX9
we won't minify the iview width/height.
This fixes:
dEQP-VK.api.image_clearing.core.clear_color_image* on gfx9
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Cc: "17.2" <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_meta_clear.c')
-rw-r--r-- | src/amd/vulkan/radv_meta_clear.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c index b3eb3893d89..08a6278a5c2 100644 --- a/src/amd/vulkan/radv_meta_clear.c +++ b/src/amd/vulkan/radv_meta_clear.c @@ -1202,6 +1202,9 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer, { VkDevice device_h = radv_device_to_handle(cmd_buffer->device); struct radv_image_view iview; + uint32_t width = radv_minify(image->info.width, range->baseMipLevel + level); + uint32_t height = radv_minify(image->info.height, range->baseMipLevel + level); + radv_image_view_init(&iview, cmd_buffer->device, &(VkImageViewCreateInfo) { .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, @@ -1225,9 +1228,9 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer, .pAttachments = (VkImageView[]) { radv_image_view_to_handle(&iview), }, - .width = iview.extent.width, - .height = iview.extent.height, - .layers = 1 + .width = width, + .height = height, + .layers = 1 }, &cmd_buffer->pool->alloc, &fb); @@ -1283,8 +1286,8 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer, .renderArea = { .offset = { 0, 0, }, .extent = { - .width = iview.extent.width, - .height = iview.extent.height, + .width = width, + .height = height, }, }, .renderPass = pass, @@ -1303,7 +1306,7 @@ radv_clear_image_layer(struct radv_cmd_buffer *cmd_buffer, VkClearRect clear_rect = { .rect = { .offset = { 0, 0 }, - .extent = { iview.extent.width, iview.extent.height }, + .extent = { width, height }, }, .baseArrayLayer = range->baseArrayLayer, .layerCount = 1, /* FINISHME: clear multi-layer framebuffer */ |