|
7fde3673
|
2020-05-25T15:48:06
|
|
GL: Support GL_OES_texture_cube_map_array in frontend/GL backend
GL_OES_texture_cube_map_array is core in 3.2. This CL adds the
necessary validation for the frontend, as well as support for this
extension on the GL backend. The next step is to add the changes
to the translator.
Bug: angleproject:3584
Change-Id: I751a9c9f71a553b05fdf6673250290806d8cfbff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2215306
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a24be8c3
|
2020-05-26T16:45:29
|
|
Don't allow glReadPixels of depth buffers with ES3.1.
The ES3.1 spec does not appear to include these formats as valid
glReadPixels formats.
Test=KHR-GLES3.packed_pixels.rectangle.depth24_stencil8
BUG=angleproject:3520
Change-Id: I6ccd5a7fc49c2e16885cfaace56efce1d96e937a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2216713
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
85c86567
|
2020-05-12T18:43:16
|
|
Handle null ProgramExecutable in ValidateDrawInstancedANGLE()
It's possible for a user to call glDrawArraysInstancedANGLE() without a
Program or PPO bound, which would lead to no ProgramExecutable being
active and causes a null pointer to be returned in
ValidateDrawInstancedANGLE(). To handle this,
ValidateDrawInstancedANGLE() should return 'true' and not signal an
error since it's undefined behavior to draw without a Program/PPO bound,
but it's not an error.
Bug: chromium:1079336
Test: gpu_angle_passthrough_fuzzer
Change-Id: I90d9e99c63411d8388f4d8cf57ed46aec605ee68
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197943
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
8f6d1af9
|
2020-03-19T14:35:48
|
|
Vulkan: Implement EXT_texture_format_sRGB_override
Implemented support for EXT_texture_format_sRGB_override
This is done by creating new imageviews for textures with sRGB
overridden that reinterpret the format to its sRGB counterpart.
As preparation for this, textures that use this feature are
reallocated with VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT. This will
have a performance cost for textures that use this feature, but
should have no performance cost for regular textures, since they
will not have this bit set.
Bug: angleproject:4561
Test: angle_end2end_tests --gtest_filter=SRGBTextureTest.*Vulkan*
Change-Id: Iba25f1f2b0a7227959c1cb4ba6e3ca8311c20d06
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152145
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
12b6a82e
|
2020-04-03T18:31:22
|
|
No-Op draws when no active VS and/or FS is present
Re-land CL with WebGL fixes:
This required some extra pointer checking during validation to handle
the fact that a Program and/or ProgramExecutable may not be present when
attempting to draw. This isn't an error, just undefined behavior, which
we (eventually) treat as a no-op.
According to the OpenGL ES 3.1 spec:
7.3. PROGRAM OBJECTS
If there is no active program for the vertex or fragment shader
stages, the results of vertex and fragment shader execution will
respectively be undefined. However, this is not an error.
To handle this, if no VS or FS is present in the active Program/PPO,
we will no-op the draw command.
Bug: angleproject:3570
Test: KHR-GLES31.core.sepshaderobjs.StateInteraction
Change-Id: I70d688bf344a78cf3b4fd66c995ae03ce4b9b807
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185156
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
1ab55d96
|
2020-05-06T14:45:18
|
|
Revert "No-Op draws when no active VS and/or FS is present"
This reverts commit a4b506f79e3286ffcf3a5d68f20aa97a63edab8e.
Reason for revert: WebGL crash
https://bugs.chromium.org/p/angleproject/issues/detail?id=4616
Original change's description:
> No-Op draws when no active VS and/or FS is present
>
> According to the OpenGL ES 3.1 spec:
>
> 7.3. PROGRAM OBJECTS
> If there is no active program for the vertex or fragment shader
> stages, the results of vertex and fragment shader execution will
> respectively be undefined. However, this is not an error.
>
> To handle this, if no VS or FS is present in the active Program/PPO,
> we will no-op the draw command.
>
> Bug: angleproject:3570
> Test: KHR-GLES31.core.sepshaderobjs.StateInteraction
> Change-Id: If19e9fbb1bc09fa0d490832079bb9f514eab6035
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136386
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Tim Van Patten <timvp@google.com>
TBR=timvp@google.com,jmadill@chromium.org,cclao@google.com
Change-Id: Ia24c4156ff7779b69c1f3f705f1a91cbb1c9684c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:3570
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2184849
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
daed369c
|
2020-05-05T14:24:26
|
|
EGL: Add support for GL_EXT_EGL_image_array extension
Add support for creating 2D array EGLImages. 2D array
textures are core in GLES3.0. Enable the eglImageArray
bool that controls exposure of the extension for all
contexts >= GLES3.0
Bug: angleproject:4604
Tests: angle_end2end_tests --gtest_filter=ImageTest.*2DArray*
Change-Id: Iebc1ad184fe7209ca89d620290337438ac251c56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2176109
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a4b506f7
|
2020-04-03T18:31:22
|
|
No-Op draws when no active VS and/or FS is present
According to the OpenGL ES 3.1 spec:
7.3. PROGRAM OBJECTS
If there is no active program for the vertex or fragment shader
stages, the results of vertex and fragment shader execution will
respectively be undefined. However, this is not an error.
To handle this, if no VS or FS is present in the active Program/PPO,
we will no-op the draw command.
Bug: angleproject:3570
Test: KHR-GLES31.core.sepshaderobjs.StateInteraction
Change-Id: If19e9fbb1bc09fa0d490832079bb9f514eab6035
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136386
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
e09f7a14
|
2020-04-30T17:43:12
|
|
Validation: Fix some function types.
These were slightly mismatching the header types. They seemed
to link fine despite producing some warnings in a tool.
Bug: angleproject:4598
Change-Id: I19cfe4d87eca409c82a7c8cf25fff6f8a4c83ca9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2175057
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
57d95828
|
2020-04-30T17:35:50
|
|
Revert "Add type for attribute locations."
This reverts commit 9349c14344b2d1fd6bc357063b602bc2626c140f
and commit d43b057435e6c9e3194dd20627681ffca0c0808e.
It's no longer needed after we bind attribute locations before link.
Original CL message:
This will allow the capture/replay tool to easily intercept and label
attribute locations for remapping.
There's some inconsistency in implementation in the GL desktop front-
end. This is a quick fix and the full implementation is left for when
we implement the full desktop GL API set.
Bug: angleproject:4598
Change-Id: Ic510159d4d1982eff41560503cabf983a1be0381
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2174076
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9349c143
|
2020-04-29T16:36:17
|
|
Add type for attribute locations.
This will allow the capture/replay tool to easily intercept and label
attribute locations for remapping.
There's some inconsistency in implementation in the GL desktop front-
end. This is a quick fix and the full implementation is left for when
we implement the full desktop GL API set.
Bug: angleproject:4598
Change-Id: Ibf11bcb8669d27265ea376494a2e3124825cf3be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2171933
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
405f8e7b
|
2020-02-24T17:38:10
|
|
Vulkan: Support Program Pipeline Objects
Add support for PPOs to the Vulkan back end.
Bug: angleproject:3570
Change-Id: I5403456929847c185467b008d810f31ecfcb60cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
8bd3dab1
|
2020-04-03T17:44:02
|
|
Create Context::getActiveLinkedProgram()
In preparation for support Program Pipeline Objects, the new function
Context::getActiveLinkedProgram() is being created that will handle
returning the correct Program whether there is currently a Program or
PPO active.
This initial implementation doesn't actually support PPOs yet; that
work is done in a follow-on CL.
Bug: angleproject:3570
Test: CQ
Change-Id: I534261738a55b2f671ca152c2ef9a1e81517a99c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135931
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c916fe8a
|
2020-04-02T16:57:49
|
|
Don't call syncState inside FBO queries.
This prevents a syncState ordering issue that was confusing FBO sync
when robust resource init is enabled. Also cleans up some redundant
format processing for the half float extensions.
Bug: angleproject:4517
Change-Id: Ieb13fc5203cf824a3e8affda96ea5cbbd89d78ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134411
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b83b0f5e
|
2020-01-31T15:09:17
|
|
Add support for NV_read_depth, NV_read_stencil and NV_depth_buffer_float2 extensions
This cl adds the ability for the ReadPixels function to read other
attachments than the color attachment. Checks were added for both
depth and stencil attachments.
A new test was added (DepthStencilFormatsTest.DepthStencilReadback)
to test this new functionality. As the name mentions, it's used to
test reading from the depth and stencil attachments using ReadPixels.
Bug: angleproject:4295
Change-Id: I6fe9be11f05d6055a5883b4315f870e7c0ac41ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2031702
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e0699a2
|
2020-02-05T17:04:06
|
|
Create the ProgramExecutable Class
The ProgramExecutable class is being created to collect data structures
that are common to both Programs and ProgramPipelines, as well as any
shared functions. This allows callers to request the current
ProgramExecutable from the State and make
Program-/ProgramPipeline-specific queries without needing to know
exactly which responded. This will also allow the necessary data
structures to only be populated and stored within the ProgramExecutable
when necessary and reused as often as necessary.
Bug: angleproject:3570
Change-Id: I101f08ab03421894667b4a426a04d2147489f0e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040512
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c77cb596
|
2020-03-24T14:39:32
|
|
No-op draw calls with rendering feedback loops.
This is quite within spec and protects our various back-ends from FB
loops. Also makes the check more cached for optimization purposes.
Bug: angleproject:4490
Change-Id: Ia82ec88244d07670d68ce53495b5893b8a75ac42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118153
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
62b72552
|
2020-03-20T07:51:26
|
|
Add support for EXT_EGL_image_external_wrap_modes
Allows for more wrap modes to TEXTURE_EXTERNAL_OES textures
Test: angle_end2end_tests --gtest_filter=ExternalWrapTest.*
Bug: angleproject:4443
Change-Id: I37bde091b166d7471c13c14fd6b0174136b52ecf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103433
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
605ab763
|
2020-02-24T19:43:32
|
|
D3D11: Implement OES_draw_buffers_indexed
Existing CONSTANT_COLOR/CONSTANT_ALPHA limitation was generalized to independent blend states with draw call invalidation and a new end2end test. dEQP tests that are incompatible with this limitation result in INVALID_OPERATION and are marked as FAIL.
D3D11 renderer always normalizes and deduplicates requested blend states based on their enabled features and bound framebuffer.
Bug: angleproject:4394
Change-Id: I284796e18be71de1b5bfb087d36f6a45be4c3f70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070575
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a18f4145
|
2020-02-19T22:42:12
|
|
Trace/Replay: Add uniform location type.
This is a large refactor that replaces instances of "GLint location"
for uniform locations with "UniformLocation location". This boxed type
is similar to the ResourceID types that we use to capture resource IDs
more easily. Eventually this will give us a more portable replay.
Bug: angleproject:4411
Change-Id: I848e861c3956d95b6b953f57f8b6a2c4a676766f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2066117
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bd4e756a
|
2020-02-17T09:49:45
|
|
Const-ify the validation layer.
Enforces that the validation layers should be working pretty much read-
only with the exeption of updating caches. Requires a few tricks:
- updates EP code generation to add 'const' to pointer parameters
- enables a kludge const_cast to enable the robust query extension
- makes some members of Framebuffer mutable to work around syncState
- makes 'is' queries and other methods in Context/State const
Will allow us to more safely expose the no_error extension.
Bug: angleproject:1280
Change-Id: Id9756757854c9e68fc096ecec8d93759fbe6b3a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2060689
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f87fac56
|
2020-02-17T09:55:32
|
|
Use non-mutating getQuery in validation.
Previously the validation layer would create the query if not created.
This change should be a no-op that makes the validation layer work in
a more "const-friendly" way.
Bug: angleproject:1280
Change-Id: Ife0c216c8a0dcda2a33d1182821c51e4ed5f67e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2060688
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
33b1e31e
|
2020-02-08T17:48:56
|
|
Fix compressed formats validation with TEXTURE_3D
Bug: angleproject:4385
Change-Id: Ibc1b482ec851d8076aacad84ab67fe20a745c122
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2045512
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
58fc8b11
|
2020-01-31T19:03:12
|
|
Implement RGTC (BC4, BC5) compressed texture formats
gl.xml was modified as two enums were missing from their proper group.
dxgi_support_data.json was fixed to not expect BC4 and BC5 on FL9_3
Bug: angleproject:3149
Change-Id: Ieb97a8cf8e92258c1b44e090e823fac227997174
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033068
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
94de306d
|
2020-01-14T16:18:56
|
|
Extensions suffixes
Added NV/OES suffixes to relevant Extensions members.
Bug: angleproject:3104
Change-Id: Ia1798157086230bde8d11c6fcb4fe93211e996ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2013168
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7f8b6e3f
|
2020-01-20T13:59:32
|
|
Vulkan: Add support for GL_IMAGE_FORMAT_COMPATIBILITY_TYPE
For some reason, this wasn't implemented when texture image load and
store was implemented.
Bug: angleproject:4311
Change-Id: I24c508660ad7eb3aa944601175803751b54ce0ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2011324
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
17b3c2f3
|
2019-10-14T14:13:59
|
|
Implement SamplerVideoWEBGL for WEBGL_video_texture extension on desktop
WEBGL_video_texture is an extension that will improve uploading video frame to WebGL performance.
(https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/)
This extension introduced a new texture type TEXTURE_VIDEO_IMAGE_WEBGL and a new sampler type
samplerVideoWEBGL to sample it.
In chromium implementation, TEXTURE_VIDEO_IMAGE_WEBGL maps to different native texture type
based on platform. On desktop, it maps to GL_TEXTURE2D(Currently supported). On Android, it
should map to GL_TEXTURE_EXTERNAL(TODO). SamplerVideoWEBGL needs to be mapped to sampler2D or
samplerExternalOES according to TEXTURE_VIDEO_IMAGE_WEBGL implementation.
This patch implements samplerVideoWEBGL in Angle to support WEBGL_video_texture on desktop. In
this case, samplerVideoWEBGL should map to sampler2D.
Bug: chromium:776222, angleproject:3889
Change-Id: Idb0a5fcde37ca75ccc1181226b91f257212e7500
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866274
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fb1c2fe8
|
2019-11-13T11:10:39
|
|
EXT_texture_norm16 readpixels fix
Adding validation logic for RGBA16 readpixels.
Change readPixels format from UNSIGNED_BYTE to UNSIGNED_SHORT in the
test.
FYI:
According to https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_norm16.txt
ReadPixels format and type used during CopyTex* are limited to RGBA
Bug: 1024387, 1000354, angleproject:1365, angleproject:4089
Change-Id: I70517f255fe335f60e55bdf15f7ebf82e3de0800
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1914127
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
4c7db77e
|
2019-10-31T15:42:31
|
|
Vulkan: Set limitation on maxComputeWorkGroupCount
According to Table 20.45 and Chapter 17 in the ES 3.1 spec, MAX_COMPUTE_WORK_GROUP_COUNT
is get as a GLint by using GetIntegeri_v. However, it is an unsigned integer
in the Vulkan. It needs to set limitation on maxComputeWorkGroupCount[] during
translating.
1. Change the data type to GLint stored in Caps.
2. Ensure that the limitation is set during initialization.
3. Add workaround for angleproject:4120
Bug: angleproject:4066
Change-Id: I1659ba1d560e30b9599cace0feeab8a18890c3ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1890586
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dfc20daf
|
2019-10-28T13:51:42
|
|
Plumb more logic for ANGLE_get_image.
Also implements and tests validation / negative API.
Bug: angleproject:3944
Change-Id: I3385a4255f4fab6a12eee2abfa5ffcce2107359a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1879961
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2d0e5b55
|
2019-08-27T13:49:07
|
|
GL_EXT_multisampled_render_to_texture extension. Part 2.
For textures that use this extension, a multisampled texture is
implicitly created for the texture.
Upon write or read, the multisampled texture is either return
to be drawn to or resolved and returned as a single sampled texture.
This is the functionality change with end2end tests.
Bug: angleproject:980428
Change-Id: I5776875a132fed7a3f4f00fb02f9e8e250684630
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1773717
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6e653981
|
2019-10-09T15:19:02
|
|
Added PVRTC compression extension needed for Metal on iOS.
Bug: angleproject:2634
Change-Id: I413f754fe5551b1e248bc2b824b327b92d8c70f9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849076
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f703443b
|
2019-09-21T14:10:35
|
|
Use Resource IDs in RefCountObject.
This lets us use strongly typed IDs pretty much everywhere. Only one or
two additional places still use GLuint IDs. Mostly for external queries
and for Framebuffer Attachments.
With some clever type reflection helpers lets us define a single
template function for handling operator== and != for resource IDs.
Refactor in preparation for more Capture/Replay work.
Bug: angleproject:3611
Change-Id: I1c0c848e89eb8a4b769714d57686f816daf01634
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815550
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
feb8507f
|
2019-09-03T13:22:04
|
|
Use VertexArrayID in place of GLuint handle
Bug: angleproject:3804
Change-Id: I0454533eff13218a6aa1e1672ffcd0e76aedb399
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769716
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2c5d48a6
|
2019-08-23T09:28:35
|
|
Use FramebufferID in place of GLuint handle
Bug: angleproject:3804
Change-Id: I5e1b5f1903b05a91468379e00ec130802315cdc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769039
Reviewed-by: Jiacheng Lu <lujc@google.com>
Commit-Queue: Jiacheng Lu <lujc@google.com>
|
|
56ba54cc
|
2019-08-08T13:03:34
|
|
Support separate read and draw surfaces in eglMakeCurrent
Update ANGLE's default framebuffer implementation to support reading
and writing to different surfaces within the same framebuffer.
Bug: angleproject:2620
Test: EGLSurfaceTest[3]
Change-Id: I4b1ea04ca87a751f80cf190bf3adec148fc4fce3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744746
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
120b61d3
|
2019-08-21T12:51:58
|
|
Use ShaderProgramID in place of GLuint handles
Bug: angleproject:3804
Change-Id: I5dc640004c2cc054c53261e8e939b6a9f5fc23bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1762363
Commit-Queue: Jiacheng Lu <lujc@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
814a0a1b
|
2019-08-22T11:50:43
|
|
Use QueryID in place of GLuint handle
Bug: angleproject:3804
Change-Id: I921bbe7f67c025ab2b624fe14530c04ac17346f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1765889
Reviewed-by: Jiacheng Lu <lujc@google.com>
Commit-Queue: Jiacheng Lu <lujc@google.com>
|
|
ee79e2ff
|
2019-08-20T11:28:36
|
|
Use SamplerID in place of GLuint handles
Update all Sampler handles to type SamplerID, preparing for midframe
capture of sampler.
Bug: angleproject:3804
Change-Id: I9337919f97d61e28718987612d642c569b90246a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1761780
Commit-Queue: Jiacheng Lu <lujc@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2ab08edc
|
2019-08-12T16:20:21
|
|
Use TextureID in place of GLuint handles.
Bug: angleproject:3611
Change-Id: Ie6156e8732b3ca4dc6c4439c059a5481a4dfd250
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1738753
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7c7dec01
|
2019-08-06T17:44:11
|
|
Use RenderbufferID in place of GLuint handles.
This will allow frame capture/replay to more easily emulate object
handle manipulation. It also provides a bit of type safety. Also
generalizes ResourceMap to handle non-GLuint IDs.
Bug: angleproject:3611
Change-Id: I174fd260f326e0dbe2aca3f818215c91d82cf48c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1706559
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8bb46c5b
|
2019-07-22T16:04:55
|
|
Refactor: add InternalFormat::isInt()
Bug: angleproject:3727
Change-Id: I33ee85563e3b070b4b86afc37230d3f5af54f446
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1713091
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d9c17107
|
2019-07-10T14:56:26
|
|
Add support for GL_OES_texture_compression_astc
This extension adds 3D compressed texture formats, something ANGLE has
not seen before. This requires tracking a compressed block depth for
validation and image size computations.
Update the ldr and hdr extension checks to be in line with the spec.
HDR requires LDR and is not detectable by texture formats alone.
Expose all of the ASTC extensions on the GL backend.
BUG=angleproject:3675
Change-Id: Id04c7c8ef8541e9556579536cdba899b64303caf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1695923
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4e71b2bc
|
2019-07-08T13:23:38
|
|
Framebuffer: Clean up query naming.
Changes instances where we were querying 'color buffers' and 'depth
buffers' to 'color attachments' and 'depth attachments', etc.
Bug: angleproject:3611
Change-Id: I7af7d33e5204f21d288f5bcad997988d36eabfc5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1690679
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
66b5ff58
|
2019-06-28T14:34:22
|
|
texture3D: Implement functionality and enable for Vulkan
Also update test expectations for texture3D.
Bug: angleproject:3188
Change-Id: If8a8e0a83a86c48c2afb0c36534c1e9d4120fe47
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682782
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
4c0a2361
|
2019-06-25T10:56:29
|
|
Update ValidateSamplerParameterBase to use const parameters.
ValidateSamplerParameterBase is called with both const and non-const
parameter pointers which caused our explicit template instantiations to
not cover all cases resulting in link errors. Force the parameters to
always be const so that our instantiations cover everything.
BUG=angleproject:3555
Change-Id: Ibf92572ba80a689c75dcdc70e5153d9941da76f3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1676305
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8af6c6f5
|
2019-06-18T15:43:44
|
|
Vulkan: Minor cleanup of Transform Feedback validation
By using the helper isTransformFeedbackActive* functions.
Bug: angleproject:3205
Change-Id: I50b3e9db427da9f65c3e2b50d7847464e8c28202
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665353
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
857880e5
|
2019-05-27T13:39:15
|
|
GL: Add extensions to enable hardware video decode on Android.
The Android SurfaceTexture API has to be initialized with a texture id
which Chrome has to query from an ANGLE external texture. It also
rebinds and sets the texture dimensions on calls to
SurfaceTexture.updateTexImage so ANGLE must be notified about these
changes so that state tracking and validation continue to function.
BUG=967410
Change-Id: I92e9077f75835b088da3a8caffb3ff40e9ad0361
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1630293
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7d798558
|
2019-05-13T13:40:09
|
|
Skip validating draw buffers when RASTERIZER_DISCARD is enabled.
Bug: 962555, 962636
Change-Id: I4a22f83689252b7b7e51bbb3fc80e8f0d601a43f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1610701
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
3dbe480b
|
2019-05-06T15:59:07
|
|
Validating draw buffers now also considers color mask settings
It will always return true if all 4 channels of color mask are set
to false.
This should only apply to WebGL. Will fix this in a later patch.
Bug: chromium:958374
Change-Id: I46befaf3ae1b63027dfbb309ac32724c616025d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1594629
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ebab670c
|
2019-04-19T14:36:45
|
|
Adding new extension GL_OVR_multiview
GL_OVR_multiview functions exactly the same as GL_OVR_multiview2.
All GL_OVR_multiview2 tests now also repeat the same test using GL_OVR_multiview
Bug: angleproject:3341
Change-Id: I7e5294fb6bbf7692535174a15da6a42e1b5fc4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1575904
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
15ce8227
|
2019-03-18T19:25:21
|
|
Fix error report when active color buffer has no fs output
Also modify or remove some tests to sync up with the expected behavior
stated in spec.
Related to https://github.com/KhronosGroup/WebGL/pull/2780
If any draw buffer with an attachment does not have a defined fragment shader output,
draws generate INVALID_OPERATION.
Also remove Framebuffer masking for inactive outputs.
This workaround is no longer necessary as the WebGL spec has changed.
It also was never fully working and had bugs with certain orders of
calls.
Bug: angleproject:2872
Bug: chromium:927908
Bug: chromium:943538
Change-Id: I73715a6ab851ae3db7096f49ea0a9fdd6f576703
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1530018
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
fb6fbdbc
|
2019-04-12T15:16:30
|
|
Return that polling queries have completed after context loss.
KHR_robustness says that certain queries that poll such as GetSynciv with
SYNC_STATUS should still generate errors after context loss but also return
that the result is available.
BUG=angleproject:3379
Change-Id: Ibf61f8481bc7c3d1b4fa8979dc404d0ca3952fcd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1566142
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
057b76e1
|
2019-04-12T14:48:59
|
|
Implement GL_CHROMIUM_lose_context.
This is useful for testing context lost behaviour.
BUG=angleproject:3379
Change-Id: If0e1538553b1761e313fc36ccde5138cd495200f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1566141
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
7d64c486
|
2019-03-12T14:27:40
|
|
GL_ANGLE_multiview has been renamed to GL_OVR_multiview2.
changes include:
1) GL_OVR_multiview to GL_OVR_multiview2 extension directive change
2) Removal of all references to side by side. We no longer support multiple views in a single 2DTexture. Only 2DTextureArray's are supported
3) WebGL 2 (ES3) is required for multiview
Bug: angleproject:3341
Change-Id: Ie0c1d21d7610f8feebdb2e4d01c6947f57e69328
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1552023
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2664da8b
|
2019-04-08T16:26:52
|
|
Correct texImage uses of texture type -> target.
Similarly to how the subImage calls were corrected. glTexImage and the
family of related functions apply to a single texture target. This
means we need a different TexImage call for each cube face. This is
distinct from TexStorage calls which take a Cube map directly.
Note this is mostly a refactoring change. But it does increase code
consistency and should allow for more efficient code reuse.
Bug: angleproject:3356
Change-Id: I252f8983cdda3a8f0223c44cbbe8d8e2dd319a88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1558673
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
cfc73cc1
|
2019-04-08T16:26:51
|
|
Correct subImage uses of texture type -> target.
Texture "types" are the same as texture "targets" except for cube maps.
Cube map targets specify a single face. Cube map types specify a whole
cube map. The subImage functions should take a target instead of a
type. We were using both in different places. This CL corrects all uses
in subImage calls to "target". It also adds a helper for getting a
target texture from a target. And clarifies the naming of the texture
query methods.
Bug: angleproject:3356
Change-Id: I06eb5c5666eec9b8934becf2ba57a066d5cdabde
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1558672
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a254fa28
|
2019-04-09T14:25:59
|
|
Rename getCurrentDisplay to getDisplay
There is always only one display that can be associated with a context,
so get*Current*Display is confusing.
Bug: None
Change-Id: Iff3a9fc5ad1154b046bb30d7f46a468802ba7fcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1558958
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8413faba
|
2019-04-04T17:13:18
|
|
Fix formsRenderingFeedbackLoopWith check
To make it pass the following webgl conformance test
https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance/rendering/rendering-sampling-feedback-loop.html
It used to fail due to
1. Didn't check if texture unit is sampler complete
2. Only checked active drawbuffers. But drawbuffer settings shouldn't be
taken into account when checking drawing feedback loop.
On top of applying these 2 functional fixes, I also tried to do some
optimization by unwrapping the nested for loop for program sampler
bindings and texture unit in `Program::samplesFromTexture` and putting
them outside of the draw buffer loop according to the old comment by
Antonie @piman.
https://codereview.chromium.org/2461973002/
> ... turning it around (for each texture check if it's
also an attachment, instead of for each attachment check if it's a bound
texture). In particular, we have an upper bound on the number of
attachments, so we can look them up outside the loop into a fixed size
buffer on the stack - and the very common case will be to only have 1 of
them making the inner loop cheap.
But this unwraps sort of breaks the code structure. An alternative way
would be passed in a framebuffer pointer into `Program::samplesFromTexture`
but that would ends up in tight class coupling. I am a bit unsure here.
Would like to hear if think this change is okay in terms of code style.
In addition to further speed up this check (as it runs for every draw
validation) I added a cache mLastColorAttachmentId indicating the last i
of GL_COLORATTACHMENTi that is not GL_NONE to shorten this inner loop.
In most scenario we won't have up to max number of color attachments.
A side note: this is still failing
https://github.com/KhronosGroup/WebGL/blob/master/sdk/tests/conformance2/rendering/depth-stencil-feedback-loop.html
But it's because the test case doesn't fit the spec at this moment.
I will update this test later.
Bug: chromium:660844
Change-Id: I6d718dada71a5d989caac04de03f2454f2377612
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1553963
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
5fd08af4
|
2019-03-13T19:35:36
|
|
Sampler state overrides texture state if set
The new validation added in http://crbug.com/809237 failed to consider
that sampler object state overrides texture object state if a sampler
object is bound. State caching makes this complicated to fix.
Fixes WebGL conformance test incompatible-texture-type-for-sampler.html
https://github.com/KhronosGroup/WebGL/pull/2823
Bug: 940080, 809237
Change-Id: I26b0fb35c5630c36248edae80f0298a0cb7e14b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1522364
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3ce7f960
|
2019-03-14T16:09:05
|
|
Disable sampler/texture type validation
The sampler/texture type validation validation added in
https://chromium-review.googlesource.com/c/1377611 did not correctly
consider sampler objects. This is a minimal change to disable the
validation temporarily, which I intend to merge back to 74. A fix
for the validation is in progress at:
https://chromium-review.googlesource.com/c/angle/angle/+/1522364
Bug: 940080, 809237
Change-Id: If8a1ae46af7daf23cd92ccb8a985329dfd404dc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1524475
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c87e0053
|
2019-02-21T11:40:28
|
|
add ext_float_blend feature and test
Bug: chromium:930993
Change-Id: I8edbd01c5c9f1ed63243cc4a42f6de44c92db8bd
Reviewed-on: https://chromium-review.googlesource.com/c/1481242
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jamie Madill <jmadill@google.com>
|
|
25686848
|
2019-02-07T15:21:27
|
|
Refactor ANGLE's extensions struct to more easily represent multiple
vendor extension
Some extensions are available from multiple vendors with the same name,
while minimizing the amount of duplicated code and validation errors.
The anonymous struct allows individual vendor checks as well as an
"*Any()" check to check for any version of the extension.
Bug: angleproject:3104
Change-Id: Ib8b65cde850462d3746d9663496a595321817514
Reviewed-on: https://chromium-review.googlesource.com/c/1456619
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2b0553ce
|
2019-02-08T10:07:21
|
|
Implement EXT_instanced_arrays
Bug: angleproject:3015
Change-Id: Ib01cc5e0df6db27981cb843a6bd386de5d10c2db
Reviewed-on: https://chromium-review.googlesource.com/c/1452740
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c8c7d400
|
2019-01-16T13:27:15
|
|
Use a table for vertex attrib type validation.
No clearly sampled effect on performance but should require fewer
instructions. May lead to future improvements.
Bug: angleproject:3014
Change-Id: I64e155926ae2c553b059265780e72e91f91f097c
Reviewed-on: https://chromium-review.googlesource.com/c/1393906
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
6e18a238
|
2019-01-16T13:27:14
|
|
Optimize more front-end VertexArray binding.
Improves perf slightly (1-2%) in the Vulkan VBO state change test.
Bug: angleproject:3014
Change-Id: Ia8082b5b3f5e847a6b2775e896893fa8d38c1afd
Reviewed-on: https://chromium-review.googlesource.com/c/1393904
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dd34b3b9
|
2019-01-16T09:59:54
|
|
Pack VertexAttribType enum.
This improves performance slightly in vertex array format checks.
Instead of needing to switch on GLenum values we can use packed arrays
and tables to determine the values we need.
Does not significantly affect performance but will enable future work.
Bug: angleproject:3074
Change-Id: I6f4821a463e9b41fe3f8c8967eb3ed4c1d6b84be
Reviewed-on: https://chromium-review.googlesource.com/c/1393903
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e4109f27
|
2018-12-13T16:25:53
|
|
WebGL: validate texture format matches sampler type
WebGL requires that drawing produces INVALID_OPERATION if a texture's
format doesn't match the sampler type it is bound to. This is a little
confusing because samplers have two attributes that could be called
"type": addressing mode (2D/3D/Cube), and component format
(float/signed/unsigned/shadow). ANGLE already handled checking the
addressing mode; this change adds checking for the component format.
Fixes WebGL conformance test
conformance2/uniforms/incompatible-texture-type-for-sampler.html
Bug: chromium:809237
Change-Id: I52ebfecd92625e3ee10274cb5f548d7e53de72dd
Reviewed-on: https://chromium-review.googlesource.com/c/1377611
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
9fa54eab
|
2019-01-02T18:38:33
|
|
Optimize and inline more validation.
Previously on each draw call we were checking both the instanced and
non-instanced attributes for overflow. On on-instanced draw calls we
don't need to do any special checks for instanced attributes. Also
we can inline more into the headers. This improves draw call
performance slightly.
Bug: angleproject:2966
Change-Id: Idf5861d2d9daf9fffd5c84f6a1ea5b23ac8ab713
Reviewed-on: https://chromium-review.googlesource.com/c/1390357
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Markus Tavenrath <matavenrath@nvidia.com>
|
|
c3dc5d48
|
2018-12-30T12:12:04
|
|
Merge gl::Context and gl::ContextState.
This reduces the number of indrections when accessing the Extensions
or Caps structures. It will provide a small speed-up to some methods.
It also cleans up the code.
Bug: angleproject:2966
Change-Id: Idddac70758c42c1c2b75c885d0cacc8a5c458685
Reviewed-on: https://chromium-review.googlesource.com/c/1392391
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Markus Tavenrath <matavenrath@nvidia.com>
|
|
cc37cbf2
|
2018-12-30T23:35:25
|
|
Apply several small micro-optimizations to ValidateDrawElementsCommon
* Remove indirection when getting CotextState from Context
* Reduce number of branches from 2 to 1 when checking for an InvalidEnum in FromGLEnum<DrawElementsType>
* Provide IndexRange constructor which doesn't initialize the member variables
* Reduce number of branches to 1 when checking for BasicDrawStateErrors for the fast path
* Remove a few branches and reduce math cost during the buffer range check in ValidateDrawElementsCommon
Bug: angleproject:2966
Change-Id: Ibdbed8a59ad9d7abce76622e9f507498e67ab997
Reviewed-on: https://chromium-review.googlesource.com/c/1392805
Commit-Queue: Markus Tavenrath <matavenrath@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ae6ba9f8
|
2018-12-21T23:00:04
|
|
Optimize check for active not paused XFB.
Local testing showed an improved score of about 2% in the most
sensitive CPU overhead benchmark. Likely because of improved
caching from fewer indirections.
Bug: angleproject:2966
Change-Id: I5d9a4b4bcf624ab0b430bb696c4227e589cdb7a6
Reviewed-on: https://chromium-review.googlesource.com/c/1359518
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1e853266
|
2018-12-21T09:07:38
|
|
Cache common DrawElements states.
Similar to how we cache the base common draw states. This will improve
DrawElements performance. Several state checks are optimized into a
single 'if' check of a cached value.
Also includes a regression test for mapping the element array buffer.
Bug: angleproject:2966
Change-Id: Ia6e524a58ad6b7df2e455d67733e15d324b1b893
Reviewed-on: https://chromium-review.googlesource.com/c/1357150
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9b02506c
|
2018-12-12T15:44:12
|
|
Cache valid draw modes with transform feedback.
Enabling transform feedback can affect which draw modes are valid. We
can use the exiting draw modes cache to save having to check the draw
modes twice. We update the cached draw modes on any change to the
transform feedback activity state. e.g. when transform feedback is
started, or resumed.
There are also spec changes that comes into effect in ES 3.2 or when
EXT_geometry_shader is enabled. Again we cache these draw modes in the
packed valid draw modes map.
Will allow for faster validation for draw calls once the other checks
for transform feedback are optimized. Also adds a new regression test.
Bug: angleproject:2966
Change-Id: Iab901e45aab70980b9e631ec8383fdeadbd32368
Reviewed-on: https://chromium-review.googlesource.com/c/1357149
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
3a256228
|
2018-12-08T09:56:39
|
|
Update ANGLE_multiview validation.
Multiview transform feedback now passes if the transform feedback is
paused. Also updates the relevant validation. This aligns the
ANGLE_multiview validation with OVR_multivew and with the WebGL
extension spec.
This change allow us to combine multiple draw call validation updates
into one update function.
Bug: angleproject:3012
Change-Id: I2ce04edc386039134198afa1792201e03cc20490
Reviewed-on: https://chromium-review.googlesource.com/c/1357148
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
be607ad6
|
2018-11-29T10:14:22
|
|
GL: Implement GL_OES_EGL_image_external and GL_OES_EGL_image_external_essl3
Chrome uses external textures as part of its hardware video decode paths
on Android.
BUG=angleproject:2507
Change-Id: I2af608f84a99843c99a16dcfb9fb2fa28cc8fbb6
Reviewed-on: https://chromium-review.googlesource.com/c/1361480
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f5c88e7e
|
2018-12-08T09:56:38
|
|
Refactor and inline DrawElements validation.
This moves ValidateDrawBase into a common inline function. It also
moves some checks in ValidateDrawElementsCommon into
ValidateDrawElementsBase. "Base" is called from DrawElementsIndirect
while "Common" is only called from non-indirect entry points. But this
improves conformance because the missing checks in "Base" apply to
DrawIndirect as well.
In a follow-up patch many checks in "Base" will be cached into a single
value. Much like what we did for ValidateDrawBase.
Also inlines ValidateDrawElements which just calls through to "Common".
Bug: angleproject:2966
Change-Id: Ibe0c5db25f403dd52a50dc73373ebb50cedad003
Reviewed-on: https://chromium-review.googlesource.com/c/1357147
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
c3e3731c
|
2018-11-30T15:25:39
|
|
Give every validation error a constant.
Makes the code more consistent and organized.
Also reduces binary size by about 4k.
Also refactors validation for GetBufferPointerv.
Bug: angleproject:2957
Change-Id: Ib076ce936193e9840eef2499bf815489cdb48479
Reviewed-on: https://chromium-review.googlesource.com/c/1350489
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
8dc27f99
|
2018-11-29T11:45:44
|
|
Use packed enum for DrawElementsType.
The packing and unpacking take a few extra instructions. But it
completely obviates the need for any switches in the validation code.
Speed is slightly faster or the similar depending on the back-end.
Also add gl_angle_ext.xml to GL entry point generator inputs. This was
missing and would cause the code generation to miss certain changes.
Bug: angleproject:2985
Change-Id: I1ea41a71db71135000166ead8305ec42d22ff7b3
Reviewed-on: https://chromium-review.googlesource.com/c/1351729
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7310da33
|
2018-11-05T14:40:01
|
|
Implement GetMultismaplefvANGLE and SampleMaskiANGLE of texture multisample extension
This patch adds GetMultismaplefvANGLE and SampleMaskiANGLE api.
TEST=TextureMultisampleTest.CheckSamplePositions*
TEST=NegativeTextureMultisampleTest.Negtive*
BUG=angleproject:2275
Change-Id: Ib1e8b856059229bbe88328a28cf2a892f4673214
Reviewed-on: https://chromium-review.googlesource.com/c/1319252
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2c0d6a94
|
2018-11-28T14:03:58
|
|
WebGL: Fix DrawElements test and remove size check.
Also optimizes the DrawElements validation to remove redundant tests.
Also make some more validation WebGL-specific.
Bug: angleproject:2979
Change-Id: I2d5c3094ed86ebadbc572e46b8ae105431f7ae68
Reviewed-on: https://chromium-review.googlesource.com/c/1343139
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
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>
|