Skip to content

Khronos Group

September 29, 2023
January 5, 2015

Khronos Group 3D Graphics Specs

EGL is an interface between Khronos rendering APIs (such as OpenGL ES or OpenVG) and the underlying native platform windowing system. EGL handles graphics context management, surface/bufferbinding, rendering synchronization, and enables "high-performance, accelerated, mixed-mode 2D and 3Drendering using other Khronos APIs."

OpenGL

OpenGL Programming Guide : Table of Contents
OpenGL – Then and Now | Cognitive Waves

Shading Languages

Shader - Wikiwand
High-Level Shading Language (HLSL) - Wikiwand by Microsoft
OpenGL Shading Language (GLSL/GLslang) - Wikiwand by Khronos Group
Cg (programming language) - Wikiwand by Nvidia, enables programmer to use C-like syntax to create shaders, generate HLSL or GLSL code.
The shader programs are loaded to a OpenGL application (context/shell) for execution.
http://www0.cs.ucl.ac.uk/staff/ucacbbl/cigpu2008/slides/shader-vs-cuda.pdf

Compute shader 101 - YouTube shader vs CUDA

Primer : Shaders
Shaders : second stage

GPGPU

CUDA provides an architecture for general-purpose computation in GPU, and is more flexible then shading languages in terms of memory access but lacks some of the graphic specific features. The program is loaded as "kernel" to the GPU without a need for graphic "shell". The host and kernels can communicate and synchronize with each other.
CUDA sits on top of specific language such as OpenCL, DirectX, CUDA C.

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs) and other processors.
HLSL 5.0 for DirectX 11 is going to add new GPGPU functions like CUDA that also works for AMD's and Intel's GPU.
These GPGPU framework can access the GPU without needing a graphics context.
Programmers that need to be platform agnostic will have to stick to GLSL before OpenCL is widely supported.
http://stackoverflow.com/questions/982911/cuda-opencl-pgi-etc-but-what-happened-to-glsl-and-cg

However, OpenGL ES3 have compute shader and async read the provides most of the feature of OpenCL.

OpenCV

opencv

All OpenXXX are frameworks and API that require driver implementation by chip vendor.

OpenCL

see android-notes#renderscript

Khronos OpenCL Registry
OpenCL 1.2: High-Level Overview by AJ.Gullon | MooCow develop notes
Khronos Announces OpenCL 3.0: Hitting the Reset Button on Compute Frameworks - Print View reverts to 1.2 API with optional extension

x86 的 OpenCL 要注意的是 memory bus 的速度,因為 GPU 的記憶體和 RAM 的溝通很花時間,所以 x86 版本除了 AMD 的 APU 之外都要特別小心這件事

OpenCL on Mobile Devices | ArrayFire
Getting Started with OpenCL on Android | ArrayFire
TzuTaLin's blog: OpenCL on Android

ARM
http://malideveloper.arm.com/develop-for-mali/sdks/mali-opencl-sdk/
Mali T604 | Samsung Exynos 5250 | Nexus 10

<toolchain>/bin/arm-linux-androideabi-gcc main.cpp -lm -lstdc++ \
-l<android_src>/out/target/product/arndale/system/vendor/lib/egl/libGLES_mali.so -o test_opencl

Imageon (formerly ATI Imageon, now Qualcomm's subsidary)
https://developer.qualcomm.com/discover/chipsets-and-modems/adreno-gpu

Adreno 305 | Qualcomm MSM8x2x, MSM8x3x, APQ8030 |
Adreno 320 | Qualcomm S4 Pro (APQ8064, MSM8960T), S4 Prime | Nexus 4, XiaoMi2, Sony Xperia Z

Imagination PowerVR
http://forum.imgtec.com/discussion/2532/opencl-sdk-or-driver
Although our Series5 and Series6 GPUs are capable of supporting the API, there are currently no public devices with our GPUs that expose OpenCL.

SGX 540 | Intel Atom | Motorola RAZR !
SGX 543MP2 | Apple A5 | iPhone4S, iPad2
SGX 543MP3 | Apple A6 | iPhone5
SGX 543MP4 | Apple A5X | iPad3

Nvidia
Tegra 3 T30L | Tegra 3 T30L | Nexus 7

OpenTK

OpenTK - OpenTK
opentk/opentk: The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.

OpenTK Lecture | OpenGL Bindings For C# - YouTube 4.x
C# & OpenGL with OpenTK | Tutorials | Advanced Graphics Programming in C# - YouTube

WebGL

web-3d

Vulkan

Vulkan - Industry Forged
Vulkan (API) - Wikiwand
Vulkan is the successor to OpenGL. It aims to offer lower-level access to the graphics hardware to improve rendering performance.

Vulkan in 30 minutes
Introduction To Vulkan API | Toptal
Transitioning from OpenGL to Vulkan
What is Vulkan and how does it differ from OpenGL? - Game Development Stack Exchange
Vulkan 1.0 Graphics API Brings Cross-Platform Performance Boost; Intel, AMD, Nvidia Contribute
Khronos unveils Vulkan: OpenGL built for modern systems | Ars Technica UK
Vulkan now official, with 1.0 API release and AMD driver [Updated] | Ars Technica

googlesamples/android-vulkan-tutorials: A set of samples to illustrate Vulkan API on Android
googlesamples/vulkan-basic-samples

Introduction to Vulkan Compute Shaders - YouTube
Make shinier, faster mobile games with Vulkan - Google I/O 2016 - YouTube

Shaders

Compile GLSL to SPIR-V with shaderc or glslang

Shadertoy BETA
Shader Toy (Web) - Visual Studio Marketplace

Cinder

Cinder is C++ creating coding framework built upon OpenGL on desktop and OpenES on mobile. Vulkan support is added.

Resources

AdrienHerubel-imgui
GLEW- The OpenGL Extension Wrangler Library
GLFW - An OpenGL library
News - pygame - python game development
Simple DirectMedia Layer - Homepage

baldurk/renderdoc: RenderDoc is a stand-alone graphics debugging tool.