|
e0472f3d
|
2018-11-27T16:32:45
|
|
Slight refactor to ErrorStrings.h.
Allows for better readability. Also sort the error strings by ID.
Bug: angleproject:2957
Change-Id: Ib3900a4c90507ac84496fd5ff916417eb768667b
Reviewed-on: https://chromium-review.googlesource.com/c/1337461
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
610640fa
|
2018-11-21T17:28:41
|
|
Don't use gl::Error in validation.
Instead pass error code and error message directly to the Context. As
a side effect every validation error has an associated message now.
Reduces binary size by almost 100k.
Bug: angleproject:2957
Change-Id: I045e8ab57f8f9d787654a32f6f037011fe3a9f24
Reviewed-on: https://chromium-review.googlesource.com/c/1335890
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
778bf09d
|
2018-11-14T09:54:36
|
|
Auto-generate validation headers.
This will make them easier to maintain. Add to add new features.
Bug: angleproject:2964
Change-Id: I8c1f92e0d0ca15fc4f555f6c537fa9311320ef7d
Reviewed-on: https://chromium-review.googlesource.com/c/1334429
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
c0b6c639
|
2018-09-06T15:02:04
|
|
Implement GetTexLevelParameter api of texture multisample extension
This patch adds GetTexLevelParameterivANGLE and GetTexLevelParameterfvANGLE.
TEST=TextureMultisampleTest.GetTexLevelParameter*
TEST=NegativeTextureMultisampleTest.Negtive*
BUG=angleproject:2275
Change-Id: Id702ba31df36ab65f46b697d480b5bf01b87e360
Reviewed-on: https://chromium-review.googlesource.com/c/1295830
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
|
|
c1fd7376
|
2018-10-26T22:48:39
|
|
Move index range calculations into VertexArray.
This is in preparation for removing the entire DrawCallParams struct.
This struct was big enough to cause a performance hit on draw call perf
tests just by virtue of initializing the fields. Also dereferencing the
struct members is slower than reading function parameters since it adds
an indirection.
Also includes some error refactoring to enable moving code to a shared
location.
In total this patch series reduces overhead by up to 5%.
Bug: angleproject:2933
Change-Id: Ib663f2538c14ac30d4c31fd10d6350be469626e2
Reviewed-on: https://chromium-review.googlesource.com/c/1298380
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b8543630
|
2018-10-02T19:46:14
|
|
Support GL_OES_texture_border_clamp
Added support for GL_TEXTURE_BORDER_COLOR and GL_CLAMP_TO_BORDER in
OpenGL/OpenGLES, Direct3D9 and Direct3D11 backends.
For integer textures in OpenGLES3 contexts these additional entry points
are available now:
void glTexParameterIivOES(enum target, enum pname, const int *params);
void glTexParameterIuivOES(enum target, enum pname, const uint *params);
void glGetTexParameterIivOES(enum target, enum pname, int *params);
void glGetTexParameterIuivOES(enum target, enum pname, uint *params);
void glSamplerParameterIivOES(uint sampler, enum pname, const int *params);
void glSamplerParameterIuivOES(uint sampler, enum pname, const uint *params);
void glGetSamplerParameterIivOES(uint sampler, enum pname, int *params);
void glGetSamplerParameterIuivOES(uint sampler, enum pname, uint *params);
BUG=angleproject:2890
TEST=angle_end2end_tests.TextureBorderClamp*
Change-Id: Iee3eeb399d8d7851b3b30694ad8f21a2111f5828
Reviewed-on: https://chromium-review.googlesource.com/c/1257824
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7818a85c
|
2018-09-06T15:02:04
|
|
Implement GL_ANGLE_texture_multisample API part
Support GL_ANGLE_texture_multisample extension.
This patch adds enums of multisampled texture and texStorage2DMultisampleANGLE
API.
TEST=angle_end2end_tests.exe --gtest_filter=TextureMultisampleTest*
TEST=angle_end2end_tests.exe --gtest_filter=NegativeTextureMultisampleTest.Negtive*
BUG=angleproject:2275
Change-Id: I2cab997edc33aa2d0be6082381545335423f64e0
Reviewed-on: https://chromium-review.googlesource.com/c/804613
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cd0a0a3c
|
2018-10-18T18:41:57
|
|
Introduce SubjectBindingPointer.
We can share the same pointer for the subject binding and the binding
pointer. This further allows us to optimize buffer re-binding. The
shared memory increases cache coherency and reduces the number of
instructions needed.
Bug: angleproject:2891
Change-Id: Id3162fa79de203f75989e7289ea02cb2ea1bec73
Reviewed-on: https://chromium-review.googlesource.com/c/1270217
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
d633b156
|
2018-10-04T23:34:31
|
|
Get rid of VertexFormatType.
The enum VertexFormatType is redundant with angle::FormatID. The Vulkan
back end has already eschewed VertexFormatType, this change updates the
D3D back ends.
BUG=angleproject:2531
Change-Id: I67ea2203ca80be828f4c757a37810fe67a279364
Reviewed-on: https://chromium-review.googlesource.com/c/1263899
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
79b91407
|
2018-10-04T15:11:30
|
|
Add an extension for querying esimated GPU memory size of resources.
BUG=892288
Change-Id: I56fc3ab00c06d711e1a21eb1ad4b2224126730dc
Reviewed-on: https://chromium-review.googlesource.com/c/1262021
Reviewed-by: Yuly Novikov <ynovikov@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f2ed2995
|
2018-10-04T13:54:42
|
|
Add support for EXT_texture_compression_bptc
After validation, the enums are simply forwarded to the native
drivers. The BPTC formats are supported on both OpenGL and D3D.
The included test coverage covers the API quite well, but only has
basic coverage for correct decoding of texture data. More coverage for
texture data could be added later.
BUG=angleproject:2869
TEST=angle_end2end_tests
Change-Id: I3de37972dcf13c6fa3fc1bc429a2627523a4a082
Reviewed-on: https://chromium-review.googlesource.com/c/1261675
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
956ab4d9
|
2018-10-10T16:13:03
|
|
Optimize several functions for the Program perf test.
This gives the same or slightly better performance in the ProgramDraw
perf test. Also only set the Program object as dirty when there are
dirty bits set in the Program itself.
Bug: angleproject:2877
Change-Id: I07b428b40d3e3c24e0a42c970524756b6dc3a30e
Reviewed-on: https://chromium-review.googlesource.com/c/1271475
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
785e8a0b
|
2018-10-04T17:42:00
|
|
Remove gl::LinkResult.
Instead of returning a small struct from LinkProgram calls we use
angle::Result. Linking can have 3 cases:
- the link was successful -> angle::Result::Continue
- the link failed -> angle::Result::Incomplete
- there was an internal error -> angle::Result::Stop
Note that any unexpected Incomplete is still an error. Each function
that accepts Incomplete must check explicitly.
This is the last user of ErrorOrResult.
Bug: angleproject:2491
Change-Id: Idba23be27efe4b561720a4bdd8fe486b40779497
Reviewed-on: https://chromium-review.googlesource.com/c/1255645
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
|
|
44a6fbfd
|
2018-10-02T13:38:56
|
|
Optimize resolveLink.
This changes the program query to resolve the link if required. If the
validation layer is skipped the link is resolved in the gl::Context.
Resolving the link on program query allows us to avoid resolving the
link on most of the gl::Program query APIs.
This improves inlining and particularly affects uniform update. It
fixes a performance regression introduced by the parallel shader
linking extension. Gives a 17% increased score on a uniform benchmark.
Also fixes two missing cases of checking for the extension in our
validation code.
Note that some bugs might still exist when the validation layer is
disabled.
Bug: angleproject:2851
Change-Id: I5d725eede3fa147cedf2ce0129791b3412a97a61
Reviewed-on: https://chromium-review.googlesource.com/1255509
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@google.com>
|
|
7f232939
|
2018-09-12T11:03:06
|
|
Run git cl format on several files.
Bug: angleproject:2763
Change-Id: Idcb8a714a6dccdff3dd953679e17a7314866a37d
Reviewed-on: https://chromium-review.googlesource.com/1214206
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
16e28fd3
|
2018-09-12T11:03:05
|
|
More micro-optimization for draw call validation.
Mostly inlining checks on the hot draw call path.
Slight increase in draw call validation performance. (Up to 13%)
Bug: angleproject:2747
Change-Id: I34c4d7f412c3bca5e559e9bfb5689c0618bb7536
Reviewed-on: https://chromium-review.googlesource.com/1171506
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d84b6737
|
2018-09-06T15:54:35
|
|
Cache ValidateDrawStates.
This improves performance of all draw call validation. The error that
should be generated on the draw call is cached in the Context. The
cache is updated in several places.
Bug: angleproject:2747
Change-Id: I178617623731608e2e7166b53ab6489d8b742ff5
Reviewed-on: https://chromium-review.googlesource.com/1158612
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2eb54074
|
2018-08-22T16:41:26
|
|
Fix EGLImage pixel format validation
This fixes the scenario when EGLImage source and target have different types.
For example, a texture is created with unsigned format using glTexImage2D,
it is used as a source of EGLImage with eglCreateImageKHR,
and then the EGLImage is used to create a renderbuffer target with
glEGLImageTargetRenderbufferStorageOES.
OES_EGL_image doesn't specify what should happen in this case,
but GL implementations (Nexus 5X) seem to allow using this renderbuffer in
glFramebufferRenderbuffer and the resulting framebuffer is complete.
Thus, in this case, instead of checking whether the renderbuffer format
can be used in glFramebufferRenderbuffer, we need to check whether the
original texture can be used in glFramebufferTexture2D.
Similarly in reverse direction.
Also, for the case of source renderbuffer and target texture,
presume that glEGLImageTargetTexture2DOES will succeed regardless of
renderbuffer format.
1. Add isRenderable and isTexturable checks to egl::Image class,
and perform different checks depending on source type.
2. Add isRenderable check to FramebufferAttachment and delegate EGLImage
attachments check to egl::Image.
3. Use these checks in validation of EGLImageTargetTexture2D,
EGLImageTargetRenderbufferStorage and when checking attachment completeness
Bug: angleproject:2567
Change-Id: I8e9f4a2930a4075a4d8464f62582c6825270187e
Reviewed-on: https://chromium-review.googlesource.com/1192585
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
064458a8
|
2018-08-30T14:02:02
|
|
Remove separate ANGLE_texture_multisample_array
We can just expose OES_texture_storage_multisample_2d_array instead.
The compiler was already changed to accept
OES_texture_storage_multisample_2d_array, and now the change is made
also at the API level.
Out-of-bounds access guarantees provided by ANGLE were the only big
difference between the ANGLE spec and the OES spec, so it's simpler
to just expose the native extension. Safe out-of-bounds accesses can
be guaranteed without having them in the extension spec.
This also adds missing texStorage3DMultisample entry point to the proc
table, which will enable running dEQP tests.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: Idf376ee877a3374a33de177df023f0531ec8f01d
Reviewed-on: https://chromium-review.googlesource.com/1196722
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
d310a434
|
2018-08-24T15:40:23
|
|
Add validation and negative tests for multisample arrays
This adds errors for binding and allocating multisample array
textures. New tests in TextureMultisampleTest.cpp check that the
errors are generated as specified.
Tests for querying supported sample counts are also improved and
extended for multisample array textures.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: I6a0fe7ae04bb3d0072f6cbe09026b05e2bc47325
Reviewed-on: https://chromium-review.googlesource.com/1188576
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b42162fb
|
2018-08-20T12:58:37
|
|
Optimize ValidateDrawStates.
Apparently returning a small struct was slow enough to make a 2-3%
difference in benchmark scores. Very visible on the MSVC sampling
profiler.
Bug: angleproject:2747
Change-Id: I459a127f3f2a0fc3a08db15c37257a67f63f20ce
Reviewed-on: https://chromium-review.googlesource.com/1181465
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f0e3c19a
|
2018-08-15T13:37:21
|
|
Add error messages for BlitFramebuffer related errors
These are particularly helpful when debugging multiview rendering that
requires a framebuffer blit.
Existing blitFramebuffer error message strings are moved to
ErrorStrings.h.
BUG=angleproject:1617
TEST=angle_end2end_tests
Change-Id: I6e8b45355045d80abf044714ac4b9d818c53bf46
Reviewed-on: https://chromium-review.googlesource.com/1175125
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7ae70d8f
|
2018-07-06T13:47:01
|
|
ParallelCompile: Parallelize D3D linking
This adds a new linking state to Program. If a Program is in linking
state, on the one hand the foreground thread may continue issuing more
GL calls, and on the other hand the background linking threads may be
accessing Program internally too. Without a proper constraint there
must be conflicts between them. For this purpose, we block any further
GL calls to Program until it's actually linked. In addition, we
prohibit parallel linking an active program, so that ProgramD3D does
not have to worry about such similar conflicts.
Also changes the WorkerThread to support limiting the number of
concurrently running worker threads.
BUG=chromium:849576
Change-Id: I52618647539323f8bf27201320bdf7301c4982e6
Reviewed-on: https://chromium-review.googlesource.com/1127495
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
03cb5266
|
2018-08-08T15:49:24
|
|
Validate transform feedback conflicts on zero draw.
This conflict should be validated even if the draw call would result in
no work being done on the GPU.
Bug: angleproject:2747
Change-Id: I6b32a07ff8a8598dd865270a3a935060f050a68f
Reviewed-on: https://chromium-review.googlesource.com/1162507
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
e7d80f33
|
2018-08-08T15:49:23
|
|
Refactor ValidateDrawBase.
Split the parameter-dependent and parameter-independent validation.
This will more easily let us cache independent validation in Context.
Bug: angleproject:2747
Change-Id: I78a12798cd03a398392ca213bf51e2079295b97e
Reviewed-on: https://chromium-review.googlesource.com/1158610
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
88602e6e
|
2018-08-08T12:49:30
|
|
Fix vertex array element limit condition.
Certain overflows wouldn't be detected when the attribute size was less
than the attribute size and we were drawing a small number of vertices.
Fix this and also set the sentinel value for an integer overflow to be
negative maxint instead of -1 to more effectily distinguish the cases.
Bug: angleproject:1391
Change-Id: I970d5e2a630c0a84c2c02ac0ac41ab1a395819fe
Reviewed-on: https://chromium-review.googlesource.com/1162264
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
43da7c4a
|
2018-08-01T11:34:49
|
|
Remove excess gl:: prefixing in validationES.cpp.
Refactor only.
Bug: angleproject:2747
Change-Id: I0ef7186daec54cd867ec2816f86f7205d836fd91
Reviewed-on: https://chromium-review.googlesource.com/1158609
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cc73f241
|
2018-08-01T11:34:48
|
|
Micro-optimize some validation checks.
Prepares for caching hasMappedBuffer. Also inclines several checks for
faster speed.
Bug: angleproject:2746
Change-Id: I74f9408d7b41e245c3f58d367dd2cc8fbace4a7a
Reviewed-on: https://chromium-review.googlesource.com/1150762
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2da5356e
|
2018-08-01T11:34:47
|
|
Final cleanup to ValidateDrawAttribs.
This moves the client attribs check into a shared place. This cleans up
some of the surrounding code. Also get rid of the vertex count
parameter.
Bug: angleproject:1391
Change-Id: I9c688895c2cc5650d7b395497d69033093916f21
Reviewed-on: https://chromium-review.googlesource.com/1150517
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
a2d1d2db
|
2018-08-01T11:34:46
|
|
Context: Cache VAO element limits.
Cache the minimum value for non instanced and instanced active
attributes. The cache is updated in the following places:
1. Context: bindVertexArray.
2. Context: any executable change (linkProgram/useProgram/programBinary).
3. Vertex Array: any state change call.
4. Buffer: a dependent buffer resize.
This greatly reduces the time we're spending in ValidateDrawAttribs.
Bug: angleproject:1391
Change-Id: I84bb222a1b9736e6165fe40e972cd4299ca1178d
Reviewed-on: https://chromium-review.googlesource.com/1150516
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bdc610ae
|
2018-07-30T10:26:00
|
|
VertexArray: Cache element limit for buffer checks.
Uses checked math in VertexAttribute updates to store an element limit.
This computes more when changing the vertex array rather than at draw
call time. There may be a performance regression for workflows such as:
loop() {
VertexAttribPointer
DrawArrays
}
It should improve performance in most other cases.
Bug: angleproject:1391
Change-Id: I210d666d9dae9164a1c65f70f5e2151fb4f2d86d
Reviewed-on: https://chromium-review.googlesource.com/1150514
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ac43aaa2
|
2018-07-31T11:22:13
|
|
Refactor client check from ValidateDrawAttribs.
This moves out some shared logic into a more accessible place. We don't
need to validate buffer overflows when using robust resource access but
we do need to validate we are using client side data correctly.
Bug: angleproject:1391
Change-Id: I7a3dca8409c5a1faf1ff7bc732d5ed1bd62eb3b1
Reviewed-on: https://chromium-review.googlesource.com/1148817
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
dc358af7
|
2018-07-31T11:22:13
|
|
Context: Cache attributes masks.
This cache is updated in the following locations:
1. GLES1: clientActiveTexture.
2. GLES1: disableClientState/enableClientState.
3. Context: linkProgram/useProgram/programBinary.
4. Context: bindVertexArray.
5. Vertex Array: most state changes.
Improves performance by about 6% in the GL no-op test. Also includes
fixes for keeping the client memory attribs mask in sync. The cache
also includes a boolean if there are any enabled client attributes.
Bug: angleproject:1391
Change-Id: I93b6a2c8492355958fd5483f14b70535729091d6
Reviewed-on: https://chromium-review.googlesource.com/1147437
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8acb1b61
|
2018-07-30T16:20:54
|
|
Allow reads from a multiview framebuffer with one view
It's safe to read from a multiview framebuffer if it is layered and
has just one view. The native OVR_multiview spec supports this as
well.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I04e1364390574075f7e06e39a64e3bf05a539a05
Reviewed-on: https://chromium-review.googlesource.com/1156509
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2eb65034
|
2018-07-30T10:25:57
|
|
Add Context::getActiveBufferedAttribsMask.
This will enable more caching for ValidateDrawAttribs. It requires some
minor refactoring of the GLES 1 code.
Bug: angleproject:1391
Change-Id: I52b73c9384d14cdb90ba6337bfc1ab345866fff0
Reviewed-on: https://chromium-review.googlesource.com/1147436
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ca2ff38b
|
2018-07-11T09:01:17
|
|
Refactor internal format pixel math methods.
This removes the use of the ErrorOrResult class from these methods.
This will enable more performant Error handling. Also cleans up the
ANGLE_TRY_CHECKED_MATH macro to be more general.
Bug: angleproject:2713
Change-Id: I349947d320907839ca88ec1f9251e6ddc3858a08
Reviewed-on: https://chromium-review.googlesource.com/1128920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
a2f043d8
|
2018-07-10T17:21:20
|
|
dEQP: Implement platform error handling.
Also downgrades several Vulkan UNIMPLEMENTED() to WARN().
Also downgrades a couple D3D-specific errors to warnings.
Also downgrades an undefined behaviour integer clear error to warning.
Also includes suppressions for failing D3D11 ES 3.1 SSBO tests.
Also includes suppressions for failing Android GLES format tests.
Also includes suppressions for failing Android Vulkan buffer tests.
Bug: angleproject:2552
Bug: angleproject:2567
Bug: angleproject:1951
Bug: angleproject:2405
Change-Id: Ie619085021d42012cd578b669f7ff4252ca41a58
Reviewed-on: https://chromium-review.googlesource.com/1062791
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
f97641c1
|
2018-06-21T19:22:45
|
|
GLES1: Texture parameters
Note: minimum buffer size is now checked for texture parameters in
GLES2.
- Mipmap generation hint
- Crop rect
- Update test expectations
BUG=angleproject:2306
Change-Id: Ib459b8191111732a1326b44f2226b72ca297325a
Reviewed-on: https://chromium-review.googlesource.com/1111575
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
05a449a7
|
2018-06-20T18:08:04
|
|
Replace reinterpret_cast with safer or no cast
When casting types to one another in C++, the weaker the cast,
the better.
This change replaces instances of reinterpret_cast with static_cast
or no cast where it safe and correct to do so.
BUG=angleproject:2683
Change-Id: I99c9033614a65282ae1d78cf0f4b80fabd75877a
Reviewed-on: https://chromium-review.googlesource.com/1109396
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2a018158
|
2018-06-08T15:59:26
|
|
Change Validation For Indexed Draw Without ELEMENT_ARRAY_BUFFER
Changed WebGL Validation to return INVALID_OPERATION any time an
indexed draw call is made without a bound ELEMENT_ARRAY_BUFFER. Spec
was changed to no longer require count > 0 in order to cause error.
Make same spec change to GL_ANGLE_client_arrays extension.
BUG:angleproject:2639
Change-Id: I23963f357119d081890aa5387b2863e1d42b92a5
Reviewed-on: https://chromium-review.googlesource.com/1093984
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a8802477
|
2018-05-28T11:17:47
|
|
ES31: Implement FramebufferTextureEXT on OpenGL back-ends
This patch intends to implement FramebufferTextureEXT on OpenGL
back-ends.
1. Support layered framebuffer attachments.
2. Add new framebuffer completeness rules on layered framebuffer
attachments.
3. Support FRAMEBUFFER_ATTACHMENT_LAYERED_EXT as a valid <pname>
parameter of GetFramebufferAttachmentParameteriv.
Note that for an entire level of a cube map:
1. It has no TextureTarget because TEXTURE_CUBE is not a valid
target for TexImage*D.
2. It corresponds to 6 ImageDescs (that represents its faces) in
class Texture, so when the cube map is cube complete, we return
the ImageDesc of its first face, meanwhile we do not allow
querying ImageDesc if it is not cube complete.
BUG=angleproject:1941
TEST=angle_end2end_tests
dEQP-GLES31.functional.geometry_shading.query.framebuffer_attachment_layers
dEQP-GLES31.functional.geometry_shading.query.framebuffer_incomplete_layer_targets
dEQP-GLES31.functional.geometry_shading.layered.*
dEQP-GLES31.functional.geometry_shading.instanced.invocation_per_layer_*
dEQP-GLES31.functional.geometry_shading.instanced.multiple_layers_per_invocation_*
Change-Id: I44393b513ec8f1a682fd1c47d3eaa6f3b3fae877
Reviewed-on: https://chromium-review.googlesource.com/1075811
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f15f886c
|
2018-06-04T18:59:41
|
|
Differentiate texture and renderbuffer framebuffer attachment capabilities
ANGLE used to describe the abitily to attach textures and renderbuffers
of a specific format to a framebuffer using a single notion of "renderable".
However, for some formats, only one can be supported, but not the other.
Split TextureCaps::renderable into textureAttachment and renderbuffer.
Also, split InternalFormat::renderSupport into
textureAttachmentSupport and renderbufferSupport.
The only functional change is in a few places which now explicitly check
for texture or renderbuffer attachement support.
Information in format support tables was duplicated for the two capabilities,
so behavior should remain the same. It should be corrected in future CLs.
Note: additional information in those tables may need to be added
in order to properly support GenerateMipmap and TexStorage2DMultisample,
this is beyond the scope of this CL.
Bug: angleproject:2567
Change-Id: I18bce4100525be35709d8bbf4de08ec812aab502
Reviewed-on: https://chromium-review.googlesource.com/1086491
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
493f9571
|
2018-05-24T19:52:15
|
|
Add PrimitiveMode packed GLenum.
Bug: angleproject:2574
Change-Id: I3d7bd7ca0d69a364a611dc04799ea34906fc4a6c
Reviewed-on: https://chromium-review.googlesource.com/1067114
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
80c32ccb
|
2018-04-25T09:48:36
|
|
ES31: Add extra transform feedback rules in EXT_geometry_shader
This patch adds the additional transform feedback rules required in
EXT_geometry_shader. In this extension, more draw commands and render
primitives are allowed for transform feedback.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback.*
angle_end2end_tests
Change-Id: Iedc27dca5c24ca45cd4226a1a0066107c0b40e1d
Reviewed-on: https://chromium-review.googlesource.com/1055192
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
|
|
461b09a8
|
2018-04-23T09:02:09
|
|
GLES1: Renderer (minimal)
This is the renderer code for GLES1 that delivers basic vertex
attributes, matrices, and allows texturing for unit 0 only (more units
mean implementing the multitexturing pipeline).
+ Sample
+ Update test expectations for GLES1 conformance tests
BUG=angleproject:2554
BUG=angleproject:2306
Change-Id: I398edc764f982fbfc4c5e0f9d6bfef1e91aec47c
Reviewed-on: https://chromium-review.googlesource.com/1057356
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
66aafcb4
|
2018-05-12T19:21:31
|
|
Revert "GLES1: Renderer (minimal)"
This reverts commit a69099212f7b3be8e6113ba349eee56af589f3de.
Reason for revert: New tests failing on gpu fyi bot. anglebug.com/2554
Original change's description:
> GLES1: Renderer (minimal)
>
> This is the renderer code for GLES1 that delivers basic vertex
> attributes, matrices, and allows texturing for unit 0 only (more units
> mean implementing the multitexturing pipeline).
>
> + Sample
> + Update test expectations for GLES1 conformance tests
>
> BUG=angleproject:2306
>
> Change-Id: Id5d5603c967e577290085e5946f2cb7a03d7e017
> Reviewed-on: https://chromium-review.googlesource.com/1023988
> Commit-Queue: Lingfeng Yang <lfy@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,lfy@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:2306
Change-Id: Ib6fd9db433cd1a13589d5a9e82cb2c40f3cf71ff
Reviewed-on: https://chromium-review.googlesource.com/1056229
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
a6909921
|
2018-04-23T09:02:09
|
|
GLES1: Renderer (minimal)
This is the renderer code for GLES1 that delivers basic vertex
attributes, matrices, and allows texturing for unit 0 only (more units
mean implementing the multitexturing pipeline).
+ Sample
+ Update test expectations for GLES1 conformance tests
BUG=angleproject:2306
Change-Id: Id5d5603c967e577290085e5946f2cb7a03d7e017
Reviewed-on: https://chromium-review.googlesource.com/1023988
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2fc0806f
|
2018-05-10T15:10:55
|
|
Micro-optimize uniform updates.
This CL is adapted from work by matavenrath@nvidia.com. It does the
following small optimizations:
* inlines a bunch of accessors.
* reorders checks to hit the cache more often
Also some small style updates.
Bug: angleproject:1671
Change-Id: I8f21318e6644dcfe1f99c98f7f377742fcad78d3
Reviewed-on: https://chromium-review.googlesource.com/1054367
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ad3ae90a
|
2018-03-09T13:40:42
|
|
Use packed enums for QueryType.
BUG=angleproject:2169
Change-Id: I129a9d8e295859daa071a298dab9fe1895315cc0
Reviewed-on: https://chromium-review.googlesource.com/957318
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9aef81c7
|
2018-04-30T14:56:15
|
|
Validate blitFramebuffer for overflows on all platforms
We can validate to avoid triggering driver issues even if the native
GLES spec is not telling us to.
This will fix WebGL in Chromium when it's being run with the
--use-cmd-decoder=validating --use-angle=gl config.
BUG=chromium:830046
TEST=WebGL conformance tests
Change-Id: I2d61182cb6cbe46b52e1d9b7ed6b4035defee082
Reviewed-on: https://chromium-review.googlesource.com/1033743
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
7267aa65
|
2018-04-17T15:28:21
|
|
Optimize ValidateDrawAttribs: Part 3.
This is a small optimization for the WebGL compatibility mode.
Instead of scanning the list of attributes for a Transform feedback
conflict, it can quickly check a cached mask. This should save a lot
of cycles on the fast path.
Bug: angleproject:1391
Change-Id: Icb8d095493a629dbff0e93872357e5bf7c7458ae
Reviewed-on: https://chromium-review.googlesource.com/1011236
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8d5571ac
|
2018-04-23T12:29:31
|
|
Restrict BlitFramebuffer dimensions in WebGL mode
Don't allow blitFramebuffer dimensions to overflow 32-bit integer
range as specified in WebGL 2.0 section 5.41.
BUG=chromium:830046
TEST=WebGL 2 conformance tests, angle_end2end_tests
Change-Id: Ia232291b09c94e1e4f837441c6720a78bab672fb
Reviewed-on: https://chromium-review.googlesource.com/1023856
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
629bb259
|
2018-04-20T11:01:33
|
|
Fix WebGL compat feedback loop null deref.
This regressed in "Optimize ValidateDrawAttribs: Part 2."
Bug: chromium:834943
Bug: angleproject:1391
Change-Id: I217719d76b0524ed7900e18bcc4ca1280ec7b6ff
Reviewed-on: https://chromium-review.googlesource.com/1020280
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
427064d2
|
2018-04-13T16:20:34
|
|
Fix perf regression with checkStatus.
Returning an Error was costing us performance in extra
error checks. This intead uses the Context to process the
Error immediately, and returns a value from isComplete and
checkStatus.
Improves performance in draw call validation.
Bug: chromium:822235
Change-Id: I0793fc690e86137425fed593d45083e40aee8db9
Reviewed-on: https://chromium-review.googlesource.com/1011370
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
02c9c04f
|
2018-04-17T13:43:48
|
|
Optimize ValidateDrawAttribs: Part 2.
This moves much of the math into cached values in the VertexAttribute
and VertexBinding.
Bug: angleproject:1391
Change-Id: I1b6c0553bf57fef864c27c5193c7dd7ca9b56f53
Reviewed-on: https://chromium-review.googlesource.com/1008274
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
51af38b8
|
2018-04-15T08:50:56
|
|
Optimize ValidateDrawAttribs: Part 1.
This moves several loop checks outside the loop, and uses more of the
gl::AttributesMask class to do bitset operations instead of using
checks and for loops.
Bug: angleproject:1391
Change-Id: I90a1a7db550390ecd1402cf5a8a6677fd852b7b0
Reviewed-on: https://chromium-review.googlesource.com/1008273
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
416aaf95
|
2018-04-10T08:10:16
|
|
Autogenerate ANGLE extension entry points
Modify autogeneration script to pull data from gl_ext.xml and generate
entry_points_gles_2_0_ext_autogen.cpp/h as a replacement for
entry_points_gles_2_0_ext.cpp/h
Bug:angleproject:2263
Bug:angleproject:1309
Change-Id: Ie21079f8ec5f85c657b891f6d6d59306a4c3b5fe
Reviewed-on: https://chromium-review.googlesource.com/1005409
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fe4bbe6c
|
2018-04-06T13:50:14
|
|
Create Stubs For Unimplemented Extensions
Create context and validation stubs for unimplemented extensions. This
will allow us to use an autogeneration script in the future to generate
entry_points_gles_2_0_ext.cpp.
Bug:angleproject:2263
Change-Id: If3ad3ebd823d65085c7f143cce9e09187e65d4da
Reviewed-on: https://chromium-review.googlesource.com/998440
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
038dd539
|
2018-03-29T17:31:52
|
|
GLES1: glMultiTexCoord4(f|x)
BUG=angleproject:2306
+ common validation for multitexturing units
+ clang-format
Change-Id: I6eb456c273490e85fc7008e7e11d15e22dd20276
Reviewed-on: https://chromium-review.googlesource.com/987298
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
30b604d8
|
2018-03-12T17:26:57
|
|
Check that transform feedback will not overflow its buffers.
Also fix the check for uniform buffer size to use the actual buffer
size instead of the size of the bound range.
Bug: 820639
Change-Id: Iaa2a617ee7ce5ce7cfabbf64bd1d6f8c82c46b65
Reviewed-on: https://chromium-review.googlesource.com/965627
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d104918f
|
2018-03-28T10:02:20
|
|
Refactor ANGLE Extensions Validation
Refactors ANGLE Extensions Validation functions into a common format for
future autogeneration. Any writes to output parameters that occurred
within the ANGLE entry point have been moved into the corresponding
validation function.
Bug:angleproject:2263
Change-Id: I7a678310ad481c1379596a493fcb0b0383fcf3b8
Reviewed-on: https://chromium-review.googlesource.com/985244
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
385b3e03
|
2018-03-21T09:43:28
|
|
Use packed enums on shader types in ANGLE renderer
This patch uses a packed internal enum ShaderType everywhere we
need a shader type instead of the GLenum value of the shader type.
This patch also uses program::getAttachedShader(type) everywhere
we need to get gl::Shader from a program in ANGLE.
BUG=angleproject:2169
Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec
Reviewed-on: https://chromium-review.googlesource.com/972844
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b9f92504
|
2018-01-27T19:00:26
|
|
Update stencil validation rules for WebGL
Based on kbr's patch:
https://chromium-review.googlesource.com/c/angle/angle/+/890605
Implements new rules in this revised WebGL conformance test:
https://github.com/KhronosGroup/WebGL/pull/2583
BUG=chromium:806557
Change-Id: I84701dd7156f0bc4a45ba68e63cb962d2d54c2e5
Reviewed-on: https://chromium-review.googlesource.com/952567
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d2fa07e4
|
2018-03-15T09:20:25
|
|
ES31: Support queries on primitives generated by geometry shader
This patch implements a new query target GL_PRIMITIVES_GENERATED_EXT
for querying the number of primitives generated by geometry shader.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.query.primitives_generated*
Change-Id: Icdc0d2d8be4ff4d589972eada2fa1f917d7bae4c
Reviewed-on: https://chromium-review.googlesource.com/963793
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6f5444da
|
2018-03-14T10:08:11
|
|
Remove HasIndexRange.
This is superseded by the DrawCallParams class. Instead of
storing the context, we also return an error from the index
range resolution.
Bug: angleproject:2389
Change-Id: I9e7d58f006f51872eb3b52cbb9efbee16fff7ef6
Reviewed-on: https://chromium-review.googlesource.com/960570
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
447bfac1
|
2018-03-14T14:23:40
|
|
ES31: Support program parameter queries on geometry shader
This patch implements all the program queries on the geometry
shader stage of a program by glGetProgramiv(), including the
queries on geometry shader input/output primitives, invocations
and maximum output vertices
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.query.geometry_linked_*
dEQP-GLES31.functional.geometry_shading.query.geometry_shader_invocations
dEQP-GLES31.functional.state_query.program.geometry_shader_state_get_programiv
Change-Id: Ibfa630c64dba5baf52ff84ce7e0bf4c567eef8c4
Reviewed-on: https://chromium-review.googlesource.com/961397
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
fccebffe
|
2018-03-08T13:51:02
|
|
ES31: Support adjacency draw modes for geometry shader
This patch implements adjacency primitive types as new draw modes
on OpenGL back-ends.
This patch also implements validations on the compatibilities among
draw modes and geometry shader input primitive types.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.input.*
dEQP-GLES31.functional.geometry_shading.negative.*
Change-Id: I373ebfe88d7f50da3cc81adaf2d1b7f586b0932a
Reviewed-on: https://chromium-review.googlesource.com/954715
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
690c8eb7
|
2018-03-12T15:20:03
|
|
Framebuffer: syncState before internal format query.
Since querying the internal format of an attachment might need ot look
at the RenderTarget for some back-ends, or otherwise flush attachment
changes, we should call syncState internally. This means that we can't
mark these queries as const.
Bug: angleproject:2372
Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb
Reviewed-on: https://chromium-review.googlesource.com/948784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e98b1b5d
|
2018-03-08T09:47:23
|
|
Framebuffer: Handle errors in checkStatus.
This pipes a lot more errors around in the Validation, where
they now will be caught.
Bug: angleproject:2372
Change-Id: Ibb4e47ddc932995a02dd92e10578b7a4097182a9
Reviewed-on: https://chromium-review.googlesource.com/954406
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5b772312
|
2018-03-08T20:28:32
|
|
Nuke ValidationContext.
This pattern never really took off. It was intended to be used to
unit-test our Validation logic, but it become so complex because
of interactions with Framebuffer::syncState that we could never
really make use of it.
Nuke it entirely and simplify the Context class.
Bug: angleproject:2372
Change-Id: I40b9d46ce7706511a210da496ee19192cf609366
Reviewed-on: https://chromium-review.googlesource.com/954291
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e8a93c6e
|
2018-01-04T18:02:24
|
|
New transform feedback buffer binding rules
Detects undefined behavior when a buffer is bound to a transform feedback
binding point and a non transform feedback binding point at the same time.
Also moves the transform feedback buffer generic binding point out of the
transform feedback object and into the context's global state, to match
driver behavior. This way binding a new transform feedback object does not
affect GL_TRANSFORM_FEEDBACK_BUFFER_BINDING which is similar to how VAOs
work with GL_ARRAY_BUFFER_BINDING.
Bug: 696345
Change-Id: If3b9306cde7cd2197a8ce35e10c3af9ee58da0b8
Reviewed-on: https://chromium-review.googlesource.com/853130
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f0e89be6
|
2017-11-08T14:00:32
|
|
Use packed enums for the texture types and targets, part 1
In OpenGL there are two enum "sets" used by the API that are very
similar: texture types (or bind point) and texture targets. They only
differ in that texture types have GL_TEXTURE_CUBEMAP and target have
GL_TEXTURE_CUBEMAP_[POSITIVE|NEGATIVE]_[X|Y|Z].
This is a problem because in ANGLE we use GLenum to pass around both
types of data, making it difficult to know which of type and target a
variable is.
In addition these enums are placed somewhat randomly in the space of
OpenGL enums, making it slow to have a mapping from texture types to
some data. Such a mapping is in hot-code with gl::State::mTextures.
This commit stack makes the texture types and target enums be
translated to internal packed enums right at the OpenGL entry point
and used throughout ANGLE to have type safety and performance gains.
This is the first of two commit which does the refactor for all of the
validation and stops inside gl::Context. This was the best place to
split patches without having many conversions from packed enums to GL
enums.
BUG=angleproject:2169
Change-Id: Ib43da7e71c253bd9fe210fb0ec0de61bc286e6d3
Reviewed-on: https://chromium-review.googlesource.com/758835
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
aef92166
|
2018-02-27T13:51:44
|
|
Move the early-return case of zero mask to Context::blitFramebuffer
When the mask is zero, no buffers are copied in BlitFramebuffer. But we still
need to check all the error situations. So mask of zero should be put in
blitFramebuffer not the validation file.
Meanwhile, we adjust the checking sequence to pass the deqp case.
BUG=angleproject:2375
TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer
Change-Id: I73c78ffb8853153f70fc30e8ae0e704e08e454ac
Reviewed-on: https://chromium-review.googlesource.com/938573
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6ae51611
|
2018-02-23T14:03:25
|
|
ES31: Add missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE
This patch adds missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE
by glGetProgramiv.
When querying GL_COMPUTE_WORK_GROUP_SIZE, an INVALID_OPERATION error
should be generated when this program hasn't been linked successfully
or it doesn't contain any objects to form a compute shader.
BUG=angleproject:2324
TEST=angle_end2end_tests
dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.invalid_program_query
Change-Id: I13dcebef8a0abede5c18a038d4cf915ee4164e2e
Reviewed-on: https://chromium-review.googlesource.com/933627
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
bacaa714
|
2018-01-30T14:01:39
|
|
ES31: support stencil texture via DEPTH_STENCIL_TEXTURE_MODE.
BUG=angleproject:2373
Change-Id: I5edd9db6ef6101b0ad75f71fdcdfbb1261100583
Reviewed-on: https://chromium-review.googlesource.com/936421
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a953b527
|
2018-02-21T16:56:23
|
|
Avoid possible overflow when computing ReadPixels bounds.
BUG=809881
Change-Id: I69c58c93597aea5a5c25298908592ce1ab4a957b
Reviewed-on: https://chromium-review.googlesource.com/929984
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
9fdaa497
|
2018-02-16T10:52:11
|
|
Don't no-op draw calls for zero count in validation.
Make the no-op happen in the Context, so we can properly generator
more errors for negative WebGL tests. Some validation tests still
need to check for no-ops, such as range checks.
BUG=angleproject:2050
Change-Id: I48d0b3cf640f7f128679600e5df108146cfd6348
Reviewed-on: https://chromium-review.googlesource.com/522869
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9dbaeba8
|
2018-02-01T07:26:59
|
|
Validation layer fixes for compressedtexsubimage* dEQP tests
* Change order of validation in ValidateCompressedTexSubImage3D
to get the errors in the same order as the dEQP tests are
expecting them.
* ES 3.1: Section 8.7, page 169: If the internal format is ETC2/EAC,
the target must be a GL_TEXTURE_2D_ARRAY.
* ES 3.1: Section 8.7, page 171: For sub textures, ET2/EAC formats
also requires exact size to be validated.
Bug: angleproject:2327
Change-Id: Ib049c70a52ed5683885a73fb06503898a85786d1
Reviewed-on: https://chromium-review.googlesource.com/897726
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1b1a8640
|
2018-01-23T15:12:01
|
|
Support correct validation for samplerParameterf with GL_TEXTURE_MAX_ANISOTROPY_EXT
Bug: angleproject:2072
Change-Id: I3e0b63f2a63e8769e3eab2be3aa0403317ed0707
Reviewed-on: https://chromium-review.googlesource.com/881707
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@google.com>
|
|
adcf0ae6
|
2018-01-24T08:27:37
|
|
Replace all NULL with nullptr
Bug: angleproject:1695
Change-Id: Ide0591ffdad5815385a4d805b320a32533bcc03a
Reviewed-on: https://chromium-review.googlesource.com/883681
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@google.com>
|
|
c405ae71
|
2017-12-06T14:15:03
|
|
Optimize Vertex Shader Attribute Type Validition
Improves ValidateVertexShaderAttributeTypeMatch by storing vertex
attributes types into masks for quick comparisons when needed. This shows
2% improvement to glDrawElements for the aquarium workload.
BUG=angleproject:2202
Change-Id: I87fa3d30c3d8cdba6dfd936cd1a41fd27b1c6b77
Reviewed-on: https://chromium-review.googlesource.com/814795
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d078c681
|
2018-01-02T11:50:24
|
|
VertexArray: Add enabled attribs bitmask.
This replaces the "max enabled attrib" integer with a bitmask of
enabled attribs. Should have better worst-case performance (only
attribute 15 is enabled) and similar best-case performance (when
only attribute 0 is enabled).
This might also help implementing validation optimizations.
Bug: angleproject:2202
Change-Id: I5cbb533c3af23851a42c80a6dc409a0da84e87c3
Reviewed-on: https://chromium-review.googlesource.com/847284
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
007530ea
|
2017-12-28T14:27:04
|
|
Entry Points: Refactor Extensions Part 2.
This moves the validation and entry point files to use a
consistent syntax. This will facilitate auto-generation.
Bug: angleproject:2263
Change-Id: If5d06e97db66783d7b3d7fb1d6365f8218d956ae
Reviewed-on: https://chromium-review.googlesource.com/846022
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ece12535
|
2017-11-21T15:50:21
|
|
ES31: Fix the issue for relink rendering/compute program.
When link or relink fails, if we try to install the unsuccessfully linked
program (via UseProgram) and start rendering or dispatch compute, We can
not always report INVALID_OPERATION for rendering/compute pipeline.
The result depends on the previous state: Whether a valid program has been
installed in pipeline before. If a valid program has been installed, it
should be OK to use the old executable residing in the GL state to start
rendering or dispatch compute. No error should be reported.
This change also add unit tests for unsuccessfully linked/relinked program
for rendering pipeline to avoid potential error.
If a program successfully relinks when it is in use, the program might
change from a rendering program to a compute program in theory,
or vice versa.
BUG=angleproject:2266
Change-Id: I4726112af2bc74f5beef25e35d2fcaa9f31e0768
Reviewed-on: https://chromium-review.googlesource.com/784273
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e4477001
|
2017-12-01T14:39:58
|
|
Add PackedEnumBitSet, use it for buffer binding validation
Includes angle::BitSetT changes from jmadill@chromium.org
BUG=angleproject:2169
Change-Id: I9f896613f5c6cdc91281cb9a00134f67291870d9
Reviewed-on: https://chromium-review.googlesource.com/804177
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
2eeb1b34
|
2017-11-29T16:06:43
|
|
WebGLCompat: Fix depthstencil query results.
getFramebufferAttachmentParameter returns incorrect
result for framebuffers in an inconsistent state.
BUG=angleproject:2259
Change-Id: I76fa99f1b8847c30469d344bd93dedd9cf6657bf
Reviewed-on: https://chromium-review.googlesource.com/798318
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
76746f9b
|
2017-11-22T11:44:41
|
|
Optimize Fragment Shader Type Match Validation
Improves ValidateFragmentShaderColorBufferTypeMatch by storing input and
output types into a bitmask for quick comparison when validation is
needed. This shows a 2% improvement to glDrawElements for the aquarium
workload.
BUG=angleproject:2203
Change-Id: Iade2ecf28383164e370b48442f01fba6c0962fba
Reviewed-on: https://chromium-review.googlesource.com/775019
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cddcb59e
|
2017-11-13T15:27:35
|
|
ES31: Fix the issue when rendering against compute program.
It is a undefined behavior in gles spec, but we should generate an error.
This change also refactored the coding style for shader in the test.
BUG=angleproject:2260
Change-Id: I7b480e8b66486d9954f7c7f6e8683298e94b6ad7
Reviewed-on: https://chromium-review.googlesource.com/764797
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
5451d532
|
2017-11-16T17:16:34
|
|
Refactor ES31 entry points
BUG=angleproject:2254
Change-Id: I4e837a831e0950330b243bd8aa01831af0a70cc4
Reviewed-on: https://chromium-review.googlesource.com/775604
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
acf2f3ad
|
2017-11-21T19:22:44
|
|
Apply Chromium style fixes.
This addresses several minor code quality issues that are validated
in Chromium, but not yet applied to ANGLE:
* constructors and destructors must be defined out-of-line
* auto is not allowed for simple pointer types
* use override everywhere instead of virtual
* virtual functions must also be defined out-of-line
Slightly reduces binary size for me (~2k on Win, 150k on Linux).
Bug: angleproject:1569
Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6
Reviewed-on: https://chromium-review.googlesource.com/779959
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
92019431
|
2017-11-20T13:09:34
|
|
Make conversion from GL types to native bools consistant.
Some places would compare with "== GL_TRUE" and others with "!= GL_FALSE".
This behaviour is not in the OpenGL spec but "!= GL_FALSE" is the most
standard and follows the same rules as C and C++.
Remove un-necessary validation that params are either GL_TRUE or
GL_FALSE.
Update some internal storage from GLboolean to bool.
BUG=angleproject:2258
Change-Id: I12adbe2d24318a206521ca6ad1099ee7e2bf677e
Reviewed-on: https://chromium-review.googlesource.com/779799
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
491b0d60
|
2017-11-10T12:48:22
|
|
WebGLCompatibility: Allow GL_DEPTH_STENCIL_ATTACHMENT.
Permits depth-stencil attachment points for WebGL.
BUG=angleproject:2090
Change-Id: I7f5a7c63f2a4a76116ce5639833e5fd8d7f50ffb
Reviewed-on: https://chromium-review.googlesource.com/764591
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
fb7685f4
|
2017-11-13T11:44:11
|
|
Validate texture parameters for >0 after rounding.
From the spec (2.3.1 Data Conversion For State-Setting Commands):
"Validation of values performed by state-setting commands is performed
after conversion, unless specified otherwise for a specific command."
BUG=783574
Change-Id: I9edf585a17489ad284bc85a1c3c2236b53ee34d9
Reviewed-on: https://chromium-review.googlesource.com/766569
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e8afa902
|
2017-09-27T15:00:43
|
|
Make GL_ANGLE_framebuffer_blit enableable.
BUG=angleproject:1523
Change-Id: I5d6df35d2e65be6d73ec6100e3351ba5f9ff53a2
Reviewed-on: https://chromium-review.googlesource.com/688639
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
cac94a91
|
2017-11-10T10:09:32
|
|
Optimize ShaderVariable::isBuiltIn.
This makes the check a bit faster, by inlining the prefix check.
Also some cleanups to ValidateVertexShaderAttributeTypeMatch.
BUG=angleproject:2202
Change-Id: Ifeab4cd85a91a1639a461f44776a68ac98c5bd79
Reviewed-on: https://chromium-review.googlesource.com/761240
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
336129f6
|
2017-10-17T15:55:40
|
|
Use a packed enum for buffer targets.
BUG=angleproject:2169
Change-Id: I4e08973d0e16404b7b8ee2f119e29ac502e28669
Reviewed-on: https://chromium-review.googlesource.com/723865
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fa125c9e
|
2017-10-24T13:01:46
|
|
Validate GL_COLOR_ATTACHMENT0 separately from the draw buffers attachments.
EXT_draw_buffers may not be enabled but the maxColorAttachments cap is
always initialized so make sure to validate for the extension instead of
just checking that the attachment is in the valid range.
BUG=angleproject:2058
Change-Id: I5b48cb496bf96cbc0911295aa5bf87784ce9241b
Reviewed-on: https://chromium-review.googlesource.com/735749
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
3ef06a9f
|
2017-11-03T18:41:33
|
|
Skip hasMappedBuffer check in draw validations in WebGL contexts
MapBufferRange, FlushMappedBufferRange, and UnmapBuffer entry points
are removed from the WebGL 2.0 API[1], so we don't need to validate
if a vertex array buffer or an index buffer is mapped or not in draw
validations (ValidateDrawBase and ValidateDrawElementsCommon) in a
WebGL context.
According to profiling data, hasMappedBuffer weights over 1% (1.12%)
CPU times in WebGL Acquarium benchmark (10K fishes, Intel HD630).
With this patch, this hot spot has disappeared and no new hot spots
are introduced.
This optimization can also slightly improve FPS on WebGL benchmarks,
or keep the same at least.
[1] https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.14
BUG=angleproject:1671
Change-Id: I96e770b19b691e81774cc8e0c1b66b65dcc3cc83
Reviewed-on: https://chromium-review.googlesource.com/753281
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
58f67be0
|
2017-10-27T08:59:27
|
|
ES31 program query: support AtomicCounterBuffer and UniformBlock
Calculates atomic counter buffer's shader reference according to its
child counters.
Merges GL_UNIFORM_BLOCK_* queries to GL_*.
Refreshes deqp_gles31_test_expectations.
BUG=angleproject:1920
TEST=angle_end2end_tests:ProgramInterfaceTest*
dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv
dEQP-GLES31.functional.layout_binding.ubo.*
Change-Id: Ia23ddfef5f5dd7e15628f4c259273e1c01c14d80
Reviewed-on: https://chromium-review.googlesource.com/715436
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
86f8116b
|
2017-10-30T15:10:45
|
|
Make compressed texture format extensions enableable.
Fix allowing CompressedTexSubImage calls on ETC1 texture types
(disallowed in the extension spec).
BUG=angleproject:1523
Change-Id: Ic90175ff4626da0170b6c94f204a9d31fd0154a7
Reviewed-on: https://chromium-review.googlesource.com/744443
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|