blob: fa1b4a6a100e61afe2eaf3b76281d42e1f8ae854 [file] [log] [blame]
Name
IMG_context_priority
Name Strings
EGL_IMG_context_priority
Contributors
Ben Bowman, Imagination Techonologies
Graham Connor, Imagination Techonologies
Contacts
Ben Bowman, Imagination Technologies (benji 'dot' bowman 'at'
imgtec 'dot' com)
Status
Complete
Version
Version 1.1, 8 September 2009
Number
EGL Extension #10
Dependencies
Requires EGL 1.0.
This extension is written against the wording of the EGL 1.4
Specification - May 2, 2008 (but may be implemented against earlier
versions).
Overview
This extension allows an EGLContext to be created with a priority
hint. It is possible that an implementation will not honour the
hint, especially if there are constraints on the number of high
priority contexts available in the system, or system policy limits
access to high priority contexts to appropriate system privilege
level. A query is provided to find the real priority level assigned
to the context after creation.
New Types
None
New Procedures and Functions
None
New Tokens
New attributes accepted by the <attrib_list> argument of
eglCreateContext
EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100
New attribute values accepted in the <attrib_list> argument
of eglCreateContext:
EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101
EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102
EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103
Additions to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)
Modify the list of attributes supported by eglCreateContext in
section 3.7.1 (Creating Rendering Contexts) on p. 42:
"<attrib_list> specifies a list of attributes for the context.
The list has the same structure as described for
eglChooseConfig. The only attributes that can be specified in
<attrib_list> are EGL_CONTEXT_CLIENT_VERSION and
EGL_CONTEXT_PRIORITY_LEVEL_IMG. The EGL_CONTEXT_CLIENT_VERSION
attribute may only be specified when creating a OpenGL ES
context (e.g. when the current rendering API is
EGL_OPENGL_ES_API).
<attrib_list> may be NULL or empty (first attribute is
EGL_NONE), in which case attributes assume their default values
as described below.
EGL_CONTEXT_CLIENT_VERSION determines which version of an OpenGL
ES context to create. An attribute value of 1 specifies creation
of an OpenGL ES 1.x context. An attribute value of 2 specifies
creation of an OpenGL ES 2.x context. The default value for
EGL_CONTEXT_CLIENT_VERSION is 1.
EGL_CONTEXT_PRIORITY_LEVEL_IMG determines the priority level of
the context to be created. This attribute is a hint, as an
implementation may not support multiple contexts at some
priority levels and system policy may limit access to high
priority contexts to appropriate system privilege level. The
default value for EGL_CONTEXT_PRIORITY_LEVEL_IMG is
EGL_CONTEXT_PRIORITY_MEDIUM_IMG."
Modify the list of attributes supported by eglQueryContext in
section 3.7.4 (Context Queries) on p. 46:
"eglQueryContext returns in <value> the value of attribute for
<ctx>. <attribute> must be set to EGL_CONFIG_ID,
EGL_CONTEXT_CLIENT_TYPE, EGL_CONTEXT_CLIENT_VERSION,
EGL_RENDER_BUFFER, or EGL_CONTEXT_PRIORITY_LEVEL_IMG.
...
Querying EGL_CONTEXT_PRIORITY_LEVEL_IMG returns the priority
this context was actually created with. Note: this may not be
the same as specified at context creation time, due to
implementation limits on the number of contexts that can be
created at a specific priority level in the system."
ISSUES:
1) Should the context priority be treated as a hint or a requirement
RESOLVED: The context priority should be a hint. System policy may
limit high priority contexts to appropriate system privilege level.
Implementations may have a limit on the number of context supported
at each priority, and may require all contexts within a process to
have the same priority level.
2) Can an application find out what priority a context was assigned?
RESOLVED: Provide a query to find the assigned priority for a
context. An application may find that it has a lower (or higher)
priority than requested (although it probably cannot do much with
the information).
3) How many priority levels should be defined?
RESOLVED: Three seems appropriate, as the highest provides the
largest GPU timeslice and reduced latency. It might be useful to
specify a low priority context which has a small timeslice and high
latency. It is possible that a request for LOW will actually return
MEDIUM on an implementation that doesn't differentiate between the
lower two levels.
4) What should the default priority level be if not specified?
OPTION 1: HIGH - This allows applications that are unaware of
this extension to get the highest priority possible.
OPTIONS 2: MEDIUM - This allows truly high priority applications
to differentiate themselves from applications which are unaware
of this extension.
RESOLVED:
OPTION 2: MEDIUM - Allow truly high priority applications to
differentiate themselves.
Revision History
Version 1.1, 08/09/2009 (Jon Leech) Assign extension number and
publish in the Registry. Formatting cleanup.
Version 1.0, 30/04/2009 - Final clean up. Marked issues as resolved,
take out draft status
Version 0.3, 22/04/2009 - enums assigned from Khronos registry.
Version 0.2, 02/04/2009 - feedback from gdc.
Version 0.1, 31/03/2009 - first draft.