1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

[dxvk] Add slice alignment to copyImageToBuffer

This commit is contained in:
Philip Rebohle 2021-06-22 07:03:52 +02:00
parent 4840cdaf8c
commit ba4938e201
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
5 changed files with 9 additions and 5 deletions

View File

@ -4052,7 +4052,7 @@ namespace dxvk {
cPackedFormat = packedFormat cPackedFormat = packedFormat
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
if (cSubresources.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { if (cSubresources.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
ctx->copyImageToBuffer(cImageBuffer, 0, 0, ctx->copyImageToBuffer(cImageBuffer, 0, 0, 0,
cImage, cSubresources, VkOffset3D { 0, 0, 0 }, cImage, cSubresources, VkOffset3D { 0, 0, 0 },
cLevelExtent); cLevelExtent);
} else { } else {

View File

@ -866,7 +866,7 @@ namespace dxvk {
cLevelExtent = srcExtent, cLevelExtent = srcExtent,
cDstExtent = dstExtent cDstExtent = dstExtent
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
ctx->copyImageToBuffer(cBuffer, 0, 4, ctx->copyImageToBuffer(cBuffer, 0, 4, 0,
cImage, cSubresources, VkOffset3D { 0, 0, 0 }, cImage, cSubresources, VkOffset3D { 0, 0, 0 },
cLevelExtent); cLevelExtent);
}); });
@ -4166,7 +4166,7 @@ namespace dxvk {
cPackedFormat = packedFormat cPackedFormat = packedFormat
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
if (cSubresources.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) { if (cSubresources.aspectMask != (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) {
ctx->copyImageToBuffer(cImageBuffer, 0, 0, ctx->copyImageToBuffer(cImageBuffer, 0, 0, 0,
cImage, cSubresources, VkOffset3D { 0, 0, 0 }, cImage, cSubresources, VkOffset3D { 0, 0, 0 },
cLevelExtent); cLevelExtent);
} else { } else {

View File

@ -456,7 +456,7 @@ namespace dxvk {
cSubresources = srcSubresourceLayers, cSubresources = srcSubresourceLayers,
cLevelExtent = srcExtent cLevelExtent = srcExtent
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
ctx->copyImageToBuffer(cBuffer, 0, 0, ctx->copyImageToBuffer(cBuffer, 0, 0, 0,
cImage, cSubresources, VkOffset3D { 0, 0, 0 }, cImage, cSubresources, VkOffset3D { 0, 0, 0 },
cLevelExtent); cLevelExtent);
}); });

View File

@ -894,6 +894,7 @@ namespace dxvk {
const Rc<DxvkBuffer>& dstBuffer, const Rc<DxvkBuffer>& dstBuffer,
VkDeviceSize dstOffset, VkDeviceSize dstOffset,
VkDeviceSize rowAlignment, VkDeviceSize rowAlignment,
VkDeviceSize sliceAlignment,
const Rc<DxvkImage>& srcImage, const Rc<DxvkImage>& srcImage,
VkImageSubresourceLayers srcSubresource, VkImageSubresourceLayers srcSubresource,
VkOffset3D srcOffset, VkOffset3D srcOffset,
@ -928,7 +929,7 @@ namespace dxvk {
m_execAcquires.recordCommands(m_cmd); m_execAcquires.recordCommands(m_cmd);
this->copyImageBufferData<false>(DxvkCmdBuffer::ExecBuffer, srcImage, srcSubresource, this->copyImageBufferData<false>(DxvkCmdBuffer::ExecBuffer, srcImage, srcSubresource,
srcOffset, srcExtent, srcImageLayoutTransfer, dstSlice, rowAlignment, 0); srcOffset, srcExtent, srcImageLayoutTransfer, dstSlice, rowAlignment, sliceAlignment);
m_execBarriers.accessImage( m_execBarriers.accessImage(
srcImage, srcSubresourceRange, srcImage, srcSubresourceRange,

View File

@ -403,6 +403,8 @@ namespace dxvk {
* \param [in] dstBuffer Destination buffer * \param [in] dstBuffer Destination buffer
* \param [in] dstOffset Destination offset, in bytes * \param [in] dstOffset Destination offset, in bytes
* \param [in] dstExtent Destination data extent * \param [in] dstExtent Destination data extent
* \param [in] rowAlignment Row alignment, in bytes
* \param [in] sliceAlignment Slice alignment, in bytes
* \param [in] srcImage Source image * \param [in] srcImage Source image
* \param [in] srcSubresource Source subresource * \param [in] srcSubresource Source subresource
* \param [in] srcOffset Source area offset * \param [in] srcOffset Source area offset
@ -412,6 +414,7 @@ namespace dxvk {
const Rc<DxvkBuffer>& dstBuffer, const Rc<DxvkBuffer>& dstBuffer,
VkDeviceSize dstOffset, VkDeviceSize dstOffset,
VkDeviceSize rowAlignment, VkDeviceSize rowAlignment,
VkDeviceSize sliceAlignment,
const Rc<DxvkImage>& srcImage, const Rc<DxvkImage>& srcImage,
VkImageSubresourceLayers srcSubresource, VkImageSubresourceLayers srcSubresource,
VkOffset3D srcOffset, VkOffset3D srcOffset,