src/tests


Log

Author Commit Date CI Message
Luc Ferron 90968360 2018-05-04T08:47:22 Vulkan: Incomplete textures support 2D multisample is out of scope since its ES 3 only. Bug: angleproject:2499 Change-Id: Id5f81d713a2882ba2a91b7d3f281d71a3e9289f4 Reviewed-on: https://chromium-review.googlesource.com/1046786 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 61859817 2018-05-09T14:17:39 Vulkan: Fix use-after-free with DynamicBuffer. The implementation of DynamicBuffer before my changes could have some issues in the following use case: - Allocate buffer 1 for Texture 1 (with size as big as the full buffer size) - Allocate buffer 2 for Texture 2 (triggers creation of a new underlying BufferVk and releases the buffer 1 to the Renderer) - Render with Texture 2 (texture 1 hasn't been flushed yet) - swap buffers (causes garbage in the renderer to be cleaned up) - Try rendering with Texture 1, and you'll get an error stating that the buffer we're trying to copy is not valid (because its already been freed). This set of changes: - Add a new test that specifically triggers this case. - enables the texture.filtering.cube* tests in dEQP. - Fixes the issue by adding a manual releasing pattern of the buffers in DynamicBuffer. Bug: angleproject:2505 Change-Id: I207ce4a694016766f008cca67d82b252f460e0df Reviewed-on: https://chromium-review.googlesource.com/1052551 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron a932b6b5 2018-05-01T07:53:17 Vulkan: Fix in DynamicBuffer, allocating too many buffers for no reason -Enables more dEQP tests in functional.texture.filtering -texture.filtering.cube.* tests don't work yet, another CL will be targeted at fixing that after this one. Bug: angleproject:2505 Change-Id: Ic634e0deafa54e8e8ebd0efbdae14263ffdbcef0 Reviewed-on: https://chromium-review.googlesource.com/1037183 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 7348fc5b 2018-05-09T07:17:16 Vulkan: Clear to opaque black instead of transparent This is a problem when we emulate RGB8 with RGBA8. Bug: angleproject:2536 Change-Id: I5665e513ef0138bc56f52ba35342378d8392989f Reviewed-on: https://chromium-review.googlesource.com/1051687 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron fa7503ca 2018-05-08T11:25:06 Vulkan: Support EXT_texture_storage This is a prerequisite to support incomplete textures. Bug: angleproject:2536 Change-Id: Ica40bbd185a67253f457148007b08f6735da788c Reviewed-on: https://chromium-review.googlesource.com/1050308 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Olli Etuaho 67d2cd07 2018-05-07T10:27:22 Issue a clearer warning about negative modulus operands This also adds unit tests for negative modulus operands. BUG=chromium:839468 TEST=angle_unittests Change-Id: I6ab5959ba4f7045d2bde71d246695ef0983c5608 Reviewed-on: https://chromium-review.googlesource.com/1046055 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill e95a7f07 2018-05-08T13:24:15 Make EGLThreadTest cross-platform. BUG=angleproject:2464 Change-Id: Ib2a43bc8e2da467f49e8938c386a5e867c80d5bc Reviewed-on: https://chromium-review.googlesource.com/361921 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman c0a403e2 2018-05-08T18:55:54 Revert "ANGLETest: Reuse test windows per-renderer" This reverts commit fad918f85445f19bc2aa6e6b3ee52f104690ff2a. Reason for revert: attempt to fix anglebug.com/2537 Original change's description: > ANGLETest: Reuse test windows per-renderer > > When running angle_end2end_tests unfiltered with the OpenGL and Vulkan > backends enabled, the test window was recreated all the time and grabbed > focus every-time it was created. This made it impossible to do anything > with the machine running the tests. > > Fix this by having one OSWindow per renderer group that's lazily created: > this solves most of the issue since only a couple windows end up being > created, and at the beginning of the test suite. > > BUG= > > Change-Id: I7a51300f0d59d8b6bb79e54d20b3acbf01068002 > Reviewed-on: https://chromium-review.googlesource.com/1038433 > Commit-Queue: Corentin Wallez <cwallez@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I93bdfa38757cbe2a6ce939c0c3e3da806307e7dd Reviewed-on: https://chromium-review.googlesource.com/1050326 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Geoff Lang 3b9b027c 2018-04-30T16:27:24 Add basic tests of (unsafe) multithreaded contexts. BUG=angleproject:2464 Change-Id: Ia0f0788a1bc4d2ecd883b058f15c629cac5fd166 Reviewed-on: https://chromium-review.googlesource.com/1036063 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 9f394f8c 2018-05-07T15:42:25 Fix use-after-free in drawQuad with useVertexBuffer false quadVertices.data() pointer needs to remain valid until drawArrays is called. To guarantee that quadVertices should stay in the stack until the end of drawQuad(). BUG=angleproject:2533 TEST=angle_end2end_tests Change-Id: I263262db9a9ed9c9cd0d8679addd09677ad7179e Reviewed-on: https://chromium-review.googlesource.com/1046600 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez fad918f8 2018-05-07T09:17:30 ANGLETest: Reuse test windows per-renderer When running angle_end2end_tests unfiltered with the OpenGL and Vulkan backends enabled, the test window was recreated all the time and grabbed focus every-time it was created. This made it impossible to do anything with the machine running the tests. Fix this by having one OSWindow per renderer group that's lazily created: this solves most of the issue since only a couple windows end up being created, and at the beginning of the test suite. BUG= Change-Id: I7a51300f0d59d8b6bb79e54d20b3acbf01068002 Reviewed-on: https://chromium-review.googlesource.com/1038433 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 983460e6 2018-05-02T17:57:39 Rewrite repeated assignments to swizzled vectors on NVIDIA This works around the most common instances of a bug that reproduces on some NVIDIA OpenGL drivers prior to version 397.31. BUG=chromium:798117 TEST=angle_end2end_tests Change-Id: Iafc6a9a64e56fa98b42117149fe6867040e932e5 Reviewed-on: https://chromium-review.googlesource.com/1042190 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 7a8fe156 2018-04-28T12:59:58 ES31: Add link validation on MAX_COMBINED_SHADER_OUTPUT_RESOURCES This patch adds the link validation on the maximum combined shader output resources required in OpenGL ES 3.1 SPEC. OpenGL ES 3.1 SPEC has restrictions on the sum of the number of all active images, shader storage blocks and fragment shader outputs. A link error will be generated if this sum exceeds the implementation- dependent value of MAX_COMBINED_SHADER_OUTPUT_RESOURCES. In order not to affect the existing image tests, this patch also sets a temporary value for maxCombinedShaderOutputResources on D3D11 back-ends. We will set more accurate values for all the UAV related resource limits in the next patch. BUG=angleproject:2345 TEST=dEQP-GLES31.functional.state_query.integer.max_combined_shader_output_resources_* Change-Id: Ib83a19ef0ae0b9af3422b5c970c7c07d96b2359d Reviewed-on: https://chromium-review.googlesource.com/1039155 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho d7b56642 2018-04-27T16:59:36 Fix blit rect calculations on D3D11 backend The D3D11 backend used to calculate the blit areas incorrectly when the source blit area provided via the API stretched outside the source framebuffer in all directions. This is now fixed and the code is also simplified. BUG=angleproject:2521 TEST=angle_end2end_tests Change-Id: I46d5de27464a8455b3956c0be598f75550ca1616 Reviewed-on: https://chromium-review.googlesource.com/1032787 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
JiangYizhou aae572a5 2018-04-28T15:14:31 Disable avoid1BitAlphaTextureFormats workaround on Intel avoid1BitAlphaTextureFormats workaround was added to angle in 288584 due to an old driver bug on Intel and AMD that 1-bit alpha always rounds up when converting from float to unsigned int. The workaround uses rgba8 instead of *a1 to avoid the driver bug and optimizes precision. However, this workaround brings a new issue because 1-bit alpha can only represent u0 or u1 while 8 bits alpha covers from u0 to u255. For example, if we expect to render to a rgb5_a1 renderbuffer, the expected alpha value should be 0 or 255, but actually get a value between 0 and 255 which is incorrect. The current Intel drivers have fixed the old driver bug. So we suggest to disable this workaround for Intel drivers. TEST=dEQP_GLES2.Default/functional_fbo_render_color_clear_rbo_rgb5_a1_depth_component16_stencil_index8 --deqp-egl-display-type=angle-gl BUG=angleproject:2349 Change-Id: I14933f92fa27031ff7442fa437f77a3c67f2f1db Reviewed-on: https://chromium-review.googlesource.com/1034163 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 03bb2231 2018-05-03T15:21:20 Add test for D3D11 nested floor() bug The test fails on D3D11, which seems to ignore floor() calls if they're nested in a particular way with magic multipliers inside. BUG=chromium:838885 TEST=angle_end2end_tests Change-Id: I2c8749defa923553bfee69149da15f8e4ddf5096 Reviewed-on: https://chromium-review.googlesource.com/1041959 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill c6dbc253 2018-04-30T19:07:56 Scope ANGLE_UNUSED_VARIABLE. Renames the macro to be more ANGLE-ey. Refactoring only. Bug: angleproject:1671 Change-Id: I8f2dd227c7e2025886ec66e85efa877ea261d0ad Reviewed-on: https://chromium-review.googlesource.com/1036209 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 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>
Jamie Madill 9aef3670 2018-04-27T11:45:06 Vulkan: Implement masked color clears. This implements masked color clear using clear shaders. The shaders themselves were introduced in a prior patch. In order to get the right setup for the draw call to trigger the shaders, we create an internal pipeline from the pipeline cache. We also use a special pipeline layout with only uniform buffers. The masked out color channels are disabled via settings on the pipeline. This fixes the dEQP masked color clear tests. It doesn't handle masked color clears combined with the depth clear bit. It's likely we don't have test coverage for this case. Bug: angleproject:2455 Change-Id: I513248cc0f7e58f490fc16ac9afb40119d730ccc Reviewed-on: https://chromium-review.googlesource.com/1031373 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 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>
Luc Ferron 41529e5e 2018-05-01T10:06:04 Refactor StateChangeTests to use essl1_shaders instead Bug: angleproject:2474 Change-Id: Ia558c2e266422f8f8b55523c9542379688a7058d Reviewed-on: https://chromium-review.googlesource.com/1037164 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 94ae660d 2018-04-23T13:58:59 Vulkan: Create tests to validate we created the pipeline when needed 1- Link program with a shader and draw with it, relink with another shader and draw again. 2- Release program that is reading from a uniform. Bug: angleproject:2397 Change-Id: Icb4211c5cf71efaf41833d9d5afd83ce8410c598 Reviewed-on: https://chromium-review.googlesource.com/1028580 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao c6f82872 2018-04-24T14:14:50 ES31: Add REFERENCED_BY_GEOMETRY_SHADER as program interface property This patch implements GL_REFERENCED_BY_GEOMETRY_SHADER as a valid property of program interfaces. BUG=angleproject:1941 TEST=angle_end2end_tests dEQP-GLES31.functional.geometry_shading.query.referenced_by_geometry_shader Change-Id: Id9659313d371dbfc7d00bf9d816df4449fbf29ec Reviewed-on: https://chromium-review.googlesource.com/1025281 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Geoff Lang 69643438 2018-04-27T12:23:47 D3D11: Reorder VAO synchronization. The index range was being resolved in the call to VertexArray11::syncStateForDraw but the code which invalidates the input layout was being executed before this. BUG=837002 Change-Id: I4e00b53cdc51f8758b0e2ba9e2dfc93b5e22556c Reviewed-on: https://chromium-review.googlesource.com/1032633 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang f1bcd017 2018-04-27T14:21:55 Supress failures in BlitFramebufferTest.MultisampleDepth on Mac OpenGL BUG=837717 Change-Id: I1ac659b18bd9aef2f24f798d23f49d1efbb81938 Reviewed-on: https://chromium-review.googlesource.com/1033478 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho de279590 2018-04-26T12:25:13 Add test coverage for BlitGL Scaling and flipping of the framebuffer with blitFramebuffer are now covered by end2end_tests. The test configurations are set so that the BlitGL shader-based blit is also covered. The tests reveal a bug in the D3D11 backend implementation of blitFramebuffer when using an oversized source area. BUG=angleproject:2486 BUG=angleproject:2519 BUG=angleproject:2521 TEST=angle_end2end_tests Change-Id: Ica48e564a5b4180241ec4c4c6be06c58cc6dc29b Reviewed-on: https://chromium-review.googlesource.com/1030171 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill b221486a 2018-04-26T07:25:48 Vulkan: Fix TexSubImage2D state change test. Was simply a matter of triggering a new write node in the subImage call. Bug: angleproject:2495 Change-Id: I06334ba6ee816f671e5c599c8e8f079f56adb25e Reviewed-on: https://chromium-review.googlesource.com/1028729 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Luc Ferron 0086de17 2018-04-25T11:41:32 Vulkan: Add test to reproduce graph issue when draw->subImage->draw Bug: angleproject:2495 Change-Id: Ibc6c060e8924f19562da62ce15d48d9f6820b372 Reviewed-on: https://chromium-review.googlesource.com/1028228 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 197d5294 2018-04-25T14:29:00 Wrap all preprocessor code in the angle namespace. BUG=836820 BUG=801364 Change-Id: I08b6a2f9f12b689e09df6efd916c313e71e8a051 Reviewed-on: https://chromium-review.googlesource.com/1028581 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Lingfeng Yang 23dc90b8 2018-04-23T09:01:49 GLES1: Enable/disable for texture targets BUG=angleproject:2306 Change-Id: I08ac9ef91753112f8185d16423925cf265f0384e Reviewed-on: https://chromium-review.googlesource.com/1023987 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho f827123d 2018-04-25T13:08:24 Handle negative float to uint conversion robustly Converting a negative float to uint is undefined in the GLSL ES 3.00.6 spec. However, it improves portability if we don't trigger undefined results in C++ in this case. To do this, we cast negative floats first to signed integer before casting them to unsigned integer. We also issue a warning about an undefined conversion in case a negative float was converted to uint. BUG=chromium:835868 TEST=angle_unittests Change-Id: I9835a739ec80699d420a4f91a3bfa112c9a13604 Reviewed-on: https://chromium-review.googlesource.com/1026681 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron f9749eaf 2018-04-24T15:34:53 Vulkan: Enable UnpackAlignmentTest and remove useless warning. Bug: angleproject:2492 Change-Id: I9e821632bdb3b8ba90d5ce47198a3445d2b684de Reviewed-on: https://chromium-review.googlesource.com/1026510 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 1a186b16 2018-04-24T15:25:35 Vulkan: Fix issue with texsubimage2d barriers Also re-enable the Windows AMD tests that were suppressed because of that bug. Bug: angleproject:2492 Change-Id: Ie9b5eb4c5705bbb390c3899fe4c66d3e47eff00d Reviewed-on: https://chromium-review.googlesource.com/1026461 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 10434f67 2018-04-24T10:06:37 Vulkan: Issue when drawing with a texture and rebinding after. Added 2 tests in StateChangeTest.cpp to validate the behavior and reproduce the issue I saw in dEQP. Bug: angleproject:2479 Change-Id: I29c3da0474ec2b13a10fc266284cb19a07675da2 Reviewed-on: https://chromium-review.googlesource.com/1025951 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 023371b3 2018-04-24T17:43:32 Fix setting mip level metadata on GL backend LUMA texture workarounds are now being used correctly in case texture levels that have only been touched by generateMipmap are used to draw. BUG=angleproject:2498 TEST=angle_end2end_tests Change-Id: I739550d59f99a4a22ffae766a5ee52c07610d78a Reviewed-on: https://chromium-review.googlesource.com/1025995 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang f2807385 2018-04-24T15:25:35 D3D: Use an alignment of 1 when uploading zero data to initialize textures. BUG=836131 Change-Id: I1206c8eda465da563e15cf43f2e5c9320bb65eae Reviewed-on: https://chromium-review.googlesource.com/1026460 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Luc Ferron 33e05bab 2018-04-23T15:12:34 Vulkan: Bugfix in TextureVk::setSubImage and DynamicBuffer Bug 1) The offset wasn't plumbed through for setSubImage. Bug 2) The DynamicBuffer allocation sometime allocates a bit more than requested, but we were using the size requested as the next offset instead of the actual allocated size. This could get us in a situation in certain corner cases where the next allocation would be done on the said buffer instead of using a new allocation as it should. Also enables a bunch of new texture_specification_* tests that were unable to run successfully without these 2 bug fixes. Found a weird issue on WIN AMD only and suppressed these tests for now. Will investigate part of the same bug number as a separate change. Bug: angleproject:2495 Bug: angleproject:2492 Change-Id: I490b1bf2d1795b7a1033365e29eac12a8bc50bff Reviewed-on: https://chromium-review.googlesource.com/1024380 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 66410530 2018-04-20T12:47:45 Vulkan: Textures mipmaps support Note that generate mipmaps is not yet supported, but uploading mipmaps is. This also enables 64 tests in dEQP gles2 to validate the changes. While trying to enable tests in functional.texture.mipmap.*, I found an issue where the graph ends up in an invalid state and triggers and assert in onReadResource in ContextVk.cpp:188. It seems like an unrelated bug to mip maps, I will investigate to enable these tests separately in a following CL. Bug: angleproject:2479 Change-Id: If51776d8ef3d994bee620d6a1cf982bb51838ff0 Reviewed-on: https://chromium-review.googlesource.com/1022232 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 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>
Geoff Lang 00689191 2018-03-27T17:34:20 GL: Fix the CPU readback path of CopyTextureCHROMIUM. 1. BlitGL's resources were not being intialized. 2. The format/type information was not enough to know if the destination texture was SRGB. BUG=693090 Change-Id: I3fc277a175772d3b6acace1810cb43f4a9bdc473 Reviewed-on: https://chromium-review.googlesource.com/982642 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Luc Ferron 6ce24cf2 2018-04-23T07:52:15 Vulkan: Lift suppressions because of vulkan validation layer regression Bug: angleproject:2484 Change-Id: Ib46caa8924c7815154beeb46a291520e57b5cc4f Reviewed-on: https://chromium-review.googlesource.com/1023833 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jiawei Shao 40786bdf 2018-04-18T13:58:57 ES31: Add validation on geometry shader interface blocks matching This patch adds the validation on checking if there is any mismatch among geometry shader interface blocks and the ones defined in other graphics shaders in the same program. BUG=angleproject:1941 TEST=angle_end2end_tests Change-Id: I1f65e3c49390135bbe9f9323098daf28c9b838c7 Reviewed-on: https://chromium-review.googlesource.com/1016175 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron 20610901 2018-04-19T14:41:13 Vulkan: Implement Texture wrap modes and non-mipmapped filtering modes Also added a test to validate we can change the filter mode between two draws successfully. Bug: angleproject:2478 Change-Id: I80730cdafc6bbdbf61839c6c8eb98d85f7423d92 Reviewed-on: https://chromium-review.googlesource.com/1020084 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov e7e072ef 2018-04-19T15:06:30 Use EGL_KHR_no_config_context in Android GLES backend, when available Create ANGLE's real context with EGL_NO_CONFIG_KHR. This allows ANGLE to advertise EGLConfigs which previously were hidden due to incompatibility with ANGLE's context. Also enable EGLContextCompatibilityTest on ES2_OPENGLES to test this. BUG=angleproject:2468 Change-Id: I6fbbe01b4b93db7df39606980f0f58eb74b11e31 Reviewed-on: https://chromium-review.googlesource.com/1022088 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 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>
Luc Ferron 3ec304db 2018-04-18T14:14:25 Vulkan: Support struct initializers in shaders Also adds a new test in GLSLTest to validate the initialization of a struct on the same line as its declaration. Bug: angleproject:2459 Change-Id: Ib37e20378f8ec76541db26392663bcba03390756 Reviewed-on: https://chromium-review.googlesource.com/1017340 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang b0f917fa 2017-12-05T13:41:54 Fix being unable to request some extensions implemented in the GL layer. Some extensions are forced on in Context::initCaps even though the backend's native extensions do not mark the extension as supported. These extensions were not requestable because the Context::isExtensionRequestable only checks if the backend supports the extension. Make GL_OES_vertex_array_object requestable to cover the issue. BUG=angleproject:1523 Change-Id: Ie64df8e270924727ecf9cd3f993443abeb3ef658 Reviewed-on: https://chromium-review.googlesource.com/809197 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 025aafdf 2017-10-30T15:16:37 Make EGL image extensions enableable. BUG=angleproject:1523 Change-Id: I6e890380bafb9f81595ab603996259fe6177e9e0 Reviewed-on: https://chromium-review.googlesource.com/744447 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang d54d3045 2017-11-07T14:56:07 Make EXT_texture_storage enableable. BUG=angleproject:1523 Change-Id: I55ef1233fb42e2dc3eda26c3aa4e14c700f98bf0 Reviewed-on: https://chromium-review.googlesource.com/756868 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e24032a2 2018-03-28T15:41:46 The 'format' of unsized SRGB internal formats should be SRGB too. EXT_sRGB requires calling TexImage with SRGB as the 'format' parameter. This was causing issues when we would take an InternalFormat struct representing an unsized sRGB format and be unable to use it's format member to make GL calls without transforming it. BUG=693090 Change-Id: I8b9baf2591a998a0088e5275f42ffc568e37100d Reviewed-on: https://chromium-review.googlesource.com/984965 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron 1d97a4d0 2018-04-18T15:51:32 Revert "Fix dEQP renderbuffer unspecified attachment test." This seems to have caused a regression in Chrome. I'm reverting the change and suppressing the test that is failing on our end because of it. Once we can confirm this solves the problem, we'll need some help investigating further. This reverts commit c0db9addeaebc76c7cc99b26aa27df5e432097ac. Bug: angleproject:2321 Bug: chromium:833809 Change-Id: I5e40364217e15ae6117f5288a4754b25d983ca0a Reviewed-on: https://chromium-review.googlesource.com/1017763 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill eeec3b14 2018-04-16T11:00:03 dEQP: Add override for ES2 Color Clear Test. This test has a bug where the masked clear flag is not being set properly, leading to incorrect test behaviour and missing coverage. Until this bug is fixed in dEQP we can override it with a fixed version. Also remove a prior override that had an upstreamed fix. Bug: angleproject:2455 Change-Id: Ia2c57251b2a97eb5b4d8a4bdb0ce31796a66ea01 Reviewed-on: https://chromium-review.googlesource.com/1013859 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang abb09f12 2018-04-16T10:43:53 GLES1: Client vertex array pointer API glVertexPointer glNormalPointer glColorPointer glPointSizePointerOES glTexCoordPointer BUG=angleproject:2306 Change-Id: Id022b467ac998ea116130c5cec0c77afefb0dd4c Reviewed-on: https://chromium-review.googlesource.com/1014381 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron fe22e23a 2018-04-16T14:15:11 Vulkan: Use SH_INITIALIZE_UNINITIALIZED_LOCALS in ShaderVk Re-enable the flaky test InitUninitializedStructContainingArrays that was failing because of this option missing. Bug: angleproject:2460 Change-Id: Icf794a5fdca48619756d575faa4cb04f0323712e Reviewed-on: https://chromium-review.googlesource.com/1014271 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 0986f1cc 2018-04-16T13:47:23 Vulkan: Implement depth_range dirty bit and enable tests - Additional fix in GlslWrapper.cpp to remove the @@ markers for unused attributes. - Enables 28 dEQP gles2 tests in functional.depth_range.* Bug: angleproject:2454 Change-Id: I1a6f72d846b476ba681140d4b242208d24e18b95 Reviewed-on: https://chromium-review.googlesource.com/1014262 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron f1d3c20c 2018-04-16T07:44:27 Vulkan: Fix the issue with unused attributes / varyings When an attribute, a uniform or a varying isn't used, we now remove their layout and in/out qualifiers so that the shader can still refer to these var names. Bug: angleproject:2456 Change-Id: I5f1241d91bd46f663750adfab2562ef87ce69ae5 Reviewed-on: https://chromium-review.googlesource.com/1014009 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron ef2fda72 2018-04-18T07:44:14 Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation (2nd try) The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 Change-Id: I3adcd6208aca4afebd45311ded93d00087b60a99 Reviewed-on: https://chromium-review.googlesource.com/1016680 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 5804dc8e 2018-04-13T14:11:46 Refactor GL tests to use a shader library Instead of having the same simple shaders repeated over and over in the test code, reuse a single shader library. BUG=angleproject:2474 TEST=angle_end2end_tests Change-Id: I13f8ca8c0125e6d30f1761639bf8c3f69e0e77d2 Reviewed-on: https://chromium-review.googlesource.com/1012078 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill c97e900c 2018-04-17T19:11:39 Revert "Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation" This reverts commit 1d882aaa0720b0dee0e8fc807d93d0e3f3e6bc67. Sorry about this Luc. I think there was a missing suppression. You can even see a flaky failure in the CQ when you landed this - it seems the flakiness of the failure let it through. This is blocking another fix from landing which fixes the fact the CQ is on fire. The revert button is also missing from Gerrit which means this is a manual revert. Failures: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_angle_rel_ng/361 Original CL Message: The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 No-Try: True Change-Id: I84c38497fbda43d9defbc6d5d3ff0f9c133e6e46 Reviewed-on: https://chromium-review.googlesource.com/1015323 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 1d882aaa 2018-04-13T10:12:05 Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation The layout needed to also have a component qualifier so that the registerColumn wouldn't be ignored. Bug: angleproject:2460 Bug: angleproject:2483 Change-Id: Ib5b15c4dc0ce42633f4994648f1eb22d8b63336a Reviewed-on: https://chromium-review.googlesource.com/1011680 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Lingfeng Yang 01074436 2018-04-16T10:19:51 GLES1: gl(Enable|Disable)ClientState + Introduce the GL_OES_point_size_array extension for point size array support. BUG=angleproject:2306 Change-Id: Ib1a60b7dcd0497eb807f0d3c80bc95b4748d9a96 Reviewed-on: https://chromium-review.googlesource.com/1014282 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 86de76b6 2018-04-17T08:29:55 Vulkan: Suppress ClearIssue test. This test was flaky, the failure was missed on the CQ. Bug: angleproject:2484 Change-Id: Ic3c32bcd385620683e9a01acf37d62bbf3ca8797 Reviewed-on: https://chromium-review.googlesource.com/1014733 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 41c43ce7 2018-04-16T08:42:56 Roll (2/2) to latest LVL as of 4/16/18 Moving to HEAD of LVL master on morning of 4/16/18. Made some updates to BUILD.gn to add use debug_utils files now instead of debug_report. Re-enable ANGLE Vulkan build. Bug: angleproject:2482 Change-Id: Ic2ab2a1cd7ecdba3152d433efcdbf427864e7e2b Reviewed-on: https://chromium-review.googlesource.com/1014258 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0cb6dc4c 2018-04-16T10:36:39 Vulkan: Fix texture descriptor set alloc count. We were reserving half the required descriptor sets for our pool. This fixes the counting and ensures we won't regress by adding a test. Also enables the cube map texture sample, and removes an UNIMPLEMENTED warning that was spurious. Bug: angleproject:2318 Change-Id: I371cd7c5b42e1ce980cce7bb0ef04885db72b614 Reviewed-on: https://chromium-review.googlesource.com/1014165 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron a4fa9c27 2018-04-13T07:00:56 Vulkan: drawElements with GL_LINE_LOOP and an offset Also enables a test in LineLoopTest that validates this case. Bug: angleproject:2473 Change-Id: Icb4c5735c11be40cdeceaa051f5a5cef33fd22c6 Reviewed-on: https://chromium-review.googlesource.com/1011669 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 20fa8d5c 2018-04-15T10:09:32 Vulkan: Implement cube map texture sampling. This changes the TextureVk class to have a queue of staging copies, instead of a single copy at a time. This will allow us to upload multiple sub regions of a texture image at once when we need to resolve the Image at sampling time. Enables the remainder of the texture.format tests, and all non-mipped tests in the texture.size tests. Also updates the expectations with the bug number for mipmap support. Bug: angleproject:2318 Change-Id: Ie55f8f2dc24d7b133ad735e37f0f78937f022b5b Reviewed-on: https://chromium-review.googlesource.com/980775 Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 1dc4414f 2018-04-13T13:39:23 Suppress self-assign warning in angle_deqp_decpp and angle_deqp_libtester Compiling dEQP with clang started failing after clang roll https://chromium-review.googlesource.com/1012028 BUG=chromium:832753 Change-Id: I532872a68c3c8d916c6bfd2b5370501746076193 Reviewed-on: https://chromium-review.googlesource.com/1012382 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron a912046d 2018-04-12T13:11:03 Vulkan: DrawElements with line loops client side memory support - Also enables 6 new tests in LineLoopTests.cpp in angle_end2end Bug: angleproject:2458 Change-Id: I4aec12b0ac780e81e6811f1199a5acaf17d9b982 Reviewed-on: https://chromium-review.googlesource.com/1010411 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 983c429f 2018-04-10T13:05:45 Vulkan: Lineloops edge base bugfix and new tests The dynamic buffer we are using in the LineLoopHelper wasn't able to support switching between different allocation sizes. Fix this by simply using a min alignment of the maximum allocation size we can reach. Adds 2 new tests to validate these calls in StateChangeTest.cpp Bug: angleproject:2458 Change-Id: I9d224e7dcfcd7627010832ca30dd9e1b9eceea4e Reviewed-on: https://chromium-review.googlesource.com/1007335 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang bb5ce5cc 2018-04-09T08:08:46 GLES1: Built-in matrix operations glRotate glTranslate glScale glFrustum glPerspective glOrtho BUG=angleproject:2306 Change-Id: Ia9321d52f5824ef7c15b56d94e23ff3b1fbc3151 Reviewed-on: https://chromium-review.googlesource.com/1002915 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 56c8577b 2018-04-06T16:31:47 TextureD3D_2D::CopyImage clear using initializeContents When using glCopyTexImage2D clearing of the mip level needs to happen when running in WebGL or robust resource init mode and any pixel would be sampled outside of the framebuffer. Previously the code was using "setImage" for this purpose, causing issues when a PIXEL_UNPACK_BUFFER was bound. Also add a regression test. BUG=chromium:827667 Change-Id: I03be20d8272730ab30afdab2f8919be853e729b6 Reviewed-on: https://chromium-review.googlesource.com/1000182 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron bfb5df15 2018-04-12T12:45:26 Vulkan: Suppress flaky test in GLSLTest on Windows Bug: angleproject:2460 Change-Id: I4dba274e29a147c3066848a729f37297951a7f77 Reviewed-on: https://chromium-review.googlesource.com/1010405 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron c1e0268a 2018-04-11T11:02:55 Vulkan: drawArrays followed by drawElements bugfix Also add a test in StateChangeTest.cpp to validate the behavior. Bug: angleproject:2458 Change-Id: I58848772c0b4f71aaa3ee187778e49fa08e6800d Reviewed-on: https://chromium-review.googlesource.com/1007320 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 6d5af92b 2018-04-09T14:37:15 Vulkan: Enable GLSLTest tests for Vulkan - Suppress tests that don't pass yet. Bug: angleproject:2460 Change-Id: I7c95ae9504a8d5e112fd9d1bb8536cc9bbf16e7b Reviewed-on: https://chromium-review.googlesource.com/1003099 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 14f4817c 2018-04-11T08:43:28 Vulkan: Simplify viewport / scissor updates Stop tying the viewport and the scissor together. Instead, we simply use a very large (0->maxInt) scissor when scissor isn't enabled and we use the clipped scissor to the renderArea size when its enabled. Bug: angleproject:2443 Change-Id: If7454793a050b1833c7d3166ea6b380192085c8f Reviewed-on: https://chromium-review.googlesource.com/1006996 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron d8c632c8 2018-04-10T12:31:44 Vulkan: Cleanup some TODOs in TextureTest.cpp Bug: angleproject:2364 Change-Id: I316db1f6796a4a2efe344dd4b0a4a6e7bf2ead90 Reviewed-on: https://chromium-review.googlesource.com/1005556 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ebd6e2df 2018-03-23T17:07:55 Take all attributes into account when checking for aliasing This makes ANGLE to follow GLSL ES 3.00.6 spec section 12.46. The spec requires that all attributes are taken into account when checking for aliasing, regardless of if they are active or not. WebGL 2.0 spec was also recently changed to reflect GLSL ES 3.00.6 correctly. Aliasing checks for GLSL ES 1.00 shaders are left as-is. BUG=chromium:829541 TEST=angle_end2end_tests, WebGL conformance tests Change-Id: I71c36ac123f18dadf075e81f93af29321c15136b Reviewed-on: https://chromium-review.googlesource.com/1005077 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Lingfeng Yang 568fc39b 2018-04-09T07:57:23 GLES1: glMultMatrix(f|x) BUG=angleproject:2306 Change-Id: I178b051c23da51d8eaf24c2a0df97f01ae5f3aaa Reviewed-on: https://chromium-review.googlesource.com/1002914 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 3a41af64 2018-04-09T07:28:56 GLES1: glLoadIdentity / glLoadMatrix(f|x) BUG=angleproject:2306 Change-Id: I46fe961e6eb87b2f41c39afe1e943d9146a0abfa Reviewed-on: https://chromium-review.googlesource.com/1002913 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 3e1302bd 2018-04-10T15:36:28 Skip RobustResourceInitTestES3.MaskedStencilClearBuffer on Mac NVIDIA. Flaky. BUG=angleproject:2408 Change-Id: I20a6cbf8c4daa722c9d3f91aa3b55227cfff94b5 Reviewed-on: https://chromium-review.googlesource.com/1005811 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron d17bdfe5 2018-04-05T13:50:10 Vulkan: 3 Final bugfixes to enable all dEQP depth_stencil tests - The scissor when clearing should not be clipped against the viewport. - The render pass was created with a render area == to the current viewport, but the viewport can be changed by the tests multiple times per render pass, so we should always keep the renderArea to the full framebuffer instead. - Enables an additional 163 dEQP tests. - We should clip the scissor to the framebuffer dimensions instead of the viewport. Its valid to do a cmdClearAttachments outside the viewport, but not outside the full framebuffer's dimension. Bug: angleproject:2443 Change-Id: I79168e9f0c782d6dec77470fef938b85ad7a8794 Reviewed-on: https://chromium-review.googlesource.com/998448 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 785b20b7 2018-04-10T13:09:27 Vulkan: PointSprite suppress 3 tests that are failing the android tests Bug: angleproject:2447 Change-Id: Ib5a8176e2836374fbeb70ccd05586495c388680b Reviewed-on: https://chromium-review.googlesource.com/1005438 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron 4416247c 2018-04-06T13:20:45 Vulkan: Enable point sprite end2end tests Bug: angleproject:2447 Change-Id: I92a6ed730dd2048b055d32d1f149a29172c7f38a Reviewed-on: https://chromium-review.googlesource.com/999822 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Luc Ferron d91c3793 2018-04-06T09:36:36 Vulkan: Implement support for structs in uniforms - Also enables 174 additional dEQP tests. Bug: angleproject:2446 Change-Id: I07cce46815d2f7a80fd48e7fd9407f7d528b397f Reviewed-on: https://chromium-review.googlesource.com/998406 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Olli Etuaho bb52c523 2018-04-06T10:22:22 Invariant declaration doesn't make a variable active Invariant declarations didn't affect static use before, but now they are also skipped in CollectVariables so an invariant declaration is not enough in itself to mark a variable as active. This fixes an assert in CollectVariables. BUG=chromium:829553 TEST=angle_unittests Change-Id: I3e51d2916f091bcc283af136a4abc846ff71447d Reviewed-on: https://chromium-review.googlesource.com/999532 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Victor Costan 6c59e4a1 2018-04-05T21:35:37 Migrate from <tr1/tuple> to <tuple> types. Bug: 829773 Change-Id: I9bfe3c7b585acb7c91303f59ee448ce2d2dc2786 Reviewed-on: https://chromium-review.googlesource.com/999181 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Victor Costan <pwnall@chromium.org>
Jamie Madill 9cceac42 2018-03-31T14:19:16 Vulkan: Update resource dependency semantics. This removes passing the Serial around to several methods, so that dependency management is a bit more automatic. This makes life a bit easier when dealing with state updates when resources are in use by Vulkan. The FramebuffeVk no longer stores an extra serial of the last draw, instead it will trigger creation of a new writing node on a state change update. Bug: angleproject:2318 Change-Id: Ie58ec66e6e8644ba4d402c509255c3795d363dd3 Reviewed-on: https://chromium-review.googlesource.com/985201 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho 5ae64c94 2018-04-06T11:27:03 Fix writing hex values in ImmutableStringBuilder The old code was accidentally using letters offset by 10 when writing out hex values >= 10. Now the letters a to f are used as they should. This is one issue that changed shader output when ImmutableString was introduced, so it is a potential cause for a regression detailed in bug 824062, though this has not been verified. BUG=chromium:824062 TEST=angle_unittests Change-Id: Idb871dffba32a3ab20df0fe17b4b1a98ec00b7fa Reviewed-on: https://chromium-review.googlesource.com/999480 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang e547aac7 2018-04-05T09:39:20 GLES1: gl(Push|Pop)Matrix BUG=angleproject:2306 Change-Id: I96498aebbbc62ebd53e5320db17ef6a54d20d2dc Reviewed-on: https://chromium-review.googlesource.com/998308 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang d2488aba 2018-04-04T09:25:48 GLES1: glMatrixMode BUG=angleproject:2306 Change-Id: I83e15990c10d9354c2db00766ddc7b0ab960aa5c Reviewed-on: https://chromium-review.googlesource.com/996019 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 8836f631 2018-04-05T07:26:53 Vulkan: Bugfix in depth/stencil clearing In the situation when we try to clear the depth OR the stencil buffer but we have a packed depth/stencil attachment, we were still clearing both of them since Vulkan doesn't allow setting just the depth or the stencil image aspect bit on the clear call. The workaround is to use the vkCmdClearAttachments command that allows us to clear one or the other easily. Bug: angleproject:2443 Change-Id: I6814e1927c019d9ec9255d79c6bc7b913a8c99e9 Reviewed-on: https://chromium-review.googlesource.com/997752 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 4002e92a 2018-04-04T16:55:34 Guard traversers used during parsing against stack overflow Traversers used during parsing can be vulnerable to stack overflow since the AST has not yet been validated for max depth. Make sure to check for traversal depth in traversers used during parsing. We set the maximum traversal depth in ValidateGlobalInitializer and ValidateSwitchStatementList to 256, which matches the default value for validating general AST complexity. The depth check is on regardless of compiler options. In case the traversers go over the maximum traversal depth, they fail validation. BUG=angleproject:2453 TEST=angle_unittests Change-Id: I89ba576e8ef69663ba35d7b9050a6da319f1757c Reviewed-on: https://chromium-review.googlesource.com/995795 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron dd196e0b 2018-04-04T11:41:44 Vulkan: Implement color mask and depth mask bits These two features are heavily used in the functional.depth_stencil_clear.* dEQP tests. Enable a bunch of color/depth/stencil clear tests, however there is still 2 tests in particular that are giving me trouble. I will work on them separately in a subsequent change. Bug: angleproject:2443 Bug: angleproject:2455 Change-Id: Ic93420c7b525b424e9641f78265e264ddb163ab1 Reviewed-on: https://chromium-review.googlesource.com/996035 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 5fec7ab2 2018-04-04T11:58:33 Identify functions by unique id in BuiltInFunctionEmulator Now that unique ids of all builtins are compile-time constants, we can use them to look up functions in BuiltInFunctionEmulator. This is simpler than using a custom struct with the name and parameters for identifying functions. This requires that we store a reference to a TFunction in those TIntermUnary nodes that were created based on a function. This decreases shader_translator binary size by about 6 KB on Windows. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: Idd5a00c772c6f26dd36fdbbfbe161d22ab27c2fe Reviewed-on: https://chromium-review.googlesource.com/995372 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho fd643283 2018-04-04T16:12:09 Disallow case statements nested in blocks The GLSL ES 3.00.6 spec is a bit unclear on this, but it does disallow case statements "inside control flow". GLSL ES 3.10 clarifies this and disallows any nesting of case or default labels within other statements. BUG=angleproject:2452 TEST=angle_unittests Change-Id: I289bb39abb5227eab7117638af388b0a57dc5dd8 Reviewed-on: https://chromium-review.googlesource.com/995478 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Lingfeng Yang 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>
Luc Ferron 364a9557 2018-03-29T09:44:51 Vulkan: Implement stencil test support All the fragment_ops.depth and the fragment_ops.depth tests in dEQP are now working, but not the fragment_ops.depth_stencil. Still debugging these separately and will come up with a fix for them in another commit. Bug: angleproject:2443 Change-Id: I84c3a22f612fb6dcf30598434f96c2100fd29f9c Reviewed-on: https://chromium-review.googlesource.com/993654 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron a8af3a69 2018-03-29T14:44:24 Vulkan: Depth/stencil scissored clears - Generalize cmdClearAttachments to be able to clear depth/stencil/color individually. - The clear of the stencil part is implemented, but cant be tested until stencil state support is implemented in the next commit. Bug: angleproject:2427 Change-Id: Ib1fc7f66b2bd232761d374e217812605d3ff9152 Reviewed-on: https://chromium-review.googlesource.com/992874 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill 0946393d 2018-04-04T05:26:59 Move Buffer Subject/Observer to front end. This makes BufferImpl into an Observer Subject. It also refactors the Vertex Array updates for the D3D11 backend use more of a dirty bit coding style. This change makes it so Buffer contents changes trigger front-end dirty bits from the back-end, which may be undesirable. Bug: angleproject:2389 Change-Id: Iac8ce1171284a86851c18cd1373ddf24fcefe40b Reviewed-on: https://chromium-review.googlesource.com/979812 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 59c5b897 2018-04-03T11:44:50 Validate gl_FragData and gl_FragColor access after parsing After this simply declaring both variables invariant is not treated as static use. This simplifies ParseContext a bit, but the effect on compiler performance tests seems marginal. BUG=angleproject:2450 TEST=angle_unittests Change-Id: Ib90cb1d2bd1331542d1cd37732f24efb7833036a Reviewed-on: https://chromium-review.googlesource.com/992112 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>