|
a390ebd9
|
2018-10-18T13:04:40
|
|
Add compiler printf attribute to relevant functions
Relands 27a472c60 with reinterpret_cast changed to C-style cast to
support types that are pointers on some platforms and integers on
others.
This commit includes fixes to undefined behavior caught by this
attribute. The following changes have been made:
- 0x%0.8p is changed to %016 PRIxPTR. Both 0 and . have undefined
behavior with p. Additionally, %p already prints 0x with both gcc and
clang. This results in a small output change:
void *x = (void *)0x1234;
void *y = (void *)0x1234567890abcdef;
printf("|%0.8p|\n", x);
printf("|%0.8p|\n", y);
printf("|%016" PRIxPTR "|\n", (uintptr_t)x);
printf("|%016" PRIxPTR "|\n", (uintptr_t)y);
prints:
|0x00001234|
|0x1234567890abcdef|
|0x0000000000001234|
|0x1234567890abcdef|
- %d used for GLintptr, GLsizeiptr, EGLTime and EGLnsecsANDROID is
changed to %llu and the relevant argument is cast to unsigned long
long. This is due to these types being typedefs to unknown types (on
Linux for example, these are unsigned long, and my guess would be
unsigned long long on Windows where long is 32 bits).
- %llu is used for GLuint64, which could be unsigned long (as is on
Linux). Those arguments are cast to unsigned long long.
- %p is used for some EGLNative types, but those types may not be a
pointer. Those arguments are cast to uintptr_t and printed as above.
Bug: angleproject:2928
Change-Id: Idf9f705c3d00f69e41e7603453016276a2e13a64
Reviewed-on: https://chromium-review.googlesource.com/c/1300913
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e9503ae9
|
2018-10-25T17:55:04
|
|
Revert "Add compiler printf attribute to relevant functions"
This reverts commit 27a472c601aa542f48ca5944fb769e2971a0594f.
Reason for revert: Causing failures on 32-bit Linux configs:
https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8931673733828416640/+/steps/compile/0/stdout
../../third_party/angle/src/libGLESv2/entry_points_egl.cpp:257:11: error: reinterpret_cast from 'EGLNativeWindowType' (aka 'unsigned long') to 'uintptr_t' (aka 'unsigned int') is not allowed
reinterpret_cast<uintptr_t>(win), reinterpret_cast<uintptr_t>(attrib_list));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/angle/src/common/debug.h:230:112: note: expanded from macro 'EVENT'
#define EVENT(message, ...) gl::ScopedPerfEventHelper scopedPerfEventHelper("%s" message "\n", __FUNCTION__, ##__VA_ARGS__);
^~~~~~~~~~~
../../third_party/angle/src/libGLESv2/entry_points_egl.cpp:314:11: error: reinterpret_cast from 'EGLNativePixmapType' (aka 'unsigned long') to 'uintptr_t' (aka 'unsigned int') is not allowed
reinterpret_cast<uintptr_t>(pixmap), reinterpret_cast<uintptr_t>(attrib_list));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Original change's description:
> Add compiler printf attribute to relevant functions
>
> This commit includes fixes to undefined behavior caught by this
> attribute. The following changes have been made:
>
> - 0x%0.8p is changed to %016 PRIxPTR. Both 0 and . have undefined behavior with
> p. Additionally, %p already prints 0x with both gcc and clang. This
> results in a small output change:
>
> void *x = (void *)0x1234;
> void *y = (void *)0x1234567890abcdef;
>
> printf("|%0.8p|\n", x);
> printf("|%0.8p|\n", y);
>
> printf("|%016" PRIxPTR "|\n", reinterpret_cast<uintptr_t>(x));
> printf("|%016" PRIxPTR "|\n", reinterpret_cast<uintptr_t>(y));
>
> prints:
>
> |0x00001234|
> |0x1234567890abcdef|
> |0x0000000000001234|
> |0x1234567890abcdef|
>
> - %d used for GLintptr, GLsizeiptr, EGLTime and EGLnsecsANDROID is
> changed to %llu and the relevant argument is cast to unsigned long
> long. This is due to these types being typedefs to unknown types (on
> Linux for example, these are unsigned long, and my guess would be
> unsigned long long on Windows where long is 32 bits).
> - %llu is used for GLuint64, which could be unsigned long (as is on
> Linux). Those arguments are cast to unsigned long long.
> - %p is used for some EGLNative types, but those types may not be a
> pointer. Those arguments are cast to uintptr_t and printed as above.
>
> Bug: angleproject:2928
> Change-Id: I63e9e998c72701ce8582f1ebf25d6374be9090e4
> Reviewed-on: https://chromium-review.googlesource.com/c/1289232
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org
Change-Id: I4f3cea64977bee9f889db6c995371bd2bbc6d81b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2928
Reviewed-on: https://chromium-review.googlesource.com/c/1299480
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
27a472c6
|
2018-10-18T13:04:40
|
|
Add compiler printf attribute to relevant functions
This commit includes fixes to undefined behavior caught by this
attribute. The following changes have been made:
- 0x%0.8p is changed to %016 PRIxPTR. Both 0 and . have undefined behavior with
p. Additionally, %p already prints 0x with both gcc and clang. This
results in a small output change:
void *x = (void *)0x1234;
void *y = (void *)0x1234567890abcdef;
printf("|%0.8p|\n", x);
printf("|%0.8p|\n", y);
printf("|%016" PRIxPTR "|\n", reinterpret_cast<uintptr_t>(x));
printf("|%016" PRIxPTR "|\n", reinterpret_cast<uintptr_t>(y));
prints:
|0x00001234|
|0x1234567890abcdef|
|0x0000000000001234|
|0x1234567890abcdef|
- %d used for GLintptr, GLsizeiptr, EGLTime and EGLnsecsANDROID is
changed to %llu and the relevant argument is cast to unsigned long
long. This is due to these types being typedefs to unknown types (on
Linux for example, these are unsigned long, and my guess would be
unsigned long long on Windows where long is 32 bits).
- %llu is used for GLuint64, which could be unsigned long (as is on
Linux). Those arguments are cast to unsigned long long.
- %p is used for some EGLNative types, but those types may not be a
pointer. Those arguments are cast to uintptr_t and printed as above.
Bug: angleproject:2928
Change-Id: I63e9e998c72701ce8582f1ebf25d6374be9090e4
Reviewed-on: https://chromium-review.googlesource.com/c/1289232
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
77db6f4a
|
2018-09-23T17:28:55
|
|
Use global Context lookup in single-threaded cases.
In single-threaded cases we don't need to use a TLS lookup for the
current Context.
Assume a global context has 3 states: unset, set, and multi-threaded:
* global context unset -> set the global context
* global context set, matches TLS context -> set the global context
* global context set, doesn't match TLS -> set multi-threaded
* global context multi-threaded -> leave it
This also inlines the global context/TLS check into global_state.h.
Increases performance of the binding perf overhead test by up to 25%
and the draw call perf test by up to 3%.
Bug: angleproject:2824
Change-Id: Ib95953ca918f2408fe72ca83061f4e2d1bd1adad
Reviewed-on: https://chromium-review.googlesource.com/1231993
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b02fc662
|
2018-08-21T09:48:01
|
|
Lock around all EGL and GL calls with a global mutex.
BUG=angleproject:2464
Change-Id: I0231cc84777272f9cf26298c6a137f1ad3fd51d6
Reviewed-on: https://chromium-review.googlesource.com/1183441
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d20e80b8
|
2018-08-17T10:02:24
|
|
More EGL validation refactor
Added separate Validate* functions for CopyBuffers(), BindTexImage(),
ReleaseTexImage(), SwapInterval(), and BindAPI().
For ValidateBindTexImage() the textureObject is set by validation when
appropriate and then used in the core function to prevent replicating
the textureObject look-up code.
Bug: angleproject:798
Change-Id: Ia32076a10aa0b044c2bdc8e2e24dd36d002c5022
Reviewed-on: https://chromium-review.googlesource.com/1180090
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
43a2762d
|
2018-08-16T14:23:00
|
|
Refactoring EGL validation
Migrating much of EGL validation to use existing macros.
Added new Validate* functions for eglDestroySurface(),
eglDestroyContext(), eglWaitNative() functions.
This continues the EGL validation refactor begun with SwapBuffers.
Following similar pattern used there, but putting this out as an
intermediate change to verify that code looks good and is going in the
desired direction.
Bug: angleproject:798
Change-Id: Id7309b9686543c20b20e273b35df1f8b9010fcd3
Reviewed-on: https://chromium-review.googlesource.com/1178750
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3394a73d
|
2018-07-26T09:56:07
|
|
Refactor of EGL SwapBuffers validation
Move the Validation checks for SwapBuffers into new ValidateSwapBuffers
function instead of in-line.
This is a first commit for refactor of EGL validation. I'll continue
the refactor in a similar fashion to this.
Bug: angleproject:798
Change-Id: Icb308d66c93528c9e440ae68abe85e44f98ede82
Reviewed-on: https://chromium-review.googlesource.com/1151538
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
072c3519
|
2018-07-04T15:50:12
|
|
Fix missing return when validation fails in eglWaitNative.
BUG=angleproject:2707
Change-Id: Ibd70437e3a40a9a63b78ac9a4546c97611a97ba5
Reviewed-on: https://chromium-review.googlesource.com/1126458
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05a449a7
|
2018-06-20T18:08:04
|
|
Replace reinterpret_cast with safer or no cast
When casting types to one another in C++, the weaker the cast,
the better.
This change replaces instances of reinterpret_cast with static_cast
or no cast where it safe and correct to do so.
BUG=angleproject:2683
Change-Id: I99c9033614a65282ae1d78cf0f4b80fabd75877a
Reviewed-on: https://chromium-review.googlesource.com/1109396
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d11efaec
|
2018-06-20T11:43:41
|
|
Release the current context's surface before making the next context current.
We were calling context->releaseSurface on a context that was no longer
current, this somtimes caused incorrect framebuffers to be deleted.
BUG=angleproject:2464
Change-Id: I6859b5739a509c1343901f8c0eef1fdd1598cea1
Reviewed-on: https://chromium-review.googlesource.com/1108087
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2dabb4a3
|
2018-06-01T17:18:41
|
|
Make a context current when destroying it.
The destructors of objects in a context assume that the context is current
during destruction. If another context is current at this time, they can
delete objects from other contexts.
BUG=angleproject:2464
Change-Id: I813d092cc7f33a39c814edae5baa433733b4590c
Reviewed-on: https://chromium-review.googlesource.com/1083371
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
75359664
|
2018-04-11T01:42:27
|
|
Implement EGL_KHR_debug.
BUG=angleproject:1618
Change-Id: I790944b49badc910b6c72266469fcb8e86ac4252
Reviewed-on: https://chromium-review.googlesource.com/1019387
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dcda0e50
|
2018-05-10T12:50:43
|
|
Don't make redundant calls to Display::makeCurrent.
Refactor ValidateMakeCurrent to pass egl object pointers instead of handles.
BUG=angleproject:2464
Change-Id: I98859f56d238a38bd6755f00dce7344635690491
Reviewed-on: https://chromium-review.googlesource.com/1053877
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
1633663b
|
2018-04-24T16:39:15
|
|
Don't test for device loss in SwapBuffers and MakeCurrent.
Simply check if the device has already been lost. Chrome already checks
glGetGraphicsResetStatus after SwapBuffers and MakeCurrent.
BUG=angleproject:1472
BUG=621240
Change-Id: I95fe6306fa0c09191a4b1b93840c2143e069ef53
Reviewed-on: https://chromium-review.googlesource.com/1026527
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8ceea819
|
2018-04-10T03:07:13
|
|
Refactor packed enum generation to support EGL enums.
Convert the very simple EGL texture type enum.
BUG=angleproject:1618
Change-Id: Ieea382a282a8f2544f2982627e8445e6e5cea826
Reviewed-on: https://chromium-review.googlesource.com/1019386
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f0e89be6
|
2017-11-08T14:00:32
|
|
Use packed enums for the texture types and targets, part 1
In OpenGL there are two enum "sets" used by the API that are very
similar: texture types (or bind point) and texture targets. They only
differ in that texture types have GL_TEXTURE_CUBEMAP and target have
GL_TEXTURE_CUBEMAP_[POSITIVE|NEGATIVE]_[X|Y|Z].
This is a problem because in ANGLE we use GLenum to pass around both
types of data, making it difficult to know which of type and target a
variable is.
In addition these enums are placed somewhat randomly in the space of
OpenGL enums, making it slow to have a mapping from texture types to
some data. Such a mapping is in hot-code with gl::State::mTextures.
This commit stack makes the texture types and target enums be
translated to internal packed enums right at the OpenGL entry point
and used throughout ANGLE to have type safety and performance gains.
This is the first of two commit which does the refactor for all of the
validation and stops inside gl::Context. This was the best place to
split patches without having many conversions from packed enums to GL
enums.
BUG=angleproject:2169
Change-Id: Ib43da7e71c253bd9fe210fb0ec0de61bc286e6d3
Reviewed-on: https://chromium-review.googlesource.com/758835
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9db70de8
|
2017-07-04T18:28:42
|
|
Reland: Implement EGL_ANGLE_iosurface_client_buffer
Includes a fix for creating pbuffers with <buftype> EGL_D3D_TEXTURE
with EGL_WIDTH and EGL_HEIGHT attributes.
BUG=angleproject:1649
TBR=geofflang@chromium.org
Change-Id: Id2974b8fab02c3218febfac708b9b034e65cbc53
Reviewed-on: https://chromium-review.googlesource.com/823248
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7f5c3eb7
|
2017-12-12T14:54:17
|
|
Revert "Implement EGL_ANGLE_iosurface_client_buffer"
This reverts commit c7abc08034a30a41748eefc5b628a76d4e2daa8a.
Reason for revert: Might have broken Chromium Win10 composition due to validation changes.
Original change's description:
> Implement EGL_ANGLE_iosurface_client_buffer
>
> BUG=angleproject:1649
>
> Change-Id: I1e72c31d7c9497ad14039a8d3fb97317ab193cb2
> Reviewed-on: https://chromium-review.googlesource.com/559107
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
TBR=geofflang@chromium.org,cwallez@chromium.org
Change-Id: I605b710b6d76056d6276b09822cd6ddca277bfd0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:1649
Reviewed-on: https://chromium-review.googlesource.com/822172
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
c7abc080
|
2017-07-04T18:28:42
|
|
Implement EGL_ANGLE_iosurface_client_buffer
BUG=angleproject:1649
Change-Id: I1e72c31d7c9497ad14039a8d3fb97317ab193cb2
Reviewed-on: https://chromium-review.googlesource.com/559107
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
5ad52994
|
2017-11-14T12:43:40
|
|
Add generator for EGL proc table.
This should improve ANGLE startup time by avoiding creating a large
std::map filled with the entry points.
BUG=chromium:781460
Change-Id: I20cfdb10b99844d0f60759dda73b729991dc60fe
Reviewed-on: https://chromium-review.googlesource.com/768209
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
af143fef
|
2017-10-05T13:59:43
|
|
Refactor the eglQueryContext entry point.
BUG=angleproject:1635
Change-Id: Ia6ab5a2a7339d78912d7f871ed62941af1957eb1
Reviewed-on: https://chromium-review.googlesource.com/702856
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
16daadba
|
2017-08-26T23:34:31
|
|
GLES3: Auto-generate entry point header.
BUG=angleproject:1309
Change-Id: I40e3580c99df44338dfd1d06677e80fd0c57853e
Reviewed-on: https://chromium-review.googlesource.com/636520
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
70b5bb00
|
2017-08-28T13:32:37
|
|
Rename gl::FenceSync to gl::Sync.
The spec refers to Sync objects, FenceSyncs being a subtype. The
motivation for this fix is to clear up the FenceSync_ entry point for
auto-generation.
BUG=angleproject:1309
Change-Id: I94c440476d701628575e7a3eea68b6dd110f41c3
Reviewed-on: https://chromium-review.googlesource.com/636516
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
31ecbd70
|
2017-07-26T13:01:27
|
|
Refactor eglQuerySurface and eglSurfaceAttrib.
BUG=angleproject:2075
Change-Id: I6911a2a1e665237e1d262c06f3ccf2d84cc09669
Reviewed-on: https://chromium-review.googlesource.com/586860
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
137032d9
|
2017-07-13T10:11:12
|
|
Validate ANGLE_multiview end-points
The patch adds validation for the ANGLE_multiview end-points
and propagates the calls to the unimplemented stubs in Context.
The patch also removes the
glFramebufferTextureMultiviewSideBySideRobustANGLE end-point
because the size of the viewport offsets buffer can trivially
be computed from the number of views.
BUG=angleproject:2062
Change-Id: I9a10bc00c19825e586d3df2750fabea4daf5ef8f
Reviewed-on: https://chromium-review.googlesource.com/573861
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cf42a7e8
|
2017-07-12T16:49:58
|
|
Add ANGLE_multiview end-points and tokens
The patch adds the new end-points and tokens introduced
by ANGLE_multiview without implementing them.
BUG=angleproject:2062
Change-Id: I9be175263ab54b4f6d7537f05505b87ad763ee2d
Reviewed-on: https://chromium-review.googlesource.com/570051
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
315ecd20
|
2017-07-11T13:51:04
|
|
Add entry points for EGL_ANGLE_program_cache_control.
This instruments the plumbing for the extension without adding any
functionality or exposing the extensions string.
The extension text is also updated to reflect the new entry point
design and naming. Also this corrects a few mistakes.
This will be followed up by the tests (which won't run) and then
the extension functionality in ANGLE.
BUG=angleproject:1897
Change-Id: I5b009e23bc27da06b067375525bd6fc574027702
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fe54834f
|
2017-06-19T11:13:24
|
|
Proliferate gl::Context.
This enables a few small things: it will enable making the platform
a property of the Display rather than a global. The same goes for the
global logging annotator. Also it ensures all back-end implementations
have access to the GL / EGL state when available.
Also introduces a smart pointer helper class to angleutils for objects
that prefer to be destroyed with a context (gl::Context/egl::Display)
parameter. We were using std::unique_ptr in a few places that would
not work well with these objects.
BUG=angleproject:1156
Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba
Reviewed-on: https://chromium-review.googlesource.com/529706
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
61e16b44
|
2017-06-19T11:13:23
|
|
Context: Bind current display/surface.
Looking at the EGL spec, it says for eglGetCurrentDisplay:
"The display for the current context in the calling thread, for the
current rendering API, is returned."
This implies that MakeCurrent binds a display to a Context. There's
also pretty clear language for the read/draw Surface as well, that
they can only be bound to one Context/thread at a time. Hence we
don't need to duplicate this storage in the egl::Thread structure,
merely storing a pointer to the current Context, which has access
to the read/draw Surface and current Display.
BUG=angleproject:1156
Change-Id: Ia3b99d50b3591012c43e851834c1af02ff62a33f
Reviewed-on: https://chromium-review.googlesource.com/538865
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
948bbe51
|
2017-06-01T13:10:42
|
|
Redesign robust resource init as a display extension.
Also correct the enum allocation to values that are available to ANGLE.
BUG=angleproject:1635
Change-Id: I443f5654aa6a5049b4a1ae4c253cd6473b4e446e
Reviewed-on: https://chromium-review.googlesource.com/520002
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
6811a316
|
2017-05-24T16:50:06
|
|
Use GetPlatformDisplay instead of GetPlatformDisplayEXT.
This will allow us to use EGLAttrib and pass pointers as Display
init parameters if necessary.
BUG=angleproject:2042
Change-Id: Ib0f85d71bc9d3dff2db9453012f40303f3c3bd7c
Reviewed-on: https://chromium-review.googlesource.com/513518
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
231c7f56
|
2017-04-26T13:45:37
|
|
Apply clang-format to many files.
This cleans up the formatting in many places.
BUG=None
Change-Id: I6c6652ebc042f1f0ffecced53582d09d66b4f384
Reviewed-on: https://chromium-review.googlesource.com/487884
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2e16d96d
|
2017-04-19T14:06:36
|
|
GLES2: Use codegen for the entry point header.
This is a first step towards auto-generating more entry point files.
BUG=angleproject:1309
Change-Id: Ic75a627feb91c19b6bb398a6f9f1a37b603dea14
Reviewed-on: https://chromium-review.googlesource.com/483425
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f81ce4a3
|
2017-04-24T10:49:17
|
|
Refactoring: replace NULL by nullptr for pointers (3rd CL).
This CL mainly handles passing/returning NULL to/from a function.
BUG=angleproject:2001
Change-Id: I34802f792e710e3d7ff697cbe4701dc1bf5ab009
Reviewed-on: https://chromium-review.googlesource.com/485060
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4f285443
|
2017-04-21T12:15:49
|
|
Refactoring: replace NULL by nullptr for pointers (2nd CL).
This CL mainly handles the pointer comparisons (== or !=).
BUG=angleproject:2001
Change-Id: I25ac3b61032e7ad91459a1c6541cadc87cf9b160
Reviewed-on: https://chromium-review.googlesource.com/483935
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b2931601
|
2017-04-11T15:58:57
|
|
Add robust entry point for CompressedTex(Sub)Image
BUG=angleproject:1354
Change-Id: I925db827c4ccf4e6f037a058f8f6b960a56047e1
Reviewed-on: https://chromium-review.googlesource.com/474964
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ee218f27
|
2017-03-22T15:39:13
|
|
Re-land eglGetSyncValuesCHROMIUM extension.
This reverts commit 20c97cac2a15144b61ceec7404a9e6249c40f50a
and adds a few trivial changes to make it build with the current version
of ANGLE code.
Please see https://bugs.chromium.org/p/chromium/issues/detail?id=614147
for more details on how this extension will be used.
Original description:
This change adds implementation of eglGetSyncValuesCHROMIUM extension
on D3D11 with Direct Composition. This should work on Windows 8.1 and
above.
The implementation is based on IDXGISwapChain::GetFrameStatistics.
Extension documentation:
https://chromium.googlesource.com/chromium/src/gpu/+/master/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt
BUG=angleproject:1402
Change-Id: I4b77899f31a4c4cf1fa7f20ab12de5a02ccf74d8
Reviewed-on: https://chromium-review.googlesource.com/459217
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
09e7c0a4
|
2017-03-01T16:38:32
|
|
Avoid redundant INSERT_PROC_ADDRESS calls
PVS-Studio pointed out that seven GL functions were being initialized
twice. This isn't critical but is slightly inefficient.
R=jmadill@chromium.org
BUG=697659
Change-Id: I199bd06ae1136bc3b8efd519787d89f4447f326d
Reviewed-on: https://chromium-review.googlesource.com/448639
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
abf38572
|
2017-02-14T16:47:59
|
|
Remove old C++ ANGLE platform.
Now that the new platform is in place, we can remove the old methods.
Must be landed after https://codereview.chromium.org/2697463003/
BUG=angleproject:1892
BUG=chromium:678870
Change-Id: Ia29a3b120cf3521fc0409019c2e64e4dbc6f460d
Reviewed-on: https://chromium-review.googlesource.com/441274
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b1eeba1f
|
2017-02-13T16:36:40
|
|
Use a C API for the ANGLE platform.
The main purpose of this change is to fix a fuzzer bug where we would
trigger undefined behaviour calling between Chrome and ANGLE. It's
not specced how virtual function calls work if the shared objects are
not directly linked together, and ANGLE and Chrome are not linked.
Replace the old class-style API with a C dispatch table.
Follow-up work will make the Platform owned by the Display instead of
using global variables, but fixing this is a bit tricky.
BUG=angleproject:1892
BUG=chromium:678870
Change-Id: Iad188bc2e50f2b5e4a03ce0de233d686f569c705
Reviewed-on: https://chromium-review.googlesource.com/441273
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
70ee0f61
|
2017-02-06T16:04:20
|
|
Add destroy handler to SurfaceImpl.
This allows the Vulkan back-end to avoid storing a reference to
the VkDevice. This will extend to all the Vulkan object handle wrapper
types.
BUG=angleproject:1684
Change-Id: I3a98e94bc171ca27f225ce57996c3fdf9581e6e1
Reviewed-on: https://chromium-review.googlesource.com/424229
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c295e516
|
2017-01-27T17:47:50
|
|
Implement EGL_KHR_surfaceless_context
BUG=angleproject:1651
Change-Id: I710df14c2bfa55db2fb9b9715001756d1c1a8f1b
Reviewed-on: https://chromium-review.googlesource.com/434763
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
65603eb8
|
2017-01-12T16:48:03
|
|
Refactor EGL config entry points to to separate validation.
BUG=angleproject:1707
BUG=angleproject:798
Change-Id: I34fefa9f9bbd42ef05f222c8caf856a22cf206a3
Reviewed-on: https://chromium-review.googlesource.com/428293
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e70413c7
|
2017-01-12T16:35:17
|
|
Roll EGL headers.
Update CGL backend to use new EGL types.
BUG=angleproject:1707
Change-Id: I165e81a758cad0a8036aef68c44a57bcc61e982d
Reviewed-on: https://chromium-review.googlesource.com/428292
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
95401dbb
|
2016-12-15T11:27:48
|
|
Surface: Pass DisplayImpl to initialize and swap.
In new back-ends (Vulkan) this will allow us to avoid storing a ref
to the Renderer in the Surface class.
BUG=angleproject:1319
Change-Id: I3b3f50893070d2993e4e91dd82ee539a083b3727
Reviewed-on: https://chromium-review.googlesource.com/419837
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c339c4e5
|
2016-11-29T10:37:36
|
|
Split WebGL compatibility into two extensions.
The mechanism for requesting extensions is now a separate extension.
Added a way to query the extensions that support enabling.
BUG=angleproject:1523
Change-Id: I2efaa9f6d67b12ecae325f455404e34ba04d0e7c
Reviewed-on: https://chromium-review.googlesource.com/414529
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
64598b53
|
2016-11-11T08:25:44
|
|
Add the ANGLEPlatform entry points to eglGetProcAddress
Reland with a Windows build fix.
We want to move the Chromium initialization of the ANGLE platform from
being Windows-specific to being EGL-specific. Because the mechanisms by
which the ANGLE library is loaded are OS-specific, it is inconvenient to
use dlsym and friends to get the ANGLEPlatform entry points. Instead
we expose the through eglGetProcAddress which is readily available in the
EGL-specific part of Chromium.
BUG=angleproject:1621
Change-Id: I022a39493756a3b5d1ed626fd05e74af3f043211
Reviewed-on: https://chromium-review.googlesource.com/410066
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f58585cb
|
2016-11-11T21:20:24
|
|
Revert "Add the ANGLEPlatform entry points to eglGetProcAddress"
Produces a build warning in standalone, might require build file updates:
> locally defined symbol ANGLEPlatformInitialize imported in function <snip>
At least in GYP, libEGL does not have LIBANGLE_IMPLEMENTATION defined, so it defines this API with __declspec(dllimport), which is incorrect, since the function is local to the module. We should fix the layering and/or export defs.
BUG=angleproject:1621
This reverts commit 0504fcc17a173b1c1a3305931c159f519bbff97b.
Change-Id: Ida67db69eb64e4a8f2c13dcf129d40b332f2da9d
Reviewed-on: https://chromium-review.googlesource.com/410065
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0504fcc1
|
2016-11-11T08:25:44
|
|
Add the ANGLEPlatform entry points to eglGetProcAddress
We want to move the Chromium initialization of the ANGLE platform from
being Windows-specific to being EGL-specific. Because the mechanisms by
which the ANGLE library is loaded are OS-specific, it is inconvenient to
use dlsym and friends to get the ANGLEPlatform entry points. Instead
we expose the through eglGetProcAddress which is readily available in the
EGL-specific part of Chromium.
BUG=angleproject:1621
Change-Id: I7adbea003103d0331ec9eece7b881e27bd6b1a5d
Reviewed-on: https://chromium-review.googlesource.com/410063
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7b8f3c9b
|
2016-11-10T10:42:48
|
|
Encapsulate the thread local storage into an egl::Thread class.
Instead of having separate GetGlobal* functions, interact with the global
objects through a single Thread object. This reduces the number of TLS
lookups in many EGL functions and allows the Thread object to be passed
down to other objects if needed.
BUG=angleproject:1618
Change-Id: I1f9a89e8899d637633f4e91fda0e38ac308dd020
Reviewed-on: https://chromium-review.googlesource.com/409637
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
20c97cac
|
2016-11-04T18:27:56
|
|
Squashed commit of the following:
commit 0146dfeefa47b520e71f0e74230abd7dac163a79
Author: Stanislav Chiknavaryan <stanisc@chromium.org>
Date: Fri Nov 4 17:43:03 2016 -0700
Revert "Implementation of eglGetSyncValuesCHROMIUM extension."
This reverts commit 5d9f5df01ac5a384d9b7cbb49d9f98a76b62c7ad.
commit 0d920fe27bd8e73d831a9002548bde00fea78709
Author: Stanislav Chiknavaryan <stanisc@chromium.org>
Date: Fri Nov 4 17:23:11 2016 -0700
Revert "Fix EGLSyncControlTest.SyncValuesTest timeout on Windowse Server 2012 R2"
This reverts commit d258ca045f31eb43ec01b5501c84e9afd8e82cd6.
commit bde8defe53741855bb71fbf27bcb0a91cfafbd01
Author: Stanislav Chiknavaryan <stanisc@chromium.org>
Date: Fri Nov 4 17:22:58 2016 -0700
Revert "Disabling EGLSyncControlTest.SyncValuesTest"
This reverts commit a74183613955bd891f56f6a979a5391c16c64138.
commit f78e4b7e97b9d1259878f6902bb6ddeb0aeded87
Author: Stanislav Chiknavaryan <stanisc@chromium.org>
Date: Fri Nov 4 17:22:36 2016 -0700
Revert "Fix and re-enable EGLSyncControlTest.SyncValuesTest"
This reverts commit 138ec92f52da7c0fc8e6df08ac4e4e572bbf6b39.
commit f3933e6a04bd23473077d2fd74616023db3c9601
Author: Stanislav Chiknavaryan <stanisc@chromium.org>
Date: Fri Nov 4 17:20:26 2016 -0700
Revert "Handle nullptr mSwapChain in SwapChain11::getSyncValues"
This reverts commit af7f301f6ba9e5f31d1511142a936a9ba84169d0.
BUG=angleproject:1402
Change-Id: I99969e906e316574e9f739141de0e360d1edebd9
Reviewed-on: https://chromium-review.googlesource.com/408752
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Stanislav Chiknavaryan <stanisc@chromium.org>
|
|
2018c0ba
|
2015-12-08T11:48:51
|
|
Add a EGL_ANGLE_d3d_texture_client_buffer extension.
Allows creation of pbuffers from D3D texture objects.
BUG=540829
BUG=angleproject:1144
Change-Id: If8ea717ef011608cd01357c217837133d726d3ea
Reviewed-on: https://chromium-review.googlesource.com/316804
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a284f2ff
|
2015-08-07T16:49:07
|
|
Add stubs for EGL_EXT_swap_buffers_with_damage.
BUG=512090
Change-Id: I9413d6f5c13b9ea59ab9c923dc6c5d157f344166
Reviewed-on: https://chromium-review.googlesource.com/291652
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0a9661f2
|
2016-10-20T10:59:20
|
|
Implement robust the GetInternalFormativ entry point.
BUG=angleproject:1354
Change-Id: Ib25fe4905fdd6c532c67de1d4ca1ba37932f8e0b
Reviewed-on: https://chromium-review.googlesource.com/401149
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
47110bf4
|
2016-04-20T11:13:22
|
|
Implement CHROMIUM_copy_compressed_texture for D3D11.
BUG=angleproject:1356
Change-Id: Id563997d2921cf558c52a781ae66d8bde58d1f2f
Reviewed-on: https://chromium-review.googlesource.com/339847
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5d9f5df0
|
2016-09-27T13:28:25
|
|
Implementation of eglGetSyncValuesCHROMIUM extension.
This change adds implementation of eglGetSyncValuesCHROMIUM extension
on D3D11 with Direct Composition. This should work on Windows 8.1 and
above.
The implementation is based on IDXGISwapChain::GetFrameStatistics.
Extension documentation:
https://chromium.googlesource.com/chromium/src/gpu/+/master/GLES2/extensions/CHROMIUM/EGL_CHROMIUM_get_sync_values.txt
BUG=angleproject:1402
Change-Id: I306434dd8d85d618b14edfa38fc2a22e50fddacc
Reviewed-on: https://chromium-review.googlesource.com/390351
Commit-Queue: Stanislav Chiknavaryan <stanisc@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ff5b2d51
|
2016-09-07T11:32:23
|
|
Add a GL_ANGLE_robust_client_memory extension.
This allows specifying data size to all GL functions that provide a pointer to
client memory and a length parameter for all functions in which the driver
writes to client memory.
BUG=angleproject:1354
Change-Id: Ia68be1576b957cb529c87b5e0d1bd638c7dbd371
Reviewed-on: https://chromium-review.googlesource.com/382012
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c287ea6e
|
2016-09-16T14:46:51
|
|
Add WebGL validation extensions to ANGLE.
BUG=angleproject:1523
Change-Id: I6fecb5055ed8087665aeee34b3a066ea8f38d51b
Reviewed-on: https://chromium-review.googlesource.com/386281
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
97073d12
|
2016-04-20T10:42:34
|
|
Implement CHROMIUM_copy_texture for D3D11.
BUG=angleproject:1356
Change-Id: I70246762411dbeeb3e291e317854139a68d80070
Reviewed-on: https://chromium-review.googlesource.com/339434
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9c721c64
|
2016-08-02T14:56:23
|
|
Check for device loss on all applicable EGL entry-points
This will make applications aware of device loss on all EGL calls that
need to have an initialized display. For that purpose, we track the
device loss state at the egl::Display level instead of always querying
the implementation. This is correct because at device-loss at the
display level is non-recoverable. It also deduplicates the tracking
that would have to be done in all the EGL backends.
Changes made in this commit:
- Cached device loss in egl::Display
- Check isDeviceLost in ValidateDisplay
- Changed EGL entry-points testing isDeviceLost to explicitely request
a testDeviceLost
- Add calls to ValidateDisplay to entry-points missing it
- Removed unused virtual qualifiers for some robustness methods
BUG=angleproject:1463
Change-Id: I92bea81f2ecd5423c445cff31557a4d9783557d5
Reviewed-on: https://chromium-review.googlesource.com/365450
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
ee7e1e21
|
2016-07-18T15:39:47
|
|
Add ES31 entry points as function stubs
Entry points were generated using scripts which take the
new function declarations from gl31.h, find the newly added functions
and output the new function declarations and defitions.
BUG=angleproject:1442
TEST=angle_unittests
Change-Id: I2d77eb4cc24873a31cb2745b7b82bf611d5058c6
Reviewed-on: https://chromium-review.googlesource.com/361291
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
1be913cf
|
2016-07-11T17:59:16
|
|
Add support for ES31 context creation
The dEQP test for context creation passes.
SH_WEBGL3_SPEC has been added, but it should be considered whether we
should keep it, remove it or rename it. It was added so that there is
a webgl mapping to es 310 shaders. Check Compiler.cpp. The bison file
has been modified so that some tokens from es3 can be also used in
es31 as well.
A separate macro ES3_1_ONLY is added so that some tokens are limited
only for es 310 shaders.
BUG=angleproject:1442
TEST=angle_unittests
Change-Id: I2e5ca227c96046c30dc796ab934f3fda9c533eba
Reviewed-on: https://chromium-review.googlesource.com/360300
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7d20dd4a
|
2016-06-07T10:45:36
|
|
Add missing EXT_disjoint_timer_query entry points to eglGetProcAddress.
BUG=angleproject:1405
BUG=angleproject:1265
Change-Id: I823e1393943f7531374c094ce590fa0a6f49d213
Reviewed-on: https://chromium-review.googlesource.com/351776
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bda75597
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I39b6ec393ea338e2c843fb911acc1b36cd1158a0
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-on: https://chromium-review.googlesource.com/341254
Reviewed-by: Ian Ewell <ewell@google.com>
|
|
9670b03e
|
2016-04-29T09:47:47
|
|
Revert "Finish NV12 support via streams."
Broke Windows Clang compilation, see https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Clang%20Builder%20%28dbg%29/builds/3583/steps/compile/logs/stdio and search for TextureStorage11.h
This reverts commit 9b8b359fa3615be7c7492239a48f61103b2e4fcc.
Change-Id: I6e54305eba02b40927a35577594df39e951adb32
Reviewed-on: https://chromium-review.googlesource.com/341430
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9b8b359f
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I098940e6f25e113dcc4fc8d22ffed4b5a16fd860
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
d860552f
|
2016-04-13T10:19:12
|
|
Implement support for CHROMIUM_bind_uniform_location.
BUG=angleproject:1353
Change-Id: Ia219ff973de0de2f8e112c276b3ab6319f7d3884
Reviewed-on: https://chromium-review.googlesource.com/334252
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
54f8746e
|
2016-03-10T13:47:21
|
|
Add initial support for various stream extensions.
Add entry points and validation for various egl stream extensions
including EGL_KHR_stream_consumer_gltexture and
EGL_NV_stream_consumer_gltexture_yuv and NV_EGL_stream_consumer_external.
The extensions functionality is not yet implemented and the extension
strings are thus not exposed yet.
BUG=angleproject:1332
Change-Id: I115d872557db38d8dd94cc367038668406719109
Reviewed-on: https://chromium-review.googlesource.com/332026
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
ec2c0c5e
|
2016-04-05T13:46:26
|
|
Update internal AttributeMap type to EGLAttrib.
Newer EGL functions use EGLAttrib to pass in attributes, which can be
either 32-bit or 64-bit depending on the system while the old attributes
are passed in as EGLints, which are usually 32-bits. To support these
newer functions, AttributeMap now uses EGLAttrib internally instead of
EGLint, and all the code using AttributeMap has been updated to cast
properly.
BUG=angleproject:1348
Change-Id: I7c4dd9ef23ea1b1741f3a565502fb5e26bf962d7
Reviewed-on: https://chromium-review.googlesource.com/337162
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
701b74b0
|
2016-03-02T15:26:39
|
|
Add support for EGL_KHR_stream.
EGL_KHR_stream is now implemented. Since the extension does not come with
any producers or consumers, it does not have much functionality and the
implementation is therefore very simple (validation layers and a new
object to store some attributes). This however add the groundwork to add
the appropriate consumer and producer extensions to stream D3D NV12
textures directly into ANGLE which will significantly improve video
performance on Chromium on D3D-based platforms.
BUG=angleproject:1332
Change-Id: Ie240c73869f5098d1215cc5e27aa5decd06c3ed1
Reviewed-on: https://chromium-review.googlesource.com/330003
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
436e32ae
|
2016-01-15T15:53:12
|
|
GLX backend: check for child window resizes on eglWaitNative
This is the standard way, if not often used, for application to notify
the driver of window size changes. Chromium uses it to resize when it
is done rendering and swapping so that drivers do not clobber the
backbuffer.
This fixes black flickering appearing when resizing the Chromium
windows with --use-gl=angle.
BUG=angleproject:1281
Change-Id: Ic76f3c3ef453eae07eb59122135290411f86764d
Reviewed-on: https://chromium-review.googlesource.com/322390
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a433388d
|
2016-01-14T17:24:50
|
|
Implement eglWait*
This mostly does nothing except on X11 where it calls the equivalent
glXWait*. eglWait* are needed because they are used by Chromium and
were triggering an UNREACHABLE().
BUG=angleproject:1281
Change-Id: Iff9c127b16841bc27728304a5ba2caff49ff11b5
Reviewed-on: https://chromium-review.googlesource.com/322360
Tryjob-Request: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Corentin Wallez <cwallez@chromium.org>
|
|
49ae88ba
|
2015-12-09T16:44:29
|
|
Implement EGL_ANGLE_direct_composition extension
On D3D11, if dcomp.dll can be loaded then EGL_ANGLE_direct_composition
is exposed. Setting EGL_DIRECT_COMPOSITION_ANGLE as an attrib on a
surface will force it to use DirectComposition to draw to the screen,
possibly saving power.
BUG=524838
Change-Id: I3ea175a97bbca1a3388ffe52fdd1587a2f0c2ce7
Reviewed-on: https://chromium-review.googlesource.com/319214
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: John Bauman <jbauman@chromium.org>
|
|
7f448b58
|
2015-12-16T13:31:57
|
|
Add an EGL_ANGLE_surface_orientation extension.
BUG=angleproject:1262
Change-Id: Ifbb0f5302311a68a0c6f02baaea706cbb7055a52
Reviewed-on: https://chromium-review.googlesource.com/320011
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
666cb828
|
2016-01-04T17:44:09
|
|
Revert "Add an EGL_ANGLE_surface_orientation extension."
Compilation warnings on clang.
This reverts commit 18cc14b5951842ede85c06dcbc0bba230bcedc45.
Change-Id: If58047486116e34ef30c4b317d3fb47cd2349d15
Reviewed-on: https://chromium-review.googlesource.com/319822
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
18cc14b5
|
2015-12-16T13:31:57
|
|
Add an EGL_ANGLE_surface_orientation extension.
BUG=angleproject:1262
Change-Id: I863c46c8557604da045447550f7d69831c9f06b5
Reviewed-on: https://chromium-review.googlesource.com/318780
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
fe3e46ab
|
2015-11-24T19:13:55
|
|
Add EGL_ANGLE_flexible_surface_compatibility
This extension allows users of ANGLE to make contexts current with surfaces
that were created with different bit depths.
BUG=angleproject:1223
Change-Id: I9072c256e0a36aee1ce41ab69cb9a04240bf0521
Reviewed-on: https://chromium-review.googlesource.com/314935
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tryjob-Request: John Bauman <jbauman@chromium.org>
Tested-by: John Bauman <jbauman@chromium.org>
|
|
e102fee7
|
2015-12-10T11:23:30
|
|
Add stub entry points for GL_KHR_debug.
BUG=angleproject:520
Change-Id: I6f19ca160214a44c75619c320d5e1db7e4098eda
Reviewed-on: https://chromium-review.googlesource.com/317540
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
063d9e78
|
2015-11-19T17:24:47
|
|
Add support for EGL_EXT_platform_device
This allows an application to use EGLDeviceEXT to initialize EGL.
For example, if an application wants to initialize EGL using an existing D3D11
device (instead of ANGLE creating its D3D device), then the app may create an
EGLDeviceEXT using EGL_ANGLE_device_creation_d3d11, and use this device to
initialize EGL via EGL_EXT_platform_device.
BUG=angleproject:1190
Change-Id: Ife91ce95a63e29eb2b3f05aedfb668e4cac8f5ce
Reviewed-on: https://chromium-review.googlesource.com/313444
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Austin Kinross <aukinros@microsoft.com>
|
|
fc1a44a1
|
2015-12-02T12:37:10
|
|
Revert "Revert "Add and implement EGL_ANGLE_device_creation[_d3d11]""
This reverts commit dd5c5b79333fdde7858a77d39e91cc3d30b74c9e.
BUG=angleproject:1190
Change-Id: I1bc1b232b6a916da6d18b546baf20e0854a2768f
Reviewed-on: https://chromium-review.googlesource.com/315169
Tested-by: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dd5c5b79
|
2015-12-02T08:41:28
|
|
Revert "Add and implement EGL_ANGLE_device_creation[_d3d11]"
Causes failures on Windows/GN:
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(108)
: error C3861: 'eglCreateDeviceANGLE': identifier not found
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(113)
: error C3861: 'eglQueryDeviceAttribEXT': identifier not found
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(119)
: error C3861: 'eglReleaseDeviceANGLE': identifier not found
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(143)
: error C3861: 'eglQueryDeviceAttribEXT': identifier not found
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(162)
: error C3861: 'eglCreateDeviceANGLE': identifier not found
e:\b\build\slave\win_x64_gn\build\src\third_party\angle\src\tests\egl_tests\egldevicetest.cpp(178)
: error C3861: 'eglCreateDeviceANGLE': identifier not found
This reverts commit 4029ad42d5ffe94a0a744532ab3577b982f847b8.
BUG=angleproject:1190
Change-Id: Ibcdfd8cea7ba275cd67c0220f8d7a1069ec1cf97
Reviewed-on: https://chromium-review.googlesource.com/315480
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
4029ad42
|
2015-10-29T10:14:47
|
|
Add and implement EGL_ANGLE_device_creation[_d3d11]
BUG=angleproject:1190
Change-Id: I248935ef81803062cf9ba5776512cda456331f51
Reviewed-on: https://chromium-review.googlesource.com/309634
Tryjob-Request: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
26d84357
|
2015-11-02T11:08:16
|
|
Fix some EGL validation issues
BUG=angleproject:1207
Change-Id: I425397ca81dfd8be98ffdc5b874d978e7cf7758d
Reviewed-on: https://chromium-review.googlesource.com/310194
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Austin Kinross <aukinros@microsoft.com>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
bc781f31
|
2015-10-26T09:27:38
|
|
Re-re-land "Add GL_OES_vertex_array_object to D3D11 and GL renderers"
+ Include fixed validation logic for GL_UNPACK_SKIP_IMAGES and GL_UNPACK_ROW_LENGTH
+ Include fix for Clang build break
BUG=angleproject:1186
Change-Id: I403a066e29614f532db6931755265d2ee088d442
Reviewed-on: https://chromium-review.googlesource.com/308746
Tested-by: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
5296141b
|
2015-10-26T15:33:27
|
|
Revert "Re-land "Add GL_OES_vertex_array_object to D3D11 and GL renderers""
Fails build on Clang because Caps.cpp defines a constructor
initializer out-of-order with the member variable order in the
header.
BUG=angleproject:1186
This reverts commit 7432321e03a70a99639b149f44cf80086feb4ea2.
Change-Id: I2840d02e6e7b6bbc76eb495b5462c43116a5c4a6
Reviewed-on: https://chromium-review.googlesource.com/308800
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
7432321e
|
2015-10-23T10:07:18
|
|
Re-land "Add GL_OES_vertex_array_object to D3D11 and GL renderers"
Include fixed validation logic for GL_UNPACK_SKIP_IMAGES and GL_UNPACK_ROW_LENGTH
BUG=angleproject:1186
Change-Id: I9910a67733702a05991f62129d200ea39adb910c
Reviewed-on: https://chromium-review.googlesource.com/308421
Tested-by: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
023a290e
|
2015-10-23T16:43:24
|
|
Revert "Add GL_OES_vertex_array_object to D3D11 and GL renderers"
This is failing the WebGL 2 test:
WebglConformance.conformance2_state_gl_get_calls
http://build.chromium.org/p/chromium.gpu.fyi/builders/Win8%20Debug%20%28NVIDIA%29/builds/9807
Also the dEQP-GLES3 tests:
dEQP-GLES3.functional.state_query.integers.unpack_skip_images_get*
BUG=angleproject:1186
This reverts commit eb36e275b8f63ebd442a2580e858ef671ddfe1be.
Change-Id: If903c471f4610ac0b33a268df42f3329d672f429
Reviewed-on: https://chromium-review.googlesource.com/308460
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
eb36e275
|
2015-10-20T13:44:10
|
|
Add GL_OES_vertex_array_object to D3D11 and GL renderers
BUG=angleproject:1186
Change-Id: I7c685084b42f977902228cadca3263064881ba77
Reviewed-on: https://chromium-review.googlesource.com/307038
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
69cce580
|
2015-09-17T13:20:36
|
|
Split the SamplerState struct into SamplerState and TextureState.
SamplerState is now only the members that are overridden by a sampler
object, this makes it easy to update those specific members.
Opted for getters and setters for each member in Texture and Sampler
because it will be required to enable dirty bits for these states.
Added maxAnisotropy to the SamplerState instead of texture state. The
sampler objects extension mentions it should be there.
BUG=angleproject:1162
Change-Id: I5aa6d702bd5915ee9df1976afef3c8c1f69d27c8
Reviewed-on: https://chromium-review.googlesource.com/300490
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
ee48376c
|
2015-09-15T13:12:07
|
|
Update to the latest versions of the GL and EGL headers.
Add GLES 3.1 and 3.2 headers.
Remove GLES 3.0 extension headers and entry point files.
Re-land fixes double define from different style defines in libGLESv2.gypi
and other projects.
Re-land fixes missing defines in angle_util project in gn.
Change-Id: I1952413cd4390e6f5450df809f8f5867bf6f49e2
Reviewed-on: https://chromium-review.googlesource.com/299771
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
0393310f
|
2015-09-15T16:59:59
|
|
Revert "Update to the latest versions of the GL and EGL headers."
Issues with GN build.
This reverts commit 8284436798dd184afe61cbb586185cb68e503d6f.
Change-Id: I99d186019135bbbe250e95c9567854108d31c556
Reviewed-on: https://chromium-review.googlesource.com/299870
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
82844367
|
2015-09-11T13:52:12
|
|
Update to the latest versions of the GL and EGL headers.
Add GLES 3.1 and 3.2 headers.
Remove GLES 3.0 extension headers and entry point files.
Re-land fixes double define from different style defines in libGLESv2.gypi and
other projects.
Change-Id: I6204dc767bd83b7aa7e4d6e2fa338b2ce7f304d8
Reviewed-on: https://chromium-review.googlesource.com/299401
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e12150fe
|
2015-09-11T20:06:27
|
|
Revert "Update to the latest versions of the GL and EGL headers."
Linux compile failures to do gyp defines.
This reverts commit 8bbeabc1795473f7b3141219be3970fea3b95a71.
Change-Id: Icb31dd817414b3a9ab36e88cedab9c725af26b6b
Reviewed-on: https://chromium-review.googlesource.com/299173
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8bbeabc1
|
2015-09-11T13:52:12
|
|
Update to the latest versions of the GL and EGL headers.
Add GLES 3.1 and 3.2 headers.
Remove GLES 3.0 extension headers and entry point files.
Change-Id: Icaa444efa52f3b9d1497189da92bc364545a6e3a
Reviewed-on: https://chromium-review.googlesource.com/299172
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
7aef6020
|
2015-09-11T19:04:00
|
|
Revert "Update to the latest versions of the GL and EGL headers."
Broke the Clang compile.
In file included from ../../third_party/angle/include/GLSLANG/ShaderLang.h:28:
../../third_party/angle/include/KHR/khrplatform.h:282:30: error: no newline at end of file [-Werror,-Wnewline-eof]
#endif /* __khrplatform_h_ */
Several other similar errors.
BUG=None
This reverts commit aac2035d851fc92b159dc8e01cfd2ebb86e99e4a.
Change-Id: I407e7e65bb6a46d1d941c54cdf14a14758e22d96
Reviewed-on: https://chromium-review.googlesource.com/298834
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
|
|
aac2035d
|
2015-09-11T13:52:12
|
|
Update to the latest versions of the GL and EGL headers.
Add GLES 3.1 and 3.2 headers.
Remove GLES 3.0 extension headers and entry point files.
Change-Id: I8e9df6262dc1b2536a409c5791734e4a4d63b115
Reviewed-on: https://chromium-review.googlesource.com/299341
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a65a4c7b
|
2015-08-27T10:38:40
|
|
Fix preprocessor failure in string concatenation.
BUG=angleproject:1138
Change-Id: I20f3b542884fbaa2b2cccd65ceb45e54174bccc2
Reviewed-on: https://chromium-review.googlesource.com/295831
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|