OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/graphics/gpu/WebGLImageConversion.h" | 5 #include "platform/graphics/gpu/WebGLImageConversion.h" |
6 | 6 |
7 #include "platform/CheckedInt.h" | 7 #include "platform/CheckedInt.h" |
8 #include "platform/graphics/ImageObserver.h" | 8 #include "platform/graphics/ImageObserver.h" |
9 #include "platform/graphics/cpu/arm/WebGLImageConversionNEON.h" | 9 #include "platform/graphics/cpu/arm/WebGLImageConversionNEON.h" |
| 10 #include "platform/graphics/cpu/mips/WebGLImageConversionMSA.h" |
10 #include "platform/graphics/cpu/x86/WebGLImageConversionSSE.h" | 11 #include "platform/graphics/cpu/x86/WebGLImageConversionSSE.h" |
11 #include "platform/graphics/skia/SkiaUtils.h" | 12 #include "platform/graphics/skia/SkiaUtils.h" |
12 #include "platform/image-decoders/ImageDecoder.h" | 13 #include "platform/image-decoders/ImageDecoder.h" |
13 #include "third_party/skia/include/core/SkImage.h" | 14 #include "third_party/skia/include/core/SkImage.h" |
14 #include "wtf/PtrUtil.h" | 15 #include "wtf/PtrUtil.h" |
15 #include <memory> | 16 #include <memory> |
16 | 17 |
17 namespace blink { | 18 namespace blink { |
18 | 19 |
19 namespace { | 20 namespace { |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 } | 442 } |
442 | 443 |
443 template<> void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8
_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow) | 444 template<> void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8
_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow) |
444 { | 445 { |
445 #if CPU(X86) || CPU(X86_64) | 446 #if CPU(X86) || CPU(X86_64) |
446 SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow)
; | 447 SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow)
; |
447 #endif | 448 #endif |
448 #if HAVE(ARM_NEON_INTRINSICS) | 449 #if HAVE(ARM_NEON_INTRINSICS) |
449 SIMD::unpackOneRowOfRGBA5551ToRGBA8(source, destination, pixelsPerRow); | 450 SIMD::unpackOneRowOfRGBA5551ToRGBA8(source, destination, pixelsPerRow); |
450 #endif | 451 #endif |
| 452 #if HAVE(MIPS_MSA_INTRINSICS) |
| 453 SIMD::unpackOneRowOfRGBA5551ToRGBA8MSA(source, destination, pixelsPerRow); |
| 454 #endif |
| 455 |
451 for (unsigned i = 0; i < pixelsPerRow; ++i) { | 456 for (unsigned i = 0; i < pixelsPerRow; ++i) { |
452 uint16_t packedValue = source[0]; | 457 uint16_t packedValue = source[0]; |
453 uint8_t r = packedValue >> 11; | 458 uint8_t r = packedValue >> 11; |
454 uint8_t g = (packedValue >> 6) & 0x1F; | 459 uint8_t g = (packedValue >> 6) & 0x1F; |
455 uint8_t b = (packedValue >> 1) & 0x1F; | 460 uint8_t b = (packedValue >> 1) & 0x1F; |
456 destination[0] = (r << 3) | (r & 0x7); | 461 destination[0] = (r << 3) | (r & 0x7); |
457 destination[1] = (g << 3) | (g & 0x7); | 462 destination[1] = (g << 3) | (g & 0x7); |
458 destination[2] = (b << 3) | (b & 0x7); | 463 destination[2] = (b << 3) | (b & 0x7); |
459 destination[3] = (packedValue & 0x1) ? 0xFF : 0x0; | 464 destination[3] = (packedValue & 0x1) ? 0xFF : 0x0; |
460 source += 1; | 465 source += 1; |
(...skipping 1941 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2402 } | 2407 } |
2403 | 2408 |
2404 FormatConverter converter(width, height, sourceData, destinationData, srcStr
ide, dstStride); | 2409 FormatConverter converter(width, height, sourceData, destinationData, srcStr
ide, dstStride); |
2405 converter.convert(sourceDataFormat, dstDataFormat, alphaOp); | 2410 converter.convert(sourceDataFormat, dstDataFormat, alphaOp); |
2406 if (!converter.Success()) | 2411 if (!converter.Success()) |
2407 return false; | 2412 return false; |
2408 return true; | 2413 return true; |
2409 } | 2414 } |
2410 | 2415 |
2411 } // namespace blink | 2416 } // namespace blink |
OLD | NEW |