• Stars
    star
    296
  • Rank 140,464 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OpenCL API, OpenCL C, Extensions, SPIR-V Environment Specs, Ref page, and C++ for OpenCL doc sources.

OpenCL Specification Build Instructions and Notes

Note
Note

The most useful parts of this document are the Introduction, Building The Spec, and notes on installing Software Dependencies.

Note
Note

The default branch of this repository has changed from master to main.

Introduction

This repository contains the source and tool chain used to generate the formal OpenCL API, OpenCL C, OpenCL Extensions, OpenCL SPIR-V Environment, OpenCL C Specifications, as well as the OpenCL Reference Pages and documentation for the C for OpenCL kernel language.

This file describes the repository structure, tools, and build instructions needed.

Source Code

The OpenCL specifications are maintained by members of the Khronos Group’s OpenCL Working Group, in the OpenCL-Docs Github repository. The documents are all in Asciidoctor format.

Contributions via pull requests on Github are welcome. Pull requests must be provided under the same Creative Commons license as the specification source. You’ll be prompted with a one-time “click-through” Contributor’s License Agreement (CLA) dialog as part of submitting your pull request or other contribution to GitHub.

We intend to maintain a linear history on the GitHub main branch.

Repository Structure

File

Description

README.adoc

This file

Makefile

GNU Makefile used to build HTML and PDF spec targets

config/

Support files for asciidoctor build, HTML CSS / Javascript, etc.

katex/

KaTeX math renderer for HTML outputs

OpenCL_API.txt

Main source file for the OpenCL API Specification

api/

Individual sections of the API Specification

OpenCL_C.txt

Main source file for the OpenCL C Specification

c/

Individual sections of the C Specification

OpenCL_Cxx.txt

Main source file for the OpenCL C++ Specification

cxx/

Individual sections of the C++ Specification

OpenCL_Env.txt

Main source file for the OpenCL SPIR-V Environment Specification

env/

Individual sections of the Environment Specification

OpenCL_Ext.txt

Main source file for the OpenCL Extensions Specification

ext/

Individual sections of the Extensions Specification

CXX_for_OpenCL.txt

Main source file for the C++ for OpenCL Documentation

cxx4opencl/

Individual sections of the C++ for OpenCL Documentation

images/

Shared images, used by all specs

man/

Static reference page sources

Building The Specifications and Reference Pages

If you have installed all required toolchain components, you should be able to build both HTML and PDF outputs for all specifications by:

$ make

Other Makefile targets are available for building the different outputs for each Specification:

Target

Builds

html

HTML outputs for all specifications

pdf

PDF outputs for all specifications

api

HTML and PDF outputs for API Specification

apihtml

HTML outputs for API Specification

apipdf

PDF outputs for API Specification

c

HTML and PDF outputs for C Specification

chtml

HTML outputs for C Specification

cpdf

PDF outputs for C Specification

cxx

HTML and PDF outputs for C++ Specification

cxxhtml

HTML outputs for C++ Specification

cxxpdf

PDF outputs for C++ Specification

env

HTML and PDF outputs for SPIR-V Environment Specification

envhtml

HTML outputs for Environment Specification

envpdf

PDF outputs for Environment Specification

ext

HTML and PDF outputs for Extensions Specification

exthtml

HTML outputs for Extensions Specification

extpdf

PDF outputs for Extensions Specification

cxx4opencl

HTML and PDF outputs for C++ for OpenCL Documentation

cxx4openclhtml

HTML outputs for C++ for OpenCL Documentation

cxx4openclpdf

PDF outputs for C++ for OpenCL Documentation

manhtmlpages

HTML outputs for Reference Pages

The specification targets are generated in out/html/ for HTML targets, and out/pdf/ for PDF targets. The reference page target is generated in out/man/html/. If a different output directory is desired, set the Makefile variable OUTDIR on the command line. For example,

make OUTDIR=/tmp apihtml

will create /tmp/html/OpenCL_API.html.

These targets generate a variety of output documents in the directory specified by the Makefile variable $(OUTDIR) (by default, out).

Once you have the basic build working, an appropriate parallelization option to make, such as

make -j 6

