blob: 4381ee3dda771ca1d8d50d827230c50539f62e3d [file]
Name
EXT_shader_clock
Name Strings
GL_EXT_shader_clock
Contact
Ashley Smith, Collabora <ashley.smith@collabora.com>
Contributors
Ashley Smith, Collabora
and contributors to the ARB_shader_clock spec,
which provided the basis for this spec.
Notice
Copyright (c) 2025 The Khronos Group Inc. Copyright terms at
http://www.khronos.org/registry/speccopyright.html
Status
Draft
Version
Version 0.1, 2025/04/02
Number
OpenGL ES Extension #348
Dependencies
This extension is written against the OpenGL ES 3.1 specification.
Overview
This extension is a port of GL_ARB_shader_clock to OpenGL ES. For the
complete overview of this extension, refer to the "Overview" section of
GL_ARB_shader_clock.
Differences from GL_ARB_shader_clock
Append the EXT suffix to all new symbols.
Renumber sections to match the OpenGL ES 3.1 Specification.
Do not include GL_ARB_gpu_shader_int64 support and remove any references to
the uint64 type.
New Procedures and Functions
None.
New Tokens
None.
IP Status
None.
Modifications to the OpenGL Shading Language Specification, Version 4.60
Including the following line in a shader can be used to control the
language features described in this extension:
#extension GL_EXT_shader_clock : <behavior>
where <behavior> is as specified in section 3.3.
New preprocessor #defines are added to the OpenGL Shading Language:
#define GL_EXT_shader_clock 1
Additions to Chapter 8 of the OpenGL ES Shading Language Specification
(Built-in Functions)
Add New Section 8.16, "Timing Functions"
Syntax:
uvec2 clock2x32EXT(void);
clock2x32EXT() returns a value representing the current execution clock as
seen by the shader processor encoded as a two-component vector of 32-bit
unsigned integers with the first component containing the 32 least
significant bits and the second component containing the 32 most significant
bits. Time monotonically increments as the processor executes instructions.
The returned time will wrap after it exceeds the maximum value representable
in 64 bits. The units of time are not defined and need not be constant. Time
is not guaranteed to be dynamically uniform across either a work group or a
invocations of a single draw or dispatch. However time is guaranteed to be
dynamically uniform across a single sub-group but only in a given shader
stage (where sub-group is implementation dependent and may be just one
invocation). The clock2x32EXT() functions serve as a code motion barriers.
Issues
Revision History
Rev Date Author Changes
--- ---------- -------------- ------------------------------------------
1 2025/04/02 ashleysmithcol Initial revision based on ARB_shader_clock