|
dde78e8c
|
2017-05-22T14:13:27
|
|
ES31: Implement Vertex Attrib Binding on OpenGL
This patch intends to implement Vertex Attrib Binding on OpenGL
back-ends:
1. Add supports for updating vertex attributes by Vertex Attrib
Binding APIs.
2. Refactor the process of updating vertex attribtues in class
VertexArray to make it easier to implement this feature.
BUG=angleproject:1593
TEST=dEQP-GLES31.functional.vertex_attribute_binding.*
Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2
Reviewed-on: https://chromium-review.googlesource.com/510251
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c43be720
|
2017-07-13T16:22:14
|
|
Implement ANGLE_program_cache_control extensions.
This will give the browsers the ability to control the cache size,
query and populate the contents, and trim cache contents on memory
pressure.
BUG=angleproject:1897
Change-Id: I6edaa7d307b890223db98792d5b074e4a7fdfaa4
Reviewed-on: https://chromium-review.googlesource.com/563606
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
50c562de
|
2017-06-06T14:43:30
|
|
Re-land: Don't expose non-conformant multisampling modes on GL
Re-landing with a fallback for failed internal format queries to work
around issue seen on Shield TV. Also fixed wrong handling of integer
RG formats in isRequiredRenderbufferFormat.
Some NVIDIA GL drivers expose non-conformant multisampling modes. The
conformance of multisampling modes can be queried using the extension
NV_internalformat_sample_query. Use it to filter out the
non-conformant modes from the modes that are exposed by ANGLE.
The MAX_SAMPLES value and other similar values stored in caps also
need to be lowered to match the maximum number of samples exposed
for required formats.
There seems to be an NVIDIA driver bug related to querying
STENCIL_INDEX8 multisample format. Work around this by querying
DEPTH24_STENCIL8 instead.
There's also some confusion around whether RGB9_E5 should be
renderable. Once the floating point texture extensions got rolled
into the core GL spec, it was eventually made clear that RGB9_E5
is intended not to be renderable. The extension specs that predate
float textures in the core spec do suggest that it would be
renderable, but in practice drivers that advertise the extension
strings don't reliably implement RGB9_E5 as renderable. Solve this
by disabling it as a renderable format and adding an explanatory
comment.
BUG=chromium:682815
TEST=angle_end2end_tests,
dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
Change-Id: I727f03045a1534d6764b571e6d839243705d25b3
Reviewed-on: https://chromium-review.googlesource.com/551957
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3244736a
|
2017-06-28T14:53:52
|
|
Use MemoryProgramCache.
Add the member functions for saving and loading from the binary cache,
and hook them into the Program class. Requires that the Renderer
supports the program binary extension.
BUG=angleproject:1897
Change-Id: I2dc8d21b02da705ded58c5cd1943562c9c97c49b
Reviewed-on: https://chromium-review.googlesource.com/522874
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
96a483bc
|
2017-06-27T16:49:21
|
|
Add a ResourceMap class for faster GL resource maps.
This gives a very fast query time for handles that are within a fixed
range. For WebGL, where we don't allow create-on-bind, this will be
100% of the time, unless we create a very large number of resources.
It is implemented as a two-tier map - the first uses a flat array to
index into a handle buffer. The second tier uses a map for out-of-
range values.
BUG=angleproject:1458
Change-Id: I421bb3725cf523918cdfdbfaab035ad0dd3bf82d
Reviewed-on: https://chromium-review.googlesource.com/544684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c8a8b843
|
2017-06-28T01:16:41
|
|
Revert "Don't expose non-conformant multisampling modes on GL"
This reverts commit 3cd0dd370f08e7126fe19b761206280c64f80cd1.
Reason for revert: crashes on NVIDIA Shield TV
https://build.chromium.org/p/chromium.gpu.fyi/builders/Android%20Release%20%28NVIDIA%20Shield%20TV%29/builds/1816
Original change's description:
> Don't expose non-conformant multisampling modes on GL
>
> Some NVIDIA GL drivers expose non-conformant multisampling modes. The
> conformance of multisampling modes can be queried using the extension
> NV_internalformat_sample_query. Use it to filter out the
> non-conformant modes from the modes that are exposed by ANGLE.
>
> The MAX_SAMPLES value and other similar values stored in caps also
> need to be lowered to match the maximum number of samples exposed
> for required formats.
>
> There seems to be an NVIDIA driver bug related to querying
> STENCIL_INDEX8 multisample format. Work around this by querying
> DEPTH24_STENCIL8 instead.
>
> There's also some confusion around whether RGB9_E5 should be
> renderable. Once the floating point texture extensions got rolled
> into the core GL spec, it was eventually made clear that RGB9_E5
> is intended not to be renderable. The extension specs that predate
> float textures in the core spec do suggest that it would be
> renderable, but in practice drivers that advertise the extension
> strings don't reliably implement RGB9_E5 as renderable. Solve this
> by disabling it as a renderable format and adding an explanatory
> comment.
>
> BUG=chromium:682815
> TEST=angle_end2end_tests,
> dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
>
> Change-Id: I2218e3a23ea7b48a0615fea77a91897dc7d5fe9e
> Reviewed-on: https://chromium-review.googlesource.com/525515
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,oetuaho@nvidia.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: chromium:682815
Change-Id: I1ebdf52c3fab1526f5a561ac4c8555e305ef2243
Reviewed-on: https://chromium-review.googlesource.com/551164
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ffe00c03
|
2017-06-27T16:26:55
|
|
Add program cache transform feedback workaround.
On Qualcomm devices, they don't seem to correctly save transform
feedback info. Work around this by disabling caching on these devices.
This mirrors a Chromium workaround.
BUG=angleproject:2088
Change-Id: I6496d2fb6a03788379a6968bcd5eb3a9cb9d15d4
Reviewed-on: https://chromium-review.googlesource.com/549981
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
761b02c8
|
2017-06-23T16:27:06
|
|
Add an applyNativeWorkarounds context impl hook.
This method can allow the implementation to override the Context's
workarounds. Use this design pattern now that we have access to the
gl::Context everywhere - we don't need to cache a local copy in the
Renderer objects.
This will be used to apply a Shader Program Cache workaround on the
GL level, that will only be used for the GLES back-end on Qualcomm.
BUG=angleproject:2088
Change-Id: I6da25c5c29c3ba01b8820c5234d1b92dd2d2121a
Reviewed-on: https://chromium-review.googlesource.com/549980
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
65ec0b2e
|
2017-03-28T16:10:52
|
|
ES31: Add support for bindImageTexture on GL backend
This patch refers to https://chromium-review.googlesource.com/c/380636/
BUG=angleproject:1987
Change-Id: If621eed6ecaa7298214843a2a133801ca1487b03
Reviewed-on: https://chromium-review.googlesource.com/462088
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3cd0dd37
|
2017-06-06T14:43:30
|
|
Don't expose non-conformant multisampling modes on GL
Some NVIDIA GL drivers expose non-conformant multisampling modes. The
conformance of multisampling modes can be queried using the extension
NV_internalformat_sample_query. Use it to filter out the
non-conformant modes from the modes that are exposed by ANGLE.
The MAX_SAMPLES value and other similar values stored in caps also
need to be lowered to match the maximum number of samples exposed
for required formats.
There seems to be an NVIDIA driver bug related to querying
STENCIL_INDEX8 multisample format. Work around this by querying
DEPTH24_STENCIL8 instead.
There's also some confusion around whether RGB9_E5 should be
renderable. Once the floating point texture extensions got rolled
into the core GL spec, it was eventually made clear that RGB9_E5
is intended not to be renderable. The extension specs that predate
float textures in the core spec do suggest that it would be
renderable, but in practice drivers that advertise the extension
strings don't reliably implement RGB9_E5 as renderable. Solve this
by disabling it as a renderable format and adding an explanatory
comment.
BUG=chromium:682815
TEST=angle_end2end_tests,
dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
Change-Id: I2218e3a23ea7b48a0615fea77a91897dc7d5fe9e
Reviewed-on: https://chromium-review.googlesource.com/525515
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
fe54834f
|
2017-06-19T11:13:24
|
|
Proliferate gl::Context.
This enables a few small things: it will enable making the platform
a property of the Display rather than a global. The same goes for the
global logging annotator. Also it ensures all back-end implementations
have access to the GL / EGL state when available.
Also introduces a smart pointer helper class to angleutils for objects
that prefer to be destroyed with a context (gl::Context/egl::Display)
parameter. We were using std::unique_ptr in a few places that would
not work well with these objects.
BUG=angleproject:1156
Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba
Reviewed-on: https://chromium-review.googlesource.com/529706
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
61e16b44
|
2017-06-19T11:13:23
|
|
Context: Bind current display/surface.
Looking at the EGL spec, it says for eglGetCurrentDisplay:
"The display for the current context in the calling thread, for the
current rendering API, is returned."
This implies that MakeCurrent binds a display to a Context. There's
also pretty clear language for the read/draw Surface as well, that
they can only be bound to one Context/thread at a time. Hence we
don't need to duplicate this storage in the egl::Thread structure,
merely storing a pointer to the current Context, which has access
to the read/draw Surface and current Display.
BUG=angleproject:1156
Change-Id: Ia3b99d50b3591012c43e851834c1af02ff62a33f
Reviewed-on: https://chromium-review.googlesource.com/538865
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d04908bc
|
2017-06-09T14:15:35
|
|
Refactor ProgramBinary entry points.
These will need to set dirty bits for the program, and this is best
done via the Context.
BUG=angleproject:747
Change-Id: I1379d2d4be0e94206c0aa7cb1546aa1a591f23ff
Reviewed-on: https://chromium-review.googlesource.com/529767
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
165361ca
|
2017-06-07T14:56:57
|
|
Entry point refactoring
Refactor texStorage2D and texStorage3D.
BUG=angleproject:747
Change-Id: Id5ab6bbff5ce6debc84318e28b12683bf8b106b1
Reviewed-on: https://chromium-review.googlesource.com/526371
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
2f348d2a
|
2017-06-05T10:50:59
|
|
Make gl::Compiler reference-counted.
This is helpful for implementing program binary caching in ANGLE.
in order to maintain the current behaviour in Chrome, we will need
to defer shader compilation until link time. Since WebGL allows the
app layer to enable and disable extensions explicitly, the app can
enable or disable an extension between the calls to glCompileShader
and glLinkProgram. Then, if we're deferring shader compilation, we
will have to preserve the extension settings at the time of the call
to compile, not the current settings at the time of link. Making the
compiler reference-counted gives us a pretty simple and robust
solution.
This also changes the Context class to lazily init the shader
compiler. Lazy init prevents any unexpected nulls, and also ensures
the releaseShaderCompiler does exactly that: just releases the shader
compiler, and does not immediately re-initialize it.
BUG=angleproject:2044
Change-Id: I0f0eeb4eb94dc4eee238f92482804a0921c77df0
Reviewed-on: https://chromium-review.googlesource.com/522868
Reviewed-by: Geoff Lang <geofflang@chromium.org>
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>
|
|
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>
|
|
be849e4f
|
2017-05-02T15:49:00
|
|
GLES2: Clean up entry points for auto-gen.
This cleans up a few things:
* refactors a few remaining missed EPs
* removes unnecessary includes
* rename one Context entry point
* moves some ES2 EP validation to validationES2
The last item makes for a significant diff, but this is a refactor
change only, with no functionality change.
BUG=angleproject:747
Change-Id: I7860cc4b6260b6c22faa5f2885297333c0cdb4ed
Reviewed-on: https://chromium-review.googlesource.com/483426
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@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>
|
|
9c9b40ac
|
2017-04-26T16:31:57
|
|
Use parameter cache to skip passing IndexRange.
For DrawElements et al., we can use a simple design to store
entry point parameters and compute index ranges lazily. This allows
us to compute the index range outside of the validation layer.
Fixing this will let us implement a few things, such as the no error
extension. It will also allow auto-generation of the entry points,
since we won't have to have special cases for certain entry
points. It will also help fix the syncState layering problem. Now the
cached parameter helper (which is owned by the Context) can make the
impl layer calls, instead of the validation layer calling the impl
directly.
We use a small array in Context to gather parameters in a generic
way without reallocation on call. We also check type safety by storing
a type info struct which can handle inheritance between type classes.
Optional variables for the cache determine when to re-compute values.
The intent with gatherParams is to call this in every entry point, and
have in most cases be a no-op. In some cases like for IndexRange, we
store some parameters for later use. The inheritance scheme enables
auto-generation of the entry points by keeping signatures similar.
BUG=angleproject:747
Change-Id: I871e99e1334cf6e61ef8da62fde3ced094903f8a
Reviewed-on: https://chromium-review.googlesource.com/474119
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@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>
|
|
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>
|
|
c1d770e8
|
2017-04-13T17:31:24
|
|
Refactor remaining GLES 2.0 entry points.
This will pave the way for several features, like auto-generation.
BUG=angleproject:747
Change-Id: Ic390ac412f4e6b61346629093f185a4c07ea0284
Reviewed-on: https://chromium-review.googlesource.com/474118
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
6e60d6bf
|
2017-04-12T12:59:04
|
|
Don't allow deleting the 0 transform feedback.
BUG=709786
Change-Id: I956cae994241a650869cee45c471074d08e79a5d
Reviewed-on: https://chromium-review.googlesource.com/475131
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: 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>
|
|
82483b93
|
2017-04-11T15:33:00
|
|
Obey the bufSize and write to the length parameter in glGetSynciv.
BUG=angleproject:1985
TEST=conformance2/state/gl-object-get-calls
Change-Id: Ic83c408b60d394ff5719beaedc5d4721b7811a47
Reviewed-on: https://chromium-review.googlesource.com/474551
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
38f2cfb8
|
2017-04-11T15:23:08
|
|
Refactor validation of glGetSynciv.
BUG=angleproject:1985
Change-Id: Idf1057e6d8d8c850643e3b2a22be5a881c8a2301
Reviewed-on: https://chromium-review.googlesource.com/474550
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@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>
|
|
f546e7df
|
2017-03-27T14:12:59
|
|
ES31: Add GL_SHADER_STORAGE_BUFFER_BINDING binding point
The affected APIs are below:
getIntegeri_v getInteger64i_v BindBuffer BindBufferBase BindBufferRange
BUG=angleproject:1951
TEST=dEQP-GLES31.functional.state_query.integer.shader_storage_buffer_binding_*
dEQP-GLES31.functional.state_query.indexed.shader_storage_buffer_*
Change-Id: Ief7186b2ebe305f14e620c31841bc244f84429a5
Reviewed-on: https://chromium-review.googlesource.com/459093
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
fd7c3b52
|
2017-03-21T15:36:03
|
|
ES31: Add glGetProgramResourceName 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: Ide7d5ad40a611a091c3dffab47fd31da57b69f1d
Reviewed-on: https://chromium-review.googlesource.com/457523
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: 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>
|
|
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>
|
|
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>
|
|
e14951e6
|
2017-03-09T18:55:16
|
|
Implement robust buffer initialization.
This uses the most simple implementation: on BufferData calls without
explicit data arguments, it will initialize the buffer data store to
zero. This could be improved by deferring the init until needed, and
skipping it if the buffer store is cleared through other API calls,
but it is not a regression from current Chromium implementation.
BUG=angleproject:1635
Change-Id: I2fb1594851c5050dc2578736c3f74761555da267
Reviewed-on: https://chromium-review.googlesource.com/450921
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e08a1d36
|
2017-03-07T17:24:06
|
|
Plumb robust resource init extensions.
This also cleans up a few minor glitches in the extension texts,
and renames the EGL extension for consistency.
It incidentally fixes a bug in our EGL init where we were checking
the wrong client versions for KHR_create_context.
It also implements a new feature for tests which allow them to defer
Context creation until the test body. This allows tests to check for
EGL extension available before trying to create a context with certain
extensions.
BUG=angleproject:1635
Change-Id: I9311991332c357e36214082b16f2a4a57bfa8865
Reviewed-on: https://chromium-review.googlesource.com/450920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
010e4dbd
|
2017-03-03T14:22:06
|
|
Code refactoring for getters and setters.
The entry point should call into Context at first for getters and setters.
BUG=angleproject:1922
Change-Id: Ibc8f726298cf334a6dafd6402e39c4dcd7e6d333
Reviewed-on: https://chromium-review.googlesource.com/450028
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6eafb04c
|
2016-12-27T17:04:07
|
|
ES31: Add GL_ATOMIC_COUNTER_BUFFER_BINDING binding point
BUG=angleproject:1729
TEST=dEQP-GLES31.functional.state_query.integer.atomic_counter*
dEQP-GLES31.functional.state_query.indexed.atomic_counter*
angle_end2end_tests:AtomicCounterBufferTest
Change-Id: I059c4e22e04cedec9134ec9f631de33f77b1fbe2
Reviewed-on: https://chromium-review.googlesource.com/430959
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a02315b0
|
2017-02-23T14:14:47
|
|
WebGL Compat: Add DEPTH_STENCIL attachments.
This is a special WebGL 1 binding point, that does not correspond to
any native functionality. Due to particularities in validation we
need to represent this with additional state in the Framebuffer.
WebGL 2 fixes this oddity by resolving to the GLES 3 native spec.
In order to pass the WebGL framebuffer objects test, we will also
need a chromium-side CL to work with the additional state tracking
it does in the blink layer, and an additional patch to ANGLE to
clear the depth buffer before the first use (robust resource init).
BUG=angleproject:1708
Change-Id: I111f8f5a451cce7de6cf281a6bc335b92dd2daf2
Reviewed-on: https://chromium-review.googlesource.com/444095
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e18e6394
|
2017-02-20T10:32:23
|
|
ES3.1: Move FramebufferParameteri and GetFramebufferParameteriv to context.
Follow-up of the cl, implementing fmamebuffer parameters api
(https://chromium-review.googlesource.com/c/412126/). Moving entry point
function FramebufferParameteri and GetFramebufferParameteriv to context
according to Jamie's commemts.
BUG=angleproject:1594
TEST=dEQP-GLES31.functional.state_query.framebuffer_default.framebuffer_default*
Change-Id: Ib8a286afe97716576cf5d0a5338eee6588a4e25c
Reviewed-on: https://chromium-review.googlesource.com/444283
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4e0e6f8a
|
2017-02-17T11:06:03
|
|
WebGL Compat: Add DEPTH_STENCIL renderbuffers.
This special internal format was defined in the WebGL 1 spec as a
special unsized format with at least 16 bits of depth and at least
8 bits of stencil. Intenally ANGLE will translate this to packed
24/8 depth/stencil.
The new test is adapted from the WebGL test:
conformance/renderbuffers/framebuffer-object-attachment
BUG=angleproject:1708
Change-Id: I44b03e41889eed02481f603b8d52c530dcfed5ce
Reviewed-on: https://chromium-review.googlesource.com/442094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2597fb64
|
2016-12-09T16:38:02
|
|
ES31: Refactor VertexArray for Vertex Attrib Binding
OpenGL ES3.1 feature Vertex Attrib Binding requires vertex arrays should
be split into two arrays:
1. an array of vertex buffer binding points, each of which specifies:
- a bound buffer object,
- a starting offset for vertex attribute data in that buffer object,
- a stride used by all attributes using that binding point,
- a frequency divisor used by all attributes using that binding point.
2. an array of generic vertex attribute format information records, each
of which specifies:
- a reference to one of the new buffer binding points above,
- a component count and format, and a normalization flag for the
attribute data,
- the offset of the attribute data relative to the base offset of each
vertex found at the associated binding point.
Current ANGLE implementation simply uses a struct to represent a vertex
attribute object, which does not meet the requirements above.
This patch aims to be the the basis of the implementation of all ES3.1
Vertex Attrib Binding APIs by refactoring the struct VertexAttribute and
the class VertexArray to fit the new data layout and ensuring all current
functionality is retained.
BUG=angleproject:1593
TEST=angle_unittests, angle_end2end_tests, gpu_unittests
Change-Id: Ieb41f1bf503f815fd0476d2ea045dcb863465254
Reviewed-on: https://chromium-review.googlesource.com/418880
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>
|
|
5a53d54e
|
2017-02-16T21:24:10
|
|
Remove unneeded ContextImpl::syncState parameter.
The 'state' parameter passed to ContextImpl::syncState() is already
available in ContextImpl as mState.getState().
BUG=none
Change-Id: I13283664579fa04ae67b1d1bbc0cb4426a950b97
Reviewed-on: https://chromium-review.googlesource.com/444099
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
feb8c686
|
2017-02-13T16:07:35
|
|
Add extensions to disable client arrays.
Chrome doesn't allow any client data in its command buffer. Add an ANGLE
extension to request a context that disallows client data.
BUG=602737
Change-Id: If9d5144daea3c629a73562396000df59a671aad3
Reviewed-on: https://chromium-review.googlesource.com/441986
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6c1f671b
|
2017-02-14T19:08:04
|
|
Add destroy hooks for several GL objects.
These hooks allow the back-end renderer to free object resources
without having to store pointers to shared device handles for
each and every object. This will allow us to save memory on
back-ends that really care about memory overhead.
There is a downside in that there is more boilerplate in passing
gl::Context handles around everywhere.
BUG=angleproject:1684
Change-Id: I89463bba8d23f92920e8956650cb73c7fc6d66b7
Reviewed-on: https://chromium-review.googlesource.com/426401
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e8fb640d
|
2017-02-14T17:56:40
|
|
Update RenderbufferStorage EPs to new style.
This will facilitate changes for WebGL compatibility.
BUG=angleproject:747
BUG=angleproject:1708
Change-Id: I62e5d684ca10a843b5e958afe9954c1065bfeb19
Reviewed-on: https://chromium-review.googlesource.com/442093
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5f45e7c3
|
2017-02-10T15:23:28
|
|
Refactor ResourceManagers.
This makes ResourceManagers use more common code. It uses static
polymorphism to implement the various typed resource managers,
and unifies the FramebufferManager into a TypedResourceManager.
The lack of virtual calls and inlining in the header should keep
performance high.
This will make the upcoming refactor to add a destroy hook
for Vulkan objects simpler to implement.
TEST=manual performance testing of BindingPerf.
BUG=angleproject:1684
BUG=angleproject:1639
Change-Id: Ic2f102196020d1005e63a1b2cf0867577fc7c885
Reviewed-on: https://chromium-review.googlesource.com/439488
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
8897afa1
|
2017-02-06T17:17:23
|
|
Pass Context around to Texture::copyImage.
Passing this through the chain will allow us to have access to the
platform methods, as well as be useful in the future for Vulkan.
BUG=angleproject:1660
Change-Id: I819984fceeb5a2a299aa54e59ef3b428f5f9c91f
Reviewed-on: https://chromium-review.googlesource.com/438684
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5f56ddb9
|
2017-01-13T17:29:55
|
|
Buffer: Pass Context to all impl methods.
This allows us to retrieve Device handles for Vulkan, and could allow
us to avoid storing some pointers for other back-ends.
BUG=angleproject:1684
Change-Id: Iccd5b97cf1c3a332d62a38ad0fcf21c352270439
Reviewed-on: https://chromium-review.googlesource.com/426400
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
70ee0f61
|
2017-02-06T16:04:20
|
|
Add destroy handler to SurfaceImpl.
This allows the Vulkan back-end to avoid storing a reference to
the VkDevice. This will extend to all the Vulkan object handle wrapper
types.
BUG=angleproject:1684
Change-Id: I3a98e94bc171ca27f225ce57996c3fdf9581e6e1
Reviewed-on: https://chromium-review.googlesource.com/424229
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c295e516
|
2017-01-27T17:47:50
|
|
Implement EGL_KHR_surfaceless_context
BUG=angleproject:1651
Change-Id: I710df14c2bfa55db2fb9b9715001756d1c1a8f1b
Reviewed-on: https://chromium-review.googlesource.com/434763
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
3bf8e3a2
|
2016-12-01T17:28:52
|
|
Refactor Framebuffer management into a FramebufferManager class.
BUG=angleproject:1639
Change-Id: I03a0950f26557983c8dc816a27cb4038c60e5755
Reviewed-on: https://chromium-review.googlesource.com/415611
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ccab69d6
|
2017-01-27T16:57:15
|
|
Implement GL_OES_surfaceless_context
BUG=angleproject:1651
Change-Id: I733ccedad7c7424cdb70e21ef8d48b2a15ccdfd7
Reviewed-on: https://chromium-review.googlesource.com/434762
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
58806567
|
2017-01-05T13:09:31
|
|
Apply max draw buffer limit for WebGL shaders.
For WebGL, using native caps incorrectly sets gl_MaxDrawBuffers.
This change always applys the limit for compatible shaders.
BUG=angleproject:1523
Change-Id: Ie956f4b9fdd10bdf9276ae08eaeb49e65690185b
Reviewed-on: https://chromium-review.googlesource.com/425477
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4ddf5afb
|
2016-12-01T14:30:44
|
|
Refactor ResourceManager into separate managers per resource type.
BUG=angleproject:1639
Change-Id: I943f553cfb0e0feb57953770784b48e22fccc875
Reviewed-on: https://chromium-review.googlesource.com/423172
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b8353b01
|
2017-01-25T12:57:21
|
|
Vulkan: Simple buffer creation.
This is necessary to initialize vertex arrays.
BUG=angleproject:1579
Change-Id: Ic5a232d5cdfaa75b41241901de842e62ff3b173f
Reviewed-on: https://chromium-review.googlesource.com/406645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ccd8c9b6
|
2017-01-18T17:36:14
|
|
ES31: GetTexLevelParameter support for multisampled texture for GL renderer
BUG=angleproject:1679
TEST=dEQP-GLES31.functional.state_query.texture_level.texture_2d_multisample.*
Change-Id: Ic31f079c0c999d695eb695413271bd0ad10d05ba
Reviewed-on: https://chromium-review.googlesource.com/429930
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bddc46b4
|
2016-12-09T09:50:51
|
|
ES31: Implement multisampled Textures.
Implement TexStorage2DMultisample and getMultisamplefv entry point.
Also modify sample state for Textures and Framebuffers.
BUG=angleproject:1590
TEST=angle_unittests
TEST=angle_end2end_tests
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.sample_position
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_color_2d
TEST=dEQP-GLES31.functional.texture.multisample.samples_*.use_texture_depth_2d
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_tex
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_different_sample_count_tex_rbo
TEST=dEQP-GLES31.functional.texture.multisample.negative.fbo_attach_non_zero_level
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_high_sample_count
TEST=dEQP-GLES31.functional.texture.multisample.negative.texture_zero_sample_count
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_1_texture_2d
TEST=dEQP-GLES31.functional.shaders.builtin_functions.texture_size.samples_4_texture_2d
Change-Id: I8fa7bd4e73b95745858a3e16b1b92004b4a18712
Reviewed-on: https://chromium-review.googlesource.com/414309
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
acd1898e
|
2017-01-04T10:46:42
|
|
Replace Error(GL_NO_ERROR) with NoError().
In order to make the errors be consistent throughout ANGLE.
BUG=angleproject:1686
Change-Id: I0a2d86091d640aedeac94beae345c1fb6971b00d
Reviewed-on: https://chromium-review.googlesource.com/424835
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b1d0a255
|
2016-12-19T16:15:54
|
|
WebGL compatibility: add stencil mask and ref restriction
BUG=angleproject:1523
BUG=chromium:668223
Change-Id: I0726769c938fdfd50af0fad1cef1746d4af2a589
Reviewed-on: https://chromium-review.googlesource.com/422084
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
675fe718
|
2016-12-19T13:07:54
|
|
Don't return Error from Context draw methods.
The Error should be consumed in the Context call.
BUG=angleproject:747
Change-Id: I5daae602e8f6c7feed89573c6c9387c295ba9a32
Reviewed-on: https://chromium-review.googlesource.com/421258
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d9671226
|
2016-11-29T16:30:31
|
|
Implement ES3.1 glDraw*Indirect entry points for OpenGL
BUG=angleproject:1595
TEST=dEQP-GLES31.functional.draw_indirect.*
Change-Id: I82f5d0864e70d6e7abdccf5f10330ddfa099ec62
Reviewed-on: https://chromium-review.googlesource.com/417250
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9d7d0b14
|
2016-11-29T16:30:31
|
|
Add support for GL_DRAW_INDIRECT_BUFFER_BINDING binding point
BUG=angleproject:1595
TEST=dEQP-GLES31.functional.state_query.integer.draw_indirect_buffer_binding*
Change-Id: Ib8f712fdf10411ef0b7b63742d17c3caca99137b
Reviewed-on: https://chromium-review.googlesource.com/416193
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9f09037b
|
2016-12-02T10:20:43
|
|
Change dEQP ES 3.1 expectations from FAIL to SKIP.
UNIMPLEMENTED debug spam was causing the tests time time out. We can mark them
as FAIL again once the dEQP test setup/tear down code doesn't emmit so many
messages.
Implement a couple validation cases for ES 3.1 to greatly reduce the spam.
BUG=angleproject:1647
BUG=angleproject:1442
Change-Id: Ie7b4ac8737a2df1c0ada6ad53154ddf2f37d9c3c
Reviewed-on: https://chromium-review.googlesource.com/415520
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c339c4e5
|
2016-11-29T10:37:36
|
|
Split WebGL compatibility into two extensions.
The mechanism for requesting extensions is now a separate extension.
Added a way to query the extensions that support enabling.
BUG=angleproject:1523
Change-Id: I2efaa9f6d67b12ecae325f455404e34ba04d0e7c
Reviewed-on: https://chromium-review.googlesource.com/414529
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3b573612
|
2016-10-31T14:08:10
|
|
Add enough ES 3.1 enums to support initializing the dEQP ES 3.1 tests.
BUG=angleproject:1442
Change-Id: Iece3efb272fdcbe004d4136129ba7bfe74ba5265
Reviewed-on: https://chromium-review.googlesource.com/405530
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4dc3af09
|
2016-11-18T14:09:27
|
|
Set the right size on the uniform bindings array.
BUG=angleproject:1468
Change-Id: I3d75a03fcf624fe7f9510e76edc4a8298d8c5a72
Reviewed-on: https://chromium-review.googlesource.com/412860
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8a9e4bcf
|
2016-11-13T20:02:12
|
|
Refactor GLES2 Blend entry points.
BUG=angleproject:747
Change-Id: I775265a7494aedd19ca4f18019e3b3181bfb12e9
Reviewed-on: https://chromium-review.googlesource.com/410135
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
01a80eeb
|
2016-11-07T12:06:18
|
|
Refactor all the Bind* GLES 2.0 entry points.
This requires storing a reference the the Context's Framebuffer map
in the ValidationContext. Likely we'll need to do this as well for
the other non-shared object types.
BUG=angleproject:747
Change-Id: I73ee8b0be3c3b9e54b7e48e49d6f738cf1d926dd
Reviewed-on: https://chromium-review.googlesource.com/407843
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
077f20ae
|
2016-11-01T10:08:02
|
|
Properly check for debug and robust access context creation flags.
These flags can come from both attributes and bitfield flags.
Also move the robust access check to an UNIMPLEMENTED in Context, dEQP ES 3.1
tests attempt to use this flag and it's convenient to be able test by disabling
UNIMPLEMENTED assertions.
BUG=angleproject:1442
Change-Id: I1641fdb3afee308235351ebd60be680765b16b3b
Reviewed-on: https://chromium-review.googlesource.com/405774
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b0817d17
|
2016-11-01T15:48:31
|
|
Refactor CopyBufferSubData entry point.
This brings it in line with the new style.
BUG=angleproject:747
Change-Id: Ie4b223d018999be18c3b19fae9cc825a78de09a9
Reviewed-on: https://chromium-review.googlesource.com/405815
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
eb66a6e2
|
2016-10-31T13:06:12
|
|
Replace the GLVersion class with gl::Version.
Update code to use gl::Version in as many places as possible to ease ES 3.1
support.
BUG=angleproject:1588
Change-Id: I3490b53a81027cf849dac551a9cc66ce04506144
Reviewed-on: https://chromium-review.googlesource.com/404946
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
60e6edfa
|
2016-10-31T12:17:19
|
|
Make ASSERT reference the conditional expression.
This should prevent further unexpected bot breakage due to
unreferenced variables in the ASSERT expression.
Also remove the no longer needed variable referencing macro.
BUG=angleproject:1586
Change-Id: I127695165bdfe39c51fe8d17e00daf6bf2fa8252
Reviewed-on: https://chromium-review.googlesource.com/404948
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d2c41d6
|
2016-10-19T16:14:46
|
|
Implement GL_EXT_sRGB_write_control for GL.
BUG=angleproject:1547
BUG=655247
Change-Id: I3f04ddc7032e4a47eb21ff3b8586c5b47415bb64
Reviewed-on: https://chromium-review.googlesource.com/400958
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
496c02df
|
2016-10-20T11:38:11
|
|
Implement robust the GetBufferPointerv entry point.
BUG=angleproject:1354
Change-Id: Id7dd8438224adb1e2729bcdc18a306e5dfc83a3b
Reviewed-on: https://chromium-review.googlesource.com/401399
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
2186c385
|
2016-10-14T10:54:54
|
|
Implement robust GetQuery entry points.
BUG=angleproject:1354
Change-Id: Ic1aaab56d2313a19fb0362f280dbfbf804fb3fcc
Reviewed-on: https://chromium-review.googlesource.com/399040
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c1984ed4
|
2016-10-07T12:41:00
|
|
Implement robust TexParameter and SamplerParameter entry points.
BUG=angleproject:1354
Change-Id: I3aa2dcb8603a839f9c07cd9dd41cb695d2e699f2
Reviewed-on: https://chromium-review.googlesource.com/395529
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f2f6f65f
|
2016-10-05T19:53:23
|
|
Add cross-platform Workarounds to Context.
These are distinct from the renderer-level workarounds.
Add the first workaround, loseContextOnOutOfMemory. This is enabled
when the application enables reset notifications via KHR_robustness,
and is intended for more robust handling of errors in key APIs for
Chromium's correctness (in particular, sync objects).
Change Context::getResetStatus to persistently return the "lost" status
if it was set by calling Context::markContextLost. Previously, if
markContextLost was called but the implementation hadn't actually
received an error like a lost device, the "lost" reset status would be
dropped. Returning it only once to the caller is also fragile. Tested
this by manually injecting a failure in FenceSync11::clientWait and
ensuring that Chromium detected it as expected.
BUG=chromium:650138
Change-Id: Ie53069eacd1754ad5d64936e3fef315af24605fa
Reviewed-on: https://chromium-review.googlesource.com/394233
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ef300b15
|
2016-10-07T15:12:09
|
|
Refactor some entry point stuff.
BUG=angleproject:747
Change-Id: I80634b5e6de8bae1433c49a56a92d3b19c24e11d
Reviewed-on: https://chromium-review.googlesource.com/395568
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
47110bf4
|
2016-04-20T11:13:22
|
|
Implement CHROMIUM_copy_compressed_texture for D3D11.
BUG=angleproject:1356
Change-Id: Id563997d2921cf558c52a781ae66d8bde58d1f2f
Reviewed-on: https://chromium-review.googlesource.com/339847
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ff5b2d51
|
2016-09-07T11:32:23
|
|
Add a GL_ANGLE_robust_client_memory extension.
This allows specifying data size to all GL functions that provide a pointer to
client memory and a length parameter for all functions in which the driver
writes to client memory.
BUG=angleproject:1354
Change-Id: Ia68be1576b957cb529c87b5e0d1bd638c7dbd371
Reviewed-on: https://chromium-review.googlesource.com/382012
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9a8d366a
|
2016-09-22T12:18:29
|
|
FramebufferGL: add readPixels workarounds
Implements workarounds for:
- The pack state making rows overlap in memory, which causes crashes on
some drivers.
- The driver adding an extra last row padding when checking if the
pixel pack buffer is large enough for the readPixels.
BUG=angleproject:1512
Change-Id: I120ff58649bb523e8b01da6ef03d8fcadaf076b2
Reviewed-on: https://chromium-review.googlesource.com/388029
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f41a7151
|
2016-09-19T15:11:17
|
|
Add an extension to disable resource generation on bind.
BUG=angleproject:1518
Change-Id: I662f7b07da5c97831496f2617b0adadf9858bdc9
Reviewed-on: https://chromium-review.googlesource.com/386799
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c287ea6e
|
2016-09-16T14:46:51
|
|
Add WebGL validation extensions to ANGLE.
BUG=angleproject:1523
Change-Id: I6fecb5055ed8087665aeee34b3a066ea8f38d51b
Reviewed-on: https://chromium-review.googlesource.com/386281
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
29639857
|
2016-09-02T15:00:09
|
|
D3D11: Work around Intel uniform buffers bug.
When copying from a staging buffer to a uniform buffer, the first
upload would be incorrect. Work around this by trying to upload
directly to a uniform buffer on the first BufferSubData call.
BUG=chromium:593024
Change-Id: I0df3a1422b962bf3ece5d445f435df01e3544b67
Reviewed-on: https://chromium-review.googlesource.com/368774
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
87fbe1c2
|
2016-08-03T14:41:42
|
|
ContextImpl: only expose getResetStatus for robustness
This will allow each backend to implement this method separately. The
current set of ContextImpl methods used for robustness are slightly
D3D-centric.
BUG=angleproject:1463
Change-Id: I101f8ada2c49de4cf110db48b1e8380c52b50fb2
Reviewed-on: https://chromium-review.googlesource.com/365829
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e1c4d39a
|
2016-08-04T11:44:34
|
|
Fix unused variable warnings.
BUG=angleproject:1442
Change-Id: I07b32d4c1f1a95f136bf922e78053e0de41c1633
Reviewed-on: https://chromium-review.googlesource.com/366083
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
66fb8206
|
2016-07-28T11:45:20
|
|
Add ES3.1 API constants
The newly added capability constants are handled in the corresponding
glGet functions. Also, getBooleani_v has been added.
BUG=angleproject:1442
TEST=angle_deqp_gtest_gles31_tests
--gtest_filter=*functional_state_query_integer_max_*
TEST=angle_deqp_gtest_gles31_tests
--gtest_filter=*state_query_indexed_max_compute_work_group_size*
TEST=angle_unittests
TEST=angle_end2end_tests
Change-Id: I846e006307563ae81d8b6c62cf261417e15186c7
Reviewed-on: https://chromium-review.googlesource.com/362270
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
97073d12
|
2016-04-20T10:42:34
|
|
Implement CHROMIUM_copy_texture for D3D11.
BUG=angleproject:1356
Change-Id: I70246762411dbeeb3e291e317854139a68d80070
Reviewed-on: https://chromium-review.googlesource.com/339434
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1be913cf
|
2016-07-11T17:59:16
|
|
Add support for ES31 context creation
The dEQP test for context creation passes.
SH_WEBGL3_SPEC has been added, but it should be considered whether we
should keep it, remove it or rename it. It was added so that there is
a webgl mapping to es 310 shaders. Check Compiler.cpp. The bison file
has been modified so that some tokens from es3 can be also used in
es31 as well.
A separate macro ES3_1_ONLY is added so that some tokens are limited
only for es 310 shaders.
BUG=angleproject:1442
TEST=angle_unittests
Change-Id: I2e5ca227c96046c30dc796ab934f3fda9c533eba
Reviewed-on: https://chromium-review.googlesource.com/360300
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9d901791
|
2016-07-15T15:58:58
|
|
Fix KHR_Debug segfault errors
Calls to functions ObjectLabel, ObjectPtrLabel, GetObjectLabel,
GetObjectPtrLabel were resulting into segfaults due to improper
validation and parameter handling. It could be that the
implementations of those functions were based on an earlier version
of the KHR_Debug extension.
The patch fixes the segfault error and almost all failing dEQP 3.1
tests related to KHR_Debug. The failing tests were also relevant to
older ES versions. There is still one failing test, but that one
fails since ES3.1 is not fully supported yet.
List of reasons for the segfault error and failing tests:
- the segfault error was caused by strlen called on a null pointer
- another segfault was caused by writing out the length to a null
pointer
- even if the buffer size for getObject(Ptr)Label is 0, still the
length of the label can be returned. That was not handled.
BUG=angleproject:1446
TEST=angle_deqp_gtest_gles31_tests
--gtest_filter=*functional_debug_object*
Change-Id: I4743be8e862f3620091061cd7abb206a426655ed
Reviewed-on: https://chromium-review.googlesource.com/361300
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
29f908bf
|
2016-07-19T23:21:01
|
|
Revert "Support EXT_blend_func_extended in the GLES2 context"
Test failures on Intel Release:
https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28New%20Intel%29/builds/1163
Also Intel Debug:
https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Debug%20%28New%20Intel%29/builds/820
Also NVIDIA with a different config:
https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NVIDIA%20GeForce%20730%29/builds/1564
BUG=angleproject:1379
This reverts commit 7f539ea52e6bc493d8e025ed2c43e10f606f088b.
Change-Id: I2634ad2b3fcc31e1e5ffb3674b94cb0aed9fd773
Reviewed-on: https://chromium-review.googlesource.com/361840
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7f539ea5
|
2016-05-20T13:29:08
|
|
Support EXT_blend_func_extended in the GLES2 context
BUG=angleproject:1379
Change-Id: Ibda6e84c0a7f86e838247cd5c538ef956dd786fe
Reviewed-on: https://chromium-review.googlesource.com/346410
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
|