summaryrefslogtreecommitdiffstats
path: root/libpixelflinger
Commit message (Collapse)AuthorAgeFilesLines
* pixelflinger: Provide more scanline shortcut functions.David 'Digit' Turner2011-04-161-40/+842
| | | | | | | | | | | | | | | | | | | This patch adds a dozen more "shortcut" scanline-processing functions to pixel-flingers. All of them avoid using the JIT for the corresponding operation (on ARM), or using the generic and _extremely_ slow 'scanline' function (on x86, where there is no JIT). The shortcuts were selected by running the system under emulation (build full_x86-eng, then launch emulator-x86), and correspond to operations that are in use when using the system's typical UI features. This makes it much more responsive and amenable to testing most applications, at least those that don't use OpenGL ES heavily. Note that HW OpenGLES emulation is under completion and should solve this problem entirely, though is not there yet. Change-Id: I9c73ba21ad158d6cc5532fabe7ed2419e00ecb3f
* am 4906db21: Merge "codeflinger: Correct misleading comment of STM instruction"Jean-Baptiste Queru2010-11-231-1/+1
|\ | | | | | | | | * commit '4906db21e041327042b87122b233e1f150618334': codeflinger: Correct misleading comment of STM instruction
| * Merge "codeflinger: Correct misleading comment of STM instruction"Jean-Baptiste Queru2010-11-231-1/+1
| |\
| | * codeflinger: Correct misleading comment of STM instructionKan-Ru Chen2010-08-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | According to the ARM Architecture Reference Manual, the comment on STM instruction should be in reverse order. Change-Id: I4af852a0478798ff7b02ab9c29c68e320ff78696 Signed-off-by: Kan-Ru Chen <kanru@0xlab.org>
* | | am 8e0e372a: Set PROT_EXEC on the whole pixelflinger code cache.Jean-Baptiste Queru2010-10-151-1/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Merge commit '8e0e372a388434a0553810e2b958e59a26a6bd96' into gingerbread-plus-aosp * commit '8e0e372a388434a0553810e2b958e59a26a6bd96': Set PROT_EXEC on the whole pixelflinger code cache.
| * | | Set PROT_EXEC on the whole pixelflinger code cache.Jean-Baptiste Queru2010-10-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The pointer difference between word pointers is a number of words, and it needs to be multiplied by the size of a word to get a proper byte size. Without this, we tend to see crashes when the code crosses a page boundary. Bug: 3026204 Bug: 3097482 Change-Id: I37776d26d5afcdb1da71680de02fbb95e6548371
* | | | Manual mergeJean-Baptiste Queru2010-08-252-32/+31
|\ \ \ \ | | |/ / | |/| | | | | | Change-Id: I849703a709fe4bf9ea7181268221d9b648b2e73d
| * | | Copyright message changedDave Butcher2010-08-192-32/+31
| | |/ | |/| | | | | | | Change requested by Android Open Source Project
* | | am 5dfd90e5: Merge "pixelflinger: Fix function naming typo: gglBitBlti"Jean-Baptiste Queru2010-08-171-1/+1
|\ \ \ | |/ / | | | | | | | | | | | | | | | Merge commit '5dfd90e5c79774d9981d25ab4defbd1e1f652c34' into gingerbread-plus-aosp * commit '5dfd90e5c79774d9981d25ab4defbd1e1f652c34': pixelflinger: Fix function naming typo: gglBitBlti
| * | Merge "pixelflinger: Fix function naming typo: gglBitBlti"Jean-Baptiste Queru2010-08-161-1/+1
| |\ \
| | * | pixelflinger: Fix function naming typo: gglBitBltiJim Huang2010-08-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From the functionality, the function gglBitBlti() implemented bit-block (image) transfer operation in which several bitmaps are combined into one using a raster operator. Renaming to gglBitBlit() should be explicit. Change-Id: I23886623b5421131cf7c7bfb8ec67c3809566c93
* | | | am 4ea1a52b: Merge "libpixelflinger: ARMv6 specific objects are not used. ↵Jean-Baptiste Queru2010-08-171-18/+0
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove." Merge commit '4ea1a52b1bbbd6e78c5909c75d773416108f5b84' into gingerbread-plus-aosp * commit '4ea1a52b1bbbd6e78c5909c75d773416108f5b84': libpixelflinger: ARMv6 specific objects are not used. Remove.
| * | | Merge "libpixelflinger: ARMv6 specific objects are not used. Remove."Jean-Baptiste Queru2010-08-161-18/+0
| |\ \ \
| | * | | libpixelflinger: ARMv6 specific objects are not used. Remove.Jim Huang2010-08-101-18/+0
| | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch attempts to remove the generation of libpixelflinger_armv6, which contains the ARMv6 specific object - rotate90CW_4x4_16v6.o. But, libpixelflinger_armv6 is not actually used by other projects. Change-Id: I0e26fa2cf8b4dacfd208dd4279539c3e5b07580e
* | | | am 6090dacd: libpixelflinger: Move codeflinger test function to ↵Jim Huang2010-08-173-26/+51
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | test-opengl-codegen Merge commit '6090dacd1894429baaf13f7b30b2f6e9e2c1617f' into gingerbread-plus-aosp * commit '6090dacd1894429baaf13f7b30b2f6e9e2c1617f': libpixelflinger: Move codeflinger test function to test-opengl-codegen
| * | | libpixelflinger: Move codeflinger test function to test-opengl-codegenJim Huang2010-08-103-26/+51
| |/ / | | | | | | | | | | | | | | | | | | There is no need to include codeflinger test function in libpixelflinger. Instead, it should exist in test-opengl-codegen. Change-Id: Ic5b0bd1f754b2ac678d4e16565568c70ceb8d325
* | | merge from froyo-plus-aospThe Android Open Source Project2010-06-217-1/+49
|\ \ \ | |/ / | | / | |/ |/| Change-Id: Ie231effb4d9dfd63aa98ec08b269c31ce32aa1c0
| * merge from open-source masterThe Android Open Source Project2010-06-157-1/+49
| |\ | | | | | | | | | Change-Id: I1ec0e1e702687697eccd3bf6c4f115cac85e382c
| | * Fix build - cpu-features is ARM-specificJean-Baptiste Queru2010-06-151-0/+2
| | | | | | | | | | | | Change-Id: I66521f279545a249e3dcb645914f7b66f23cef21
| | * Adds support for UBFX to JIT and DisassemblerMartyn Capewell2010-05-287-1/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces UBFX instruction generation abilities to the Pixelflinger JIT, and also modifies the component extraction function to generate the instruction. The extract function contains defines to prevent generation of UBFX on pre-v7 cores. The JIT itself retains the ability to produce the instruction even on v5/6. This patch only generates UBFX when MOV, AND or BIC can't be used. Based on the TRM, this appears to be faster on A9 than using UBFX in all cases. On startup, Pixelflinger JITs three chunks of code. UBFX improves these as follows: 00000077:03515104_00000000_00000000 (Blends a single colour into an RGB565 buffer.) Before: 27 inst/pixel, After: 24 inst/pixel, Improvement: 12.5% 00000077:03545404_00000A01_00000000 (Blends RGBA8888 texture into an RGB565 buffer using alpha.) Before: 30 inst/pixel, After: 27 inst/pixel, Improvement: 11.1% 00000077:03545404_00000A04_00000000 (Blends RGB565 texture into an RGB565 buffer using alpha.) Before: 29 inst/pixel, After: 27 inst/pixel, Improvement: 7.4%
* | | Allow pixelflinger to work when NX (No Execute) is enabled.Nick Kralevich2010-05-072-7/+33
|/ / | | | | | | | | | | | | | | | | | | | | | | | | Instead of allocating memory from the (non executable) heap, allocate memory using mspace and ensure that we use mprotect to mark it as PROT_EXEC. This allows pixelflinger to continue to work even when NX protections are enabled. Testing: Using the ApiDemos market app, verify that Apidemos -> Graphics -> OpenGL ES -> GLSurfaceView works when "adb shell setprop debug.egl.hw 0" is set. Change-Id: Ib569cd2543c6fa25688ee76325a712bc2347450b
* | merge from open-source masterThe Android Open Source Project2010-05-051-1/+1
|\ \ | |/ | | | | Change-Id: Ic4cfffc3c8d465224b062cef7bcfe5827441057c
| * cpu-features.h is only available for ARMBruce Beare2010-05-041-1/+1
| | | | | | | | Change-Id: I1e8001a1875bfd9cebfe18dfd757556b55c8213c
* | merge from open-source masterThe Android Open Source Project2010-05-0311-2/+415
|\ \ | |/ | | | | Change-Id: Ibc1c58aa757910f2b00acf6883127dd027f01d73
| * fix sim buildJean-Baptiste Queru2010-05-031-0/+2
| | | | | | | | Change-Id: Ide300eafbcbbc6dfae25fe86188302c6676c4a3b
| * Fix LDM addressing mode disassemblyMartyn Capewell2010-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Pixelflinger disassembler does not handle LDM addressing modes correctly, assuming that the P and U bits in the instruction mean the same in both LDM and STM. This results in the disassembler producing sequences like: stmfd r13!, {r4-r11, r14} ... ... ... ldmea r13!, {r4-r11, r14} This small patch fixes it by EORing the P and U bits with the Load/Store bit. Change-Id: Ic7a1556642c4e29415fc3697019f1239b6c26fc2
| * Merge "Adds UXTB16 support to Pixelflinger"Jean-Baptiste Queru2010-04-297-1/+128
| |\
| | * Adds UXTB16 support to PixelflingerMartyn Capewell2009-12-077-1/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add support for UXTB16 to the disassembler * Add encoding of the UXTB16 instruction to the Pixelflinger JIT. Introducing the UXTB16 instruction allows removal of some masking code, and is beneficial from a pipeline point of view - lots of UXTB16 followed by MUL sequences. Also, further rescheduling and use of SMULWB brings extra performance improvements. * Use UXTB16 in bilinear filtered texturing Uses UXTB16 to extract channels for SIMD operations, rather than creating and ANDing with masks. Saves a register and is faster on A8, as UXTB16 result can feed into first stage of multiply, unlike AND. Also, used SMULWB rather than SMULBB, which allows removal of MOVs used to rescale results. Code has been scheduled for A8 pipeline, specifically aiming to allow multiplies to issue in pipeline 0, for efficient dual issue operation. Testing on SpriteMethodTest (http://code.google.com/p/apps-for-android/) gives 8% improvement (12.7 vs. 13.7 fps.) SMULBB to SMULWB trick could be used in <v6 code path, but this hasn't been implemented.
| * | NEON shortcut for flat colour blending into 16-bitMartyn Capewell2009-12-074-0/+284
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a shortcut for the needs descriptor 00000077:03515104_00000000_00000000. It requires blending a single 32-bit colour value into a 16-bit framebuffer. It's used when fading out the screen, eg. when a modal requester pops-up. The PF JIT produces code for this using 24 instructions/pixel. The NEON implementation requires 2.1 instructions/pixel. Performance hasn't been benchmarked, but the improvement is quite visible. This code has only been tested by inspection of the fading effect described above, when press+holding a finger on the home screen to pop up the Shortcuts/Widgets/Folders/Wallpaper requester. Along with the NEON version, a fallback v5TE implementation is also provided. This ARM version of col32cb16blend is not fully optimised, but is a reasonable implementation, and better than the version produced by the JIT. It is here as a fallback, if NEON is not available.
| * eclair snapshotJean-Baptiste Queru2009-11-123-28/+51
| |
* | fix [2448319] out of bounds array index in fogMathias Agopian2010-02-161-0/+1
| |
* | remove unused YUV constantsMathias Agopian2010-02-161-6/+15
| |
* | fix part of [2017702] OpenGL bugs with alpha values of 1.0 in the source ↵Mathias Agopian2009-08-181-17/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | during blending into 8888 buffers when ONE / ONE_MINUS_SRC_ALPHA blending mode was used, the code wasn't saturating the color component. the reason was that this mode is used for premltiplied alpha blending, however, if used with a non premultiplied source, the color component would wrap. unfortunately, this costs 6 extra cycles per pixels, however... "correctness" prevails. this should not impact the UI since it's using h/w acceleration most of the time it also doesn't impact games which should be using h/w GL. This change will slow the emulator down a bit.
* | we actually have to saturate when doing premultilied blending with openglMathias Agopian2009-08-071-11/+1
| |
* | am 8b48cf61: Merge change 2897 into donutAndroid (Google) Code Review2009-06-025-14/+349
|\ \ | |/ | | | | | | | | | | Merge commit '8b48cf61704bbd1cd6e672fe73d8491f8984b484' * commit '8b48cf61704bbd1cd6e672fe73d8491f8984b484': fix 1650170 pixelflinger depends on KeyedVector.h, etc
| * fix 1650170 pixelflinger depends on KeyedVector.h, etcMathias Agopian2009-06-015-14/+349
| |
* | Merge commit 'remotes/korg/cupcake' into mergeJean-Baptiste Queru2009-03-183-16/+12
|\ \ | |/ | | | | | | | | Conflicts: init/devices.c libpixelflinger/Android.mk
| * auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-0347-0/+14322
| |
| * auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-0347-14322/+0
| |
| * auto import from //branches/cupcake/...@132569The Android Open Source Project2009-02-201-2/+2
| |
| * auto import from //branches/cupcake/...@132276The Android Open Source Project2009-02-191-6/+8
| |
| * auto import from //branches/cupcake/...@130745The Android Open Source Project2009-02-101-6/+6
| |
* | auto import from //branches/cupcake/...@126645android-build SharedAccount2009-01-152-2/+4
|\ \ | |/
| * auto import from //branches/cupcake/...@126645The Android Open Source Project2009-01-152-2/+2
| |
* | fix TINY ANDROID buildBrian Swetland2008-12-231-6/+12
|/ | | | | | A better fix would be to banish this qemu tracing stuff from libhardware and also banish it from non-emulator builds, but this at least gets the minimal build building again.
* Code drop from //branches/cupcake/...@124589The Android Open Source Project2008-12-1711-30/+148
|
* Initial ContributionThe Android Open Source Project2008-10-2144-0/+14202