|
dcc9b51d
|
2017-06-05T15:28:45
|
|
D3D11: Consolidate input layout application.
This merges all calls to IASetInputLayout to a single place in
StateManager11. This means we no longer have to invalidate the state
for D3D11, and can always lazily apply the input layout state.
Introduces a new ResourceSerial class to replace the uintptr_t and
DirtyPointer design.
BUG=angleproject:2052
Change-Id: I76b874218b754395f25a129967c769b1f8f82115
Reviewed-on: https://chromium-review.googlesource.com/523025
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
07b36365
|
2017-06-05T16:08:27
|
|
D3D11: Don't dirty all uniforms on program change.
Only dirty the uniforms if the uniforms are dirty. This gives about a
20% reduction in ANGLE overhead on a targeted micro-benchmark. It
probably won't have that large of an impact on most real-world
applications, but it was strictly unnecessary work.
Something that came up when investigating the internal program binary
cache in ANGLE D3D11.
BUG=angleproject:2053
Change-Id: I2d55c010c29ce9627a9001dd2abe6e549f0b7e8c
Reviewed-on: https://chromium-review.googlesource.com/524297
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
10bed9fc
|
2017-06-05T12:59:22
|
|
Minor optimizations to DynamicHLSL.
This makes us use std::ostringstream in more places, instead of
string concatenation.
BUG=chromium:697758
Change-Id: Ifdcaa2e7e119664fc9cfdc566ea13b519a294714
Reviewed-on: https://chromium-review.googlesource.com/521729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f2a06035
|
2017-06-05T14:07:36
|
|
Force-release images on redefine when robust resource init is enabled.
If the user repreatedly calls glTexImage with null data and the same size,
it is expected that the texture would re-fill itself with zero'd data.
TextureD3D and ImageD3D would no-op these calls when the texture is
already the right size.
TEST=conformance2/rendering/blitframebuffer-filter-outofbounds
BUG=angleproject:1635
Change-Id: I810b15922759a4acfc0ef7da198f068b81e9efc4
Reviewed-on: https://chromium-review.googlesource.com/524436
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
93a540fc
|
2017-06-05T14:26:47
|
|
D3D11: Reset the TF binding offsets when glBeginTransformFeedback is called.
BUG=angleproject:2051
Change-Id: I09e8548ef76b7d824743d06b0bba21633bc40a24
Reviewed-on: https://chromium-review.googlesource.com/523671
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
bd044ed8
|
2017-06-05T12:59:21
|
|
Defer shader compiles when possible.
When using the program binary memory cache inside ANGLE, this will
give a potential fast path. If the user doesn't query the shader
compile status or info log before calling LinkProgram, then we can
check the program cache before translating the program, and if it
finds a hit, we don't even need to call the translator.
To preserve the shader settings at compile time, a reference to the
current shader translator is kept in a binding pointer on the call
to compile. This mirrors a similar implementation in Chromium's
command buffer. Also the compile options and source are cached at
compile to preserve the correct shader state.
BUG=angleproject:1897
Change-Id: I3c046d7ac8c3b5c8cc169c4802ffe47f95537212
Reviewed-on: https://chromium-review.googlesource.com/517379
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: 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>
|
|
63fa2e94
|
2017-06-01T17:11:41
|
|
D3D11: Consolidate Query allocation.
This compiles the resource refactor for D3D11. The only remaining
non-smart handles are for things like SwapChains and ID3D11Blob.
This might be more easily managed by using angle::ComPtr or
similar smart pointers instead of the Resource Manager class.
BUG=angleproject:2034
Change-Id: I53c753a1c19b05c4e72859dd5046e3ed10866847
Reviewed-on: https://chromium-review.googlesource.com/506777
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0fd806f1
|
2017-06-01T17:11:40
|
|
D3D11: Consolidate Shader allocation.
Similar to the InputLayout init, this adds a small helper type to act
as a wrapper around shader init data (binary and size).
This also adds error trapping to the blit shader compilation. It also
removes the LazyResource2 class, and the CompileXS helper methods.
BUG=angleproject:2034
Change-Id: I3fd718393c8a0250e4263890f00d0e9147ec9567
Reviewed-on: https://chromium-review.googlesource.com/506776
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5978e28d
|
2017-06-02T11:49:31
|
|
D3D11: Consolidate InputLayout allocation.
This introduces a helper type to act as the initialization data type
for input element arrays. A WrappedArray class acts as a helper class
to wrap a C array and size into a C++ class, similar to std::array
but without the data storage.
Also move resource deallocation memory counting into a single code
path.
BUG=angleproject:2034
Change-Id: I5e108254777f0df65f5f60fe26e760c71b95b542
Reviewed-on: https://chromium-review.googlesource.com/506775
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e7557744
|
2017-06-01T13:09:57
|
|
WebGL compatibility: remove UB for draw buffers in the GL backend.
WebGL adds two rules:
- Fragment outputs declared but not written to should default to black.
- FBO attachments for outputs not declared in the shader should not be
written to (it is UB in OpenGL ES).
Fix the first one by using the SH_INIT_OUTPUT_VARIABLES compiler
options, and the second one by messing with glDrawBuffers so that the
enabled draw buffers are always a subset of the ones declared by the
shader.
BUG=angleproject:2048
Change-Id: I1d851c190959c1acfc3e41d837e6990aec1d4086
Reviewed-on: https://chromium-review.googlesource.com/521682
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b7d5e303
|
2017-06-01T16:04:46
|
|
D3D11: Default init all textures.
The resource manager factory methods will use ClearView or zero-filled
buffers to set initial data. It assumes there are no 3D depth/stencil
textures. This will lead to some wasteful re-creation of RTVs in some
cases.
This is a temporary measure until we can implement more efficient
lazy resource init strategies.
BUG=angleproject:1635
Change-Id: I590e76587d3d96a359beedb79e21d24930e5f2e0
Reviewed-on: https://chromium-review.googlesource.com/503254
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: 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>
|
|
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>
|
|
cd930cf0
|
2017-05-31T13:36:32
|
|
EGLDevice: Fix edge-case memory leak.
This could happen if there was an error on device init.
Reported by Microsoft.
BUG=None
Change-Id: I059fd9308d0536b4120c28e684e37567d14b3fd5
Reviewed-on: https://chromium-review.googlesource.com/519642
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ea19b4ac
|
2017-05-25T14:48:34
|
|
Don't store Renderer in RenderStateCache.
Instead pass it around via methods. This makes the code a bit nicer.
BUG=angleproject:2044
Change-Id: I721e190a2ecde2b1a65e57debf419ee06a5dce29
Reviewed-on: https://chromium-review.googlesource.com/516385
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9216a6e2
|
2017-05-24T15:53:20
|
|
Introduce MRUCache.
This library comes from Chromium's base, and is useful for many use
cases in ANGLE. It can replace the custom MRU code we use in the
RenderStateCache. It will also be useful for implementing a program
binary cache.
BUG=angleproject:2044
Change-Id: Iba166fe380d7ed4e3123428b0227b9d299f756d1
Reviewed-on: https://chromium-review.googlesource.com/516384
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
0a82f2fa
|
2017-05-30T15:42:00
|
|
D3D11: Don't copy SharedSRVs around.
This was causing a very large performance regression in Texture
re-binding. Instead pass by const &, which should be fine, since
values in std::map (and unordered_map) are not reallocated when the
map changes.
Also make the SharedResource type non-copyable, and add an explicit
makeCopy method for when we need to clone the shared pointer.
BUG=angleproject:2034
BUG=chromium:727318
Change-Id: I39508a6ca4b41e4da31fe68899caa4464138cada
Reviewed-on: https://chromium-review.googlesource.com/517670
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
63d8c266
|
2017-05-29T13:35:09
|
|
Re-use std::hash in RenderStateCache.
This will allow us to more easily take advantage of Chromium's
MRUCache class.
BUG=angleproject:2044
Change-Id: I3fad82fc825861dc1c2095f25da83159da76e76b
Reviewed-on: https://chromium-review.googlesource.com/517359
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
aa0a5446
|
2017-05-25T13:30:23
|
|
Ensure gl State structs are zero filled.
In some cases we would hash or memcmp against structs with bools or
other non-filled data. This could have implementation differences,
and may have been causing cache errors on Clang.
BUG=chromium:721648
BUG=angleproject:2044
Change-Id: I981a1e6e8d50a33f7fade568497b72b919accfce
Reviewed-on: https://chromium-review.googlesource.com/516383
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
80616218
|
2017-05-17T15:40:03
|
|
Support CHROMIUM_copy_texture for all formats on D3D11.
Adds a CPU readback and conversion path when the destination texture is
not renderable.
BUG=angleproject:1932
Change-Id: I71461ca991dc10dd636ff38e1ae20db2be0f8d63
Reviewed-on: https://chromium-review.googlesource.com/508308
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
98de826c
|
2017-05-29T13:01:02
|
|
Platform: Fix initialization order in tests.
Because of the platform refactor in abf38572062b91 we broke the way
the tests override the D3D workarounds for the tiny depth/stencil bug.
This change passes a pointer to the platform directly in the EGL init
logic, which solves this issue. It also removes all decltype code in
the platform header which might fix the UBSAN problem we were seeing
previously.
Also change a present mode selection error into a warning in the Vk
back-end, since this was being triggered on AMD, but is safe.
BUG=angleproject:2042
Change-Id: Ibbd0c69ce11a840cf4b33c616f56020001e553aa
Reviewed-on: https://chromium-review.googlesource.com/513519
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
20805650
|
2017-05-25T12:20:59
|
|
D3D11: Consolidate state allocation.
This cleans up the allocation and deallocation of Blend, DepthStencil,
Rasterizer, and Sampler states.
This patch introduces a LazyResource2 class, basically a replacement
for LazyResource, which will be removed once the refactor is done.
BUG=angleproject:2034
Change-Id: I4fa759ae479807ff69a629f89a08b01800ba3f66
Reviewed-on: https://chromium-review.googlesource.com/503627
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9733ceef
|
2017-05-11T19:14:35
|
|
Initialize uninitialized locals in GLSL output
Guarantee that local variables are initialized before they are used
in GLSL output. In HLSL output all variables were already being
initialized.
Locals are initialized using an AST transform. The local variable init
can only be run after some simplification of the AST, so that it is
able to handle complex cases like:
for (int i[2], j = i[0]; i[0] < 3; ++i[0]) {
}
If we're dealing with ESSL 1.00 which lacks array constructors, in
this kind of case the uninitialized array initialization code needs to
be hoisted out of the loop init statement, and the code also needs to
make sure that j's initializer is run after i is initialized.
Another complex case involves nameless structs. This can be an issue
also in ESSL 3.00 and above:
for (struct { float f; } s; s.f < 1.0; ++s.f) {
}
Since the struct doesn't have a name, its constructor can not be used.
We solve this by initializing the struct members individually,
similarly to how arrays are initialized in ESSL 1.00.
Initializing local variables is disabled on Mac and Android for now.
On Mac, invalid behavior was exposed in the WebGL 2.0 tests when
enabling it. On Android, the dEQP test runs failed for an unknown
reason. Bugs have been opened to resolve these issues later.
BUG=angleproject:1966
TEST=angle_end2end_tests, WebGL conformance tests
Change-Id: Ic06927f5b6cc9619bc82c647ee966605cd80bab2
Reviewed-on: https://chromium-review.googlesource.com/504728
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bdc1e2a2
|
2017-05-24T14:40:27
|
|
D3D11: Consolidate Buffer allocation.
We now allocate and release all buffer resources from a single place,
allowing us to allocate junk memory, clear on init, and track the
currently allocated buffer memory.
BUG=angleproject:2034
Change-Id: Id60b63a7f77bc369dfc494a7587ab06c8d34a8e2
Reviewed-on: https://chromium-review.googlesource.com/503253
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2c479d6e
|
2017-05-24T14:37:22
|
|
D3D11: Use TextureHelper11 everywhere.
This consolidates all texture allocation into ResourceManager11.
It removes a lot of error checking and resource management code.
In a few places we're storing some redundant information, like in
TextureStorage11, we might store the Format pointer in two places,
or the Texture's size.
BUG=angleproject:2034
Change-Id: I9369e76925a67632c444c662e5667c5ed7875547
Reviewed-on: https://chromium-review.googlesource.com/503252
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
9d7d719c
|
2017-05-24T14:35:59
|
|
D3D11: Move CreateStagingTexture to Renderer11.
This will make staging texture tracking easier.
BUG=angleproject:2034
Change-Id: I2f0418cc5784100bf6fba59b4bda1b2dd9dc18d1
Reviewed-on: https://chromium-review.googlesource.com/503251
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4f0e003e
|
2017-05-01T16:04:35
|
|
Implement the new formats/features of the ES3 CHROMIUM_copy_texture.
Some non-renderable texture formats remain unimplemented.
BUG=angleproject:1932
Change-Id: Id206432d6e26a70fc0e84478a4e43e9eefadcf2f
Reviewed-on: https://chromium-review.googlesource.com/491948
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
caafd890
|
2017-05-19T14:31:25
|
|
D3D11: Don't store device in InputLayoutCache.
We will need the Renderer pointer for resource allocation, so
pass it around instead of storing the device and context.
BUG=angleproject:2034
Change-Id: Iaf271913f88c5402895aa81de310aa22fcd72cc4
Reviewed-on: https://chromium-review.googlesource.com/509930
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e0e009fe
|
2017-05-19T14:13:03
|
|
D3D11: Consolidate SRV allocation.
This change also moves all SRV storage to use the custom smart
pointer classes in ResourceManager11. Every single SRV is now
allocated in ResourceManager11. For TextureStorage11 and
RenderTarget11, we use a shared pointer type since the SRVs use
shared ownership by both classes.
BUG=angleproject:2034
Change-Id: I90666fbbbc23ff10870b7401f3da09ef79258136
Reviewed-on: https://chromium-review.googlesource.com/503250
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
39b826fc
|
2017-05-24T09:47:44
|
|
Reduce warning spam for failed D3D shaders.
This prevents Chrome's about:gpu from being filled with bad shaders,
and instead only prints the relevant error lines.
BUG=None
Change-Id: I75fcd2ef920d2ed7b98e8668c487b0921faf4c0b
Reviewed-on: https://chromium-review.googlesource.com/513417
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
764a1e76
|
2017-05-18T11:11:47
|
|
D3D11: Consolidate DSV allocation.
This uses the new classes introduced in ResourceManager11. Smart
pointers mean we can use ANGLE_TRY in more places, and don't need
to manually release these views. There is now a single point in the
D3D11 back-end where depth stencil views are allocated.
BUG=angleproject:2034
Change-Id: If0de2529ece1298e8babf24c07cc4be9849cc4de
Reviewed-on: https://chromium-review.googlesource.com/503249
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
df682a8e
|
2017-03-31T15:13:21
|
|
ES31: Refactor syncState in VertexArrayGL
This patch intends to solve several design issues by refactoring
the process of syncState in VertexArrayGL before implementing
ES3.1 feature Vertex Attrib Binding on the OpenGL back-end.
1. Use nullptr as the flag of using client memory pointer
2. Simplify comparisons in updateAttribPointer.
3. Put all code related to mFunctions->vertexAttrib*Pointer()
into an individual function
4. Remove redundant mStateManager->bindVertexArray() in all
update* functioins and only call it once in syncState().
BUG=angleproject:1593
Change-Id: I8f68534bb9291a601b9b77954d7281e5171c2b55
Reviewed-on: https://chromium-review.googlesource.com/465378
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
403c1682
|
2017-05-18T11:11:46
|
|
D3D11: Add resource manager classes.
The resource manager tracks the allocations and deallocations of all
D3D11 resources that have device memory: Buffers and Textures (which
are either 2D or 3D). It also tracks the number of active Views (DSV,
RTV, and SRV, potentially UAV with ES 3.1).
A new smart pointer type will wrap the resource deallocation so that
the object notifies the manager when ANGLE is done with the resouce.
This allows us to track precisely how much GPU memory we think we're
using at any point, and will help prevent resource leaks for these
object types. It also makes initialization and releasing much more
trivial.
The base class for a resource uses a template template parameter so
that we can use a unique or shared pointer depending on if the object
in question needs unique or shared ownership. For some resources
(in our case, SRVs are shared between the TextureStorage11 and
RenderTarget11 classes, and Textures are shared in many places) we
need to have the ability to have shared ownership. Unique ownership is
a little bit more efficient so supporting both can be helpful.
In this patch RenderTargetView allocation is moved to use the unique
smart pointer.
BUG=angleproject:2034
Change-Id: Idb1245c24cd66733b8b5ca524c727350b2d2c745
Reviewed-on: https://chromium-review.googlesource.com/503248
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
451b2b7f
|
2017-05-15T15:32:02
|
|
Correctly generate mipmaps for sRGB textures.
sRGB textures need to linearize their data before averaging, this worked
correctly on the GPU mipmap generation functions but not the CPU ones.
BUG=angleproject:2019
TEST=conformance/extensions/ext-sRGB
Change-Id: I554dac89b12acf5ebf5b7cab6f6faf0bce5168a6
Reviewed-on: https://chromium-review.googlesource.com/506241
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: 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>
|
|
73badc07
|
2017-03-29T19:14:53
|
|
ES31: Implement glDispatchCompute for D3D backend
BUG=angleproject:1955
TESTCASE=angle_end2end_tests
Change-Id: I69b4df83d67017d39df67753d6d17fc15ececebf
Reviewed-on: https://chromium-review.googlesource.com/462067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
995c2ed2
|
2017-05-15T13:31:45
|
|
Initialize currentValueAttrib->binding in updateCurrentValueAttribs
This patch intends to fix a crash issue in the win-clang build of
ANGLE by adding the missing currentValueAttrib->binding assignment
in StateManager11.cpp::updateCurrentValueAttribs(). In D3D11 all
vertex attributes (VertexAttribute and its VertexBinding) should be
treated as a whole, so we should always ensure these two parts are
availabe.
This patch also add ASSERTs before using *translated->attrib and
*translated->binding to prevent a TranslatedAttribute object
having a null attrib or binding.
BUG=chromium:721783, angleproject:1593
Change-Id: Id11d6f1d4c37daabad2265e01ea38eb51046b9cb
Reviewed-on: https://chromium-review.googlesource.com/505928
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
d5e8e196
|
2017-05-15T18:37:48
|
|
Check FunctionsEGL::terminatePtr before use.
FunctionsEGL::terminatePtr could be null if initialization failed,
so check it before use to avoid crashing.
Change-Id: Ide9378c8e26749ab9d58c01cb36cd923836cde98
Reviewed-on: https://chromium-review.googlesource.com/506627
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
e9ed3d86
|
2017-05-15T15:51:37
|
|
Use unused uniform blocks workarounds on Linux AMD.
The Linux AMD driver optimizes out uniform blocks where WebGL2 and maybe
OpenGL ES 3 forbids it. Try to fix this by enabling the workaround that
was made for the same problem on OSX.
BUG=
Change-Id: If3b18ec1f463582d7594221a6f2a08d25207e737
Reviewed-on: https://chromium-review.googlesource.com/506189
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
c895b4c7
|
2017-05-04T14:18:42
|
|
Make IGarbageObject's destructor virtual
This fixes a warning.
BUG=angleproject:1668
Change-Id: Idf063be9dde0bfbf5f088d69ef38fd97baa69df3
Reviewed-on: https://chromium-review.googlesource.com/495434
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
62a416d5
|
2017-04-28T09:59:56
|
|
Re-enable the RGB10A2 backbuffer format.
BUG=angleproject:1662
Change-Id: I9bd830a3021a0cfa9010c5e58d3a284cc3eeca26
Reviewed-on: https://chromium-review.googlesource.com/490346
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
aa7203ef
|
2017-05-03T23:32:29
|
|
Inherit privately from angle::NonCopyable.
Make all inheritance from angle::NonCopyable private so the compiler
complains about this (admittedly unlikely) code:
class Foo: angle::NonCopyable {
virtual ~Foo() { ... }
};
angle::NonCopyable *p = new Foo;
delete p;
In the above code ~Foo() is not called, only ~NonCopyable(), because the
latter is not virtual. Making it virtual would add overhead to all derived
classes which don't already have a virtual method.
Also tighten access in NonCopyable, because we can.
BUG=angleproject:2026
Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0
Reviewed-on: https://chromium-review.googlesource.com/495352
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
677bb6ff
|
2017-04-05T12:40:40
|
|
Update checks for floating point renderability.
* Expose GL_CHROMIUM_color_buffer_float_rgb and
GL_CHROMIUM_color_buffer_float_rgba
* Fix many texture formats that were incorrectly checking the wrong
extension for support or renderability.
* Make all floating point texture extensions dynamically enableable.
BUG=angleproject:1958
BUG=angleproject:1715
Change-Id: Iefccc8b5ae5edd97623affa9de05b1d9af5c9598
Reviewed-on: https://chromium-review.googlesource.com/468450
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6ba99e3d
|
2017-05-03T13:10:46
|
|
Re-generate pre-compiled D3D shaders.
BUG=angleproject:1932
Change-Id: I927eb5adc73bcede220ec56a9634783edd735d18
Reviewed-on: https://chromium-review.googlesource.com/494706
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
60c65556
|
2017-05-02T14:34:05
|
|
Shrink FunctionsGL.cpp.
Templating here was causing a lot of redundant functions to be
generated. We can use a bit of macro magic instead of template
magic to reduce the binary size.
This reduces the size of the compile file by about 25k.
Note that the ASSIGN macro doesn't itself reduce size, but it
does save a bit of code size and makes the file look consistent.
BUG=angleproject:2022
Change-Id: I3d9a6e1739dcab1fceca3c63d2a4e35c1e847289
Reviewed-on: https://chromium-review.googlesource.com/493891
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5416f753
|
2017-03-09T22:02:43
|
|
Clear11 Shader Optimizations and Shader Management Rework
- ClearShader made into a class that manages all required shaders and input layouts for clears
- ClearShader reuses VS for all clear types. This reduces shader compilation time and memory usage
significantly
- Use constantBuffer for color/z values instead of VB to decouple VB & VS from clearType and
allowing for the same VS to be used for multiple clear types
- FL10+ Devices: Generate positions using SV_VertexID in VS to avoid having to bind VB.
- FL93 Devices: Use an immutable VB containing only position data (SV_VertexID not supported)
- Implement CB cache. Incoming color/Z values checked against cache and CB/cache only updated if
there is a mismatch. Significantly reduces the frequency of expensive CB map/rename operations
especially in common scenarios where most/all clears use the same color/z values
BUG=angleproject:1935
Change-Id: I2015fbdcc135ba08b65dbecbe9c62499c2801037
Reviewed-on: https://chromium-review.googlesource.com/453882
Commit-Queue: Shahmeer Esmail <shahmeer.esmail@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e8b35512
|
2017-04-27T10:38:20
|
|
Fix workaround formats not being used when EXT_texture_storage is emulated.
This bug showed up on Mac which doesn't support the extension. The internalFormat
is correctly translated to the workaround format but the format and type are not.
BUG=angleproject:1958
Change-Id: I9b31f0491df1bb623bf59996cbb02d0276b6355c
Reviewed-on: https://chromium-review.googlesource.com/488582
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
876429b7
|
2017-04-20T15:46:24
|
|
Update gl2.h and update entry points.
Some method signatures were updated. Types like GLclampf and GLvoid
were replaced with other equivalents.
BUG=angleproject:1309
Change-Id: I05e8e2072c5a063d87ad96a855b907424661e680
Reviewed-on: https://chromium-review.googlesource.com/475011
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
25e297e9
|
2017-04-20T17:01:20
|
|
D3D11: Alias dirty buffer channel bindings.
The types for this were a bit disorganized. Clean this up.
BUG=angleproject:1635
Change-Id: I669d347697e0c7c5b06ed7165fa0997c375e876e
Reviewed-on: https://chromium-review.googlesource.com/483315
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
29f148b0
|
2016-11-23T21:05:36
|
|
Support Vulkan on Linux as well as Windows.
Refactor display and surface classes into Win32 and Linux parts and
add Linux parts to gn and gyp builds.
BUG=angleproject:1668
Change-Id: I2a7d29c35f4f42fa0035bd97938d3770f3627672
Reviewed-on: https://chromium-review.googlesource.com/412426
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
66c5e619
|
2017-04-25T11:40:03
|
|
TextureD3D: Mark images dirty after deleting the texture storage.
When a texture storage is deleted, it copies its mip levels back into
images and marks them clean. Marking the images dirty before deleting the
texture storage would have no effect.
BUG=705865
Change-Id: Ib4c0fc9bea1236fc31963d1b7db814785bc54abc
Reviewed-on: https://chromium-review.googlesource.com/486107
Commit-Queue: 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>
|
|
d75dd26c
|
2017-04-20T17:01:19
|
|
Make ImageSibling inherit from FramebufferAttachment.
Only currently Renderbuffers and Textures can be bound with images.
This makes the relationship explicit, and also ensures that an image
sibling can determine if it's been initialized or not, which is
important for the robust resource init extension with Textures and
EGLImages.
BUG=angleproject:1635
Change-Id: Ie05319cfbfda50f1497cab3f0b9ca64e1bff8955
Reviewed-on: https://chromium-review.googlesource.com/469154
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
151d5de6
|
2017-04-13T09:52:23
|
|
Enable MSAA for texture client buffers
Enhancement to the EGL_ANGLE_d3d_texture_client_buffer extension to
allow use of a shared D3D texture that can be multi-sampled.
BUG=angleproject:1917
Change-Id: Iaf59bbd575a5dfb29345f55b549bc4017bf2d7d0
Reviewed-on: https://chromium-review.googlesource.com/446907
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
331f6dbd
|
2017-04-13T13:57:59
|
|
Tighten workaround on unary minus for Intel D3D drivers
This driver bug has been fixed in 20.19.15.4624.
BUG=chromium:644033
Change-Id: I6f621d7c4d4b823da29255f869af84097f4f7c2c
Reviewed-on: https://chromium-review.googlesource.com/476118
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
94ba36a7
|
2017-03-31T13:58:55
|
|
Only bind that native GL texture if it should be complete.
If extensions such as OES_texture_float_linear are not exposed but the
native drive still supports them, we don't want to bind the native texture
and instead bind a texture that is known to sample like the incomplete
texture.
BUG=angleproject:1959
Change-Id: I610dbd93bb566c8eb2166488a7494b74da4aa327
Reviewed-on: https://chromium-review.googlesource.com/465090
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
76b8f469
|
2017-04-21T12:23:40
|
|
Use a shared state for egl::Image.
This allows us to stop duplicating some information in the impl.
BUG=angleproject:1635
Change-Id: If8f7d2418571c3254729f48c463814ec18ed2644
Reviewed-on: https://chromium-review.googlesource.com/469153
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f6b986c8
|
2017-04-18T14:52:31
|
|
Refactor TextureStorage11
The CL includes below changes:
1. Change bool isAssociatedImageValid to void verifyAssociatedImageValid
since we always required that the validation check should never be false.
So ASSERT() is enough. Same to
Image11::isAssociatedStorageValid->Image11::verifyAssociatedStorageValid.
2. Remove the unnecessary if checking after ASSERT
3. Use override instead of virtual if the function is virtual and
is overriding a virtual function from the base class.
BUG=angleproject:2006
Change-Id: I036666ae1ed4bfcaa8cef9e0e9626d375cd81a27
Reviewed-on: https://chromium-review.googlesource.com/480015
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@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>
|
|
4fd95d54
|
2017-04-05T11:22:18
|
|
Stop using FramebufferAttachment::Target.
Target includes the binding (DEPTH/STENCIL/COLOR), which is not useful
for many operations. Simplify this to just passing the mip/layer.
This allows us to stop using this internal struct in other classes.
BUG=angleproject:1635
Change-Id: Ic5a11781bf45fe7835437fa1e363c190b876d453
Reviewed-on: https://chromium-review.googlesource.com/469152
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ba992ab5
|
2017-04-19T11:18:14
|
|
Fix HLSL 3 generation of shaders with texture LOD.
BUG=angleproject:2002
Change-Id: If8e6bbaeb5769341f92f05025eafb6a202fec437
Reviewed-on: https://chromium-review.googlesource.com/481680
Reviewed-by: Corentin Wallez <cwallez@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>
|
|
4181bc97
|
2017-03-17T14:55:25
|
|
Fix bug in updating vertex attribs with client memory pointers
In DEBUG version, when using OpenGL back-ends, ANGLE may meet an
INVALID_OPERATION error from driver when attemping to update an
attribute which is disabled and using a client memory pointer.
This patch fixes this bug by skipping such vertex attributes when
updating them to driver. With this patch the process to update
vertex attributes should be:
(1) For enabled attributes using client memory pointer:
update by streaming mode in streamAttributes()
(2) For disabled attributes using client memory pointer:
just label them dirty and skip them
(3) For attributes using buffer objects:
update with vertexAttrib*Pointer
BUG=angleproject:1942
Change-Id: I57043e5904eb4a342fa22d449d98a957010170d6
Reviewed-on: https://chromium-review.googlesource.com/456747
Commit-Queue: Geoff Lang <geofflang@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>
|
|
0c0dc345
|
2017-03-24T14:18:51
|
|
Vulkan: Defer command buffer submission.
This packs more rendering commands into fewer command buffers.
Instead of using a single command buffer per-command, create a
buffer and record commands into it until we need to present the
frame. More sophisticated management will be necessary in the future
when we can do other types of copied and read-back from image data.
This also reduces the number of Fences we use for checking if the
device is finished with resources. Instead of creating a Fence
per-command-buffer, it creates one per-swap.
BUG=angleproject:1898
Change-Id: I9c6033bc04289fd8f936c0df914afc51fc434b29
Reviewed-on: https://chromium-review.googlesource.com/445800
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: 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>
|
|
6de51858
|
2017-04-12T09:53:01
|
|
Optimize angle::BitSetIterator.
Adds a new custom bitset template to handle packing as many bits as
possible into a single variable. Intelligently select the right class
depending on platform features and bit sizes.
For now, always use a packed 64-bit set on 64-bit, instead of using
a 32-bit set for smaller bitsets.
BUG=angleproject:1814
Change-Id: I3ffef815c15515555833f6fc9302d8a4eee5423b
Reviewed-on: https://chromium-review.googlesource.com/471827
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b36e5393
|
2017-04-12T15:45:13
|
|
D3D: Return an empty string when the translated shader source is empty.
TEST=conformance/extensions/webgl-debug-shaders
BUG=angleproject:1991
Change-Id: Id210ec43501c4e4f3db2c8a0aec25e1d20b18d33
Reviewed-on: https://chromium-review.googlesource.com/475992
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a9042d3c
|
2017-03-17T08:50:45
|
|
ES31: Add array element transformfeedback
This enhances the PackedVarying to be either one element of array, or
whole array. Correspondingly the VaryingPacking is expanded to pack it
properly.
BUG=angleproject:1950
Change-Id: I0529d7ac4367d42b2b433410fbf08351412aada8
Reviewed-on: https://chromium-review.googlesource.com/459115
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
1e5499db
|
2017-04-05T11:22:16
|
|
Refactor Signal utils into template classes.
This will allow us to pass on extra information to the receiving end,
such as the specific texture levels that are dirty.
BUG=angleproject:1635
Change-Id: Idb7ca1d625499e50e7712c458b694f6e9bfc0595
Reviewed-on: https://chromium-review.googlesource.com/453382
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2b39659d
|
2017-03-29T15:36:04
|
|
ES31: Implement glDispatchCompute for OpenGL backend
This patch refers to https://chromium-review.googlesource.com/c/380639/
BUG=angleproject:1955
TESTCASE=angle_end2end_tests
Change-Id: Iafd7a6ba2d71c0b332d9267a1260d9dbd9800c02
Reviewed-on: https://chromium-review.googlesource.com/462089
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e918de22
|
2017-04-12T10:21:11
|
|
Vulkan: Don't finish on swap.
This will enable the next frame to render while the previous frame's
command buffers are executing and rendering is happening. This should
speed up the Vulkan perf test.
BUG=angleproject:1898
Change-Id: I0820300d7934ef280cf75628239fe40dc96b8242
Reviewed-on: https://chromium-review.googlesource.com/445799
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
46258e1f
|
2017-04-10T12:28:34
|
|
Blit9: Pass the dest rect to setViewportAndShaderConstants.
Using the sourceRect for calculating the viewport and texture coordinates
was not enough when the source and destination rectangles were different
sizes (generating mipmaps).
BUG=709232
Change-Id: I2704ddf6e3da0939ad77d278ab495e53a2d9bc7d
Reviewed-on: https://chromium-review.googlesource.com/473266
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
20e005b2
|
2017-04-07T14:19:22
|
|
Rename BitSetIterator.h to bitset_utils.h
BUG=angleproject:1814
Change-Id: I152ae13b6b7cf0ba72259967f0f124e199b20e07
Reviewed-on: https://chromium-review.googlesource.com/471826
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
72106562
|
2017-03-24T14:18:50
|
|
Vulkan: Only re-create pipeline on state change.
This speeds up the simple perf test, but it is a very simple
optimization that does not have a cache of pipelines or anything
sophisticated.
BUG=angleproject:1898
Change-Id: Iec126bc73bf28f8bb33662a2f70670588f010d72
Reviewed-on: https://chromium-review.googlesource.com/444850
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9aded17c
|
2017-04-05T11:07:56
|
|
Invalidate completeness caches when enabling extensions.
Enabling extensions can cause framebuffers and textures to go from
incomplete to complete.
No functional changes from the API surface.
BUG=angleproject:1523
BUG=angleproject:1958
Change-Id: Iff686e1c292f6cf4921d6fffd7eb98bedaba828b
Reviewed-on: https://chromium-review.googlesource.com/468410
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
dd43e6cd
|
2017-03-24T14:18:49
|
|
Pass Context to VertexArray and Framebuffer syncstate.
This will enable more Vulkan-friendly idioms like clearing the
vulkan pipeline caches correctly on GL state changes immediately
because we have access to the ContextVk.
BUG=angleproject:1898
Change-Id: I16c848d8abdde8e26a38d384e565cec8548a66d0
Reviewed-on: https://chromium-review.googlesource.com/459079
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
b5e884a4
|
2017-03-09T19:33:33
|
|
Clear11 VerticesTransform, RasterizerStates, ScissorRect
- Skip clears if an empty scissor rect is set
- Use rastStates to apply scissoring instead of recomputing the scissored
positions and updating the VB and updating the VB for every clear
- Use ComPtrs for VB and RasterizerStates
BUG=angleproject:1934
Change-Id: Ib4448d8568b465df5de57607be4985095f6bd014
Reviewed-on: https://chromium-review.googlesource.com/453881
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
005a7016
|
2017-03-27T13:17:34
|
|
Adjust the FBO invalidate attachment enums for emulated default FBOs.
BUG=angleproject:1953
Change-Id: I7f325e3b7400e12077cdf9106a83a747a318a299
Reviewed-on: https://chromium-review.googlesource.com/461297
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
80957d99
|
2017-02-20T21:25:59
|
|
ES31: Implement Vertex Attrib Binding entry points
This patch intends to implement all entry points related to Vertex
Attrib Binding.
(1) Add entry points and validation code on following APIs:
- VertexAttribFormat
- VertexAttribIFormat
- VertexAttribBinding
- BindVertexBuffer
- VertexBindingDivisor
(2) Add queries on following parameters:
- VERTEX_ATTRIB_BINDING
- VERTEX_ATTRIB_RELATIVE_OFFSET
- VERTEX_BINDING_DIVISOR
- VERTEX_BINDING_OFFSET
- VERTEX_BINDING_STRIDE
- VERTEX_BINDING_BUFFER
BUG=angleproject:1593
TEST=angle_end2end_tests
TEST=angle_unittests
TEST=dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_relative_offset_*
TEST=dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_bindings_*
TEST=dEQP-GLES31.functional.state_query.integer.max_vertex_attrib_stride_*
TEST=dEQP-GLES31.functional.state_query.vertex_attribute_binding.*
TEST=dEQP-GLES31.functional.debug.negative_coverage.log.vertex_array.vertex_attrib_pointer
TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_format
TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_i_format
Change-Id: I4b477a82df6aad89b89b088580a06d66963e6666
Reviewed-on: https://chromium-review.googlesource.com/446124
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
484dd7b1
|
2017-03-07T16:39:22
|
|
ES31: Implement DrawElementsIndirect D3D part
The implementation of DrawElementsIndirect is similar with
DrawArraysIndirect except that it needs to apply IndexBuffer.
BUG=angleproject:1595
TEST=dEQP-GLES31.functional.draw_indirect.draw_elements_indirect*
dEQP-GLES31.functional.draw_indirect.instancing.*
dEQP-GLES31.functional.draw_indirect.random.*
Change-Id: I5d2c8a7485b18b724fdda6fd964013c941e45b4f
Reviewed-on: https://chromium-review.googlesource.com/455520
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
61afff14
|
2017-03-14T15:34:03
|
|
ES31: Add PROGRAM_SEPARABLE to ProgramParameter and GetProgram
BUG=angleproject:1939
TEST=angle_end2end_tests
Change-Id: I97ad11360f7c015947a2c0cc7d4a47f994726834
Reviewed-on: https://chromium-review.googlesource.com/454264
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
fc72a073
|
2017-03-24T14:52:39
|
|
Update CHROMIUM_copy_texture entry points to the ES3 versions.
BUG=angleproject:1932
Change-Id: Ia45f8522320af1d747fbfb57468e8b881b033543
Reviewed-on: https://chromium-review.googlesource.com/459101
Reviewed-by: Geoff Lang <geofflang@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>
|
|
15015f7f
|
2017-03-16T13:54:21
|
|
ES31: Add glGetProgramResourceIndex API
Add API entry and validation checks(GLES 3.1 section 7.3).
Add the first 2 interfaces(PROGRAM_INPUT and PROGRAM_OUTPUT) implementation.
BUG=angleproject:1920
Change-Id: Ib2dedded9fd79b315e9f38de7c27a5e4ec4c6066
Reviewed-on: https://chromium-review.googlesource.com/453085
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f651c773
|
2017-02-21T15:03:51
|
|
Vulkan: Enable command queueing.
This adds the ability for rendering to happen asynchronously. If
objects in-use are deleted as they are being accessed, ownership
is transferred to the Renderer and they are deleted when not in
use. We determine they're ready for delete using a Fence object.
BUG=angleproject:1898
Change-Id: I4fcfd90ad0665d127bf01a10214a604f3407d9e4
Reviewed-on: https://chromium-review.googlesource.com/428353
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
95f6cedd
|
2017-03-13T17:40:31
|
|
RenderstateCache and Clear11 Optimizations
- Unify DepthStencilState and BlendState caches in RenderStateCache with those in Clear11. This
will increase cache hit rate and reduce memory usage.
- Apply DepthStencilState and BlendState only when required to reduce state sets.
BUG=angleproject:1632
Change-Id: I244e3ba189f82814638fa90e2617aa5441024d0f
Reviewed-on: https://chromium-review.googlesource.com/453888
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d90d388c
|
2017-03-21T10:49:54
|
|
Make sure the default framebuffer has enough draw buffer states.
Querying the draw buffer states of the default framebuffer would lead to
crashes because it only had one state. The spec says that all non-zero
attachments default to GL_NONE and makes no mention of special cased
errors for querying the default framebuffer.
Also fix the validation to check for extensions and ES version when
querying draw buffer state.
BUG=703508
Change-Id: I7db5443141c65a3f9c638f07ba90f78d76e4e7b4
Reviewed-on: https://chromium-review.googlesource.com/457524
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
86904b81
|
2017-03-21T09:30:59
|
|
ES31: Add workaround for illegal MAX_VERTEX_ATTRIB_STRIDE on Linux AMD
Query of MAX_VERTEX_ATTRIB_STRIDE on some Linux AMD OpenGL drivers
returns 0 even if the context is OpenGL 4.4 and 4.5, which is against
SPEC and will block the implementation of ES3.1 feature Vertex Attrib
Binding.
This patch adds the workaround for this bug by choosing an emulated
value (2048) as the value of MAX_VERTEX_ATTRIB_STRIDE on Linux AMD
OpenGL drivers.
BUG=angleproject:1936
TEST=angle_end2end_tests
Change-Id: I831bda6cb94b2489d09735622150d35aa1948274
Reviewed-on: https://chromium-review.googlesource.com/457254
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cc2ed612
|
2017-03-14T15:59:00
|
|
Fix non-square matrix uniform packing.
This was broken in two places: the register count was using the non-
transposed matrix row count. The block layout encoder was also not
set to transpose matrices, which was causing incorrect packing info
to be calculated in link.
BUG=angleproject:1923
Change-Id: I89094aa116fad4bda15f018498f8637520f12bd4
Reviewed-on: https://chromium-review.googlesource.com/454876
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
fbe49a8f
|
2016-12-19T14:19:10
|
|
ES31: Implement DrawArraysIndirect D3D part
There are four buffer types for vertex attribute storage in D3D11:
DIRECT
STATIC
DYNAMIC
CURRENT_VALUE
When drawing, it will call applyVertexBuffer to bind the right type
buffers in D3D11.
DIRECT uses the gl buffer directly without any translation.
CURRENT_VALUE uses a single value for the attribute.
STATIC translates the whole vertex buffer once. So it doesn't need the
first, count and instance informations since it always translates the
whole buffer.
DYNAMIC translates the data every frame. To improve the performance,
in implementation, it only translates 'count' vertexes from 'first'
location in vertex buffer with one drawing for non-instanced vertices.
'first' and 'count' are got from draw parameter list. And for the
translated vertex buffer, when drawing, the first vertex location is 0.
From above analysis, we can see that if all attribute storages are
non-dynamic, we can directly use the indirect buffer to draw. But for
dynamic storages, we have to calculate the first, count, and instances
from indirect buffer and apply them to translate the dynamic type
buffers. Meanwhile, we have to set the first to 0 (see above
description)when drawing.
DrawArrysIndirect implementation is like below:
1. Check whether all vertex attributes are non-dynamic
2. If yes, applyVertexBuffer and DrawInstancedIndirect
3. If no, 1) calculate first, count, and instances from indirect buffer.
2) applyVertexBuffer with these parameters.
4) Use DrawInstanced instead of DrawInstancedIndirect.
BUG=angleproject:1595
TEST=dEQP-GLES31.functional.draw_indirect.draw_arrays_indirect*
Change-Id: I36431f416443279d51de523b07ce60727914cbbf
Reviewed-on: https://chromium-review.googlesource.com/446690
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fe34780f
|
2017-03-13T17:07:08
|
|
RenderStateCache BlendState Hash Fix
Fix hash function for blendState cache
BUG=angleproject:1937
Change-Id: I0acd7dfcfb933b2b7ff0c1dc6854c7623ec57b3b
Reviewed-on: https://chromium-review.googlesource.com/453887
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e5cdca7e
|
2017-03-13T16:45:56
|
|
RenderStateCache memory usage
Reduce RenderStateCache cache sizes from 4k to 2k. Saves 64kb of memory.
Change-Id: I9e92bbdf095f1e66cf9b84ba81899a8af59d6d86
Reviewed-on: https://chromium-review.googlesource.com/453886
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7a0b3044
|
2017-03-10T10:03:33
|
|
Reland "ES31: Add test on large strides"
In OpenGL 4.3 there is no limit on the maximum value of stride. This patch
choose an emulated value for OpenGL 4.3 to fix the fyi failure on Linux AMD.
BUG=angleproject:1593
Change-Id: I83cecc2ed1a3734dc8b8df3edb48ecc16039ba6e
Reviewed-on: https://chromium-review.googlesource.com/452746
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
0bb791ed
|
2017-03-09T23:44:40
|
|
Revert "ES31: Add test on large strides"
This is failing on Linux AMD: https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Fchromium.gpu.fyi%2FLinux_Release__AMD_R7_240_%2F1729%2F%2B%2Frecipes%2Fsteps%2Fangle_end2end_tests%2F0%2Fstdout
../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp:684: Failure
Expected: (maxStride) >= (2048), actual: 0 vs 2048
This reverts commit 0ba963ef27d1d656986f2f4382391dd5da8c8104.
Reason for revert: <INSERT REASONING HERE>
Original change's description:
> ES31: Add test on large strides
>
> ES3.1 requires the implementation should define MAX_VERTEX_ATTRIB_STRIDE,
> which should be emulated when we use D3D11 backends.
>
> This patch adds tests to verify this value required in ES3.1 are
> supported to be used directly in glVertexAttribPointer for rendering.
>
> BUG=angleproject:1593
>
> TEST=angle_end2end_tests
>
> Change-Id: I1ac206e4f6c972b5748552177c787c0adcb66786
> Reviewed-on: https://chromium-review.googlesource.com/441308
> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
>
TBR=ynovikov@chromium.org,geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,yunchao.he@intel.com,qiankun.miao@intel.com,jiawei.shao@intel.com,yang.gu@intel.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=angleproject:1593
Change-Id: I036da9d6d5633bcc055cc8cfbfde9a15ae67f59c
Reviewed-on: https://chromium-review.googlesource.com/452743
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6ca2b65c
|
2017-02-19T18:05:10
|
|
Implement location layout qualifier for uniforms
This is a complete implementation of the uniform location layout
qualifier. Uniform location set in the shader is plumbed to shader
linking, which does several link-time checks for conflicts and
recursively applies the location to struct members.
Validate that location is consistent as specified in the table in
section 9.2.1 of the ESSL 3.10.4 spec. The location set in the shader
overrides the one set via the CHROMIUM_bind_uniform_location API.
Location conflicts must be checked even if the uniforms are not
statically used. Because of this unused uniforms are now recorded
during uniform linking. After linking checks are done, unused uniforms
are pruned from the program state.
Location is validated against the maximum number of uniform locations
at compile time as specified in section 4.4.3 of the ESSL 3.10.4 spec.
All dEQP uniform location tests don't yet pass due to unrelated bugs.
BUG=angleproject:1442
TEST=angle_end2end_tests, dEQP-GLES31.functional.uniform_location.*
Change-Id: I1f968e971f521fbc804b01e1a7c2b4d14f24d20f
Reviewed-on: https://chromium-review.googlesource.com/447942
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|