|
5fd368aa
|
2025-07-30T14:45:55
|
|
Replace Surface::getWidth/Height() with getSize()
Most places in the code use both `getWidth/Height()` methods at the same
time. On some back-ends it is more optimal to have single method.
For example, `WindowSurfaceWGL` first uses `GetClientRect()` Win32 API
inside each method to then calculate width and hight in each method,
causing repeated `GetClientRect()` call.
The only place where only one of the methods may be used is from
`SurfaceImpl::getUserSize()` when one of the parameters is `nullptr`,
which is only possible from `QuerySurfaceAttrib()` function. This
method is rewritten to use new `getSize()` method and then use whatever
dimensions is requested by the caller. This may cause
`QuerySurfaceAttrib()` inefficiency on some back-ends that get width and
height of the surface differently (`SurfaceEGL` for example). In such
cases `getUserSize()` is overridden to avoid returning a dimension
which is not required.
After this change all places in the code that previously used both
`getWidth/Height()` methods (like `Surface::getAttachmentSize()`) will
be more efficient. The `QuerySurfaceAttrib()`, on the other hand, will
have slightly more overhead on back-ends where base
`SurfaceImpl::getUserSize()` method is used, which only happens on
back-ends with trivial `getSize()` implementation.
Bug: angleproject:397848903
Change-Id: I4a22701a1e62ee4e7d07e77cac5b388050d98e4d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6802440
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
3cf7a604
|
2025-05-17T19:39:08
|
|
WebGPU: Add extensions for importing external textures
Add EGL_ANGLE_device_webgpu which exposes the adapter and device used
by ANGLE internally.
Add EGL_ANGLE_webgpu_texture_client_buffer which allows importing
external WGPUTexture handles if they share the same device as ANGLE
(queried from EGL_ANGLE_device_webgpu).
Bug: angleproject:418022112
Change-Id: I0683d36b84a0f8e0e9b68a5ec0d3aa8b7a95152c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6553063
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
408f5853
|
2025-04-04T00:00:00
|
|
Make gl::Version data members private
* Further simplified gl::Version implementation by
making data members private and merging them.
* Used proper version struct comparisons instead
of accessing individual version components.
* Moved known version constants to Version.h
for broader availability.
* Removed no longer used helpers:
* PrivateState::getClientMinorVersion()
* State::getClientMinorVersion()
* Context::getClientMinorVersion()
Bug: angleproject:408843436
Change-Id: I3ae8f495269d649253fa2381ecbfc018a184fa20
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6460787
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
33e035f9
|
2025-04-04T00:00:00
|
|
Enforce correct usage of gl::Version
In preparation for the implementation update,
ensured that gl::Version struct is always
initialized with 8-bit values.
Bug: angleproject:408843436
Change-Id: Idcc925b49cadc7fdc4f05ff2acaed8020e72a32e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6458758
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ecc378cc
|
2025-03-03T16:43:33
|
|
Reland "Dont use Subject/Observer for SwapchainImageChanged"
This is reland of the following CL
https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Change-Id: I017b0e8934b5194a520828fa5c4af1d6e3ef9aac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6404621
|
|
3cfc0ce2
|
2025-03-24T07:41:33
|
|
Revert "Vulkan:Dont use Subject/Observer for SwapchainImageChanged"
This reverts commit 48103cb2f2b292cb50cc5a29546b358b2e47fd29.
Reason for revert: assert fails
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/7085/overview
I 22:27:33.697 77.533s _RunTestsOnDevice(17221FDF6000A4) [ RUN ] EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture
INFO:root:ERR: SurfaceVk.cpp:3165 (getCurrentFramebuffer): ! Assert failed in getCurrentFramebuffer (../../src/libANGLE/renderer/vulkan/SurfaceVk.cpp:3165): mAcquireOperation.state == ImageAcquireState::Ready
Original change's description:
> Vulkan:Dont use Subject/Observer for SwapchainImageChanged
>
> Because we do deferred ANI (VkAcquireNextImage) call until image is
> needed, we need a way to force Context to go through
> FramebufferVk::syncState call (FramebufferVk::syncState calls
> WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
> Right now we uses subject/observer mechanism, by sending
> angle::SubjectMessage::SwapchainImageChanged to all observers of
> WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
> redirects this message to its observers, which are all gl::Framebuffer's
> attachments: color, depth, stencil. Even though only color attachment
> needs to be notified, but because we don't have a separate list of
> observers, depth/stencil attachment also receive the notification and
> they early out. Then gl::Framebuffer sets
> DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
> angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
> and ReadFBO and dirty cached state. Note that this is specific for swap
> image changed case, there is no surface property change (surface
> property change will still trigger the subject/observer message with
> SubjectMessage::SubjectChanged message, but this occurs rarely). This
> gets worse for apps that uses multiple contexts, for the example
> pokemon_masters_ex has three contexts, each context has its own default
> frame buffer that attach to the same surface, and we never remove
> non-current context from the observer list. This end up with
> egl::Surface has 12 observers and for every frame, it loop over the list
> of 12 observers and send message (virtual function call) to each of
> them. Color attachment also ends up sending two messages to Context, one
> for Read FBO and another for Draw FBO. There are total 21 virtual
> function calls. Even for single context usage, you have 6 virtual
> function calls, for every frame.
>
> EGL spec says "an EGLSurface must be current on only one thread at a
> time", any other context must call EGLMakeCurrent in order to use this
> surface, which will add all necessary dirty bits at that time. So we
> really only need to notify current context. In this CL,
> SwapchainImageChanged no longer uses subject/observer mechanism, so this
> message is removed.
>
> This CL still uses subject/observer mechanism to send DirtyBitsFlagged
> from Framebuffer back to context. We could call setDrawFramebufferDirty
> and setReadFramebufferDirty directly, but that will require to remove
> the "const" decoration out of gl::Context which generates too much code
> diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
> used.
>
> Bug: angleproject:400711938
> Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:400711938
Change-Id: Ib7899d1ac63a1f86af0953a1d25922578c470fc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387755
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
48103cb2
|
2025-03-03T16:43:33
|
|
Vulkan:Dont use Subject/Observer for SwapchainImageChanged
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
cfb430c8
|
2025-02-10T13:19:05
|
|
Remove angle::ErrorStream helper
Most uses of the helper either use just the code or a fixed string,
which compiles to a few instructions. Using this helper adds 200+ bytes
of assembly to each use, due to the unneeded instantiation of
ostringstream which allocates a buffer etc. The combined effect of this
CL on an Android perf build is ~12KB (0.2%) reduction in size.
The cases where the message is actually formatted are converted to an
explicit use of ostringstream. Removing the helper so that the new code
is explicit about the intent to use ostringstream, or an alternative way
to format the message.
Discovered accidentally while looking into size reduction due to
__builtin_unreachable()
Semi-automated code change, risk of copy-paste mistakes should be
minimal.
Bug: angleproject:394129077
Change-Id: I47c2642d750d31416b08a1cfa435d5463c294e35
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6250078
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
8c12874c
|
2024-09-12T11:26:29
|
|
vulkan: add double buffer swapchain for fifo mode.
Double buffer swapchain usually drop the performance.
But at B* the default fps cap for silver device still at 30fps.
This change is for reduce latency.
Bug: b/311022968
Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d8f088e0
|
2023-08-14T11:07:24
|
|
GL: Remove parallel compile/link without driver support
This feature was practically disabled everywhere due to various bugs,
and is complicating the code. In effect, the code was always spawning a
thread for the compilation and link jobs, immediately fail it (due to a
workaround), then do the job when compile/link is resolved (much closer
to draw time). This leads to bad user experience, but also is racy
because the shaders may get recompiled in the meantime and there is
little the GL backend could do to stop that (efficiently).
After this change, parallel compile/link
is either done by the driver (if supported), or it isn't done.
This is a partial revert of a100d8f471f79b9f88d387164992cc5bd9c6ee9f.
Bug: angleproject:3031
Bug: chromium:922936
Bug: chromium:1184692
Bug: chromium:1202928
Change-Id: I6348bee3249ccb3828bb98ac2a69dc7d305f821c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4774785
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a62cc521
|
2023-06-14T23:27:31
|
|
GL: fall back to WGL if EGL_ANGLE_surface_orientation unset
When an app attempts to use the GL backend on Windows, there is
currently an undocumented hard requirement for
EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE. This is caused by
EGL_ANGLE_surface_orientation not being fully implemented, so
instead let ANGLE fall back to the slow WGL pipeline.
See: I012168531d8c2e5b189671533cea9f57ec713538
BUG: angleproject:8201
Change-Id: I28c6a948a5fc0e3ebfff86c4cbf95c666f5c7cd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4614646
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
79aa846e
|
2022-08-17T13:40:33
|
|
Reland "Not recreate Framebuffer for eglMakeCurrent() call"
This is a reland of commit bf9c815263455403e587a9d2b0fdb9fb8e964208
Original change's description:
> Not recreate Framebuffer for eglMakeCurrent() call
>
> Right now, in eglMakeCurrent() call, ANGLE always release the
> default framebuffer object associated to the current context,
> and create a new default framebuffer object for the new current
> context. It impacts chrome performance, since chrome call
> eglMakeCurrent() a lot. With this CL, the default framebuffer
> will be created with gl::Context. When the surface is changed
> by eglMakeCurrent() call, ANGLE will detach the previous surface
> from the associated framebuffer, and attach the new surface to
> the next current context's default framebuffer.
>
> Bug: chromium:1336126
> Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1336126
Change-Id: Iade19004a4335ac7bc6ca176a3c14d34afff8c9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877405
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
02e8497f
|
2022-09-07T01:12:31
|
|
Revert "Not recreate Framebuffer for eglMakeCurrent() call"
This reverts commit bf9c815263455403e587a9d2b0fdb9fb8e964208.
Reason for revert: compile errors
https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-rel/1303510/overview
Original change's description:
> Not recreate Framebuffer for eglMakeCurrent() call
>
> Right now, in eglMakeCurrent() call, ANGLE always release the
> default framebuffer object associated to the current context,
> and create a new default framebuffer object for the new current
> context. It impacts chrome performance, since chrome call
> eglMakeCurrent() a lot. With this CL, the default framebuffer
> will be created with gl::Context. When the surface is changed
> by eglMakeCurrent() call, ANGLE will detach the previous surface
> from the associated framebuffer, and attach the new surface to
> the next current context's default framebuffer.
>
> Bug: chromium:1336126
> Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1336126
Change-Id: I7c07f62236f57523b29c536c04f9a9de79da2f4b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877404
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
bf9c8152
|
2022-08-17T13:40:33
|
|
Not recreate Framebuffer for eglMakeCurrent() call
Right now, in eglMakeCurrent() call, ANGLE always release the
default framebuffer object associated to the current context,
and create a new default framebuffer object for the new current
context. It impacts chrome performance, since chrome call
eglMakeCurrent() a lot. With this CL, the default framebuffer
will be created with gl::Context. When the surface is changed
by eglMakeCurrent() call, ANGLE will detach the previous surface
from the associated framebuffer, and attach the new surface to
the next current context's default framebuffer.
Bug: chromium:1336126
Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f18b6335
|
2022-08-29T11:53:01
|
|
Replace std::this_thread::get_id() use with a unique thread id.
std::this_thread::get_id() gets recycled. It's pthread_self()
under the hood on Linux and Android which gets recycled, for
example when one thread terminates and another one starts
it is likely to return the same value.
Bug: angleproject:7602
Change-Id: I83d818bc17ead5cce8bce7f7d88fc1c7c0fa860c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3855041
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4a14030d
|
2022-07-22T10:09:53
|
|
Avoid streaming a wide string to a (narrow) ostringstream.
This stream overload was removed in C++20.
Bug: chromium:1284275
Change-Id: I73188e09cc93c7bd475ab1536dac74e92ea12605
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3781611
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
118ce6aa
|
2022-01-20T16:55:04
|
|
Support to open d3d12 shared handles
For
https://docs.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-createsharedhandle
Bug: angleproject:6927
Change-Id: I0f0ce7bff37abfc278a167c6eec92eb3b6df1370
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3404060
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b3ed4780
|
2021-12-21T17:20:19
|
|
Change Windows display initialization from ANSI to wide version
Bug: angleproject:6846
Change-Id: I2aee8f4b5b7546fc707705e435251fa9861e27d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352866
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
de09f8db
|
2021-09-02T18:21:37
|
|
Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY"
This reverts commit 4b5a774e855af2493d64b0635f56053bd795c5c5.
Reason for revert: broken on iOS and Skia
Original change's description:
> GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY
>
> Bug: angleproject:3020
> Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:3020
Change-Id: I54d81a7b734d007f65ff97990008f5e6eb8536f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3140453
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4b5a774e
|
2020-04-03T14:56:36
|
|
GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY
Bug: angleproject:3020
Change-Id: Iff460a1012d06e1c5feff84d91117de87e7c870a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123167
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f3bccd9d
|
2021-08-26T18:04:13
|
|
Revert "GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY"
This reverts commit 8d7f4cc986778bfff0b242dbea6083346da6c54d.
Reason for revert: Broke CrOS build.
Original change's description:
> GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY
>
> Bug: angleproject:3020
> Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:3020
Change-Id: I0930c1bdb5356d533fae563428893aa8a9f91a52
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3123266
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
8d7f4cc9
|
2020-04-03T14:56:36
|
|
GL: Update StateManagerGL binding funcs to use ANGLE_GL_TRY
Bug: angleproject:3020
Change-Id: If60448f80daaeeb1503b41db8ac309e45923fd13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135929
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e174c358
|
2021-02-04T15:14:10
|
|
GL: Consolidate glGetString calls
First step for cacheing the result of glGetString calls is mostly
cleanup.
Bug: chromium:1173672
Change-Id: I47281a09b9bd5859655d16376977a6eabcfbb3c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2676203
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0be050a4
|
2020-09-23T15:12:56
|
|
Pass GL_VERSION info through ANGLE's GL_RENDERER string
Chrome needs ANGLE to pass through the underlying driver vendor and
version, which cannot always be determined by the SystemInfo library.
This is done by construction GL_RENDERER in the frontend through
combining GL_VENDOR, GL_RENDERER, and GL_VERSION from the backends.
Example changes are in the doc:
https://docs.google.com/document/d/1p0dvrLlu8NKhO-RCU5gqlQ_LvcQj-ZqhvfwSk1n3Sz8/edit?usp=sharing
Bug: chromium:1126526
Bug: chromium:1131248
Bug: chromium:1134669
Bug: chromium:1169861
Change-Id: Ia618ebcd7f3caaeb376b4b6a03446732efdaeecb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2427383
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6e9018bd
|
2020-06-25T12:58:14
|
|
GL: Clean up Display code related to multithreading
Rename mCurrentData to mCurrentNativeContexts, and clean up some logic
to be easier to read.
Bug: angleproject:4724
Change-Id: I6fd6d99d4f9a3af808d0baa665edfbdde7fb0500
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267424
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
c859c0ac
|
2020-11-24T17:21:38
|
|
Batch replace std::unordered_map with angle::HashMap in src/
There are a few places that will remain std::unordered_map due to build
or run-time errors, which will need to be evaluated more closely to
determine if they should remain std::unordered_map or if there is
another Abseil data structure that would be more efficient while still
working correctly.
Bug: angleproject:4873
Change-Id: Ib04253e3ad6398e63f4cc2bfe12c0f9e57cb112b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2558873
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
56663dbf
|
2020-11-19T21:21:19
|
|
EGL: Expose device query as a client extension.
This matches the extension spec. Previously we were exposing the ext
as a normal display extension. The extension should work without
needing a display.
Because the extension requires a non-null device for every display we
also add a MockDevice class to handle back-ends which don't implement
any attribute query extensions. By default the device query ext does
not expose any way to use devices so this works fine.
Bug: angleproject:5372
Change-Id: I474310a86aff6a83bd6f9a6b21c8a07c649f306d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2551543
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
96a49a48
|
2020-10-06T13:34:09
|
|
GLX, EGL: Support NV_robustness_video_memory_purge
Chrome is showing rendering issues on Linux/Nvidia after returning from
the lock screen. This could be related to the fact that Nvidia drivers
are not able to guarantee conformance after certain events.
By exposing this extension, we can instruct Chrome to reinitialize
contexts after they are purged by the driver. If this is not explicitly
requested, we can still generate an UnknownContextReset to tell apps
to discard the invalid context anyway.
Bug: chromium:1113040
Change-Id: Ie99b6356cc27fea33643d61b1d74f4f68a271d70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2453689
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
08142700
|
2020-10-01T19:30:03
|
|
Work-around test runner & DebugAnnotator
Note: This precedes another CL that needs this change.
DebugAnnotator uses a global variable. The test runner doesn't change
state between testing different back-ends. This works-around the
problem by setting the global variable when the context is switched.
Because the GL back-end doesn't have its own DebugAnnotator sub-class,
add a Display* to DisplayImpl::makeCurrent(), so that
DisplayGL::makeCurrent() can install the front-end-Display's
DebugAnnotator.
Note: the Vulkan back-end gets this fix even though the new
DebugAnnotatorVk class will be added in a follow-on CL.
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Change-Id: If08626a5310f9b4e3210e1a897a6886248e4d8ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451423
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
da61c40e
|
2020-10-06T01:57:55
|
|
Revert "Work-around test runner & DebugAnnotator"
This reverts commit e44c94d96a9b65615fe8f5038e124763ac8c45e5.
Reason for revert: Breaks build of DisplayGbm on ChromeOS:
src/libANGLE/renderer/gl/egl/gbm/DisplayGbm.{h,cpp}
First failing builds:
https://ci.chromium.org/p/chromium/builders/ci/ChromeOS%20FYI%20Release%20%28amd64-generic%29/1608
https://ci.chromium.org/p/chromium/builders/ci/ChromeOS%20FYI%20Release%20%28kevin%29/2212
Original change's description:
> Work-around test runner & DebugAnnotator
>
> Note: This precedes another CL that needs this change.
>
> DebugAnnotator uses a global variable. The test runner doesn't change
> state between testing different back-ends. This works-around the
> problem by setting the global variable when the context is switched.
>
> Because the GL back-end doesn't have its own DebugAnnotator sub-class,
> add a Display* to DisplayImpl::makeCurrent(), so that
> DisplayGL::makeCurrent() can install the front-end-Display's
> DebugAnnotator.
>
> Note: the Vulkan back-end gets this fix even though the new
> DebugAnnotatorVk class will be added in a follow-on CL.
>
> Bug: b/162068318
> Bug: b/169243237
> Bug: angleproject:5121
> Change-Id: I748e8a1fd09b72e07242ac7fb39154537dcce534
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444095
> Reviewed-by: Ian Elliott <ianelliott@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
> Commit-Queue: Ian Elliott <ianelliott@google.com>
TBR=courtneygo@google.com,ianelliott@google.com,jmadill@chromium.org
Change-Id: I99df2716951726ead24961dc3d27a7ec63aeda80
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2451420
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
|
|
e44c94d9
|
2020-10-01T19:30:03
|
|
Work-around test runner & DebugAnnotator
Note: This precedes another CL that needs this change.
DebugAnnotator uses a global variable. The test runner doesn't change
state between testing different back-ends. This works-around the
problem by setting the global variable when the context is switched.
Because the GL back-end doesn't have its own DebugAnnotator sub-class,
add a Display* to DisplayImpl::makeCurrent(), so that
DisplayGL::makeCurrent() can install the front-end-Display's
DebugAnnotator.
Note: the Vulkan back-end gets this fix even though the new
DebugAnnotatorVk class will be added in a follow-on CL.
Bug: b/162068318
Bug: b/169243237
Bug: angleproject:5121
Change-Id: I748e8a1fd09b72e07242ac7fb39154537dcce534
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2444095
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
e815afbf
|
2020-09-07T22:09:22
|
|
First pass at increasing inclusivity
Link to the inclusivity rules
https://source.android.com/setup/contribute/respectful-code
Bug: b/162834212
Bug: chromium:1097198
Change-Id: Ied5a9e3879d72bff3f77ea6fcda9b82f30c32c2f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2396737
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Trevor Black <vantablack@google.com>
|
|
4d3a0f60
|
2020-09-11T12:36:05
|
|
GN: Componentize D3D format tables.
These tables are used by both the GL and D3D11 back-ends. Also moves
them to renderer_utils to be in a shared place.
Bug: angleproject:3943
Change-Id: I1f5d79842396a87e795547fa03c6855d6f9c5e9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2405805
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4cf2501c
|
2020-07-27T13:19:27
|
|
Add extension EGL_ANGLE_display_semaphore_share_group
For sharing semaphores globally.
Bug: angleproject:4877
Change-Id: I472e0902fd04ca8350d74e6c0ae6925ee930ccf9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2319370
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4eb2f6dc
|
2020-06-11T11:30:14
|
|
Add basic multithreading support to GLX
The first step for true multithreading support is allowing multiple
threads to use ANGLE as long as only one thread has a current context
at a time.
Added a test to MultithreadingTests to reproduce this behavior and
implemented it in GLX.
Bug: angleproject:4724
Bug: angleproject:4725
Bug: chromium:1087084
Change-Id: I908d3f02f34a681f1c9d0919dd17aee1a489173c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2241616
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0df92012
|
2020-06-03T17:08:43
|
|
Rename Platform.h to PlatformMethods.h.
"platform.h" is too common a name and causes headers to be
included incorrectly. Disambiguate the header using a more
specific name.
Solves a problem that came up with the GLES 1 tests and the
standalone test harness.
Bug: angleproject:3162
Change-Id: I88229a2c9407e0db57f5beee44daa11a4075f700
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2229065
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
7c95d081
|
2019-11-12T15:42:43
|
|
Fix crash during resizes when using the OpenGL renderer on Windows
Partial revert of f06076396afa8585e19e140f4a8b02720ede77e5
Address test failures
Guard context reset in DisplayWGL::makeCurrent with !mUseDXGISwapChains
BUG=chromium:1004117
Change-Id: I9b6eb7bc83a6e4b1a21fa0703404e41c6090730d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1913314
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a6206854
|
2019-10-24T12:55:09
|
|
Enable "-Wmissing-field-initializers".
This is another warning required by Skia. This one didn't find
anything that surprising. Enabling the warning does help enforce
code consistency and avoids a bit of possible undefined behaviour.
Bug: angleproject:4046
Change-Id: Ifec7f4afad49cd820bf3c0a79df3f46559473ee2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877477
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
859ca039
|
2019-10-24T12:55:08
|
|
Enable "-Wshadow-field".
This warning verifies we don't give variables names that shadow
fields. This is another good warning to enable that Skia requires.
This CL also fixes a small number of points in code that used this
bad pattern. We have to disable the warning for Glslang for now.
Bug: angleproject:4046
Change-Id: I072a686e3023b60cfafa778525fe712ce1fb5a50
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877476
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b3eeb2a4
|
2019-08-05T17:02:43
|
|
Emulate RGB textures using BGRX IOSurfaces.
When the user requests an IOSurface Pbuffer with an RGB format, emulate the
missing alpha channel by clearing it to 1.0 and masking reads and writes in
shaders.
BUG=angleproject:3766
Change-Id: I58c992bf641d9ece0f923603f32640615150e4f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1737437
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
a87ce835
|
2019-07-03T13:38:38
|
|
Load the correct opengl32.dll
DisplayWGL.cpp is loading the opengl32.dll in out/debug, as opposed to the system's opengl32.dll.
Want system's dll.
Bug: angleproject:3641
Change-Id: I764ef44a942a0a6c4dac7082f82ae0fd4d95a139
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687117
Commit-Queue: Clemen Deng <clemendeng@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
beb0eb2d
|
2019-06-14T15:10:33
|
|
Clean up workarounds/features to single location.
Rename all workarounds structs to features, and move the lists to a
shared location in include/platform (to help with documentation,
see:
https://cs.chromium.org/chromium/src/ui/gl/gl_switches.cc?sq=package:chromium&g=0&l=69)
Bug: angleproject:1621
Change-Id: I4069f08131db5e886047a007efb5d7764dfee5f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1660952
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
78a51911
|
2019-06-12T14:28:14
|
|
Clean up and expose frontend features to egl.
gl::Workarounds was used to hold frontend features. Change ownership of
this struct from Context to Display, so it can be exposed to egl. Also
rename to features and clean up for consistency.
Bug: angleproject:1621
Change-Id: I82e98e53873abb7a402c93e60f8a662a7263e0d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1655772
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fce1e2d1
|
2019-06-04T15:02:08
|
|
Extend eglGetPlatformDisplay to allow feature overrides.
Add EGL_FEATURE_OVERRIDES_ENABLED_ANGLE and
EGL_FEATURE_OVERRIDES_DISABLED_ANGLE to submit lists of strings naming
the features that should be overridden (either enabled or disabled) on
display creation.
Bug: angleproject:1621
Change-Id: I4bb75c5dbab0e3b701a72069c38f8c60ecfffad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646595
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f52f2637
|
2019-05-23T13:52:52
|
|
Add EGL_ANGLE_workaround_control extension.
This extension is used to query strings from an array based on index,
which will be used to query all the information about workarounds in
ANGLE.
Bug: angleproject:1621
Change-Id: I27157f278f7f17c92c8b4fd7753e2a5ecd0528f6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1627723
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0f4d72e6
|
2019-05-06T10:27:34
|
|
Add makeCurrent and unMakeCurrent to SurfaceImpl.
SurfaceGL had these methods already so they are just moving up the inheritance
hierarchy. This ends up simplifying some state tracking we had in our surface
implementations.
BUG=angleproject:2464
Change-Id: I480588ca8470d9ef507f95e0c0297fe126b3abfb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595434
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
057b76e1
|
2019-04-12T14:48:59
|
|
Implement GL_CHROMIUM_lose_context.
This is useful for testing context lost behaviour.
BUG=angleproject:3379
Change-Id: If0e1538553b1761e313fc36ccde5138cd495200f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1566141
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
2889dff6
|
2019-03-27T16:25:11
|
|
Mac: Support using an IOSurface as the default framebuffer
Bug: angleproject:2764
Change-Id: I3fdab330b59ed996f68e3063debca29323a66cf0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1542599
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
705f480f
|
2019-01-29T15:49:35
|
|
ParallelCompile: Enable worker on GL backend
Except WGL AMD, WGL Intel, and GLX Nvidia.
BUG=922936
Change-Id: I1bdbddd1485578465bcf6ece4b4b7173ae6f9f05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1442312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
f0607639
|
2019-03-15T16:00:21
|
|
DisplayWGL: Allow MakeCurrent(null).
Previously we would ignore unsetting calls to MakeCurrent. But this
would prevent ANGLE from unsetting driver state on the current thread.
Fix this by checking for 0/null explicitly in DisplayWGL::makeCurrent.
This turned up when running test configs without recreating the
Display.
Bug: angleproject:3261
Change-Id: I7f747dc7649a06f019f1b89655cb71dd3b151aa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520992
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c09ae15c
|
2019-02-01T14:16:32
|
|
Enable -Wextra-semi and -Wextra-semi-stmt.
This will prevent users from accidentally making semicolon errors in
the future.
Bug: chromium:926235
Change-Id: I79a6fa376fb1ad8f0fcf1b65b1f572a035d1f4e9
Reviewed-on: https://chromium-review.googlesource.com/c/1446493
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d51fbe34
|
2019-01-25T15:03:39
|
|
Fold buffer access validation into extensions.
We only need to perform vertex array buffer validation if the WebGL
compatiblity extension is enabled and robust access is not available.
Although sometimes the range checks are useful for determining
undefined behaviour they are not required by the OpenGL spec. They also
slow down state updates significantly.
This migrates the OOR tests into specific WebGL tests. It also requires
a change to a Chromium test on the passthrough decoder.
Improves perf by about 10% in the Vulkan VBO state change test.
Also fixes some robust resource access cases for D3D11.
Bug: angleproject:3000
Change-Id: Ice37f38f01c2f27bf32ed55657a30e69d8508335
Reviewed-on: https://chromium-review.googlesource.com/c/1390362
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a100d8f4
|
2018-12-29T16:39:55
|
|
ParallelCompile: add GL backend support
For GL backend, at first each worker thread must have a naitve context
for its own to work in. These worker contexts have to be shared from
the main context, so that all shader and program objects are seen in
any context. This extends backend displays to create and destroy the
worker contexts. RendererGL manages and allocates them to the worker
threads. ShaderImpl has a new compile method added to do the actual
glCompile work in worker thread. The ProgramGL's link method is broken
down by introducing the LinkEventGL class.
Bug: chromium:849576
Change-Id: Idc2c51b4b6c978781ae77810e62c480acc67ebb5
Reviewed-on: https://chromium-review.googlesource.com/c/1373015
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0c667215
|
2019-01-01T14:40:36
|
|
Pass ErrorSet to ContextImpl constructor.
This removes the need for the setErrorSet method.
Also update some egl::Error TODO bugs.
Bug: angleproject:2491
Change-Id: I0aba07c4a53b579835a88c3dacae294f752e6b17
Reviewed-on: https://chromium-review.googlesource.com/c/1392393
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c3dc5d48
|
2018-12-30T12:12:04
|
|
Merge gl::Context and gl::ContextState.
This reduces the number of indrections when accessing the Extensions
or Caps structures. It will provide a small speed-up to some methods.
It also cleans up the code.
Bug: angleproject:2966
Change-Id: Idddac70758c42c1c2b75c885d0cacc8a5c458685
Reviewed-on: https://chromium-review.googlesource.com/c/1392391
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Markus Tavenrath <matavenrath@nvidia.com>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ba365939
|
2018-07-18T17:23:46
|
|
Rename angle::Format::ID to angle::FormatID.
This allow for predeclaring the enum. It solves some include dependency
issues.
Bug: angleproject:2729
Change-Id: Ibbbab0796e466c62848404ba277c5f454fd9ac62
Reviewed-on: https://chromium-review.googlesource.com/1142299
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
853f8255
|
2018-07-09T09:18:50
|
|
DisplayImpl: Make waitClient/waitNative non-const.
These methods can mutate the display resources. Necessary for getting
rid of ProxyContext and for the Vulkan error refactor.
Bug: angleproject:2714
Bug: angleproject:2713
Change-Id: Ibffb1a382ecb064daaa7c664f9fc65cbcf927b37
Reviewed-on: https://chromium-review.googlesource.com/1128927
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9c1b3e2b
|
2018-06-26T12:59:16
|
|
Partially revert "WGL: Support unvirtualized contexts and unsafe multithreading."
Caused timeouts on the Skia bots when rolling ANGLE.
BUG=angleproject:2686
BUG=angleproject:2464
Change-Id: I311b075522b86410d055e0b742342423eaa7eeb5
Reviewed-on: https://chromium-review.googlesource.com/1115216
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
3cacf69b
|
2018-06-20T16:49:57
|
|
Pass all context creation parameters to DisplayImpl::createContext.
Knowing the share context at native context creation time is required if
we want to honor the requested share group instead of virtualizing
contexts or using global share groups.
BUG=angleproject:2464
Change-Id: I1fb4d71de266b3191986b1754e73d474e49445bb
Reviewed-on: https://chromium-review.googlesource.com/1108743
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
24ddc7a8
|
2018-06-11T14:56:34
|
|
WGL: Support unvirtualized contexts and unsafe multithreading.
When using unvirtualized contexts, DisplayWGL still creates a Renderer for
managing any internal GL resources such as emulated back buffers for
DXGISwapChainWindowSurfaceWGL or D3DTextureSurfaceWGL but also creates a new
Renderer for each GL context. All created contexts share resources.
BUG=angleproject:2464
Change-Id: I945502514079368e062beef70bed49c61ed44403
Reviewed-on: https://chromium-review.googlesource.com/1097459
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
41b453a4
|
2018-06-11T14:46:00
|
|
WGL: Track current context per thread.
BUG=angleproject:2464
Change-Id: I5cce1f52dc3636478e3e2893f5323345b7f83501
Reviewed-on: https://chromium-review.googlesource.com/1097458
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
1c3a94aa
|
2018-05-07T15:23:42
|
|
WGL: Update the Renderer to own the native GL context.
Adds a RendererWGL which owns the native WGL GL context.
Adds a ContextWGL which owns the RendererWGL and communicates the native WGL
context back to DisplayWGL for making current.
BUG=angleproject:2464
Change-Id: Ideb11c164da2c304f860c544a56450d0ad8fafac
Reviewed-on: https://chromium-review.googlesource.com/1038131
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
9491e5eb
|
2018-06-14T12:48:06
|
|
Generate framebuffer IDs used in DXGISwapChainWindowSurfaceWGL.
The DXGI surface was attempting to bind renderbuffers to the default
framebuffer instead of a generated one.
BUG=852399
Change-Id: Ibca6699e73e84735c64f2e3ee6b7684bfcbe1bfc
Reviewed-on: https://chromium-review.googlesource.com/1101240
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5da6690f
|
2018-06-05T12:24:06
|
|
Hold RendererGL objects with a shared_ptr.
To support both virtualized and unvirtualized contexts, the RendererGL object
represents the native context. Update ContexGL and the various DisplayGLs to
hold RendererGL with a shared_ptr so that deletion of the renderer happens at
the correct time.
Update RendererGL to take ownership of FunctionsGL.
BUG=angleproject:2464
Change-Id: Id040a8053973d73936c0a7ff0ab5edb1a3f16dc6
Reviewed-on: https://chromium-review.googlesource.com/1085851
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bf7b95db
|
2018-05-01T16:48:21
|
|
Create a default framebuffer per surface/context pair on MakeCurrent.
Sharing a gl::Framebuffer object between multiple contexts causes problems if
contexts are not virtualized because the native framebuffer objects are not
shared between these contexts. The FramebufferImpl created should be the glue
that binds a specific context to a specific surface.
Update the SurfaceImpl implementations to re-create the framebuffer
object before passing it to FramebufferGL. No backing resources will be
re-created.
BUG=angleproject:2464
Change-Id: Id0b13a221c22b71517b25cb5b1ef2392ad2ecdd6
Reviewed-on: https://chromium-review.googlesource.com/1039985
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
22a5f5f0
|
2018-05-23T11:33:01
|
|
Make sure to destroy all resources in DisplayWGL if initialization fails.
It was possible to leak some resources if initialization fails half way
through.
BUG=angleproject:2546
Change-Id: I0ea75a274fed27b118e788785bb72aff5fe8381e
Reviewed-on: https://chromium-review.googlesource.com/1070221
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b0e9ddb5
|
2018-05-23T11:30:04
|
|
Refactor a hex streaming into a generic FmtHex function.
The length of the printed value can be determined from size of the type.
BUG=angleproject:2546
Change-Id: I39a4f9550f381dd82183f50019b3f7d117c52472
Reviewed-on: https://chromium-review.googlesource.com/1070220
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0e1c158e
|
2018-05-16T14:47:30
|
|
Log error of RegisterClassA in DisplayWGL::initialize
Bug: angleproject:2561
Change-Id: I45de82466401e88bfacc2342e401adef69d07472
Reviewed-on: https://chromium-review.googlesource.com/1062192
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
5d2ccc53
|
2018-05-14T15:04:27
|
|
Use DefWindowProcA for window created with CreateWindowExA
Bug: chromium:842408
Change-Id: I8793e3bb9ed4661e49eceb55c7253d7ada06488a
Reviewed-on: https://chromium-review.googlesource.com/1057231
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6110763f
|
2018-05-09T11:32:46
|
|
Refactor the GL surfaces and framebuffers to not hold renderer objects.
BUG=angleproject:2464
Change-Id: I20aabeef3de6cf1fc13a29b6220e040aa83184d7
Reviewed-on: https://chromium-review.googlesource.com/1039986
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
ccafa62c
|
2018-05-02T13:07:53
|
|
Pass a context pointer to SurfaceImpl::[bind|release]TexImage.
BUG=angleproject:2464
Change-Id: I59fd38c626f7076b4065f25601de3e53c1a446ad
Reviewed-on: https://chromium-review.googlesource.com/1040051
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
61773640
|
2018-02-09T10:12:21
|
|
Skip PostSubBuffer calls that have zero size.
BUG=810411
Change-Id: I8770b69fe4ab8a8f9bacd141c89e7f83f67f15fb
Reviewed-on: https://chromium-review.googlesource.com/911589
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d66e1939
|
2018-01-17T11:36:24
|
|
Allow creating EGL pbuffers from typeless D3D textures
A new extension EGL_ANGLE_d3d_typeless_texture_client_buffer is added
that allows creating EGL pbuffers from typeless D3D textures.
The extension increases the flexibility of the API compared to plain
EGL_ANGLE_D3D_texture_client_buffer. The colorspace for the created
EGL pbuffer can be set by using the EGL_GL_COLORSPACE attribute.
Internally this sets the ANGLE format of the buffer. There are new
ANGLE formats that are used specifically for typeless textures,
separate ones for SRGB and linear views into the D3D textures.
The extension is only supported on the D3D11 backend of ANGLE.
BUG=angleproject:2300
TEST=angle_white_box_tests
Change-Id: I6a6cb873d2cc0dca0b7f18a0f2cd35e7bafcb7d8
Reviewed-on: https://chromium-review.googlesource.com/873917
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
ceffd20c
|
2018-01-08T16:39:45
|
|
Set colorspace of D3D pbuffers according to DXGI format
When a EGL pbuffer is created based on a D3D SRGB texture using
EGL_ANGLE_d3d_texture_client_buffer, SRGB conversions are performed as
if it was an SRGB surface. The value of EGL_GL_COLORSPACE now
reflects that correctly. If the pbuffer is bound to a texture and used
as a framebuffer attachment, querying GL_FRAMEBUFFER_COLOR_ATTACHMENT
also reflects that correctly.
The behavior is the same on both the D3D backend, where there is no
native interop involved, and on the GL backend using
WGL_NV_DX_interop(2).
There are a few limitations on the GL backend that relies on native
interop:
1. SRGB conversion for textures created this way can't be disabled
using the GL_FRAMEBUFFER_SRGB_EXT toggle that's exposed in ANGLE
through EXT_sRGB_write_control. This is now documented in the
EGL_ANGLE_d3d_texture_client_buffer spec. On the D3D backend this is
not a problem since EXT_sRGB_write_control is not supported either
way.
2. Creating a pbuffer out of a D3D11 texture with the format
DXGI_FORMAT_B8G8R8A8_UNORM_SRGB does not work, even though it was
listed as one of the supported formats in the
EGL_ANGLE_d3d_texture_client_buffer spec. It's now mentioned that
support for this format is optional.
BUG=angleproject:2300
TEST=angle_white_box_tests
Change-Id: I70ee0646680805e4469291a5b2ce59e92fda009e
Reviewed-on: https://chromium-review.googlesource.com/866743
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e1aa9219
|
2018-01-08T17:53:05
|
|
Create a new DeviceImpl each time one is requested from a DisplayImpl.
This makes sure that the Device to DeviceImpl ratio is always 1:1 and
avoids any potential double-deletion or unexpected deletion of
DeviceImpl objects.
BUG=742034
Change-Id: I778068ccd09b7478d3683123456062b94be242a1
Reviewed-on: https://chromium-review.googlesource.com/854627
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
acf2f3ad
|
2017-11-21T19:22:44
|
|
Apply Chromium style fixes.
This addresses several minor code quality issues that are validated
in Chromium, but not yet applied to ANGLE:
* constructors and destructors must be defined out-of-line
* auto is not allowed for simple pointer types
* use override everywhere instead of virtual
* virtual functions must also be defined out-of-line
Slightly reduces binary size for me (~2k on Win, 150k on Linux).
Bug: angleproject:1569
Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6
Reviewed-on: https://chromium-review.googlesource.com/779959
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6d94f064
|
2017-10-21T22:19:40
|
|
Add more complete NULL driver for the GL back-end.
This implements a NULL driver in OpenGL by stubbing out most of the
GL functions in FunctionsGL except a few static "Gets" that are needed
for initialization with Chromium and the tests. It is intended to be
used for performance testing ONLY and will not have correct behaviour.
It also adds a define to enable conditionally excluding the null entry
points for implementations that wish to save on a bit of binary size.
Also fixes some of the typedefs in functionsgl_typesdefs.h that were
turned up after implementing the direct assignment from NULL stub
entry point, generated from gl.xml, to the function pointer with type
defined from functionsgl_typedefs.h.
BUG=angleproject:2188
Change-Id: Ifa1e4739cb471ab6b52a4bf24c16d9eb4b334ac5
Reviewed-on: https://chromium-review.googlesource.com/727530
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
29ddcc99
|
2017-10-21T16:10:02
|
|
Add an auto-generated dispatch table for GL bindings.
This will more easily allow us to extend our implementation to make a
NULL or "stub" set of bindings. It also exposes a lot more function
permutations via extension variations.
It might improve the loading speed for bindings obtained via
extensions. Instead of generating a list every time an extension is
checked, we use a single std::set for a fast query. However because
more extensions are checked for more entry points, it might not make
a huge difference.
This also fixes an issue where the "real" ANGLE GL headers were being
propagated to the entry point dispatch table definitions, instead of
being in a totally isolated file. This patch adds the missing typedefs
to our proxy headers.
It also fixes the naming of a few entry points which was inconsistent
with the spec. It also makes an XML adjustment to GL_NV_path_rendering
to accomodate a hole in the spec where glLoadMatrixfEXT was not ever
defined in OpenGL ES. A spec oddity with the TexStorage extension is
not resolved - in this case, some methods are only exposed if other
extensions are present, but this information is missing from gl.xml.
BUG=angleproject:2188
Change-Id: I0fd61dd32de6fadd55fa6bd79295833392d51104
Reviewed-on: https://chromium-review.googlesource.com/726949
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b433e872
|
2017-10-05T14:01:47
|
|
Change robust resource init into a context creation attribute.
Enabled support on OpenGL even through the extension is not fully
implemented so that testing with Chromium/Passthrough commmand decoder
is still possible.
BUG=angleproject:1635
Change-Id: Ia417b1779aace1eae19514325701a79cd33f4ef3
Reviewed-on: https://chromium-review.googlesource.com/678479
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8a7b3a0c
|
2017-08-25T16:05:48
|
|
Reland 'Remove IndexRange retrieving in validation'
This change adds GL_KHR_robust_buffer_access_behavior support.
The old change is in https://chromium-review.googlesource.com/c/angle/angle/+/607413
BUG=755897, angleproject:1393, angleproject:1463
Change-Id: I04a1132c3ae8d3a766194df61c4ff7bf0b084f03
Reviewed-on: https://chromium-review.googlesource.com/640750
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5e424fae
|
2017-08-09T16:25:36
|
|
Handle Clear* commands for layered framebuffers
The patch adds support for clearing the layers of 2D array textures
attached to a multi-view framebuffer. According to the ANGLE_multiview
spec, the layers which are outside of the range
[baseViewIndex; baseViewIndex + numViews) should remain unmodified.
Because the native Clear* commands clear all of the layers, a workaround
is implemented which creates a FBO, attaches a single layer from all
multi-view attachments and clears the contents.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Ibf711d02046233eed16bdd3f9c96fc38f82ed0a8
Reviewed-on: https://chromium-review.googlesource.com/615242
Commit-Queue: Martin Radev <mradev@nvidia.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b9c53d8d
|
2017-07-19T18:55:16
|
|
Remove FormatString
And the global static it uses.
BUG=angleproject:1644
Change-Id: I6c8b186ef0dce83fe64620729af4d87ea81c77f5
Reviewed-on: https://chromium-review.googlesource.com/577922
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
665e4d97
|
2017-06-21T15:04:48
|
|
Perform all wglMakeCurrent calls from DisplayWGL.
Display WGL is the best place to track the currently bound surfaces and
contexts and cache them appropriately. This results in a ~40% speed
increase in the WebGL Aqarium demo because wglMakeCurrent is now only
called once at initialization.
BUG=angleproject:1651
Change-Id: I61132bb4a0db8de592600173c20787c67d18e067
Reviewed-on: https://chromium-review.googlesource.com/543583
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@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>
|
|
638c7277
|
2017-06-13T15:50:26
|
|
Implement EGL_KHR_surfaceless_context for D3D, GL and NULL backends.
Skip all config attributes that have the value of EGL_DONT_CARE. From the
EGL 1.5 spec: "If EGL_DONT_CARE is specified as an attribute value, then
the attribute will not be checked.".
BUG=angleproject:1651
Change-Id: I30c95a1970543fb6f1d4b02d2babf3df61cad543
Reviewed-on: https://chromium-review.googlesource.com/533937
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@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>
|
|
80cdc376
|
2017-04-18T13:27:30
|
|
DisplayWGL: try all GL context version from the highest
The only way to get a core profile context of the highest version using
CreateContextAttrib is to try creationg contexts in decreasing version
numbers. It might look that asking for a core context of version (0, 0)
works on some driver but it create a _compatibility_ context of the highest
version instead which might not be supported on some drivers.
BUG=angleproject:1994
Change-Id: Ic8a33243909c54ea5940ee81c9c866b141bea420
Reviewed-on: https://chromium-review.googlesource.com/480739
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c564c070
|
2017-06-01T12:45:42
|
|
Pass gl::Context to impl methods instead of ContextImpl.
In some cases we might have to call back into the GL layer, passing
the Context, and if we just have a ContextImpl pointer this isn't
possible. It also removes the need for SafeGetImpl.
BUG=angleproject:2044
Change-Id: I6363e84b25648c992c25779d4c43f795aa2866d6
Reviewed-on: https://chromium-review.googlesource.com/516835
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: 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>
|
|
d7297bfb
|
2017-04-19T15:27:10
|
|
Code refactoring: replace NULL by nullptr for pointers.
This is the frist change to replace NULL by nullptr.
It handles the initialization and assignment for pointers.
BUG=angleproject:2001
Change-Id: I6d4bb198a72e38b867cd2f65a6e6f2f61339a0b5
Reviewed-on: https://chromium-review.googlesource.com/481600
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ca27139e
|
2017-04-05T12:30:00
|
|
Key the format tables on internal format and type.
Keying the format tables on internal format alone is not enough to fully
validate the unsized formats which require additional type information.
This CL has no functional changes, it just splits the tables and updates
the calls to GetInternalFormat info to provide type information when the
format is not sized.
BUG=angleproject:1523
BUG=angleproject:1958
BUG=angleproject:1228
Change-Id: I37e5201e7f54fa8eca01b8a6e64b11a6b94484e7
Reviewed-on: https://chromium-review.googlesource.com/468449
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
43915883
|
2017-04-13T10:07:14
|
|
Lazily initialize the D3D device in DisplayWGL.
Change-Id: I3afe4c0619128d7063f49ed8c295d4b814193f84
Reviewed-on: https://chromium-review.googlesource.com/476930
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
067cdb4a
|
2017-04-05T13:42:49
|
|
Create depth stencils for D3D texture EGL surfaces.
BUG=angleproject:1144
Change-Id: I42d80293c06e40197fe100bcac31a5c6bd414edf
Reviewed-on: https://chromium-review.googlesource.com/469106
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
6b2ea3fe
|
2017-03-28T11:49:17
|
|
Support D3D texture share handles in the OpenGL backend on Windows.
BUG=angleproject:1144
Change-Id: Ideb0ed306ae8417f53b813745ced43002d028126
Reviewed-on: https://chromium-review.googlesource.com/461271
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
21534776
|
2017-02-13T15:21:02
|
|
DisplayGL: remove getDriverVersion
It was unused and going forward angle_gpu_info_util will be used
instead.
BUG=angleproject:1874
Change-Id: I262cc36066aa28805d50f3fc4442b08477f9e24d
Reviewed-on: https://chromium-review.googlesource.com/442024
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
ce02f086
|
2017-02-06T16:46:21
|
|
Add an extension to share textures at the display level.
BUG=angleproject:1639
Change-Id: If9140142ebce89f33921c13d9d212c17d1894162
Reviewed-on: https://chromium-review.googlesource.com/437618
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bcb3f9ba
|
2017-01-27T22:45:18
|
|
Direct logging to Platform when available
All logging should be done via ERR() and WARN(),
which call angle::Platform's logError and logWarning,
if there is current Platform which supports logging.
Otherwise, ERR() is directed to std::cerr.
Misc fixes to keep tests passing.
BUG=angleproject:1660, angleproject:1644
Change-Id: I2bca33a021537185d0c236a3083789af3236b5f3
Reviewed-on: https://chromium-review.googlesource.com/434188
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|