sw_engine raster: optimize the image raster
authorHermet Park <chuneon.park@samsung.com>
Wed, 17 Nov 2021 11:44:39 +0000 (20:44 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Fri, 19 Nov 2021 05:27:38 +0000 (14:27 +0900)
these solid images shouldn't apply the alpha blending...

src/lib/sw_engine/tvgSwRaster.cpp

index 6bca2588dc2e442011ec1c9174c57055c5da11d0..f118ff624ab740cd0a8423802d1a12b44aef83f6 100644 (file)
@@ -903,8 +903,7 @@ static bool _rasterTransformedSolidImage(SwSurface* surface, const SwImage* imag
             auto rX = static_cast<uint32_t>(roundf(x * itransform->e11 + ey1));
             auto rY = static_cast<uint32_t>(roundf(x * itransform->e21 + ey2));
             if (rX >= w || rY >= h) continue;
-            auto src = img[rX + (rY * image->stride)];
-            *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src));
+            *dst = img[rX + (rY * image->stride)];
         }
     }
     return true;
@@ -928,7 +927,7 @@ static bool _rasterDownScaledSolidImage(SwSurface* surface, const SwImage* image
             uint32_t src;
             if (rX < halfScale || rY < halfScale || rX >= w - halfScale || rY >= h - halfScale) src = img[rX + (rY * w)];
             else src = _interpDownScaler(img, w, h, rX, rY, halfScale);
-            *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src));
+            *dst = src;
         }
     }
     return true;
@@ -954,7 +953,7 @@ static bool _rasterUpScaledSolidImage(SwSurface* surface, const SwImage* image,
             uint32_t src;
             if (rX == w - 1 || rY == h - 1) src = img[rX + (rY * w)];
             else src = _interpUpScaler(img, w, h, fX, fY);
-            *dst = src + ALPHA_BLEND(*dst, surface->blender.ialpha(src));
+            *dst = src;
         }
     }
     return true;
@@ -1041,7 +1040,7 @@ static bool _rasterDirectSolidImage(SwSurface* surface, const SwImage* image, co
         auto dst = dbuffer;
         auto src = sbuffer;
         for (auto x = region.min.x; x < region.max.x; x++, dst++, src++) {
-            *dst = *src + ALPHA_BLEND(*dst, surface->blender.ialpha(*src));
+            *dst = *src;
         }
         dbuffer += surface->stride;
         sbuffer += image->stride;