may significantly speed up building multiple specs. The asciidoctor HTML build is very fast, even for the whole Specification, but PDF builds may take several minutes.

Reference Page Installation

Most of the reference pages are extracted from the OpenCL API and OpenCL C Specifications, although some are static. While anyone can generate reference page sets for themselves, Khronos publishes them via the main branch of the OpenCL Registry.

When the OpenCL Specification Editor is updating the published reference pages, it is easiest to have local repository clones of this repository (OpenCL-Docs) as well as OpenCL-Registry. Update the pages in the local registry clone via

make -j 6 OUTDIR=path-to-registry-repo/sdk/3.0/docs manhtmlpages

This creates the HTML output pages under sdk/3.0/docs/man/html, and copies the KaTeX package to sdk/3.0/docs/katex. To publish, commit those changes to the registry repository and push it to github.

Our stylesheets

We use a modified version of the Asciidoctor 'colony' theme. This theme is maintained internally to Khronos and the resulting CSS is under config/khronos.css.

Imbedding Equations

Where possible, equations should be written using straight asciidoc markup using the eq role. This covers many common equations and is faster than the alternatives.

For more complex equations, such as multi-case statements, matrices, and complex fractions, equations should be written using the latexmath: inline and block macros. The contents of the latexmath: blocks should be LaTeX math notation. LaTeX math markup delimiters are now inserted by the asciidoctor toolchain.

LaTeX math is passed through unmodified to all HTML output forms, which is subsequently rendered with the KaTeX engine when the html is loaded. A local copy of the KaTeX release is kept in katex/ and copied to the HTML output directory during spec generation. Math is processed into SVGs via asciidoctor-mathematical for PDF output.

The following caveats apply:

  • The special characters < , > , and & can currently be used only in [latexmath] block macros, not in latexmath:[] inline macros. Instead use \lt, \leq, \gt, and \geq for <, , >, and >= respectively. & is an alignment construct for multiline equations, and should only appear in block macros anyway.

  • AMSmath environments (e.g. \begin{equation*}, {align*}, etc.) cannot be used in KaTeX at present, and have been replaced with constructs supported by KaTeX such as {aligned}.

  • Arbitrary LaTeX constructs cannot be used. KaTeX and asciidoctor-mathematical are only equation renderers, not full LaTeX engines. Imbedding LaTeX like \Large or \hbox{\tt\small VK\_FOO} may not work in any of the backends, and should be avoided.

See the “Vulkan Documentation and Extensions” document in the Khronos Vulkan Registry for more details of supported LaTeX math constructs in our toolchain.

Asciidoc Anchors And Xrefs

In asciidoctor, sections can have anchors (labels) applied with the following syntax:

[[spirv-il]]
== SPIR-V Intermediate language

In general the anchor should immediately precede the chapter or section title and should use the form '[[chapter-section-label]]'.

Cross-references to those anchors can then be generated with, for example,

See the <<spirv-il>> section for discussion of the SPIR-V intermediate
language.

You can also add anchors on arbitrary paragraphs, using a similar naming scheme.

Software Dependencies

This section describes the software components used by the OpenCL spec toolchain.

Before building the OpenCL specs, you must install the following tools:

  • GNU make (make version: 4.0.8-1; older versions probably OK)

  • Python 3 (python, version: 3.4.2)

  • Ruby (ruby, version: 2.3.3)

    • The Ruby development package (ruby-dev) may also be required in some environments.

  • Git command-line client (git, version: 2.1.4). The build can progress without a git client, but branch/commit information will be omitted from the build. Any version supporting the following operations should work:

    • git symbolic-ref --short HEAD

    • git log -1 --format="%H"

  • Ghostscript (ghostscript, version: 9.10). This is for the PDF build, and it can still progress without it. Ghostscript is used to optimize the size of the PDF, so will be a lot smaller if it is included.

  • ttf Fonts. These are needed the PDF build for latexmath rendering. See Font Dependencies for asciidoctor-mathematical.

