зеркало из https://github.com/AvaloniaUI/angle.git
168 строки
5.7 KiB
Plaintext
168 строки
5.7 KiB
Plaintext
|
Name
|
||
|
|
||
|
KHR_parallel_shader_compile
|
||
|
|
||
|
Name Strings
|
||
|
|
||
|
GL_KHR_parallel_shader_compile
|
||
|
|
||
|
Contact
|
||
|
|
||
|
Geoff Lang, (geofflang 'at' google.com)
|
||
|
|
||
|
Contributors
|
||
|
|
||
|
Timothy Lottes, AMD
|
||
|
Graham Sellers, AMD
|
||
|
Eric Werness, NVIDIA
|
||
|
Geoff Lang, Google
|
||
|
Daniel Koch, NVIDIA
|
||
|
|
||
|
Notice
|
||
|
|
||
|
Copyright (c) 2015 The Khronos Group Inc. Copyright terms at
|
||
|
http://www.khronos.org/registry/speccopyright.html
|
||
|
|
||
|
Status
|
||
|
|
||
|
Complete
|
||
|
|
||
|
Version
|
||
|
|
||
|
Last Modified Date: 2017-04-24
|
||
|
Revision: 2
|
||
|
|
||
|
Number
|
||
|
|
||
|
ARB Extension #192
|
||
|
OpenGL ES Extension #288
|
||
|
|
||
|
Dependencies
|
||
|
|
||
|
This extension is written against OpenGL 4.5 (CoreProfile) dated
|
||
|
May 28 2015.
|
||
|
|
||
|
OpenGL ES 2.0 is required (for mobile).
|
||
|
|
||
|
Overview
|
||
|
|
||
|
Compiling GLSL into implementation-specific code can be a time consuming
|
||
|
process, so a GL implementation may wish to perform the compilation in a
|
||
|
separate CPU thread. This extension provides a mechanism for the application
|
||
|
to provide a hint to limit the number of threads it wants to be used to
|
||
|
compile shaders, as well as a query to determine if the compilation process
|
||
|
is complete.
|
||
|
|
||
|
New Procedures and Functions
|
||
|
|
||
|
void MaxShaderCompilerThreadsKHR(uint count);
|
||
|
|
||
|
New Tokens
|
||
|
|
||
|
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
|
||
|
GetInteger64v, GetFloatv, and GetDoublev:
|
||
|
|
||
|
MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
|
||
|
|
||
|
Accepted as part of the <pname> parameter to GetShaderiv and
|
||
|
accepted as part of the <pname> parameter to GetProgramiv:
|
||
|
|
||
|
COMPLETION_STATUS_KHR 0x91B1
|
||
|
|
||
|
IP Status
|
||
|
|
||
|
None.
|
||
|
|
||
|
Additions to Chapter 7 "Programs and Shaders",
|
||
|
|
||
|
Append to the end of 7.1 "Shader Objects",
|
||
|
|
||
|
Applications may use the following to hint to the driver the maximum
|
||
|
number background threads it would like to be used in the process of
|
||
|
compiling shaders or linking programs,
|
||
|
|
||
|
void MaxShaderCompilerThreadsKHR(uint count);
|
||
|
|
||
|
where <count> is the number of background threads. A <count> of zero
|
||
|
specifies a request for no parallel compiling or linking and a <count> of
|
||
|
0xFFFFFFFF requests an implementation-specific maximum.
|
||
|
|
||
|
An implementation may combine the maximum compiler thread request from
|
||
|
multiple contexts in a share group in an implementation-specific way.
|
||
|
|
||
|
An application can query the current MaxShaderCompilerThreadsKHR <count>
|
||
|
by calling GetIntegerv with <pname> set to MAX_SHADER_COMPILER_THREADS_KHR,
|
||
|
which returns the value of the current state (Table 23.51).
|
||
|
|
||
|
|
||
|
Add to 7.13 "Shader, Program, and Program Pipeline Queries" under the
|
||
|
descriptions for "pname" for "GetShaderiv",
|
||
|
|
||
|
If <pname> is COMPLETION_STATUS_KHR, TRUE is returned if the shader
|
||
|
compilation has completed, FALSE otherwise.
|
||
|
|
||
|
Add to 7.13 "Shader, Program, and Program Pipeline Queries" under the
|
||
|
descriptions for "pname" for "GetProgramiv",
|
||
|
|
||
|
If <pname> is COMPLETION_STATUS_KHR, TRUE is returned if the program
|
||
|
linking has completed, FALSE otherwise.
|
||
|
|
||
|
New State
|
||
|
|
||
|
Add to Table 23.51: Hints
|
||
|
Get Value Type Get Command Initial Value Description Sec
|
||
|
------------------------------- ---- ------------ ------------- -------------------- ----
|
||
|
MAX_SHADER_COMPILER_THREADS_KHR Z+ GetIntegerv 0xFFFFFFFF Max compile threads 7.13
|
||
|
|
||
|
Add to Table 23.32: Program Object State
|
||
|
Get Value Type Get Command Initial Value Description Sec
|
||
|
---------------------- ---- ------------ ------------- -------------------- ----
|
||
|
COMPLETION_STATUS_KHR B GetProgramiv TRUE Program linking has 7.13
|
||
|
completed
|
||
|
|
||
|
Add to Table 23.30: Shader Object State
|
||
|
Get Value Type Get Command Initial Value Description Sec
|
||
|
--------------------- ---- ------------ ------------- -------------------- ----
|
||
|
COMPLETION_STATUS_KHR B GetShaderiv TRUE Shader compilation 7.13
|
||
|
has completed
|
||
|
|
||
|
Interactions with OpenGL ES
|
||
|
|
||
|
If implemented in OpenGL ES ignore all references to GetDoublev.
|
||
|
|
||
|
If the supported ES version is less than 3.0, ignore all references to
|
||
|
GetInteger64v.
|
||
|
|
||
|
Issues
|
||
|
|
||
|
1) Where should the hint state be stored?
|
||
|
|
||
|
UNRESOLVED: Each context has its own value which may be specified and
|
||
|
queried, but an implementation may choose to combine the hints from multiple
|
||
|
contexts in an implementation-specific manner. There isn't really any
|
||
|
precedent for per-share group state.
|
||
|
|
||
|
2) Can we make the requirements more strict?
|
||
|
|
||
|
RESOLVED: We could, but making sure all of the error behavior is correct and
|
||
|
fully specified would likely take more time than we have. This spec allows
|
||
|
an application to clearly request its intent even if there aren't guarantees
|
||
|
that the implementation will exactly obey the request.
|
||
|
|
||
|
3) Does glGetIntegerv(MAX_SHADER_COMPILER_THREADS_KHR) just return the
|
||
|
value set by MaxShaderCompilerThreadsKHR? Or, if the state is 0xFFFFFFFF
|
||
|
("do something implementation specific"), does it return the number of
|
||
|
threads the implementation has actually chosen to use?
|
||
|
|
||
|
RESOLVED: As with other state queries, this returns the value that was last
|
||
|
set, or if no value was set by the application it returns the default state
|
||
|
value (0xFFFFFFFF).
|
||
|
|
||
|
Revision History
|
||
|
|
||
|
Rev Date Author Changes
|
||
|
--- ---------- -------- ---------------------------------------------
|
||
|
1 2017-03-23 glang Cast as KHR based on v6 of
|
||
|
ARB_parallel_shader_compile.
|
||
|
2 2017-04-24 dgkoch Spec clarifications, add issue 3.
|