| Index: src/gpu/vk/GrVkGpu.cpp
|
| diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp
|
| index 82e7394330459fa6ccd78c4db6cac7ad63503682..6ea09292905b8973dfa1013ac356a432b9ab1c05 100644
|
| --- a/src/gpu/vk/GrVkGpu.cpp
|
| +++ b/src/gpu/vk/GrVkGpu.cpp
|
| @@ -1785,31 +1785,41 @@ bool GrVkGpu::onReadPixels(GrSurface* surface,
|
| void adjust_bounds_to_granularity(SkIRect* dstBounds, const SkIRect& srcBounds,
|
| const VkExtent2D& granularity, int maxWidth, int maxHeight) {
|
| // Adjust Width
|
| - // Start with the right side of rect so we know if we end up going pass the maxWidth.
|
| - int rightAdj = srcBounds.fRight % granularity.width;
|
| - if (rightAdj != 0) {
|
| - rightAdj = granularity.width - rightAdj;
|
| - }
|
| - dstBounds->fRight = srcBounds.fRight + rightAdj;
|
| - if (dstBounds->fRight > maxWidth) {
|
| - dstBounds->fRight = maxWidth;
|
| - dstBounds->fLeft = 0;
|
| + if ((0 != granularity.width && 1 != granularity.width)) {
|
| + // Start with the right side of rect so we know if we end up going pass the maxWidth.
|
| + int rightAdj = srcBounds.fRight % granularity.width;
|
| + if (rightAdj != 0) {
|
| + rightAdj = granularity.width - rightAdj;
|
| + }
|
| + dstBounds->fRight = srcBounds.fRight + rightAdj;
|
| + if (dstBounds->fRight > maxWidth) {
|
| + dstBounds->fRight = maxWidth;
|
| + dstBounds->fLeft = 0;
|
| + } else {
|
| + dstBounds->fLeft = srcBounds.fLeft - srcBounds.fLeft % granularity.width;
|
| + }
|
| } else {
|
| - dstBounds->fLeft = srcBounds.fLeft - srcBounds.fLeft % granularity.width;
|
| + dstBounds->fLeft = srcBounds.fLeft;
|
| + dstBounds->fRight = srcBounds.fRight;
|
| }
|
|
|
| // Adjust height
|
| - // Start with the bottom side of rect so we know if we end up going pass the maxHeight.
|
| - int bottomAdj = srcBounds.fBottom % granularity.height;
|
| - if (bottomAdj != 0) {
|
| - bottomAdj = granularity.height - bottomAdj;
|
| - }
|
| - dstBounds->fBottom = srcBounds.fBottom + bottomAdj;
|
| - if (dstBounds->fBottom > maxHeight) {
|
| - dstBounds->fBottom = maxHeight;
|
| - dstBounds->fTop = 0;
|
| + if ((0 != granularity.height && 1 != granularity.height)) {
|
| + // Start with the bottom side of rect so we know if we end up going pass the maxHeight.
|
| + int bottomAdj = srcBounds.fBottom % granularity.height;
|
| + if (bottomAdj != 0) {
|
| + bottomAdj = granularity.height - bottomAdj;
|
| + }
|
| + dstBounds->fBottom = srcBounds.fBottom + bottomAdj;
|
| + if (dstBounds->fBottom > maxHeight) {
|
| + dstBounds->fBottom = maxHeight;
|
| + dstBounds->fTop = 0;
|
| + } else {
|
| + dstBounds->fTop = srcBounds.fTop - srcBounds.fTop % granularity.height;
|
| + }
|
| } else {
|
| - dstBounds->fTop = srcBounds.fTop - srcBounds.fTop % granularity.height;
|
| + dstBounds->fTop = srcBounds.fTop;
|
| + dstBounds->fBottom = srcBounds.fBottom;
|
| }
|
| }
|
|
|
|
|