Renderscript in Android 3.x

2,724 views

Published on

Introduction to RenderScript APIs and Tools at the Mobile Tech Conference 2011 #mtc11

Published in: Technology, Art & Photos
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,724
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
63
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Renderscript in Android 3.x

  1. 1. Dominik Helleberg / Inovex GmbHRenderScript in Android 3.xhttp://twitter.com/_cirrus_
  2. 2. Ziele / Agenda•  Konzepte / Vor- und Nachteile von RenderScript•  Entscheidung für den Einsatz von RS im nächsten Projekt•  Überblick RS -> APIs, Architektur, Tools•  RS Basics -> Datenstrukturen, Funktionen•  Berechnungen mit RS -> Beispiel / Performance•  OpenGL refresh•  Grafik mit RS -> Beispiel / Demo•  Grafik & Berechnungen kombinieren•  RS im Context von Canvas, NDK & co.•  Ausblick
  3. 3. RS -> The claim „RenderScript offers a high performance 3D graphics rendering and compute API at the native level“ Pros Cons •  Portabilität •  Complexity •  Performance •  Debugging / Tools •  Usability •  less Featureshttp://developer.android.com/guide/topics/renderscript/index.html
  4. 4. RS Intro / Overview•  Neue Sprache (basierend auf C99 mit Erweiterungen)•  Neue APIs (im Java-SDK und in RenderScript)•  Tools•  RS in Android 2.1
  5. 5. RS Intro / Overview•  Seid Android 3.0 öffentlich verfügbar (API LEVEL 11)
  6. 6. RS Basics: Compiler -> Offline sepia.bc sepia.rs LLVM-RS-CC SciptC_sepia.javahttp://events.linuxfoundation.org/slides/2011/lfcs/lfcs2011_llvm_liao.pdf
  7. 7. RS Basics: Compiler -> Online libbcc GPU sepia.bc s SciptC_sepia.class Dalvik JIT CPU shttp://events.linuxfoundation.org/slides/2011/lfcs/lfcs2011_llvm_liao.pdf
  8. 8. RS Basics: APIs•  Java -> android.renderscript.*•  RS -> *.rsh (RenderScriptHeader)$ANDROID_SDK/platforms/android-11/renderscript/include/•  rs_cl.rsh -> tan, cos, pow•  rs_core.rsh -> Utility Funktionen: rsDebug•  rs_graphics.rsh -> Grafik Funktionen (optional): rsgDrawMesh•  rs_math.rsh -> Basis Funktionen: rand, rsForEach•  rs_time.rsh -> rsUptimeMillis•  rs_types.rsh -> Datentypen: rs_matrix4x4
  9. 9. RS Basics: Datastructures• Element Repräsentiert eine Speicherstelle einer Allocation, zum Beispiel uchar4• Type Dimension(en) von Elementen• Allocation Repräsentiert den allokierten SpeicherElements und Types können auf SDK und RS leveldefiniert werden, Allocations nur auf SDK level
  10. 10. RS Basics: functions / Syntax#pragma version(1)#pragma rs java_package_name(de.inovex.mobi.rsdemos)void init() Grafik -> Initialisierungint root(int launchID) Grafik -> wird für jede Aktualisierung des Screens aufgerufenvoid root(...) Berechnungen -> Wird für jedes zu berechnende Element aufgerufenvoid rsForEach(...) Ruft root(..) für jedes zu berechnende Element auf
  11. 11. RS Calculation: Sepia Filter
  12. 12. RS Calculation: Sepia Filter 700 605 600 500milliseconds 400 344 350 RenderScript 300 Java Java Threaded 200 100 0 Sepia Filter
  13. 13. RS Calculation: Mandelbrot
  14. 14. RS Calculation: Mandelbrot 12000 11080 10000 8000milliseconds 6912 6116 RenderScript 6000 Java 4000 Java Threaded 2000 0 Mandelbrot
  15. 15. RS Graphics: OpenGL Refresh Vertex Fragment Blending Shader ShaderOpenGLRenderScript Program Program Program Vertex Fragment Store
  16. 16. RS Graphics: Basics RSSurfaceView bindRoot onTouch Script() Event()Java MessageQueueRenderScript int root(int launchID) { //draw things }
  17. 17. RS Graphics: Logo Demo
  18. 18. RS Graphics: Cover Carousel
  19. 19. RS Graphics and Calculationsroot() { rsForEach(...); rsgDrawMesh(...); return 10; } CPU CPU 1 2 root(...) { root(...) { doCrazyStuff(); doCrazyStuff(); } }
  20. 20. RS Graphics and Calculations
  21. 21. RS Summary: Android Graphic APIs•  NDK -> C Code Portierung, low level C programming•  SDK •  Canvas API -> 2D Graphics •  OpenGL wrappers -> Simple 3D Graphics •  RenderScript -> High performance 3D Graphics / Computations
  22. 22. RS Summary: Experience & ClaimsPros•  Portabilität•  Performance•  UsabilityCons•  Complexity•  Debugging / Tools•  less Features•  Documentation•  Reach
  23. 23. RS Summary: Experience & ClaimsINFO/DEBUG(85): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***INFO/DEBUG(85): Build fingerprint: motorola/tervigon/wingray:3.2/HTJ85B/140714:user/release-keysINFO/DEBUG(85): pid: 8462, tid: 8479 >>> de.inovex.mobi.rsdemos <<<INFO/DEBUG(85): signal 7 (SIGBUS), code 128 (?), fault addr 00000000INFO/DEBUG(85): r0 00000001 r1 433a4266 r2 001aecf0 r3 433a425aINFO/DEBUG(85): r4 00000001 r5 433a4266 r6 00000000 r7 599cce08INFO/DEBUG(85): r8 000013b0 r9 000013b0 10 599cce08 fp 00000001INFO/DEBUG(85): ip a9d43910 sp 599ccd08 lr af9d7acc pc af9d7acc cpsr 00000010INFO/DEBUG(85): d0 477fff800000ffff d1 3ef99342477fff00INFO/DEBUG(85): d2 3fa5b5e89f667c0b d3 3fa55553e1053a42INFO/DEBUG(85): d4 3fa5b5e89f667c0b d5 bf56ab7707e82c56INFO/DEBUG(85): d6 3f80000026a7f65f d7 3f80000000000000INFO/DEBUG(85): d8 4334000040490fdb d9 c44f0000444f0000INFO/DEBUG(85): d10 0000000000000000 d11 0000000000000000INFO/DEBUG(85): d12 0000000000000000 d13 0000000000000000INFO/DEBUG(85): d14 0000000000000000 d15 0000000000000000INFO/DEBUG(85): scr 60000013INFO/DEBUG(85): #00 pc 00004acc /system/lib/libcutils.so (android_atomic_add)INFO/DEBUG(85): #01 pc 0001f5be /system/lib/libRS.so(_ZNK7android12renderscript10ObjectBase9incSysRefEv)INFO/DEBUG(85): #02 pc 00017d44 /system/lib/libRS.soINFO/DEBUG(85): #03 pc 0001a7ba /system/lib/libRS.so(_ZN7android12renderscript7Context16setProgramVertexEPNS0_13ProgramVertexE)INFO/DEBUG(85): #04 pc 0001a7d2 /system/lib/libRS.so(_ZN7android12renderscript28rsi_ContextBindProgramVertexEPNS0_7ContextEPv)INFO/DEBUG(85): #05 pc 00025e68 /system/lib/libRS.soINFO/DEBUG(85): libc base address: afdd3000INFO/DEBUG(85): code around pc:INFO/DEBUG(85): af9d7aac e1853f92 e3530000 1afffffa e8bd8070INFO/DEBUG(85): af9d7abc e92d4070 e1a04000 e1a05001 ebffffd1INFO/DEBUG(85): af9d7acc e1950f9f e0802004 e1853f92 e3530000INFO/DEBUG(85): af9d7adc 1afffffa e8bd8070 e1a01000 e3e00000INFO/DEBUG(85): af9d7aec eafffff2 e1a01000 e3a00001 eaffffefINFO/DEBUG(85): stack:INFO/DEBUG(85): 599cccc8 599cccec
  24. 24. RS Summary: Ausblick•  GPU Beschleunigung•  Vereinfachung der RS APIs mit Android 4•  Dokumentation & Tools mit Android 4•  Portabilität und Emulator-Unterstützung
  25. 25. RS Summary: Infos & Links•  http://marakana.com/forums/android/general/381.html•  http://graphics-geek.blogspot.com/•  http://blog.iangclifton.com/2011/08/24/renderscript-101- part-2-renderscript-interaction/•  http://events.linuxfoundation.org/slides/2011/lfcs/ lfcs2011_llvm_liao.pdf•  http://code.google.com/p/renderscript-examples/•  http://github.com/dhelleberg/RenderScriptDemos
  26. 26. RS Summary: Infos & Links DANKE!http://bit.ly/mtc2011-dh

×