Sering kali kita mendengar Graphics Processing Unit (GPU) ketika kita melihat spek dari perangkat smartphone android. Apakah GPU itu? Apakah peranan dari GPU itu? Pada artikel ini, mari kita berbagi tentang GPU pada perangkat android.
Apakah GPU / Graphics Processing Unit?
Cara Kerja GPU
Saat GPU menerima raw
data,serangkaian proses panjang dimulai dan diakhiri dengan memunculkan gambar
di layar perangkat. Graphics Pipeline, yaitu channelling agar data dalam card
sampai pada frame buffer, umumnya hampir sama pada semua graphics card yang ada
saat ini. Seluruh proses itu diulang untuk setiap gambar (frame). Agar dapat menghasilkan gambar yang cepat.
Setelah data dikirim ke GPU melalui interface, langkah pertama proses pipeline-nya adalah mempersiapkan kalkulasi (pre-calculation) dan mengubah data dengan menggunakan sebuah pre-processor (setup Engine atau Input Assembler). Pre-processor ini mendeteksi jenis data, apakah berkaitan dengan vector,gambar,dank ode program, dan mempersiapkan raw data sehingga dapat diproses oleh modul yang tepat. Disini, ditentukan apakah raw data diproses oleh sebuah Vertex Shader, Geometry Shader, Pixel Shader, atau sebuah texture unit.
Setiap objek 3D terdiri atas berbagai triangle. Vertex Shader (Vertices adalah titik-titik sudut sebuah polygon) disuplai dengan koordinat-koordinat ini. segitiga-segitiga ini kemudian membentuk sebuah dunia 3D berdasarkan koordinat tersebut yang diselaraskan, di-scaling, atau di-distorsi sesuai dengan arah pandangan mata. Area pandangan yang diasumsikan ini disebut sebagai frustum. Setelah scane tersebut terbentuk,dilakukan pemeriksaan apakah sebuah objek harus terlihat atau tidak, berada di area frustum, dan apakah seluruh atau sebagian ditutupi oleh objek-objek.
Setelah data dikirim ke GPU melalui interface, langkah pertama proses pipeline-nya adalah mempersiapkan kalkulasi (pre-calculation) dan mengubah data dengan menggunakan sebuah pre-processor (setup Engine atau Input Assembler). Pre-processor ini mendeteksi jenis data, apakah berkaitan dengan vector,gambar,dank ode program, dan mempersiapkan raw data sehingga dapat diproses oleh modul yang tepat. Disini, ditentukan apakah raw data diproses oleh sebuah Vertex Shader, Geometry Shader, Pixel Shader, atau sebuah texture unit.
Setiap objek 3D terdiri atas berbagai triangle. Vertex Shader (Vertices adalah titik-titik sudut sebuah polygon) disuplai dengan koordinat-koordinat ini. segitiga-segitiga ini kemudian membentuk sebuah dunia 3D berdasarkan koordinat tersebut yang diselaraskan, di-scaling, atau di-distorsi sesuai dengan arah pandangan mata. Area pandangan yang diasumsikan ini disebut sebagai frustum. Setelah scane tersebut terbentuk,dilakukan pemeriksaan apakah sebuah objek harus terlihat atau tidak, berada di area frustum, dan apakah seluruh atau sebagian ditutupi oleh objek-objek.
Elemen yang tidak terlihat
akan disingkirkan dari scane untuk menghindari proses kalkulasi yang tidak
diperlukan. Proses ini disebut Frustum Culling. Apabila ditemukan sebuah objek
terlalu jauh untuk dapat terlihat atau terlalu dekat menghadap (membelakangi)
penonton (secara teoritis), maka proses ekuivalennya disebut sebagai clipping.
Proses Vertex Shader yang terakhir adalah lighting. Disini, 3D scane akan diterangi oleh sumber cahaya ke dalam lingkungan (ruang) tersebut. Tanpa langkah ini, 3D scane terlihat gelap. Vertex Shader hanya dapat memanipulasi objek, namun tidak dapat menghasilkan elemen geometri baru, seperti titik, garis, dan segitiga.
Apabila gambar yang akan dilihat anda (viewer) sudah terbentuk dalam grid model dengan lighting source-nya,berarti prosesnya telah membuat sebuah foto dari scane tersebut dalam gambar 2D (dua dimensi) untuk ditampilkan di monitor. Proses ini dinamakan rastering atau rendering. Setiap titik sebuah objek 3D, yang selama ini hanya disimpan sebagai vector, akan diubah menjadi sebuah pixel. Langkah selanjutnya yang “menguras tenaga” adalah shading (shadowing) yang dilakukan oleh Pixel Shader. Pixel Shader akan memproses warna dan atribut yang diperlukan, seperti trasnparasi, pemantulan atau struktur dari masing-masing oixel. Hasilnya, objek 3D akan mendapat pewarnaan.
Prinsipnya, sekarang gambar sudah jadi. Proses yang diperlukan hanyalah penyempurnaan malalui berbagai filter agar scane terlihat lebih realistis. Untuk itu tekstur, yaitu Bitmaps (gambar) yang sudah jadi, akan diproyeksikan menjadi sebuah objek 3D (Texture Mapping). Dengan cara ini, dengan mudah dihasilkan gambar-gambar yang terlihat seperti foto minus fleksibelitas sebuah objek 3D. Jadi obyek yang dibentuk oleh tekstur dapat terlihat bagus dari depan, namun terlihat datar saja dari samping. Anisotrophic filtering, yang juga ditempatkan dalam tekstur units, berfungsi agar teksture yang sudah terdistorsi secara perspektif dapat ditampilkan secara tajam dari kejauhan.
Proses Vertex Shader yang terakhir adalah lighting. Disini, 3D scane akan diterangi oleh sumber cahaya ke dalam lingkungan (ruang) tersebut. Tanpa langkah ini, 3D scane terlihat gelap. Vertex Shader hanya dapat memanipulasi objek, namun tidak dapat menghasilkan elemen geometri baru, seperti titik, garis, dan segitiga.
Apabila gambar yang akan dilihat anda (viewer) sudah terbentuk dalam grid model dengan lighting source-nya,berarti prosesnya telah membuat sebuah foto dari scane tersebut dalam gambar 2D (dua dimensi) untuk ditampilkan di monitor. Proses ini dinamakan rastering atau rendering. Setiap titik sebuah objek 3D, yang selama ini hanya disimpan sebagai vector, akan diubah menjadi sebuah pixel. Langkah selanjutnya yang “menguras tenaga” adalah shading (shadowing) yang dilakukan oleh Pixel Shader. Pixel Shader akan memproses warna dan atribut yang diperlukan, seperti trasnparasi, pemantulan atau struktur dari masing-masing oixel. Hasilnya, objek 3D akan mendapat pewarnaan.
Prinsipnya, sekarang gambar sudah jadi. Proses yang diperlukan hanyalah penyempurnaan malalui berbagai filter agar scane terlihat lebih realistis. Untuk itu tekstur, yaitu Bitmaps (gambar) yang sudah jadi, akan diproyeksikan menjadi sebuah objek 3D (Texture Mapping). Dengan cara ini, dengan mudah dihasilkan gambar-gambar yang terlihat seperti foto minus fleksibelitas sebuah objek 3D. Jadi obyek yang dibentuk oleh tekstur dapat terlihat bagus dari depan, namun terlihat datar saja dari samping. Anisotrophic filtering, yang juga ditempatkan dalam tekstur units, berfungsi agar teksture yang sudah terdistorsi secara perspektif dapat ditampilkan secara tajam dari kejauhan.
Apakah Android benar-benar
menggunakan OpenGL ES API untuk percepatan UI?
Update: Sejak Android 2.1
tidak menggunakan GOOGLES 1,0 API untuk mempercepat GUI, dalam ketiadaan HW
menggunakan sampel OGLES 1,0 implementasi SW.
Jawabannya adalah TIDAK. Android menggunakan skia yang merupakan software untuk render yang menawarkan performa yang hebat dan mudah dibawa di prosesor ARM, hal ini menjadikan sangat baik terhadap NEON ARM (SIMD) prosesor. Implementasi OpenGL Software adalah tidak menawarkan OpenGL ES 1.1 dengan implementasi penuh. Sebuah OpenGL ES hanya mengimplementasi pada perangkat keras yang terintegrasi sebagai bagian dari libgl.so dan libgl2.so, namun ini hanya digunakan melalui lapisan tipis JAVA API untuk permainan dan sebagai bagian dari NDK. Intinya adalah Google perlu untuk keluar dengan mekanisme antarmuka dan tumpukan grafis yang portable dan scalable.
Jawabannya adalah TIDAK. Android menggunakan skia yang merupakan software untuk render yang menawarkan performa yang hebat dan mudah dibawa di prosesor ARM, hal ini menjadikan sangat baik terhadap NEON ARM (SIMD) prosesor. Implementasi OpenGL Software adalah tidak menawarkan OpenGL ES 1.1 dengan implementasi penuh. Sebuah OpenGL ES hanya mengimplementasi pada perangkat keras yang terintegrasi sebagai bagian dari libgl.so dan libgl2.so, namun ini hanya digunakan melalui lapisan tipis JAVA API untuk permainan dan sebagai bagian dari NDK. Intinya adalah Google perlu untuk keluar dengan mekanisme antarmuka dan tumpukan grafis yang portable dan scalable.
1. Adreno
Seri Adreno yang merupakan buatan ATI yang
sekarang anak perusahaan AMD dulu disebut seri ATI imageon, sekitar tahun
2002-2004 yaitu pada awal-awal keluarnya seri GPU ini.
Pada tahun 2008, AMD imageon di jual ke
salah satu produsen prosesor terkemuka, yaitu Quallcom. Dan sekarang ATI/AMD
hanya mensupport arsitektur dan pengembangannya saja. Kini seri Adreno
merupakan bawaan dari semua SOC (System On Chip) buatan Quallcom. Adreno
sendiri juga dibagi menjadi beberapa kelas:
a.
Adreno 130, yang berada didalam SOC Quallcom seri MSM7xxx.
b.
Adreno 200, yang berada pada QSD8x50 (snapdragon gen 1, QSD
mrupakan kode dari seri SOC snapdragon) and MSM7x27 (MSM merupakan kode untuk
produk SOC quallcom untuk seri general). Biasanya, Adreno seri ini dipakai di
handheld Android kelas low-end (spesifikasi rendah, dengan prosesor 600-800
MHz).
c.
Adreno
205 di QSD8x50A (1.3 GHz), MSM7x30 (800 MHz+L2 cache), MSM8x55 (1
GHz+L2 cache).
d.
Adreno 220, merupakan andalan mereka yang terbaru, saya sendiri
belum memiliki banyak info tentang Adreno 220 ini, tapi nampaknya GPU ini
memiliki Multi Core (lebih dari satu inti prosesor). Seri ini dan Adreno 220
biasanya dipakai di handheld Android kelas Mid-End dan High-End (spesifikasi
tinggi, dengan prosesor diatas 1GHz).
2. Power VR
Seri PowerVR merupakan buatan video logic
yang dulu juga pernah meramaikan pasar VGA, namun seiring dominasi NVIDIA dan
ATI, video logic kini hanya bermain di dunia GPU mobile gadget. PowerVR sndiri
tidak di produksi dalam bentuk jadi oleh power logic namun mereka hanya membuat
draft arsitekturnya yg dijual lisensinya ke berbagai produsen prosesor
terkemuka seperti NEC, Intel, Freescale, Texas Instruments dan lain-lain.
Seri PowerVR sendiri sekarang sudah
mencapai 6 seri, seri 2 nya pernah dipakai pada console game tahun 1900-an,
yaitu Dream cast dan Sega saturn. Seri powerVR SGX 5 merupakan seri yang paling
sering ditemui pada smartphone, SGX 5 sendiri merupakan GPU elite dalam dunia
smartphone, mungkin seperti BMW di dunia mobil J.Seri SGX yang tercatat pernah
dipakai dalam berbagai smartphone dan gadget berikut:
a.
SOC A4/SGX535 (iPhone 4/ipod gen4/ipad)
b.
SOC Hummingbird/SGX540 clock 200 (Samsung Galaxy S)
c.
SOC OMAP seri 3/SGX530 (Droid X, Motorola Defy, Samsung Galaxy SL, Motorola
Mile 2, Droid 2 dan LG optimus Black)
d.
Intel GMA 500 dan GMA
600 juga menggunakan SGX535 sbg VGA onboard
intel atom
e.
Varian seri 5 berikutnya adalah SGXMP
(MP disini mengindikasikan jumlah core) SOC OMAP 4 (4430)/SGX540MP quadcore
clock 300 (Blackberry Playbook, LG Optimus 3D).
f.
SOC A5/SGX543MP2 (iPad 2).
g.
SGX543MP4, yang dipakai di Playstation Vita.
h.
Selain itu seri dewa berikutnya, SGX544MP+
akan berada di OMAP 5 yg mnggunakan quadcore dual CPU A15 (eagle platform)+
dual CPU Cortex-M4 cores dgn clock prosesor hingga 2 GHz.
3. Mali
Seri Mali, GPU ini merupakan arsitektur buatan ARM, walaupun
masih jarang terdengar namanya, namun kekuatannya tidak bisa diremehkan.
Seri-seri GPU Mali beredar mulai dari HDTV, game console (PS3), hingga
smartphone. Khusus untuk smarphone, seri yang digunakan adalah Mali 400MP4 (MP
adalah indikator core yang digunakan). GPU ini merupakan bagian dari SOC Exynos
dualcore CPU 1.2ghz A9 milik Samsung Galaxy S II. Kabarnya Mali 400MP4 ini
mampu merender hampir setara PS3 maupun Xbox 360.
4. Ge Force ULP
Seri
Geforce ULP (Ultra Low Power) merupakan GPU yg mnjadi bagian dari SOC Tegra 2
yang diproduksi oleh NVIDIA. Geforce ULP ini menggunakan Quadcore 4 pixel
shaders + 4 vertex shaders hingga total ada 8 core yang berada di dalamnya.
Jika
untuk menentukan performa tentu saja tidak lepas dr SOC apa yg dipakai, sangat
sulit untuk menentukan point yg digunakan untuk komparasi karena masing-masing
GPU sangat tergantung juga pada kinerja dan support dr SOCnya. Contohnya saja,
SOC OMAP seri 4 dgn GPU SGX540 quadcore vs tegra 2 dgn GPU ULP geforce 8core,
sapa yg akan menang? Apabila melihat jumlah core, secara kasat mata orang akan
menjagokan 8core yg berada pada geforce ULP namun bila menghitung kemampuan SOC
maka trlihat OMAP 4 trnyata bisa melibas Tegra 2, tidak hanya dari hasil
benchmark, framerate, javascript render, namun jg dlm soal efisiensi pemakaian
battere.
Hal
ini tidak mengherankan karena OMAP 4 memiliki beberapa senjata rahasia seperti
support dual channel memori LP DDR2 hingga 1GB, dimana Tegra 2 baru mampu
menggunakan single channel. Kembali lg kemampuan SOC sangat menentukan hasil,
begitu juga dengan Snapdragon dengan core scorpion-nya, apakah akan kalah
perform dengan Tegra 2? Tidak juga, terutama utk hasil multimedia dimana
kekuatan snapdragon dan adreno memang di optimalisasi pada sisi ini.
Kendala
berikutnya dalam membandingkan monster-monster GPU ini adalah perbedaan cara
render yg dilakukan pada masing-masing platform, misalnya saja Adreno dengan
SOC snapdragon biasa menggunakan metode render (bila melewati batas
kemampuannya) menurunkan kualitas namun mempertahankan resolusi agar framerate
terjaga, sementara Hummingbird dengan GPU SGX540 merender murni menggunakan
kekuatan GPUnya bahkan tetap dengan menghidupkan vsync. Walaupun terlihat dimata
kita performa nya hampir sama, dengan hasil framerate yang tidak jauh berbeda,
namun jika vsync dimatikan dan dibandingkan kualitas gambarnya akan terlihat
dimana SGX540 benar2 monster dan sangat cepat!
Hal
ini juga belum lagi ditambah dengan driver yang dipakai di dalam OS yg berada
di smartphone atau gadget tersebut. Jadi, cukup sulit menentukan mana GPU
terbaik, karena masing-masing GPU memiliki kelebihan dan kelemahannya
tersendiri dan tergantung pula pada support dari SOC nya masing-masing.
Kelas Graphics Processing
1.
Kelas Low End
a.
Adreno
130 (Htc Hero)
b.
adreno
200 (Samsung Galaxy Mini, Samsung Galaxy Fit, Samsung Galaxy Ace, Nexian
Journey, Csl mi320, Desire, Nexus One, Droid Incridible, x10)
c.
power
vr 530 (Milestone1, charm)
2.
Kelas Mid End
a.
adreno
205 (CSL MI410,galaxy W,huawei x5,xperia mini/pro/active,droid x,htc
thunderbolt,se play)
b.
powerVR
535 (iPhone 4/ipod gen4/ipad)
c.
Hummingbird/SGX540
clock 200 (Samsung Galaxy S/tab1/epic 4g)
d.
Mali
400 (Sony Xperia Go)
3.
Kelas High End
a.
SOC
A5/SGX543MP2 (Apple : iPad 2)
b.
SGX543MP4
(Playstation Vita)
c.
Adreno
220 (HTC Sensasion)
d.
nvidia
tegra 2 (LG Optimus 2x)
e.
SGX544MP+
akan berada di OMAP 5 yg menggunakan quadcore dual CPU A15
f.
Adreno
225 (HTC One S)
g.
Mali
400MP2 (Samsung Galaxy SII)
h.
Mali
400MP4 (galaxy s3)
Pengurutan Tingkat GPU
Adreno 200 = PowerVR SGX 531 (low class)
Adreno 203 = Adreno 205 (mid class)
Adreno 225 = Adreno 220 (high class)
Adreno 320 = Adreno 320 (high class)
Adreno 200 = PowerVR SGX 531 (low class)
Adreno 203 = Adreno 205 (mid class)
Adreno 225 = Adreno 220 (high class)
Adreno 320 = Adreno 320 (high class)
Mali 400 = PowerVR SGX540 = Adreno
203 = ULPGF Tegra 2 (mid class)
Mali 400MP2* = PowerVR SGX544 = Adreno 220 (high class)
Mali 400mp4*= PowerVR SGX544MP2* = ULP GeForce Tegra 3 (high class)
Mali T604 < Adreno 320 < PowerVR SGX543MP4 < PowerVR SGX554MP4
Mali 400MP2* = PowerVR SGX544 = Adreno 220 (high class)
Mali 400mp4*= PowerVR SGX544MP2* = ULP GeForce Tegra 3 (high class)
Mali T604 < Adreno 320 < PowerVR SGX543MP4 < PowerVR SGX554MP4
Tidak ada komentar:
Posting Komentar