The following Ruby Gems and platform package dependencies must also be installed. This process is described in more detail for individual platforms and environment managers below. Please read the remainder of this document (other than platform-specific parts you don’t use) completely before trying to install.

  • Asciidoctor (asciidoctor, version: 2.0.16)

  • Coderay (coderay, version: 1.1.1)

  • rouge (rouge, version 3.19.0)

  • ttfunk (ttfunk, version: 1.5.1)

  • Asciidoctor PDF (asciidoctor-pdf, version: 1.5.0)

  • Asciidoctor Mathematical (asciidoctor-mathematical, version 0.3.5)

  • Dependencies for asciidoctor-mathematical (There are a lot of these!)

  • KaTeX distribution (version 0.7.0 from https://github.com/Khan/KaTeX . This is cached under katex/, and need not be installed from github.

Only the asciidoctor, coderay, and rouge gems are needed if you don’t intend to build PDF versions of the spec and supporting documents.

Note
Note

While it’s easier to install just the toolchain components for HTML builds, people submitting MRs with substantial changes to the Specifications are responsible for verifying that their branches build both html and pdf targets.

Platform-specific toolchain instructions follow:

Windows (General)

Most of the dependencies on Linux packages are light enough that it’s possible to build the spec natively in Windows, but it means bypassing the makefile and calling functions directly. This might be solved in future. For now, there are three options for Windows users: Ubuntu / Windows 10, MinGW, or Cygwin.

Ubuntu / Windows 10

When using the “Ubuntu Subsystem” for Windows 10, most dependencies can be installed via apt-get:

sudo apt-get -qq -y install build-essential python3 git cmake bison flex \
    libffi-dev libgmp-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev \
    libpango1.0-dev fonts-lyx gtk-doc-tools ghostscript

The default ruby packages on Ubuntu are fairly out of date. Ubuntu only provides ruby and ruby2.0 - the latter is multiple revisions behind the current stable branch, and would require wrangling to get the makefile working with it.

Luckily, there are better options; either rvm or rbenv is recommended to install a more recent version.

Note
Note
  • If you are new to Ruby, you should completely remove (through the package manager, e.g. sudo apt-get remove packagename) all existing Ruby and asciidoctor infrastructure on your machine before trying to use rvm or rbenv for the first time. dpkg -l | egrep 'asciidoctor|ruby|rbenv|rvm' will give you a list of candidate package names to remove.

    • If you already have a favorite Ruby package manager, ignore this advice, and just install the required OS packages and gems.

  • In addition, rvm and rbenv are mutually incompatible. They both rely on inserting shims and $PATH modifications in your bash shell. If you already have one of these installed and are familiar with it, it’s best to stay with that one. One of the editors, who is new to Ruby, found rbenv far more comprehensible than rvm. The other editor likes rvm better.

    • Neither rvm nor rbenv work, out of the box, when invoked from non-Bash shells like tcsh. This can be hacked up by setting the right environment variables and PATH additions based on a bash environment.

  • Most of the tools on Bash for Windows are quite happy with Windows line endings (CR LF), but bash scripts expect Unix line endings (LF). The file .gitattributes at the top of the vulkan tree in the 1.0 branch forces such scripts to be checked out with the proper line endings on non-Linux platforms. If you add new scripts whose names don’t end in .sh, they should be included in .gitattributes as well.

Ubuntu/Windows 10 Using Rbenv

Rbenv is a lighter-weight Ruby environment manager with less functionality than rvm. Its primary task is to manage different Ruby versions, while rvm has additional functionality such as managing “gemsets” that is irrelevant to our needs.

A complete installation script for the toolchain on Ubuntu for Windows, developed on an essentially out-of-the-box environment, follows. If you try this, don’t try to execute the entire thing at once. Do each step separately in case of errors we didn’t encounter.

# Install packages needed by `ruby_build` and by toolchain components.
# See https://github.com/rbenv/ruby-build/wiki and
# https://github.com/asciidoctor/asciidoctor-mathematical#dependencies

sudo apt-get install autoconf bison build-essential libssl-dev \
    libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev \
    libffi-dev libgdbm3 libgdbm-dev cmake libgmp-dev libxml2 \
    libxml2-dev flex pkg-config libglib2.0-dev \
    libcairo-dev libpango1.0-dev libgdk-pixbuf2.0-dev \
    libpangocairo-1.0

# Install rbenv from https://github.com/rbenv/rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv

# Set path to shim layers in .bashrc
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bashrc

~/.rbenv/bin/rbenv init

# Set .rbenv environment variables in .bashrc
echo 'eval "$(rbenv init -)"' >> .bashrc

# Restart your shell (e.g. open a new terminal window). Note that
# you do not need to use the `-l` option, since the modifications
# were made to .bashrc rather than .bash_profile. If successful,
# `type rbenv` should print 'rbenv is a function' followed by code.

# Install `ruby_build` plugin from https://github.com/rbenv/ruby-build

git clone https://github.com/rbenv/ruby-build.git
~/.rbenv/plugins/ruby-build

# Install Ruby 2.3.3
# This takes in excess of 20 min. to build!
# https://github.com/rbenv/ruby-build/issues/1054#issuecomment-276934761
# suggests:
# "You can speed up Ruby installs by avoiding generating ri/RDoc
# documentation for them:
# RUBY_CONFIGURE_OPTS=--disable-install-doc rbenv install 2.3.3
# We have not tried this.

rbenv install 2.3.3

# Configure rbenv globally to always use Ruby 2.3.3.
echo "2.3.3" > ~/.rbenv/version

# Finally, install toolchain components.
# asciidoctor-mathematical also takes in excess of 20 min. to build!
# The same RUBY_CONFIGURE_OPTS advice above may apply here as well.

gem install asciidoctor -v 2.0.16
gem install coderay -v 1.1.1
gem install rouge -v 3.19.0
gem install ttfunk -v 1.5.1
gem install asciidoctor-pdf -v 1.5.0
gem install asciidoctor-mathematical -v 0.3.5
Ubuntu/Windows 10 Using RVM

Here are (sparser) instructions for using rvm to setup version 2.3.x:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source ~/.rvm/scripts/rvm
rvm install ruby-2.3
rvm use ruby-2.3
Note
Windows 10 Bash will need to be launched with the "-l" option appended, so that it runs a login shell; otherwise RVM won’t function correctly on future launches.
Ubuntu 16.04 using system Ruby

The Ubuntu 16.04.1 default Ruby install (version 2.3.1) seems to be up-to-date enough to run all the required gems, but also needs the ruby-dev package installed through the package manager.

In addition, the library /var/lib/gems/2.3.0/gems/mathematical-1.6.7/ext/mathematical/lib/liblasem.so has to be copied or linked into a directory where the loader can find it. This requirement appears to be due to a problem with the asciidoctor-mathematical build process.

MinGW

MinGW can be obtained here: http://www.mingw.org/

Once the installer has run its initial setup, following the instructions on the website, you should install the mingw-developer-tools, mingw-base and msys-base packages. The msys-base package allows you to use a bash terminal from windows with whatever is normally in your path on Windows, as well as the unix tools installed by MinGW.

In the native Windows environment, you should also install the following native packages:

Once this is setup, and the necessary Ruby Gems are installed, launch the msys bash shell, and navigate to the spec Makefile. From there, you’ll need to set PYTHON= to the location of your python executable for version 3.x before your make command - but otherwise everything other than pdf builds should just work.

Note
Building the PDF spec via this path has not yet been tested but may be possible - liblasem is the main issue and it looks like there is now a mingw32 build of it available.

Cygwin

When installing Cygwin, you should install the following packages via setup:

// "curl" is only used to download fonts, can be done in another way
autoconf
bison
cmake
curl
flex
gcc-core
gcc-g++
ghostscript
git
libbz2-devel
libcairo-devel
libcairo2
libffi-devel
libgdk_pixbuf2.0-devel
libgmp-devel
libiconv
libiconv-devel
liblasem0.4-devel
libpango1.0-devel
libpango1.0_0
libxml2
libxml2-devel
make
python3
ruby
ruby-devel
Note
Native versions of some of these packages are usable, but care should be taken for incompatibilities with various parts of cygwin - e.g. paths. Ruby in particular is unable to resolve Windows paths correctly via the native version. Python and Git for Windows can be used, though for Python you’ll need to set the path to it via the PYTHON environment variable, before calling make.

When it comes to installing the mathematical ruby gem, there are two things that will require tweaking to get it working. Firstly, instead of:

gem install asciidoctor-mathematical

You should use

MATHEMATICAL_USE_SYSTEM_LASEM=1 gem install asciidoctor-mathematical

The latter causes it to use the lasem package already installed, rather than trying to build a fresh one.

The mathematical gem also looks for "liblasem" rather than "liblasem0.4" as installed by the lasem0.4-devel package, so it is necessary to add a symlink to your /lib directory using:

ln -s /lib/liblasem-0.4.dll.a /lib/liblasem.dll.a

Ruby Gems are not installed to a location that is in your path normally. Gems are installed to ~/bin/ - you should add this to your path before calling make:

export PATH=~/bin:$PATH

Finally, you’ll need to manually install fonts for lasem via the following commands:

mkdir /usr/share/fonts/truetype cd /usr/share/fonts/truetype
curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf

Mac OS X

Mac OS X should work in the same way as for ubuntu by using the Homebrew package manager, with the exception that you can simply install the ruby package via brew rather than using a ruby-specific version manager.

You’ll likely also need to install additional fonts for the PDF build via mathematical, which you can do with:

cd ~/Library/Fonts
curl -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmex10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmmi10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmr10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/cmsy10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/esint10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/eufm10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msam10.ttf \
     -LO http://mirrors.ctan.org/fonts/cm/ps-type1/bakoma/ttf/msbm10.ttf

Then install the required Ruby Gems.

Linux (Debian, Ubuntu, etc.)

The instructions for the Ubuntu / Windows 10 installation are generally applicable to native Linux environments using Debian packages, such as Debian and Ubuntu, although the exact list of packages to install may differ.

Other distributions using different package managers, such as RPM (Fedora) and Yum (SuSE) will have different requirements.

Using rbenv or rvm is neccessary, since the system Ruby packages are often well out of date.

Once the environment manager, Ruby, and ruby_build have been installed, install the required Ruby Gems.

Ruby Gems

The following ruby gems can be installed directly via the gem install command, once the platform is set up:

gem install asciidoctor -v 2.0.16
gem install coderay -v 1.1.1
gen install rouge -v 3.19.0
gem install ttfunk -v 1.5.1

# Required only for pdf builds
gem install asciidoctor-pdf -v 1.5.0
gem install asciidoctor-mathematical -v 0.3.5

License

The specification Asciidoctor source files are licensed under the Creative Commons Attribution 4.0 International License; see https://creativecommons.org/licenses/by/4.0/

Additional source files used to build the specification are under a mixture of Apache 2.0 and MIT licenses. See the LICENSE file for details.

The official Specification HTML and PDF output documents are posted in the OpenCL Registry. These Specifications are placed under the proprietary Khronos specification copyright and license.

OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.

Revision History

  • 2020-03-13 - Updated package versions to match Travis build.

  • 2019-06-20 - Add directions for publishing OpenCL 2.2 reference pages, generated from the spec sources in this repository, in the OpenCL-Registry repository.

  • 2018-02-15 - Retarget document from Vulkan repository for OpenCL asciidoctor spec builds.

More Repositories

1

glTF

glTF – Runtime 3D Asset Delivery
HTML
7,152
star
2

MoltenVK

MoltenVK is a Vulkan Portability implementation. It layers a subset of the high-performance, industry-standard Vulkan graphics and compute API over Apple's Metal graphics framework, enabling Vulkan applications to run on macOS, iOS and tvOS.
Objective-C++
4,788
star
3

Vulkan-Samples

One stop solution for all Vulkan samples
C++
4,176
star
4

glslang

Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
C++
3,009
star
5

Vulkan-Hpp

Open-Source Vulkan C++ API
C++
2,691
star
6

WebGL

The Official Khronos WebGL Repository
HTML
2,637
star
7

glTF-Sample-Models

glTF Sample Models
Mathematica
2,593
star
8

Vulkan-Docs

The Vulkan API Specification and related tools
JavaScript
2,527
star
9

UnityGLTF

Runtime glTF 2.0 Loader for Unity3D
C#
1,818
star
10

SPIRV-Cross

SPIRV-Cross is a practical tool and library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages.
GLSL
1,748
star
11

Vulkan-Guide

One stop shop for getting started with the Vulkan API
Makefile
1,586
star
12

glTF-Blender-IO

Blender glTF 2.0 importer and exporter
Python
1,488
star
13

glTF-Sample-Viewer

Physically-Based Rendering in glTF 2.0 using WebGL
JavaScript
1,084
star
14

SPIRV-Tools

C++
1,071
star
15

glTF-Tutorials

glTF Tutorials
Python
951
star
16

KTX-Software

KTX (Khronos Texture) Library and Tools
C++
866
star
17

Vulkan-Headers

Vulkan header files and API registry
C++
838
star
18

glTF-Blender-Exporter

Moved to https://github.com/KhronosGroup/glTF-Blender-IO.
Python
836
star
19

Vulkan-ValidationLayers

Vulkan Validation Layers (VVL)
C++
739
star
20

Khronosdotorg

Website resource pages for Khronos.org. Community is encouraged to help keep up-to-date
HTML
716
star
21

OpenXR-SDK

Generated headers and sources for OpenXR loader.
C++
688
star
22

OpenGL-Registry

OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
C
683
star
23

SPIRV-Reflect

SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications.
C
665
star
24

OpenCOLLADA

C++
652
star
25

OpenCL-Headers

Khronos OpenCL-Headers
C
620
star
26

OpenCL-SDK

OpenCL SDK
C++
539
star
27

OpenXR-SDK-Source

Sources for OpenXR loader, basic API layers, and example code.
Python
518
star
28

SyclParallelSTL

Open Source Parallel STL implementation
C++
515
star
29

Vulkan-Loader

Vulkan Loader
C
508
star
30

COLLADA2GLTF

COLLADA to glTF converter
C++
499
star
31

VK-GL-CTS

Khronos Vulkan, OpenGL, and OpenGL ES Conformance Tests
C++
464
star
32

Vulkan-Samples-Deprecated

Vulkan sample code
454
star
33

SPIRV-LLVM-Translator

A tool and a library for bi-directional translation between SPIR-V and LLVM IR
LLVM
422
star
34

Vulkan-LoaderAndValidationLayers

**Deprecated repository** for Vulkan loader and validation layers
C++
414
star
35

OpenGL-Refpages

OpenGL and OpenGL ES reference page sources, and generated HTML used as backing store for khronos.org
HTML
392
star
36

OpenCL-CLHPP

Khronos OpenCL-CLHPP
C++
329
star
37

glTF-Validator

Tool to validate glTF assets.
Dart
321
star
38

OpenCL-Guide

A guide to help developers get up and running quickly with the OpenCL programming framework
CMake
295
star
39

GLSL

GLSL Shading Language Issue Tracker
282
star
40

Vulkan-Tools

Vulkan Utilities and Tools
C++
270
star
41

SPIRV-LLVM

This project is no longer active. Please join us at
C++
259
star
42

SPIRV-Headers

SPIRV-Headers
C++
229
star
43

OpenCL-ICD-Loader

The OpenCL ICD Loader project.
C
226
star
44

NNEF-Tools

The NNEF Tools repository contains tools to generate and consume NNEF documents
Python
220
star
45

ANARI-SDK

ANARI Software Development Kit (SDK)
C++
207
star
46

WebGLDeveloperTools

JavaScript
200
star
47

glTF-CSharp-Loader

C# Reference Loader for glTF
C#
193
star
48

SPIR

C++
178
star
49

glTF-Asset-Generator

Tool for generating various glTF assets for importer validation
C#
160
star
50

OpenCL-CTS

The OpenCL Conformance Tests
C++
149
star
51

Vulkan-Ecosystem

Public repository for Vulkan Ecosystem issues
134
star
52

WebGLNext-Proposals

Proposals for the design of the WebGL Next API.
WebIDL
132
star
53

OpenXR-Docs

OpenXR Specification sources and related material
Python
128
star
54

Vulkan-ExtensionLayer

Layer providing Vulkan features when native support is unavailable
C
128
star
55

SYCL-Docs

SYCL Open Source Specification
JavaScript
114
star
56

libclcxx

OpenCL specific C++ libraries implemented in C++ for OpenCL kernel language published in releases of OpenCL-Docs
109
star
57

SPIRV-Registry

SPIR-V specs
HTML
108
star
58

SPIRV-Guide

One stop shop for getting started with SPIR-V.
104
star
59

OpenCL-Registry

OpenCL API and Extension Registry.
HTML
100
star
60

openvx-samples

OpenVX Samples to use with any conformant implementation of OpenVX
C++
99
star
61

Vulkan-MemoryModel

Vulkan Memory Model
C++
98
star
62

3D-Formats-Guidelines

Guidelines for artists and developers using Khronos Group 3D formats.
98
star
63

EGL-Registry

EGL API and Extension Registry
HTML
98
star
64

glTF-IBL-Sampler

Sampler to create the glTF sample environments
C++
89
star
65

LLVM-SPIRV-Backend

An LLVM backend generating SPIR-V binary.
86
star
66

Vulkan-Profiles

Vulkan Profiles Tools
C++
84
star
67

glTF-External-Reference

glTF Experience Format (glXF)
73
star
68

Basis-Universal-Transcoders

A collection of optimized WebAssembly transcoders for Basis Universal compressed GPU texture formats.
WebAssembly
72
star
69

Vulkan-Samples-Assets

Vulkan Samples Assets
72
star
70

KTX-Specification

KTX file format source
CSS
70
star
71

OpenXR-Registry

Registry of OpenXR Specifications and related material
HTML
70
star
72

glTF-Sample-Environments

glTF sample environments for the glTF Sample Viewer
Batchfile
68
star
73

glTF-Project-Explorer

Tool to provide a filterable registry of glTF community projects.
TypeScript
67
star
74

3DC-Asset-Creation

Asset creation guidelines and workflows to streamline the creation of 3D digital content for use in e-commerce
Shell
66
star
75

SYCL-CTS

SYCL Conformance Tests
C++
61
star
76

OpenXR-CTS

Conformance test suite for OpenXR
C++
56
star
77

Vulkan-Utility-Libraries

Utility libraries for Vulkan developers
C++
55
star
78

siggraph2012course

Presentations for SIGGRAPH 2012 course "Graphics Programming on the Web" covering HTML5 technologies (Canvas, CSS, etc.), WebGL and WebCL
HTML
53
star
79

WebCL

The Official Khronos WebCL Repository
HTML
50
star
80

ToneMapping

A collection of tone mappers for the display of 3D graphics
JavaScript
47
star
81

OpenVX-Registry

OpenVX API and Extension Registry.
HTML
44
star
82

SPIR-Tools

SPIR-Tools
C
44
star
83

Vulkan-Portability

40
star
84

OpenXR-Hpp

Open-Source OpenXR C++ language projection
C++
40
star
85

OpenCL-CXX

OpenCL C++ Kernel Language Spec sources.
TeX
39
star
86

webcl-validator

WebCL Validator
C++
38
star
87

DataFormat

Khronos Data Format Specification
C
36
star
88

OpenCL-TTL

Tensor Tiling Library
C
33
star
89

OpenXR-Tutorials

OpenXR Tutorials [Work in progress, do not use to study OpenXR yet]
C++
32
star
90

WebGLPerf

WebGL performance regression tests
HTML
32
star
91

COLLADA-CTS

Welcome to the COLLADA Conformance Test Suite
Python
32
star
92

ANARI-Docs

ANARI Documentation
JavaScript
30
star
93

glTF-Compressonator

Fork of AMD GPUOpen Compressonator tool , for the purpose of further enhancing glTF support. and prototyping for ETC1S CRN, CTTF_128 Universal Formats, Transcoders, and Supercompression
C++
30
star
94

Education-Forum

content to support educators developing courses on Khronos technologies
29
star
95

khronosgroup.github.io

Visit https://github.khronos.org for a directory of all our GitHub Repositories
HTML
27
star
96

SPIRV-Visualizer

Client side only Javascript to visualize a SPIR-V Module binary
JavaScript
26
star
97

OpenVG-Docs

OpenVG Specification source
C
25
star
98

Vulkan-Site

Vulkan Documentation Project framework for integrated documentation site with spec, proposals, guide, and more
JavaScript
25
star
99

glTF-Generator-Registry

An open registry of tools that create glTF assets.
25
star
100

SYCL_Reference

SYCL Reference Manual
C++
25
star