Skip to content

Commit

Permalink
Fix ConvertImageBufferFormatWorker
Browse files Browse the repository at this point in the history
  • Loading branch information
st0rmbtw committed Jan 27, 2025
1 parent 278c442 commit 5a1d390
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions sources/Core/ImageFlags.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,10 @@ static void ConvertImageBufferFormatWorker(
VariantConstBuffer srcBuffer = srcImageView.data;
VariantBuffer dstBuffer = dstImageView.data;

const std::size_t y = begin / extent.width;
srcBuffer.int8 += y * srcRowPadding;
dstBuffer.int8 += y * dstRowPadding;

if (IsDepthOrStencilFormat(srcImageView.format))
{
/* Initialize default depth-stencil value (0, 0) */
Expand All @@ -534,7 +538,7 @@ static void ConvertImageBufferFormatWorker(
for_subrange(i, begin, end)
{
/* Apply source and destination stride when passing an edge */
if (i > 0 && i % extent.width == 0)
if (i > begin && i % extent.width == 0)
{
srcBuffer.int8 += srcRowPadding;
dstBuffer.int8 += dstRowPadding;
Expand All @@ -557,24 +561,20 @@ static void ConvertImageBufferFormatWorker(
SetVariantMinMax(srcImageView.dataType, colorValue.b, true);
SetVariantMinMax(srcImageView.dataType, colorValue.a, false);

for_subrange(k, begin, end)
for_subrange(i, begin, end)
{
const size_t rowStride = GetImageRowStride(srcImageView, extent);
const size_t y = k / extent.width;
const size_t i = k % extent.width;

/* Apply source and destination stride when passing an edge */
if (k > 0 && i == 0)
if (i > begin && i % extent.width == 0)
{
// srcBuffer.int8 += srcRowPadding;
srcBuffer.int8 += srcRowPadding;
dstBuffer.int8 += dstRowPadding;
}

/* Read RGBA variant from source buffer */
ReadRGBAFormattedVariant(srcImageView.format, srcImageView.dataType, srcBuffer.int8 + y * rowStride, i, colorValue);
ReadRGBAFormattedVariant(srcImageView.format, srcImageView.dataType, srcBuffer, i, colorValue);

/* Write RGBA variant to destination buffer */
WriteRGBAFormattedVariant(dstImageView.format, dstImageView.dataType, dstBuffer, k, colorValue);
WriteRGBAFormattedVariant(dstImageView.format, dstImageView.dataType, dstBuffer, i, colorValue);
}
}
}
Expand Down

0 comments on commit 5a1d390

Please sign in to comment.