src/tests


Log

Author Commit Date CI Message
Olli Etuaho 4ebd8f3d 2018-09-20T11:12:46 Fix issues with clearing deleted attachments Deleting an object that was acting as a framebuffer color attachment in the current framebuffer didn't previously update all of the framebuffer state correctly. Fix this by going through the usual resetAttachment path when any framebuffer attachment is deleted instead of having custom code that only updated part of the state. Also early out from clearbuffer calls in case of a missing color buffer - even now that the draw buffer mask is being updated correctly, some backend code doesn't take it into account. One example is querying attachment format when the SRGB clear for linear framebuffer attachments workaround is active. BUG=angleproject:2831 TEST=angle_end2end_tests Change-Id: I1071a60dc0251946fed00e88e43a244fe59f4863 Reviewed-on: https://chromium-review.googlesource.com/1235656 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 7620c739 2018-09-24T11:45:55 Prevent crash in robust access mode when buffer has no data This fixes a crash appearing in robust access mode when a buffer has no data by stopping the draw call. A better fix would be to ensure that fetches from an empty buffer result in zero, but this fix requires a lot more effort. This is not necessarily warranted since the client is either way doing something incorrect in this case. BUG=angleproject:2840 TEST=angle_end2end_tests Change-Id: Ie4ef5b1ca7c0091d7d26f91678d6e4768cc0c650 Reviewed-on: https://chromium-review.googlesource.com/1238622 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Frank Henigman 85c4b43e 2018-09-19T23:35:00 Vulkan: Translate line loop indices from buffer. When a line loop is drawn with byte indices from a buffer, translate to short. Enable test. BUG=angleproject:2802 Change-Id: Ie178ec866387be85b91291c28e1978db0a09c20a Reviewed-on: https://chromium-review.googlesource.com/1237293 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 5272a543 2018-09-24T13:09:09 Vulkan: Skip BufferDataTest.RepeatedDrawDynamicBug on Win/Intel. Bug: angleproject:2843 Change-Id: If86ed33f7fbc70e4f10580d2b52ff04454e95f52 Reviewed-on: https://chromium-review.googlesource.com/1240416 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f668a4b5 2018-09-23T17:01:20 Skip Texture::syncState when no dirty bits. We sometimes generate local dirty bits in TextureGL. To make sure the local dirty bits don't get skipped we use a Subject/Observer pattern between the TextureGL and gl::Texture. This allows us to skip syncState in the hot path. Also inlines a couple of other texture functions. And fixes a stray header in EGLBlobCacheTest. Bug: angleproject:2763 Change-Id: Ie1d8a5865deaf2a563a358c31ae28bef6b2458b1 Reviewed-on: https://chromium-review.googlesource.com/1228374 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Bryan Bernhart c55aefe3 2018-08-28T19:59:00 ES31: Support atomic functions on D3D11 - Part III This patch is the third one to support atomic functions on D3D11. In this patch we enable support for atomic function returns outside of assignments (e.g. part of arithmetic operations or to index into arrays) and when used directly initialize a variable. Note that we are still missing the functionality to be tag loops with [allow_uav_condition] as required by InterlockedCompareExchange. BUG=angleproject:2682 TEST=angle_end2end_tests Change-Id: Ia409ebb10621fd5c514cf6c76f366a320a9d9fc1 Reviewed-on: https://chromium-review.googlesource.com/1208317 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 799da6d1 2018-09-21T15:10:57 Revert "D3D11: Resolve multisampled EGL surfaces at eglSwapBuffers" An increased crash rate in rx::NativeWindow11Win32::createSwapChain has been seen around the same time as this patch landed. Speculatively reverting. BUG=887403 This reverts commit a49f60fee74dfa1caed41ca2e010bc273a6c12cd. Change-Id: Id1b08efbf47196f17f4a5e509a29f7d628b07b49 Reviewed-on: https://chromium-review.googlesource.com/1238884 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Frank Henigman 9d84ccba 2018-09-12T18:09:02 Vulkan: renderer->finish() before reading buffers. Have to call renderer->finish() before reading a buffer otherwise you can get stale data. Enable IndexBufferOffsetTest.UInt8Index/ES2_VULKAN which now works. Disable LineLoopTest.LineLoopUShortIndexBuffer/ES2_VULKAN which stopped working on Windows with Intel GPU. BUG=angleproject:2659 Change-Id: I1e21b0e1dacd3368923caf18e767e34ab696eef6 Reviewed-on: https://chromium-review.googlesource.com/1227032 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho ab5fb5ed 2018-09-18T17:23:28 Reland "Support EXT_blend_func_extended in the GLES2 context" This re-lands EXT_blend_func_extended implementation. A lot of the implementation has been rewritten on top of changes that have been done since the last attempt. For now we only expose the extension on desktop GL. To support GLES, we'd need to investigate what's the most robust way to handle the compiler output and make the binding of the fragment outputs conditional. The extension is disabled on AMD and Intel because of test failures. BUG=angleproject:1085 TEST=angle_end2end_tests Change-Id: I619ae3162769b90aad095ddec158ce6c57a114a8 Reviewed-on: https://chromium-review.googlesource.com/1233713 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 38fe6840 2018-09-19T07:20:00 Remove secondary Texture rendering loop check. This check was not used. It applied only to rendering Feedback Loops. The behaviour is undefined in non-WebGL and for WebGL we have a separate validation check. Also update the feedback loop tests to ignore the current GL states. This change is based on feedback from the OpenGL ES working group. Bug: angleproject:2763 Bug: chromium:763695 Change-Id: I9882b4f9af2d43fc7b5604ff36dadcc79dfd378f Reviewed-on: https://chromium-review.googlesource.com/1228373 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho 0131ff40 2018-09-20T13:20:50 Fix using a large vertex attrib divisor on D3D11 A divisor >= 256 used to trigger an assert on the D3D11 backend since it couldn't fit into the input layout cache. Increase the space reserved for the divisor in the input layout cache to make sure that the correct input layout will get used and to fix the assert. BUG=angleproject:2832 TEST=angle_end2end_tests Change-Id: I34eead6c4e8c4fea379bbafc8670b4e32a5b633b Reviewed-on: https://chromium-review.googlesource.com/1236293 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill e25b8006 2018-09-20T13:39:49 Move sampler sync out of syncProgramTextures. We only need to call the syncState for samplers when they are dirty. Also includes changes to refactor out the sampler sync in GL. Adds observer bindings so sampler sync is handled correctly in resource sharing scenarios. Bug: angleproject:2763 Change-Id: I762f0738ee7572ae29ce6bd5384a30aa9588c848 Reviewed-on: https://chromium-review.googlesource.com/1227797 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao a977acc8 2018-09-19T12:46:05 ES31: Support translating textureGather into HLSL - Part I This patch is the first one in the series of supporting GLSL texture function textureGather/textureGatherOffset on D3D11. According to ESSL 3.1 SPEC (Chapter 8.9.3, Page 130), the definition of textureGather on sampler2D is: gvec4 textureGather (gsampler2D sampler, vec2 P[, int comp]) The parameter "comp" is optional, and if it is specified, the value of "comp" must be a constant integer expression with a value of 0, 1, 2, or 3, identifying the x, y, z, or w postswizzled component of the four-component vector lookup result for each texel, respectively. If comp is not specified, it is treated as 0. According to the definition above, textureGather is equivalent to Texture2D.Gather[Red|Green|Blue|Alpha] in HLSL, where we can use a switch-case expression to choose the right HLSL texture function. The features listed here will be implemented in the following patches: 1. Support textureGatherOffset 2. Support textureGather[Offset] on isamplers and usamplers 3. Support textureGather[Offset] on textures when swizzle is on 4. Support textureGather[Offset] on shadow samplers BUG=angleproject:2826 TEST=dEQP-GLES31.functional.texture.gather.basic.2d.rgba8.* dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.* (without texture_swizzle) dEQP-GLES31.functional.texture.gather.basic.2d_array.rgba8.* (without texture_swizzle) Change-Id: Iff2ed4f8b65dad613cb0bafdfd19f8f0528e832c Reviewed-on: https://chromium-review.googlesource.com/1232980 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 52ea4970 2018-09-19T08:58:58 Vulkan: Enable a few BufferDataTests. These are already passing. Bug: angleproject:2644 Change-Id: Iac3452547e319a709e010431eb8a45f5523bb5f7 Reviewed-on: https://chromium-review.googlesource.com/1235653 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho dbce1f89 2018-09-19T15:32:17 Fix trying to clear nonexistent FBO attachments The D3D11 backend used to crash to a null pointer dereference if a glClearBuffer call was done on a nonexistent depth or stencil attachment. Validate for these conditions so that the backend can't crash in this case. BUG=angleproject:2827 TEST=angle_end2end_tests Change-Id: Iecee78d213d11d492d52f246b4b068e8b6f34244 Reviewed-on: https://chromium-review.googlesource.com/1233675 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill bf7cfbea 2018-09-19T03:56:20 Re-land "Add FastVector for simple dynamic vector cases." Re-land fixes memory leak and adds inline to a few more methods. This optimized vector keeps an initial fixed size storage but has unbounded growth like a normal std::vector. It operates like a FixedVector initially but then switches the storage to an allocated pool when the element count exceeds the array limit. This gives fast performance in the small case since no dynamic allocation is needed. It also handles the "slow" big case. Bug: angleproject:2763 Change-Id: Ib3cc7b652a14ed346528bf15820023ab0b5317ce Reviewed-on: https://chromium-review.googlesource.com/1233453 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho 2c8f0845 2018-09-12T14:44:55 Add ANGLE_multiview_multisample We add a novel multiview multisampling extension that includes the requirement to explicitly resolve the multisampled framebuffer. The explicit resolve is much more straightforward to implement on top of OpenGL and D3D11 than implicit resolve found in the native extension OVR_multiview_multisampled_render_to_texture. It also has predictable performance characteristics. The extension allows multiview drawing to 2D multisample texture arrays and is now enabled on both the GL backend and the D3D11 backend. The implementation is fairly simple, as it involves just small changes in validation to allow multisampled framebuffer attachments. The multiview rendering logic is exactly the same regardless of whether multisampling is enabled. For the most part the same tests are used to test both multisampled and non-multisampled rendering. The tests will use a different framebuffer setup depending on the test param. They resolve the multisampled framebuffer to a non-multisampled framebuffer prior to any readbacks from the framebuffer. Some of the tests are adjusted so that they have the correct sub-pixel positioning of multisampled quads, so there won't be any pixels that would be just partially covered. The tests don't have any tolerance for partially covered pixels - if we find any platforms where the tests run into a sub-pixel positioning corner case, tolerance may need to be added later. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I590d7f300a92ea5439f2720d9db14a7976db2e1d Reviewed-on: https://chromium-review.googlesource.com/1221214 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Yuly Novikov dc8fb937 2018-09-19T01:35:59 Revert "Add FastVector for simple dynamic vector cases." This reverts commit 4d45e7dc7553b071b0c2a054bdb59bfd844012fe. Reason for revert: Memory leak detected during roll in https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng/101750 Original change's description: > Add FastVector for simple dynamic vector cases. > > This optimized vector keeps an initial fixed size storage but has > unbounded growth like a normal std::vector. It operates like a > FixedVector initially but then switches the storage to an allocated > pool when the element count exceeds the array limit. > > This gives fast performance in the small case since no dynamic > allocation is needed. It also handles the "slow" big case. > > Bug: angleproject:2763 > Change-Id: I9c002b205bd4ac9fc171d1fdc42bc8ea5fe8dabe > Reviewed-on: https://chromium-review.googlesource.com/1227794 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org Change-Id: Iaec76244cc736a8469b80bfc8534fb0fd6c49e11 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2763 Reviewed-on: https://chromium-review.googlesource.com/1232978 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
jchen10 a155bacf 2018-08-16T15:26:39 ParallelCompile: Parallelize shader translation This changes to construct a new ShHandle of compiler for each Shader, and use it to translate the shader source in a background thread. Bug: chromium:849576 Change-Id: Ib49952c7292321ee6aa1c5996f8f7927f40d8f04 Reviewed-on: https://chromium-review.googlesource.com/1177195 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4d45e7dc 2018-09-18T11:32:41 Add FastVector for simple dynamic vector cases. This optimized vector keeps an initial fixed size storage but has unbounded growth like a normal std::vector. It operates like a FixedVector initially but then switches the storage to an allocated pool when the element count exceeds the array limit. This gives fast performance in the small case since no dynamic allocation is needed. It also handles the "slow" big case. Bug: angleproject:2763 Change-Id: I9c002b205bd4ac9fc171d1fdc42bc8ea5fe8dabe Reviewed-on: https://chromium-review.googlesource.com/1227794 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0fdb956d 2018-09-17T17:18:43 Re-land "Inline and micro-optimize more for perf tests."" Re-land fixes memory leaks. Using a custom array instead of std::vector speeds up the resource manager. One reason is because calls to size() are implemented in many implementations as a difference between two pointers. This sub size implementations are slower than storing a simple size variable in a custom class. Also includes more inlining of hot spots functions. Also includes a small unit test class for ResourceMap. And an unrelated but small test fix for TextureLimisTest. Also a small unrelated fix for a Transform Feedback test. Increase the scores of the draw call perf test with texture and buffer bindings and the buffer binding perf test. Bug: angleproject:2763 Change-Id: Ic2f0f689107b2bf05c63da2ed6bbc9f0feea63f7 Reviewed-on: https://chromium-review.googlesource.com/1229033 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
jchen10 95277a30 2018-09-06T20:12:56 ES31: Add DispatchComputeIndirect support for D3D11 BUG=angleproject:2270 TEST=angle_end2end_tests.ComputeShaderTest.DispatchComputeIndirect/ES3_1_D3D11 Change-Id: I29bd888ce1e7e3e09b5635699a36164cd97cd7de Reviewed-on: https://chromium-review.googlesource.com/1209563 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Yuly Novikov 98a3e078 2018-09-17T19:40:04 Revert "Inline and micro-optimize more for perf tests." This reverts commit 57ff6f95f143bd65a0c3d12d64773f274b9935f4. Reason for revert: Memory leaks detected during roll in https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng/100284 Original change's description: > Inline and micro-optimize more for perf tests. > > Using a custom array instead of std::vector speeds up the resource > manager. One reason is because calls to size() are implemented in many > implementations as a difference between two pointers. This sub size > implementations are slower than storing a simple size variable in a > custom class. > > Also includes more inlining of hot spots functions. > > Also includes a small unit test class for ResourceMap. And an unrelated > but small test fix for TextureLimisTest. Also a small unrelated fix for > a Transform Feedback test. > > Increase the scores of the draw call perf test with texture and buffer > bindings and the buffer binding perf test. > > Bug: angleproject:2763 > Change-Id: I41c327987db27ac45e6a62579f01e1cdc22e396c > Reviewed-on: https://chromium-review.googlesource.com/1171510 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> TBR=fjhenigman@chromium.org,ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org Change-Id: Ie047289c9bf23a842c3cbb9692c811da0534991c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2763 Reviewed-on: https://chromium-review.googlesource.com/1228893 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Till Rathmann a49f60fe 2018-08-20T16:03:06 D3D11: Resolve multisampled EGL surfaces at eglSwapBuffers Support for multisampled EGL surfaces was added in 151d5de (2017-04-13, "Enable MSAA for texture client buffers") but the resolve step was missing because it was not needed for EGL_ANGLE_d3d_texture_client_buffer. However, when using MSAA with a regular EGL surface then resolving is required to get an antialiased image. Please note that the new test case CreateSurfaceWithMSAA does actually not test the newly added resolve step because the resolve is performed by the glReadPixels() call there. So it is rather a general test if MSAA works for EGL surfaces. TEST=angle_end2end_tests.EGLSurfaceTest.CreateSurfaceWithMSAA Change-Id: Ieafd6877fa510d5e16c0d9c6872c31fa73efa86c Reviewed-on: https://chromium-review.googlesource.com/1181138 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 57ff6f95 2018-09-14T12:44:52 Inline and micro-optimize more for perf tests. Using a custom array instead of std::vector speeds up the resource manager. One reason is because calls to size() are implemented in many implementations as a difference between two pointers. This sub size implementations are slower than storing a simple size variable in a custom class. Also includes more inlining of hot spots functions. Also includes a small unit test class for ResourceMap. And an unrelated but small test fix for TextureLimisTest. Also a small unrelated fix for a Transform Feedback test. Increase the scores of the draw call perf test with texture and buffer bindings and the buffer binding perf test. Bug: angleproject:2763 Change-Id: I41c327987db27ac45e6a62579f01e1cdc22e396c Reviewed-on: https://chromium-review.googlesource.com/1171510 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 017bda42 2018-09-14T18:11:50 Fix the ASSERT error This change adds shader type checking before entering initializeOutputVariables. BUG: angleproject:2821 Change-Id: Ib931031f2fc187f1f2a1821a09664bbe172a5e90 Reviewed-on: https://chromium-review.googlesource.com/1226229 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Courtney Goeltzenleuchter 62114aae 2018-08-28T09:36:46 glBufferSubData: Exit early if size is zero glBufferSubData is calling vkMapMemory with a size of zero is invalid. Check for that and exit early if found. Bug: angleproject:2790 Change-Id: I965badeb3aa2cec1adc24dd7ff5695f8aa3e553d Reviewed-on: https://chromium-review.googlesource.com/1194610 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 3f3b358f 2018-09-14T10:38:44 Vulkan: Fix cube map attachment clears and readpixels. These were both missing the correct layer offset. Cache the layer inside the RenderTargetVk for easy access. Bug: angleproject:2470 Change-Id: I690dbf0702d7ec52f44ba0a9429b6ef0e51baf6b Reviewed-on: https://chromium-review.googlesource.com/1225910 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Courtney Goeltzenleuchter f0d258c3 2018-09-11T09:37:48 Vulkan: Emulate eglSwapBuffersWithDamage with full swap Android expects to use eglSwapBuffersWithDamage so implement that for Vulkan backend. BUG=angleproject:2464 Change-Id: I8d599e70e6c8fee92b530d472dc97e3996630458 Reviewed-on: https://chromium-review.googlesource.com/1220066 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 17dff6d2 2018-09-13T12:03:51 Vulkan: Update LineLoopTest expectations. One test was working but the suppression was not lifted. The other test had no issue filed. Bug: angleproject:2802 Change-Id: I88cd082b2edeca30ec4a8406809af749bb6ce152 Reviewed-on: https://chromium-review.googlesource.com/1200367 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho daab0014 2018-09-13T14:56:28 Test and fix robust resource init for multisampled textures New test coverage for robust initialization of multisampled textures is added in angle_end2end_tests. Some missing functionality that was affecting the initialization of multisampled 2D array textures is now fixed. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I1d9d3cd154ca2910159941fe8b1bef4ae6320bdd Reviewed-on: https://chromium-review.googlesource.com/1224530 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 71bb0267 2018-09-12T11:09:42 Vulkan: Implement cube map render targets. Each TextureVk now stores vectors of RenderTargetVks and ImageViews associated with the image faces. They are initialized lazily when the RenderTarget is queried in getAttachmentRenderTarget. There's still one missing edge case for handling clear with the Framebuffer when using cube maps. Also one additional test failure on Android. Bug: angleproject:2470 Change-Id: Ib959a3434a992cef010a11940cf2ee49e118ac17 Reviewed-on: https://chromium-review.googlesource.com/1220727 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 0226041b 2018-09-12T18:10:25 Disable some deqp depth stencil on Android vulkan. These are suspected of causing an out-of-memory failure. BUG=angleproject:2655,angleproject:2549 Change-Id: I92bb4290c79ae8d7b572034666ec181c50c2a587 Reviewed-on: https://chromium-review.googlesource.com/1222370 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Frank Henigman 6c6be2ce 2018-09-10T14:23:57 Vulkan: add S8_UINT texture fallbacks. Add two fallbacks for S8_UINT. Enable tests. BUG=angleproject:2655 Change-Id: If7df23745a8de8a01d86ab6efa3bca67b5227d76 Reviewed-on: https://chromium-review.googlesource.com/1217282 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 0d0fb43f 2018-09-07T17:43:32 Pass unpack buffer as explicit parameter to texSubImage. This allows us to override it in the incomplete texture init. Any back-end that used incomplete textures was vulnerable to a bug where the unpack buffer would be used to initialize the incomplete texture. Bug: chromium:880906 Change-Id: Ica558e4a4d81de9212f0bc6619ccd812a048ad45 Reviewed-on: https://chromium-review.googlesource.com/1214207 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Will Harris 63aa0e5b 2018-09-05T16:15:46 Fix 64-bit -> 32-bit implicit conversions in libangle. ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(910,63): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] const gl::ImageUnit &imageUnit = glState.getImageUnit(imageUnitIndex); ~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(914,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] bindImageTexture(imageUnitIndex, textureGL->getTextureID(), imageUnit.level, ~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(920,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] bindImageTexture(imageUnitIndex, 0, imageUnit.level, imageUnit.layered, imageUnit.layer, ~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp(1080,66): warning: implicit conversion loses integer precision: 'GLsizeiptr' (aka 'long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] glVertexAttribFormat(mTestAttrib, 1, GL_FLOAT, GL_FALSE, inputRelativeOffset); ~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~ BUG=chromium:879657 Change-Id: Ic6e8e5ebc0dc5fd38c15a48a936ceafd5407bba8 Reviewed-on: https://chromium-review.googlesource.com/1208315 Commit-Queue: Will Harris <wfh@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8e9d2340 2018-09-10T13:29:37 Vulkan: Fix FragCoord scaling when a viewport is applied. We were using the pivot based on the viewport dimensions which is only valid if the viewport is the size of the framebuffer. The more correct pivot size is actually based on the Framebuffer height. Also updates the driver uniforms block to be a bit simpler. Bug: angleproject:2598 Change-Id: I1cb500cded7141d10e8db6862b6ed29758cc7fb4 Reviewed-on: https://chromium-review.googlesource.com/1214205 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Qin Jiajia a735ee2f 2018-05-18T13:29:09 ES31: Support shader storage block in D3D11 compiler - Part1 This patch is the first step to implement a basic skeleton to translate shader storage block to HLSL RWByteAddressBuffer. In GLSL each shader storage block is just one structured block and in API side it corresponds to a buffer range where stores the whole structure. RWStructuredBuffer is an array-like object and can have many structured elements. The structured element doesn't support unsized array and also have a small limitation on the element size. So we choose RWByteAddressBuffer as the counterpart of shader storage block in HLSL. Due to RWByteAddressBuffer does not support using an index to reference a specific location, we must use Load and Store to process the read/write operation of a buffer variable. Moreover, in the compiler tree, since we can't use variable name to get the resource value in RWByteAddressBuffer, we have to calculate the offset of buffer variable in a shader storage block, then call the corresponding wrapper function to get the right value. In this patch, we only process below situations: assign_to_ssbo := ssbo_access_chain = expr_no_ssbo; assign_from_ssbo := lvalue_no_ssbo = ssbo_access_chain; The translation is like below: // GLSL #version 310 es layout(local_size_x=8) in; layout(std140, binding = 0) buffer blockA { float f[8]; } instanceA; layout(std140, binding = 1) buffer blockB { float f[8]; }; void main() { float data = instanceA.f[gl_LocalInvocationIndex]; f[gl_LocalInvocationIndex] = data; } // HLSL RWByteAddressBuffer _instanceA: register(u0); RWByteAddressBuffer _blockB: register(u1); float float_Load(RWByteAddressBuffer buffer, uint loc) { float result = asfloat(buffer.Load(loc)); return result; } void float_Store(RWByteAddressBuffer buffer, uint loc, float value) { buffer.Store(loc, asuint(value)); } void gl_main() { float _data = float_Load(_instanceA, 0 + 16 * gl_LocalInvocationIndex); float_Store(_blockB, 0 + 16 * gl_LocalInvocationIndex, _data); } We will do below things in the following patches: 1. Modify the intermediate tree to flatten all ssbo usages to: assign_to_ssbo := ssbo_access_chain = expr_no_ssbo; assign_from_ssbo := lvalue_no_ssbo = ssbo_access_chain; e.g. intanceA.a +=1; ->tmp = intanceA.a; intanceA.a = tmp + 1; while(++instanceA.a < 16) { } -> int PreIncrement(out int a) { a += 1; return a; } tmp = instanceA.a; while(PreIncrement(tmp) < 16) { instanceA.a = tmp } 2. Add offset calculation for structure and array of arrays. TODOs have been marked in the corresponding places in this patch. 3. Improve helper functions so that they can process all possible types. TODOs have been marked in the corresponding places in this patch. 4. Process the swizzle situation. TODOs have been marked in the corresponding places in this patch. A possible method is to extend current helper functions like below: *_Load(RWByteAddressBuffer buffer, uint loc, bool isSwizzle, uint4 swizzleOffset) Bug: angleproject:1951 Test: angle_end2end_tests Change-Id: I68ae68d5bb77d0d5627c8272627a7f689b8dc38b Reviewed-on: https://chromium-review.googlesource.com/848215 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Frank Henigman 1cee0421 2018-09-09T17:00:21 Suppress ...shaders.builtin_variable.fragcoord_w. Suppress dEQP-GLES2.functional.shaders.builtin_variable.fragcoord_w on Android Vulkan. BUG=angleproject:2808 Change-Id: Ib2dcb83bef97352e6a169c0531e2316217d9149e Reviewed-on: https://chromium-review.googlesource.com/1215382 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Frank Henigman 3b968053 2018-09-05T14:46:25 Clean up state in EGLDebugTest. Reset the EGL error callback for the benefit of following tests. BUG=chromium:880495 Change-Id: Idd94fe032b89b8a0fe829cb4656e4204d9d71b53 Reviewed-on: https://chromium-review.googlesource.com/1208310 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill fb19e084 2018-09-06T15:39:09 Vulkan: Correct gl_FragCoord with default FBO. The viewport flipping we use would give incorrect values. Correct them using the same logic we do for gl_PointCoord. Also corrects the viewport scale driver uniform. It was not being updated after the draw framebuffer setting was adjusted. Also corrects the naming of the replaced builtin variables so it can't possibly conflict with a user variable. This was affecting the OpenGL line raster emulation. Bug: angleproject:2598 Change-Id: I843b5ac7b02160a5ec81a6f8ed2d937b0937198b Reviewed-on: https://chromium-review.googlesource.com/1208515 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 55b03d0e 2018-09-07T00:15:46 Fix ClearTest.RGB8WithMaskFramebuffer. Clear all channels to known state before clearing with one masked, so we know what to expect in the masked one. BUG=angleproject:2674 Change-Id: Icbe58615c68e2b282a27d8f29c2f2a48fb8b1c3e Reviewed-on: https://chromium-review.googlesource.com/1212822 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 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>
Olli Etuaho dff32a0d 2018-08-28T14:35:50 Support multisample arrays in shader programs The added tests check that using textureSize() and texelFetch() on textures with a fixed point format return expected results. texelFetch is also covered for integer format textures. dEQP GLES 3.1 tests also cover a variety of multisampled array texture formats. BUG=angleproject:2775 TEST=angle_end2end_tests, angle_deqp_gles31_tests Change-Id: I99b422e24b39e3563ed72f0fb85c9c1907df807d Reviewed-on: https://chromium-review.googlesource.com/1196521 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 155bfd11 2018-08-31T17:27:10 Fix that same resource is bound on SRV and UAV simultaneously This change makes sure that resource being set to UnorderedAccessView slot is not bound on ShaderResourceView and resource being set to shader resource slot is not bound on UnorderedAccessView. Bug: angleproject:2768 Change-Id: I52fc5bf5e76ccf8be61c59b2195459728f95e536 Reviewed-on: https://chromium-review.googlesource.com/1201324 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Shahbaz Youssefi 9137adea 2018-08-27T14:22:37 Add support for EGL_ANDROID_blob_cache The functionality of MemoryProgramCache is divided up in two. BlobCache is now a generic binary cache, which interfaces with the callbacks from EGL_ANDROID_blob_cache. MemoryProgramCache handles program [de]serialization and interacts with BlobCache. Bug: angleproject:2516 Change-Id: Ie4328a2e56a26338e033d84f4e53a1103411937d Reviewed-on: https://chromium-review.googlesource.com/1194285 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xinghua Cao 913ff54d 2018-08-07T15:14:05 ES31: support compute shader uniform buffer on D3D backend BUG=angleproject:2759 TEST=angle_end2end_tests.ComputeShaderTest.UniformBuffer/ES3_1_D3D11 Change-Id: I92326c3a84f13b364aed0daf567b68f8a411ed2b Reviewed-on: https://chromium-review.googlesource.com/1164843 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Jamie Madill 3e29cf31 2018-08-31T17:19:17 Vulkan: Fix redefining TexStorage after TexImage. This can be easily implemented via a release call. Bug: angleproject:2651 Change-Id: I0adb3ed385284c6342716cd7c347de9966a81bab Reviewed-on: https://chromium-review.googlesource.com/1200368 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a792193e 2018-08-31T17:19:18 Vulkan: Enable StateChangeTest.DisablingBufferedVertexAttribute. This was likely fixed with default vertex attribute support. Bug: angleproject:2650 Change-Id: Ibbc19013ed8227c6fe32ae186b0fa88e5c837589 Reviewed-on: https://chromium-review.googlesource.com/1200369 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a153eddb 2018-08-31T17:19:19 Vulkan: Enable UniformTest.Sampler. This test was fixed quite some time ago. Bug: angleproject:2462 Change-Id: I49714dd08a5e477d72337147f83b80945a8486ee Reviewed-on: https://chromium-review.googlesource.com/1200370 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill fda46aa5 2018-08-31T17:19:15 Vulkan: Enable GLSLTest.ScopedStructsOrderBug. This was fixed upstream in glslang. Bug: None Change-Id: I21751dba101fe39f94c91de6e73853ee9ad8c8f2 Reviewed-on: https://chromium-review.googlesource.com/1200366 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill bf4dc156 2018-08-31T17:19:15 Vulkan: Enable BindUniformLocationTest.Compositor. This was probably fixed some time ago. Possibly due to matrix uniform support. Bug: angleproject:2642 Change-Id: Ic4b9524d82e6770dcba117f5c155c413074ec172 Reviewed-on: https://chromium-review.googlesource.com/1200365 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 44558e37 2018-08-31T17:19:14 Vulkan: Enable TextureLimitsTest. Seems to pass possibly because of a prior bug fix. Bug: angleproject:2654 Change-Id: I53e67bfa28e5429c51720fa71d9168d2f1cf1ece Reviewed-on: https://chromium-review.googlesource.com/1199928 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 73d15ba4 2018-08-31T17:19:13 Vulkan: Enable a dEQP point raster test. This passes on the bots. It fails on 5x but passes on Pixel 2. Bug: angleproject:2599 Change-Id: Ib71dcaf6adff104d7f70d1d6fe800e78c6778e66 Reviewed-on: https://chromium-review.googlesource.com/1199725 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 30b5d84c 2018-08-31T17:19:12 Vulkan: Fix line width caps. We would need to enable the wide lines feature to support non-unit line widths. For now just disable the caps. Bug: angleproject:2598 Bug: angleproject:2706 Change-Id: I0dd228fc2c357bdd9442c3d841be769987a53f72 Reviewed-on: https://chromium-review.googlesource.com/1127303 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0a17e484 2018-08-31T17:19:11 Vulkan: Fix sync of initially disabled attributes. If an attribute was never enabled or disabled the default state was not properly synced in our implementation. This wasn't caught by currently enabled tests. Those tests are now enabled in VertexAttributeTest. Bug: angleproject:2800 Change-Id: I97c063651911379e16de4ee557d9840782114c54 Reviewed-on: https://chromium-review.googlesource.com/1199724 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 9808d38c 2018-08-31T13:12:14 Fix that image texture works incorrectly when loading from program binary This bug is introduced when we implement image texture robust initialization, where we forgot to update active image units mask in program cache. Bug: angleproject:2766 Change-Id: I01de02803173f2cf5b7b9ff740175a4d7cbee4ba Reviewed-on: https://chromium-review.googlesource.com/1198683 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Geoff Lang 89e82979 2018-08-28T11:32:53 Vulkan: Allow gaps in vertex attributes by packing them. Work around restrictions with setting null vertex buffers on command buffers by binding ranges of non-null buffers. Enable VertexAttributeTest on ES2/Vulkan BUG=angleproject:2792 BUG=angleproject:2797 Change-Id: Ief9db1e60c8c9045a4101abe859302d529decbcb Reviewed-on: https://chromium-review.googlesource.com/1194282 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 70a4ef10 2018-08-30T15:55:41 Vulkan: Fix depth range scaling. We were using a formula that didn't work for some of the clipping tests. Bug: angleproject:2601 Change-Id: I60d965c2701656ad590c3b250c2cc777fb432421 Reviewed-on: https://chromium-review.googlesource.com/1194919 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 161a89b1 2018-08-31T10:12:38 Skip DrawElementsIndexOutOfRangeWithStaticDraw on NVIDIA D3D11 FL9.3. This test started consistantly failing after changing the shard count on this test suite. BUG=angleproject:2799 Change-Id: I75769b08f9d4dda1d436facc34a8292193b4538e Reviewed-on: https://chromium-review.googlesource.com/1199723 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 064458a8 2018-08-30T14:02:02 Remove separate ANGLE_texture_multisample_array We can just expose OES_texture_storage_multisample_2d_array instead. The compiler was already changed to accept OES_texture_storage_multisample_2d_array, and now the change is made also at the API level. Out-of-bounds access guarantees provided by ANGLE were the only big difference between the ANGLE spec and the OES spec, so it's simpler to just expose the native extension. Safe out-of-bounds accesses can be guaranteed without having them in the extension spec. This also adds missing texStorage3DMultisample entry point to the proc table, which will enable running dEQP tests. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Idf376ee877a3374a33de177df023f0531ec8f01d Reviewed-on: https://chromium-review.googlesource.com/1196722 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho fd162107 2018-08-27T16:14:57 Support multisample arrays as framebuffer attachments This contains tests for framebuffer completeness when layers of multisample array textures are attached. Simple clearing of a layer of a multisample color texture array and blitting the result to a non-multisampled texture is also covered. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Idf383cab69587dbd8157ab9a2b7c47e5a90b3cf7 Reviewed-on: https://chromium-review.googlesource.com/1190184 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Tobin Ehlis 1bf963b6 2018-07-19T14:56:37 Clean up PlatformMethods attribute enum Centralize definition of EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX in Platform.h. Bug: angleproject:2528 Change-Id: Id2b022c4ea08d2e98cbd6c3b248b58d096c20dfb Reviewed-on: https://chromium-review.googlesource.com/1144265 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman e1037e9b 2018-08-29T20:49:49 Avoid rebase_path() in tests/BUILD.gn. Adjust source paths so we don't need to use rebase_path() on all of them. BUG=angleproject:1569 Change-Id: I1af7678dd8961405446fec49731eba5294bcb586 Reviewed-on: https://chromium-review.googlesource.com/1196046 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 0c5a9e22 2018-08-27T14:36:23 Implement TexStorage3DMultisample on the GL backend BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Ic980d86cd787bcf29f622e68b0c38b0eb6ca5688 Reviewed-on: https://chromium-review.googlesource.com/1190182 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho f0d0408a 2018-08-28T16:02:13 Use OES_texture_storage_multisample_2d_array There's an OES extension for multisample texture arrays, OES_texture_storage_multisample_2d_array. Change references from ANGLE_texture_multisample_array to the native extension in the shader compiler. ANGLE still needs to have robust behavior for out-of-range texel fetches that's not found in the original extension, but this does not need to be spelled out in the extension spec. BUG=angleproject:2775 TEST=angle_unittests Change-Id: Ie80ae767cc92ccaf7389af28789f45547f86978f Reviewed-on: https://chromium-review.googlesource.com/1193266 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman ddc41208 2018-08-23T22:11:55 Rename .gypi -> .gni. Rename and reformat all gyp files. They were previously converted to gn but not renamed to preserve continuity in git. This rename completes the removal of all traces of gyp. BUG=angleproject:1569 Change-Id: I50123105d8881583184ffc564bed65d9fbe4d41c Reviewed-on: https://chromium-review.googlesource.com/1187885 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman a7f97a27 2018-08-21T00:04:05 Gyp is dead. Long live gn. Remove the gyp build. The .gypi files were not renamed so that diff and rebase would work on this change. They will be renamed in a separate change. BUG=angleproject:1569 Change-Id: If8a217027633293664b820104f91a4ca5889b24e Reviewed-on: https://chromium-review.googlesource.com/1187380 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho d310a434 2018-08-24T15:40:23 Add validation and negative tests for multisample arrays This adds errors for binding and allocating multisample array textures. New tests in TextureMultisampleTest.cpp check that the errors are generated as specified. Tests for querying supported sample counts are also improved and extended for multisample array textures. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I6a0fe7ae04bb3d0072f6cbe09026b05e2bc47325 Reviewed-on: https://chromium-review.googlesource.com/1188576 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 47f6dd0d 2018-08-10T13:36:32 Implement robust initialization for image texture This change fixes a bug that the image texture initialization time is not correct. It happens when we use compute shader to write data to an uninitialized texture, then use readPixels to read the result which results that texture initialization falls behind image store and covers the real result. Bug: angleproject:2766 Change-Id: I4e986972096857afc975c40dfa4d559a2f31194c Reviewed-on: https://chromium-review.googlesource.com/1170569 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4e877ad3 2018-08-28T00:18:47 Suppress TransformFeedbackNegativeAPI test on Mac AMD. Seems to be failing on Mac Pro FYI Release (AMD). Unclear exactly the scope of the problem so suppress it on all Mac AMD for now. Bug: angleproject:2747 Change-Id: I7a5da00b9056839f3ed01fc4c83fa7993019bda7 Reviewed-on: https://chromium-review.googlesource.com/1192550 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 6dfdca83 2018-08-03T17:10:55 ES31: support compute shader sampling on D3D backend BUG=angleproject:2756 TEST=angle_end2end_tests.ComputeShaderTest.SamplingAndImageReadWrite/ES3_1_D3D11 Change-Id: I8f112227c5703fcaafffbd2262e6a039f869c483 Reviewed-on: https://chromium-review.googlesource.com/1161754 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 33dab025 2018-08-24T10:00:16 Add test for transform feedback state change validation. This test covers several validation edge cases with detecting feedback loops and buffers bound to multiple types of binding. Bug: angleproject:2747 Change-Id: I612a4fcf1870667a821ebcba2d3948695b3cabd5 Reviewed-on: https://chromium-review.googlesource.com/1174094 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart 22f7aafb 2018-08-23T14:13:51 Add webgl checks in GetActiveUniformsiv. Add validation that disallows GL_UNIFORM_NAME_LENGTH from being used. BUG=angleproject:1523 TEST=angle_end2end_tests Change-Id: Id70e25ab79fd93ae4eb8b8343819458a4a0e4a71 Reviewed-on: https://chromium-review.googlesource.com/1187511 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c14ab2a7 2018-08-24T13:57:55 Fix dEQP_GLES3.functional.negative_api.shader.program_binary The frontend was not taking into account the fact that some drivers do not support program binaries. The fix is that now glGetProgramiv(GL_PROGRAM_BINARY_LENGTH) returns 0 under such circumstances. Bug: angleproject:2780 Change-Id: I4ea2cda6bb4612e69dbd7e00b3d43b97ee3b3c3d Reviewed-on: https://chromium-review.googlesource.com/1188768 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi 8707af51 2018-08-23T15:49:14 Add a test case for enabled-but-inactive vertex attributes Bug: angleproject:2138 Change-Id: Ia5331845d34f60a31280e6da041d13dc3da29232 Reviewed-on: https://chromium-review.googlesource.com/1187364 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi dc248f71 2018-08-24T10:12:27 Re-enable dEQP_GLES3.functional.negative_api.texture.bindtexture The test no longer fails on any platform Bug=angleproject:2779 Change-Id: I1b184b41be23a25fb01a54587eda88fac470b7de Reviewed-on: https://chromium-review.googlesource.com/1188604 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 8ca60805 2018-08-23T14:10:02 Add 2D MS array sampler support to compiler This also places textureSize(gsampler2DMS) correctly in the ESSL 3.10 builtins instead of ESSL 3.00 builtins. BUG=angleproject:2775 TEST=angle_unittests Change-Id: Ieb0f7a7424a5558a5569af6d4fcbcc9b12ec9840 Reviewed-on: https://chromium-review.googlesource.com/1186466 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 d6781dce 2018-08-23T10:51:06 Extend LinkProgramPerfTest to support compile only Add an option for "compie_only" and "compile_and_link". Bug: chromium:849576 Change-Id: Id796ebb85ad5aff1a5272173f11ce2ff42685dce Reviewed-on: https://chromium-review.googlesource.com/1186159 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 221fa261 2018-08-23T10:12:09 Re-enable BlitFramebuffer tests Accidentally disabled in 265811130, which intended to disable tests requiring GL_ANGLE_framebuffer_blit, but also disabled glBlitFramebuffer tests. glBlitFramebuffer is core, but was conditioned to EXT_framebuffer_blit. Bug: angleproject:2773 Change-Id: I0468af8874dc8676a4eb6214b111c08aadc0e2fc Reviewed-on: https://chromium-review.googlesource.com/1186543 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill eef9de68 2018-08-23T11:03:22 Add validation state change test for draw framebuffer. This test covers feedback loops and invalid component types. Bug: angleproject:2747 Change-Id: I3e3c762c5457afef59311f7c5843e464fa386cd6 Reviewed-on: https://chromium-review.googlesource.com/1174093 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi c4097441 2018-08-22T12:14:52 Fix x64 visual studio build errors Bug: angleproject:2740 Change-Id: I44fd2a1daf3dca764e2eef73e437feb32b36dbaa Reviewed-on: https://chromium-review.googlesource.com/1185234 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 9259fd0d 2018-08-22T12:12:00 Clean and enable NoLeakingFragments multiview test Use helper to create multiview backing textures in NoLeakingFragments test instead of doing FBO attachments twice. The test seems to pass on Windows after the recent fixes that have been done to the tests, or possibly due to other earlier fixes. BUG=angleproject:2687 TEST=angle_end2end_tests Change-Id: I6015a5b44fdd06faf7b9375bad501355be8d7732 Reviewed-on: https://chromium-review.googlesource.com/1184713 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho a7b35c33 2018-08-21T16:32:24 Add helpers for multiview framebuffer init Multiview tests now use common helpers to create textures for multiview framebuffers and often also to attach the textures to the framebuffers. The tests now rely on uploaded texture data to initialize the buffers instead of clearing the framebuffers with glClear. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: I7d6d63add5943cab610ab888045d5b0f8ba29215 Reviewed-on: https://chromium-review.googlesource.com/1184712 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 5fea1b76 2018-08-22T10:05:07 Add state change test for uniform buffer validation. Bug: angleproject:2747 Change-Id: Ia808e26a48ecf432cc29ebd8514f265ff3e15ce8 Reviewed-on: https://chromium-review.googlesource.com/1169825 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 4b4197af 2018-08-22T15:24:41 Ignore D3D11 debug layer messages in multiview tests This is better than skipping the tests entirely. The debug layer messages appear incorrect and may be specific to Windows 7 and Windows Server 2008. BUG=angleproject:2778 TEST=angle_end2end_tests on Windows Server 2008 Change-Id: Ief81fbe22f518c393a37a0969c8987ed9500fbed Reviewed-on: https://chromium-review.googlesource.com/1184918 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Corentin Wallez 02cd1526 2018-08-22T13:46:21 Temporarily suppress multiview test failure due to debug layers On example of the debug layer warnings: [ RUN ] MultiviewRenderTest.ProgramRelinkUpdatesAttribDivisor/ES3_D3D11_force_geom_shader_side_by_side Message 0: ID3D11DeviceContext::DrawInstanced: Vertex Buffer at the input vertex slot 1 is not big enough for what the Draw*() call expects to traverse. This is OK, as reading off the end of the Buffer is defined to return 0. However the developer probably did not intend to make use of this behavior. BUG=angleproject:2765 Change-Id: Ic7f45d7965162640d41d27c4b746e1048de59e15 Reviewed-on: https://chromium-review.googlesource.com/1184906 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 44ae899a 2018-08-20T15:37:09 Fix resource init/teardown in multiview tests This calls TearDown functions properly in MultiviewDrawTest test classes. GL RAII objects can't be used as test class members since the GL objects need to be deleted before the test class TearDown is called. Since now the tests call ANGLETestTearDown, this causes D3D debug layer messages to be checked. It turns out that there are some seemingly incorrect debug layer messages generated on AMD bots, so the failing tests are now disabled on AMD/Windows. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: Ifa0fe4d19b76aa84bb3b6b18c8f66a8ab6bd893e Reviewed-on: https://chromium-review.googlesource.com/1179839 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 70aeda49 2018-08-20T12:17:40 Add gl::Program::syncState and dirty bits. Currently this handles uniform block bindings. Cleans up some logic in D3D. Bug: angleproject:2747 Change-Id: I8c2989738d50a77d6f6d90a9ff11dceab6d3129c Reviewed-on: https://chromium-review.googlesource.com/1172085 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis a4e40b72 2018-08-21T17:19:40 Revert "Expect pass on pointcoord test on Pixel 2" This reverts commit d710fee3861a6afcd01a993090cb70a535b2f73f. Reason for revert: pointcoord test still failing on Pixel 2 bot Original change's description: > Expect pass on pointcoord test on Pixel 2 > > Just ran this locally and it passed so re-enabling. > > Bug: angleproject:2727 > Change-Id: I10368664dc68f360474dda8534e1fd28875ff4e8 > Reviewed-on: https://chromium-review.googlesource.com/1183528 > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Tobin Ehlis <tobine@google.com> TBR=ynovikov@chromium.org,jmadill@chromium.org,tobine@google.com Change-Id: If7a3e5dfb12c7b392ae91c477ad9fd9169912f90 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2727 Reviewed-on: https://chromium-review.googlesource.com/1183503 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill ac6d90ea 2018-08-21T13:10:36 Add more test param documentation to perf tests. Also add links from other pages. Bug: angleproject:1944 Change-Id: I344ce075973bd45942d52b819385cb74a5a073ca Reviewed-on: https://chromium-review.googlesource.com/1183629 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill de8d4cb0 2018-08-21T12:58:19 Optimize BindingsBenchmark::drawBenchmark. Fix contributed by matavenrath@nvidia.com. This fixes BindingsBenchmark::drawBenchmark to take only 3% instead of 15% of the time spent in BindingsBenchmark.Run/gl_100_objects_allocated_at_initialization. Bug: angleproject:2777 Change-Id: I5b5b6f167289b947767b40e7761d90cf06c49816 Reviewed-on: https://chromium-review.googlesource.com/1181868 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis d710fee3 2018-08-21T08:29:33 Expect pass on pointcoord test on Pixel 2 Just ran this locally and it passed so re-enabling. Bug: angleproject:2727 Change-Id: I10368664dc68f360474dda8534e1fd28875ff4e8 Reviewed-on: https://chromium-review.googlesource.com/1183528 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Olli Etuaho 4bcaf998 2018-08-17T17:18:28 Inherit MultiViewProgramGenerationTest from MultiviewTest It doesn't need to inherit from MultiviewRenderTest since it doesn't need a framebuffer. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: I77b232a907afcae7f2f93cbf9da47ca7bd93c959 Reviewed-on: https://chromium-review.googlesource.com/1179881 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 7a4f6b8c 2018-08-17T11:38:11 Fix resource init/teardown in FramebufferMultiviewTest GL RAII classes can't be used as test class members since the GL objects need to be deleted before the test class TearDown is called. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: If19d33bd044c9e74e46f35183e8ca1bc6a96d6cf Reviewed-on: https://chromium-review.googlesource.com/1179159 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 4836acc5 2018-08-20T15:23:18 Rename and reorganize MultiviewRenderTestBase MultiviewRenderTestBase is renamed to MultiviewFramebufferTestBase since the functionality it has is mostly to set up a framebuffer. This cleans up the test class without including functional changes to ease diagnosis of issues with resource init/teardown. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: I0debd6a7a53a2e6bff7100d07b29313d66a79cb5 Reviewed-on: https://chromium-review.googlesource.com/1181052 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho f26b27e2 2018-08-17T11:01:19 Add some shared utilities for multiview tests This prepares for fixing multiview test resource init/teardown order. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: I841327416fa76ac682310ef1b2309f5bb4e9fbac Reviewed-on: https://chromium-review.googlesource.com/1179155 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman d731ff82 2018-08-13T18:18:51 Vulkan: support depth offset. Update pipeline description with depth offset state. Enable test. BUG=angleproject:2353 Change-Id: Ib087bbff8e145b0e6e862eb6616a4943a989a7b2 Reviewed-on: https://chromium-review.googlesource.com/1173447 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang 6e5bf36f 2018-08-15T09:53:17 GLES1: Fixes for Gets() test - Fixed wrong face parameter for glGetMaterial*. - Enabled GL_LINE_SMOOTH capability in state only (no rendering yet) - Enabled logical operation capability in state only (no rendering yet) - Fixed wrong handling of GL_RGB/ALPHA_SCALE and GL_POINT_COORD_REPLACE_OES Test: Enable and pass Gets() GLES1 conformance test BUG=angleproject:2306 Change-Id: Ib5c50a2055129b76ad24053baf0dac24dcc00761 Reviewed-on: https://chromium-review.googlesource.com/1176161 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Till Rathmann c1551dc2 2018-08-15T17:04:49 D3D11 fix: Mipmapping was used although disabled via Sampler When using a sampler the texture was created as if it has mipmaps, regardless what you specified in GL_TEXTURE_MIN_FILTER via glSamplerParameteri() -- mistakenly the default value GL_NEAREST_MIPMAP_LINEAR or the value set via glTexParameteri() was evaluated. If you didn't provide mipmaps and didn't let the driver generate them this led to not sampling your texture data when minification occurred. BUG=angleproject:2772 TEST=angle_end2end_tests.Texture2DTestES3.MinificationWithSamplerNoMipmapping Change-Id: I195147e208129c6fa8686bb0d9aea6931b2f20b1 Reviewed-on: https://chromium-review.googlesource.com/1175910 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>