Commit c51c85dd3aa4a920f363e315ef4512f1d97401b3
- Diff rendering mode:
- inline
- side by side
src/gui/painting/painting.pri
(2 / 0)
|   | |||
| 380 | 380 | QMAKE_CXXFLAGS.ARMCC *= -O3 | |
| 381 | 381 | } | |
| 382 | 382 | ||
| 383 | SOURCES += painting/qdrawhelper_arm_gnu.cpp | ||
| 384 | |||
| 383 | 385 | contains(QT_CONFIG, zlib) { | |
| 384 | 386 | INCLUDEPATH += ../3rdparty/zlib | |
| 385 | 387 | } else:!contains(QT_CONFIG, no-zlib) { |
src/gui/painting/qdrawhelper.cpp
(9 / 3)
|   | |||
| 8118 | 8118 | ||
| 8119 | 8119 | #endif // QT_NO_DEBUG | |
| 8120 | 8120 | ||
| 8121 | #if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) | ||
| 8121 | #if defined(QT_ARCH_ARM) || defined(QT_ARCH_ARMV6) | ||
| 8122 | |||
| 8123 | # if defined (Q_CC_RVCT) || defined(Q_CC_GNU) | ||
| 8124 | qt_memfill32 = qt_memfill32_arm; | ||
| 8125 | # endif | ||
| 8126 | |||
| 8127 | # if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) | ||
| 8122 | 8128 | functionForModeAsm = qt_functionForMode_ARMv6; | |
| 8123 | 8129 | functionForModeSolidAsm = qt_functionForModeSolid_ARMv6; | |
| 8124 | 8130 | ||
| 8125 | qt_memfill32 = qt_memfill32_armv6; | ||
| 8126 | 8131 | ||
| 8127 | 8132 | qDrawHelper[QImage::Format_ARGB32_Premultiplied].blendColor = qt_blend_color_argb_armv6; | |
| 8128 | 8133 | ||
| … | … | ||
| 8135 | 8135 | qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_armv6; | |
| 8136 | 8136 | qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_armv6; | |
| 8137 | 8137 | qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_armv6; | |
| 8138 | #endif // Q_CC_RVCT && QT_HAVE_ARMV6 | ||
| 8138 | # endif // Q_CC_RVCT && QT_HAVE_ARMV6 | ||
| 8139 | #endif // QT_ARCH_ARM | ||
| 8139 | 8140 | ||
| 8140 | 8141 | if (functionForModeSolidAsm) { | |
| 8141 | 8142 | const int destinationMode = QPainter::CompositionMode_Destination; |
src/gui/painting/qdrawhelper_arm_gnu.cpp
(90 / 0)
|   | |||
| 1 | /**************************************************************************** | ||
| 2 | ** | ||
| 3 | ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). | ||
| 4 | ** All rights reserved. | ||
| 5 | ** Contact: Nokia Corporation (qt-info@nokia.com) | ||
| 6 | ** | ||
| 7 | ** This file is part of the QtGui module of the Qt Toolkit. | ||
| 8 | ** | ||
| 9 | ** $QT_BEGIN_LICENSE:LGPL$ | ||
| 10 | ** No Commercial Usage | ||
| 11 | ** This file contains pre-release code and may not be distributed. | ||
| 12 | ** You may use this file in accordance with the terms and conditions | ||
| 13 | ** contained in the Technology Preview License Agreement accompanying | ||
| 14 | ** this package. | ||
| 15 | ** | ||
| 16 | ** GNU Lesser General Public License Usage | ||
| 17 | ** Alternatively, this file may be used under the terms of the GNU Lesser | ||
| 18 | ** General Public License version 2.1 as published by the Free Software | ||
| 19 | ** Foundation and appearing in the file LICENSE.LGPL included in the | ||
| 20 | ** packaging of this file. Please review the following information to | ||
| 21 | ** ensure the GNU Lesser General Public License version 2.1 requirements | ||
| 22 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||
| 23 | ** | ||
| 24 | ** In addition, as a special exception, Nokia gives you certain additional | ||
| 25 | ** rights. These rights are described in the Nokia Qt LGPL Exception | ||
| 26 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | ||
| 27 | ** | ||
| 28 | ** If you have questions regarding the use of this file, please contact | ||
| 29 | ** Nokia at qt-info@nokia.com. | ||
| 30 | ** | ||
| 31 | ** | ||
| 32 | ** | ||
| 33 | ** | ||
| 34 | ** | ||
| 35 | ** | ||
| 36 | ** | ||
| 37 | ** | ||
| 38 | ** $QT_END_LICENSE$ | ||
| 39 | ** | ||
| 40 | ****************************************************************************/ | ||
| 41 | |||
| 42 | #include "qdrawhelper_arm_p.h" | ||
| 43 | |||
| 44 | #include <stdio.h> | ||
| 45 | |||
| 46 | #if defined(Q_CC_GNU) && (defined(QT_ARCH_ARM) || defined(QT_ARCH_ARMV6)) | ||
| 47 | |||
| 48 | void qt_memfill32_arm(quint32 *dest, quint32 value, int count) | ||
| 49 | { | ||
| 50 | asm __volatile__( | ||
| 51 | "mov r3, %[value]\n\t" | ||
| 52 | "mov r4, %[value]\n\t" | ||
| 53 | "mov r5, %[value]\n\t" | ||
| 54 | "mov r6, %[value]\n\t" | ||
| 55 | "mov r7, %[value]\n\t" | ||
| 56 | "mov r8, %[value]\n\t" | ||
| 57 | "mov r9, %[value]\n" | ||
| 58 | |||
| 59 | "mfill_loop:\n\t" | ||
| 60 | "subs %[count], %[count], #32\n\t" | ||
| 61 | "stmgeia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 62 | "stmgeia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 63 | "stmgeia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 64 | "stmgeia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 65 | "bgt mfill_loop\n" | ||
| 66 | "mfill_remaining:\n\t" | ||
| 67 | "@ Fill up to 31 remaining pixels\n\t" | ||
| 68 | "@ Fill 16 pixels\n\t" | ||
| 69 | "tst %[count], #16\n\t" | ||
| 70 | "stmneia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 71 | "stmneia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 72 | "@ Fill 8 pixels\n\t" | ||
| 73 | "tst %[count], #8\n\t" | ||
| 74 | "stmneia %[dest]!, {%[value], r3, r4, r5, r6, r7, r8, r9}\n\t" | ||
| 75 | "@ Fill 4 pixels\n\t" | ||
| 76 | "tst %[count], #4\n\t" | ||
| 77 | "stmneia %[dest]!, {%[value], r3, r4, r5}\n\t" | ||
| 78 | "@ Fill 2 pixels\n\t" | ||
| 79 | "tst %[count], #2\n\t" | ||
| 80 | "stmneia %[dest]!, {%[value], r3}\n\t" | ||
| 81 | "@ Fill last one\n\t" | ||
| 82 | "tst %[count], #1\n\t" | ||
| 83 | "strne %[value], [%[dest]]\n\t" | ||
| 84 | : "=r" (dest), "=r" (count) | ||
| 85 | : [dest] "r" (dest), [value] "r" (value), [count] "r" (count) | ||
| 86 | : "memory", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r9", "cc" | ||
| 87 | ); | ||
| 88 | } | ||
| 89 | |||
| 90 | #endif |
src/gui/painting/qdrawhelper_arm_p.h
(4 / 1)
|   | |||
| 97 | 97 | #define QT_ARM_HAS_PLD | |
| 98 | 98 | #endif | |
| 99 | 99 | ||
| 100 | #if defined(Q_CC_RVCT) || defined(Q_CC_GNU) | ||
| 101 | extern "C" void qt_memfill32_arm(quint32 *dest, quint32 value, int count); | ||
| 102 | #endif | ||
| 103 | |||
| 100 | 104 | #if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6) | |
| 101 | 105 | ||
| 102 | 106 | extern "C" void qt_blend_rgb32_on_rgb32_armv6(uchar *destPixels, int dbpl, | |
| … | … | ||
| 113 | 113 | int w, int h, | |
| 114 | 114 | int const_alpha); | |
| 115 | 115 | ||
| 116 | extern "C" void qt_memfill32_armv6(quint32 *dest, quint32 value, int count); | ||
| 117 | 116 | ||
| 118 | 117 | extern "C" void comp_func_Source_armv6(uint *dest, const uint *src, int length, uint const_alpha); | |
| 119 | 118 | extern "C" void comp_func_SourceOver_armv6(uint *dest, const uint *src, int length, uint const_alpha); |
src/gui/painting/qdrawhelper_armv6_rvct.s
(2 / 2)
|   | |||
| 56 | 56 | INCLUDE qdrawhelper_armv6_rvct.inc | |
| 57 | 57 | ||
| 58 | 58 | ;----------------------------------------------------------------------------- | |
| 59 | ; qt_memfill32_armv6 | ||
| 59 | ; qt_memfill32_arm | ||
| 60 | 60 | ; | |
| 61 | 61 | ; @brief Not yet in use! | |
| 62 | 62 | ; | |
| … | … | ||
| 65 | 65 | ; @param count Count (r2) | |
| 66 | 66 | ; | |
| 67 | 67 | ;--------------------------------------------------------------------------- | |
| 68 | qt_memfill32_armv6 Function | ||
| 68 | qt_memfill32_arm Function | ||
| 69 | 69 | stmfd sp!, {r4-r12, r14} | |
| 70 | 70 | ||
| 71 | 71 | mov r3, r1 |
Comments
Add a new comment:
Login or create an account to post a comment
Add your comment
Please log in to comment

