X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Ftexture_backend.cpp;h=5b73749884892aad06f69589648e4bad16b663aa;hb=69965e5d8e01533dae11bb38c1641adfd2814ae5;hp=217299bf26d2ffe878572b03b2a57d752f757bf5;hpb=33253bf6d6a330181fda83ba23a6ac0a756d9a8d;p=libs%2Fgl.git diff --git a/source/backends/vulkan/texture_backend.cpp b/source/backends/vulkan/texture_backend.cpp index 217299bf..5b737498 100644 --- a/source/backends/vulkan/texture_backend.cpp +++ b/source/backends/vulkan/texture_backend.cpp @@ -134,43 +134,6 @@ void VulkanTexture::create_mip_views() const } } -void VulkanTexture::stage_pixels(void *staging, const void *data, size_t count) -{ - const Texture &self = *static_cast(this); - - if(self.swizzle==RGBA_TO_RGB) - { - const uint32_t *src = static_cast(data); - uint32_t *dst = static_cast(staging); - size_t i = 0; - for(; i+3>24)|(src[1]<<8)|0xFF000000; - dst[2] = (src[1]>>16)|(src[2]<<16)|0xFF000000; - dst[3] = (src[2]>>8)|0xFF000000; - src += 3; - dst += 4; - } - - if(i(src); - for(; i(data); - size_t data_size = count*get_pixel_size(self.storage_fmt); - copy(src, src+data_size, static_cast(staging)); - } -} - void VulkanTexture::generate_mipmap() { unsigned n_levels = static_cast(this)->n_levels; @@ -183,11 +146,11 @@ void VulkanTexture::generate_mipmap() change_layout(i, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, false); change_layout(i+1, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, true); }, - [this, i](VkCommandBuffer cmd_buf, VkBuffer, size_t){ - const VulkanFunctions &vk = device.get_functions(); + [this, i](const VulkanCommandRecorder &vkCmd, VkBuffer, size_t){ + const Texture &self = *static_cast(this); VkImageBlit region = { }; - region.srcSubresource.aspectMask = get_vulkan_aspect(get_components(static_cast(this)->storage_fmt)); + region.srcSubresource.aspectMask = get_vulkan_aspect(get_components(self.storage_fmt)); region.srcSubresource.mipLevel = i; region.srcSubresource.baseArrayLayer = 0; region.srcSubresource.layerCount = 1; @@ -196,7 +159,7 @@ void VulkanTexture::generate_mipmap() fill_mipmap_blit(i, ®ion); - vk.CmdBlitImage(cmd_buf, handle, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, handle, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + vkCmd.BlitImage(handle, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, handle, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, ®ion, VK_FILTER_LINEAR); }); }