src/tests


Log

Author Commit Date CI Message
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>
Geoff Lang 2363356f 2018-07-17T15:02:36 Make sure index ranges outside of the GLint range are handled correctly. IndexRange uses size_t values but DrawCallParams::mFirstVertex is a GLint. This makes sure all casting is safe. BUG=864528 Change-Id: Iaa95019615af4d3f79b12bbcb0df13b44cb54339 Reviewed-on: https://chromium-review.googlesource.com/1140898 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 35bc74d6 2018-08-03T14:07:59 ES31: Support atomic functions on D3D11 - Part II This patch adds the support of translating atomicExchange and atomicCompSwap without return value on D3D11 back-ends. As the last parameter of the HLSL intrinsic functions InterlockedExchange and InterlockedCompareExchange is not optional, when there is a call of either atomicExchange or atomicCompSwap without return value, we add a temporary variable for it, so that we can directly translate all of such calls in outputHLSL.cpp. BUG=angleproject:2682 TEST=angle_end2end_tests Change-Id: I7e9c6d3c7d1846c865909b2f5a26592846c82582 Reviewed-on: https://chromium-review.googlesource.com/1161744 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
jchen10 7ae70d8f 2018-07-06T13:47:01 ParallelCompile: Parallelize D3D linking This adds a new linking state to Program. If a Program is in linking state, on the one hand the foreground thread may continue issuing more GL calls, and on the other hand the background linking threads may be accessing Program internally too. Without a proper constraint there must be conflicts between them. For this purpose, we block any further GL calls to Program until it's actually linked. In addition, we prohibit parallel linking an active program, so that ProgramD3D does not have to worry about such similar conflicts. Also changes the WorkerThread to support limiting the number of concurrently running worker threads. BUG=chromium:849576 Change-Id: I52618647539323f8bf27201320bdf7301c4982e6 Reviewed-on: https://chromium-review.googlesource.com/1127495 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ea926a36 2018-08-10T15:22:30 Add angle_perftests README file. Bug: angleproject:1944 Change-Id: I93f363dc5fb6096baec01584bbd2fb525a84909c Reviewed-on: https://chromium-review.googlesource.com/1171502 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ec1fe5b7 2018-08-10T10:05:52 D3D: Use angle::Result error pattern. This completes the refactor for the D3D9/D3D11 back-ends. Bug: angleproject:2752 Change-Id: Ie35a925f75c902d8f9fdab6bc33b3bb9c937f85b Reviewed-on: https://chromium-review.googlesource.com/1167209 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill b0c8be85 2018-08-10T14:36:39 Fix AMD detection in angle_end2end_tests. Some Radeon cards in D3D11 would not report AMD or ATI in the Renderer string. Fix this by also checking for 'Radeon'. Bug: angleproject:2572 Change-Id: I866c3042e35448deff627efdb8e94fcbc68abf01 Reviewed-on: https://chromium-review.googlesource.com/1171363 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Omar El Sheikh 077cd858 2018-08-06T10:46:22 Vulkan: Introduce Command Buffer Perf Test Implemented command buffer performance test based on LunarG samples. Includes a lot of utility functions and should build/run on Linux, Android Bug: angleproject:2758 Change-Id: I8606802fb3e8e0621856860c45ef50ba836c26f8 Reviewed-on: https://chromium-review.googlesource.com/1162119 Commit-Queue: Omar El Sheikh <theoking@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 04c084dd 2018-08-08T15:49:28 Extend MultiviewDrawValidationTest. These tests need to use a valid program for some operations. Also make them run in a D3D11 config since the OpenGL extension doesn't seem to be available on the GPU config we run on the ANGLE CQ. Also add tests that cover various subtle state change validation cache bugs. Bug: angleproject:2747 Change-Id: Idbd1d66854f2e3ca67b59836a370928e1fe8c3b3 Reviewed-on: https://chromium-review.googlesource.com/1167980 Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f2c6faf5 2018-08-09T10:54:08 Remove some Vulkan perftest configs. We don't support ES 3.0 or ES 3.1 in Vulkan yet. Remove Vulkan configs from tests that don't support the higher features levels. We can re-add them once we improve Vulkan support. Bug: angleproject:2604 Change-Id: Icca57b5ec696aaeb2a571b79cd1a7869f806c176 Reviewed-on: https://chromium-review.googlesource.com/1169306 Reviewed-by: Omar El Sheikh <theoking@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill cc1dc5ee 2018-08-07T15:27:49 Add a perf test for draw calls with texture changes. This perf test highlights the performance hotspots with State::syncProgramTextures. Also includes a fix to the perf test runner script. Bug: angleproject:2763 Change-Id: I69ffa0cc0d5e023944495b7a1c844770a54f7ddc Reviewed-on: https://chromium-review.googlesource.com/1166041 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 88602e6e 2018-08-08T12:49:30 Fix vertex array element limit condition. Certain overflows wouldn't be detected when the attribute size was less than the attribute size and we were drawing a small number of vertices. Fix this and also set the sentinel value for an integer overflow to be negative maxint instead of -1 to more effectily distinguish the cases. Bug: angleproject:1391 Change-Id: I970d5e2a630c0a84c2c02ac0ac41ab1a395819fe Reviewed-on: https://chromium-review.googlesource.com/1162264 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1bd4bfb0 2018-08-03T14:24:22 Add draw call perf tests that use the driver. Also moves some code to the cpp. Bug: angleproject:2747 Change-Id: I38468e6276d52d11d5751df6917c66f15ae61246 Reviewed-on: https://chromium-review.googlesource.com/1163822 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill d69a5f12 2018-08-01T11:34:48 Cache VertexArray::hasMappedBuffer. This can be updated in several places. Also adds a test which covers some of the paths. Bug: angleproject:2746 Change-Id: Id119e527fd0064998d7ad5011a9d8376e7b9dab0 Reviewed-on: https://chromium-review.googlesource.com/1153569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 2da5356e 2018-08-01T11:34:47 Final cleanup to ValidateDrawAttribs. This moves the client attribs check into a shared place. This cleans up some of the surrounding code. Also get rid of the vertex count parameter. Bug: angleproject:1391 Change-Id: I9c688895c2cc5650d7b395497d69033093916f21 Reviewed-on: https://chromium-review.googlesource.com/1150517 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill a2d1d2db 2018-08-01T11:34:46 Context: Cache VAO element limits. Cache the minimum value for non instanced and instanced active attributes. The cache is updated in the following places: 1. Context: bindVertexArray. 2. Context: any executable change (linkProgram/useProgram/programBinary). 3. Vertex Array: any state change call. 4. Buffer: a dependent buffer resize. This greatly reduces the time we're spending in ValidateDrawAttribs. Bug: angleproject:1391 Change-Id: I84bb222a1b9736e6165fe40e972cd4299ca1178d Reviewed-on: https://chromium-review.googlesource.com/1150516 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill dc358af7 2018-07-31T11:22:13 Context: Cache attributes masks. This cache is updated in the following locations: 1. GLES1: clientActiveTexture. 2. GLES1: disableClientState/enableClientState. 3. Context: linkProgram/useProgram/programBinary. 4. Context: bindVertexArray. 5. Vertex Array: most state changes. Improves performance by about 6% in the GL no-op test. Also includes fixes for keeping the client memory attribs mask in sync. The cache also includes a boolean if there are any enabled client attributes. Bug: angleproject:1391 Change-Id: I93b6a2c8492355958fd5483f14b70535729091d6 Reviewed-on: https://chromium-review.googlesource.com/1147437 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 8acb1b61 2018-07-30T16:20:54 Allow reads from a multiview framebuffer with one view It's safe to read from a multiview framebuffer if it is layered and has just one view. The native OVR_multiview spec supports this as well. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I04e1364390574075f7e06e39a64e3bf05a539a05 Reviewed-on: https://chromium-review.googlesource.com/1156509 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 67c388e6 2018-07-19T19:16:11 Vulkan: support GL_FIXED vertex data. Override fixed to float, generate code, enable tests. BUG=angleproject:2405 Change-Id: Ic3e9a31eaf22372023b94081b0f4a83770dcabbe Reviewed-on: https://chromium-review.googlesource.com/1144455 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman e452382a 2018-07-19T16:10:53 Vulkan: convert/align vertex data from buffers When we get a buffer with vertex data in an unsupported format or alignment, correct that as we copy it to a DynamicBuffer, then use the copy. Enable tests. BUG=angleproject:2405 Change-Id: I2132abea4d936f6b53d9209be7f99a0e2d8de219 Reviewed-on: https://chromium-review.googlesource.com/1141277 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Zhenyao Mo 5b3b5cc1 2018-07-27T16:49:57 Suppress more tests on Android for NVIDIA Shield TV bot. BUG=angleproject:2507 TBR=geofflang@chromium.org Change-Id: I6788303bdca8739c42b1f43e45b5b2c16cea4ed3 Reviewed-on: https://chromium-review.googlesource.com/1154127 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Geoff Lang c0b61500 2018-07-27T15:59:32 Fix/supress issues with EGL images on Android. ChromeOS devices share some of the same driver bugs as Qualcomm. NVIDIA devices require the image to be preserved. BUG=angleproject:2507 Change-Id: I2750f78c219490fcd7e6abd224adf8d8e96b7848 Reviewed-on: https://chromium-review.googlesource.com/1153606 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9bf86f07 2018-07-26T11:46:34 Don't sync the read framebuffer on draw calls. The read framebuffer may not be complete and be incapable of syncing. Removed the generate syncDirtyObjects method so each caller must make sure they are only syncing objects that are known to be valid for the operation. BUG=angleproject:2737 Change-Id: Ia8edf3fca3a8369aa813be46ba99f6b50a36b2e6 Reviewed-on: https://chromium-review.googlesource.com/1151621 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
LRN 03d132eb 2018-07-14T13:31:35 Support EGL_(WIDTH|HEIGHT) in eglSurfaceAttrib(), fixed resize Setting EGL_WIDTH or EGL_HEIGHT results in mFixedWidth and mFixedHeight changing their values. Whenever the swap chain is tested for needing a resize, surfaces with mFixedSize are treated as if they should be resized to mFixedWidth and mFixedHeight from their current size. This way fixed-size surfaces can be resized - it's enough to do a couple of eglSurfaceAttrib() calls and then either let ANGLE check surface for needing a resize in due course, or force that by calling eglWaitNative(). BUG=angleproject:2725 Change-Id: I2932d8ecd5a2f10500e4aa8583a169aa09bf01bb Reviewed-on: https://chromium-review.googlesource.com/1139055 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 854429de 2018-07-27T08:12:48 D3D: Return error from getVertexSpaceRequired. This removes another use of the gl::ErrorOrResult pattern. Unblocks error refactoring. Bug: angleproject:2738 Change-Id: Ib611a3b68f8995469befd51797dfed34eaeee84e Reviewed-on: https://chromium-review.googlesource.com/1151450 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill b1565903 2018-07-27T08:12:48 D3D: Pass gl::Context to many more functions. This makes the Context more available for logging errors. Also includes more refactoring to VertexDataManager to ensure we can access the gl::Context. Bug: angleproject:2738 Change-Id: Iae3d22a1403078d236bfe63a3e2d203c13678dc4 Reviewed-on: https://chromium-review.googlesource.com/1151449 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 604d873e 2018-07-20T11:02:43 Fix multiview combined with flat interpolation Declaring HLSL outputs with SV_* semantics after the ones with TEXCOORD* semantics makes multiview shaders that contain a flat varying run correctly. This is a workaround for what seems to be a bug in the DX runtime, reproducible on at least NVIDIA and Intel. This also adds another, clearer test case for flat interpolation used together with multiview. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: I127b85497aa4fee58b74893165a980cbdd4444d6 Reviewed-on: https://chromium-review.googlesource.com/1146809 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang dbd16127 2018-07-19T11:30:21 EGL: Implement EGL Image extensions. BUG=angleproject:2507 Change-Id: Ica33166e9e23e933977c3ab034d4f5a8cada9fb1 Reviewed-on: https://chromium-review.googlesource.com/1143454 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Omar El Sheikh eb4b8697 2018-07-17T10:55:40 Introduced eglMakeCurrent Perf Test Currently disabled test on android Also made the default EGL device type be EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE Updated destroy function of RendererVk to properly reset the mMemoryProperties member variable Bug: angleproject:2735 Change-Id: Ie1f8ab1ac93b18eda4c10c3b10ecd4756f1d8543 Reviewed-on: https://chromium-review.googlesource.com/1140508 Commit-Queue: Omar El Sheikh <theoking@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 76301e09 2018-07-19T11:48:30 Vulkan: Fix compound nested sampler struct params. Replace the struct type of binary and symbol parameter nodes with a lookup of the struct type in the tree. Bug: angleproject:2494 Change-Id: I1e892e0f1b1f97302d1cdce1035f51c01d0efd9e Reviewed-on: https://chromium-review.googlesource.com/1135695 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill df0e48fe 2018-07-24T11:06:46 Buffer11: Don't use ErrorOrResult. This pattern isn't available when using angle::Result instead of gl::Error. Refactor the Buffer11 class to use gl::Error instead. This unblocks further return value refactoring for perf. Bug: angleproject:2738 Change-Id: I739044ae318c6b1fc40756a4f1fcadf609276c1a Reviewed-on: https://chromium-review.googlesource.com/1142952 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Omar El Sheikh 0359b697 2018-07-23T17:22:00 Vulkan: Check mInFlightCommands doesn't grow too fast The mInFlightCommand vector could grow faster than the GPU can complete tasks. Check for this edge case and give the GPU a chance to catch up with work. Also allows us to enable performance tests for Draw Calls on vulkan since it was affected by this limit check before. Bug: angleproject:2742 Change-Id: I66a86ea6b5300fa3d74b07dc341aa597824b5f09 Reviewed-on: https://chromium-review.googlesource.com/1147607 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill ddd6e874 2018-07-24T10:49:06 Vulkan: Suppress 3 failing blit tests on Pixel 2. Bug: angleproject:2743 Change-Id: I1693a5b301fa10a92263aab0cec14829851fe21f Reviewed-on: https://chromium-review.googlesource.com/1148461 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 06235df9 2018-07-20T14:26:07 Make HLSL shaders use only one main function Instead of having separate main() and gl_main() functions in HLSL shaders, add initializing outputs and inputs directly to the main function that's in the AST. This works around some HLSL bugs and should not introduce name conflicts inside main() since all the user-defined variables are prefixed. BUG=angleproject:2325 TEST=angle_end2end_tests Change-Id: I5b000c96aac8f321cefe50b6a893008498eac0d5 Reviewed-on: https://chromium-review.googlesource.com/1146647 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill b436aac3 2018-07-18T17:23:48 Vulkan: Support inverted blit for depth/stencil. Depth/stencil formats are packed tightly when reading back Images with vkCmdCopyImageToBuffer. Same for the reverse. Thus we need to take this into account when doing our blitWithReadback implementation. This splits the depth/stencil blit into two separate steps. Fixes all the remaining blit failures in BlitFramebufferANGLETest. Bug: angleproject:2673 Change-Id: Ie9f43f782a82b5a0746d00122b24f81088d57c4c Reviewed-on: https://chromium-review.googlesource.com/1140740 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang cd7cd2a8 2018-07-19T11:25:54 Pass Context to EGLImage creation and Display to EGLImage initialization. BUG=angleproject:2507 Change-Id: I6c195434131709203f892be6037e974002c174c2 Reviewed-on: https://chromium-review.googlesource.com/1143453 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang 0df813c3 2018-07-12T12:52:06 GLES1: GL_OES_draw_texture BUG=angleproject:2306 This implements GL_OES_draw_texture using a few bits of new state in the renderer and adding a code path for it in the shader, using gl_VertexID to draw the quad backing the texture draw. This allows us to avoid allocating a separate vertex array for the texture draw and reuses the current shader as much as possible, plugging in to the existing multitexturing pipeline. - Add unit test and sample - No new test expectations, but advertising GL_OES_draw_texture makes the DrawTex GLES1 conformance test non-trivial and actually test glDrawTex*. Change-Id: I1485098249fe44d46a01cab4bb7b2c39d0492923 Reviewed-on: https://chromium-review.googlesource.com/1135930 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Olli Etuaho 94c91a95 2018-07-19T15:10:24 Don't allow multiview clear during timer query This brings the ANGLE_multiview spec in line with WEBGL_multiview. This also fixes the test so that the timer query extension is requested when it is being tested. BUG=angleproject:2062 TEST=angle_end2end_tests Change-Id: Ibd5c117a5ae2642d26137d9ad44420d6601ba762 Reviewed-on: https://chromium-review.googlesource.com/1143283 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 0be37b44 2018-07-19T10:03:52 Fix ImageTest. This test suite was missing the "GL_" prefix on some of the extension checks. This was causing every test in the suite to be skipped. Fix the check and also add some sanity checks that should ensure we expose certain extensions on particular platforms and renderers. Was discovered while working on changing the egl::Image class. Bug: angleproject:2714 Change-Id: Ida89b5c3c33c534e60cbd55c7e1117a6ef6faae9 Reviewed-on: https://chromium-review.googlesource.com/1142963 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho da41ac69 2018-07-19T16:45:32 Fix decorating ViewID_OVR in HLSL output ViewID_OVR should not be decorated in HLSL output since it is an internal variable. Make sure that DecorateVariableIfNeeded() is used for varyings instead of just Decorate() so that the internalness is checked correctly and ViewID_OVR doesn't get decorated. This avoids possible name conflicts between the internal ViewID_OVR and any user-defined variables named ViewID_OVR. BUG=angleproject:2062 TEST=angle_end2end_tests, angle_unittests Change-Id: I9ed9876d4b2c760e7a11b0b270a2190993e840e5 Reviewed-on: https://chromium-review.googlesource.com/1143398 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiawei Shao 6a5d98c4 2018-05-04T15:42:20 ES31: Implement Vertex Attrib Binding on D3D11 This patch implements Vertex Attrib Binding on D3D11 and enables all the test cases related to Vertex Attrib Binding on D3D11 back-ends. On D3D11 back-ends the information in both GL vertex attributes and bindings should be updated together. When a binding is dirty, we need to find out and update all the attributes that are using this binding. To speed up this process, this patch adds a map from each binding to all the attrib indexes that are using this binding. This map may be updated when VertexAttribBinding is implicitly or explicitly called. With this map we can easily get all the attributes that should be updated with the current dirty binding. This patch also removes some unused variables in VertexArray11.cpp. BUG=angleproject:2700 TEST=dEQP-GLES31.functional.vertex_attribute_binding.* angle_end2end_tests Change-Id: I9a28ec357fd3aba835812cecc410cfa4e3734f0c Reviewed-on: https://chromium-review.googlesource.com/1048980 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang c16f518e 2018-07-18T10:40:03 Vulkan: Disable the depth/stencil states when there are no depth/stencil buffers We sometimes emulate depth-only or stencil-only buffers with depth-stencil buffers. Disable depth-stencil states that allow reading or writing to these buffers that should not exist. BUG=angleproject:2739 Change-Id: I4f54800404f340eb53f04176e208f19a83a2899c Reviewed-on: https://chromium-review.googlesource.com/1141932 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 38971fd1 2018-06-28T15:19:18 Vulkan: Support multiple depth stencil formats for backbuffers. Since the backbuffer's depth stencil is always emualted, it can support any depth stencil format. BUG=angleproject:2692 Change-Id: I29df62bb322c1ac4e9fcd54e4cbc4c219cf12e83 Reviewed-on: https://chromium-review.googlesource.com/1119075 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jiang e2c00841 2018-07-13T16:50:49 GenerateMipmaps should generate INVALID_OPERATION in ES 2.0 with EXT_sRGB According to the OpenGL extension spec EXT_sRGB.txt, EXT_SRGB is based on ES 2.0 and generateMipmap is not allowed if texture format is SRGB_EXT or SRGB_ALPHA_EXT. BUG=769989 TEST=SRGBTextureTest.SRGBValidation* TEST=SRGBTextureTest.SRGBAValidation* Change-Id: Ic51da224fcd318187865a44630af6fca5c3ad2de Reviewed-on: https://chromium-review.googlesource.com/1137924 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
Geoff Lang 252ec919 2018-07-16T15:39:34 Vulkan: "Implement" EGL_ANGLE_display_texture_share_group BUG=angleproject:2724 Change-Id: I4a86c88ec8a1508a0961091ad6b4429dcd8775d4 Reviewed-on: https://chromium-review.googlesource.com/1138823 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang d691aeeb 2018-07-11T16:32:06 Vulkan: Implement GL_CHROMIUM_copy_texture with CPU copies. BUG=angleproject:2723 Change-Id: Ic3905531d3e91f94ff0ce10a09ca5dcdf643e21f Reviewed-on: https://chromium-review.googlesource.com/1134084 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Omar El Sheikh 80d4ef10 2018-07-13T17:08:19 Vulkan: Fixed improperly set env variable After the first test using the Mock ICD runs, an environment variable VK_ICD_FILENAMES is set when previously it did not exists. The cleanup of that test, rather than deleting the environment variable, set it to an empty string, which the Vulkan loader would use for subsequent Vulkan tests, causing issues with Vulkan not finding the correct extensions. Had to disable two more tests since they started failing once those backends were enabled. Bug: angleproject:2604 Change-Id: Ie103756eed60d255d1dd92d7ef3b726183feeb1e Reviewed-on: https://chromium-review.googlesource.com/1137342 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Omar El Sheikh <theoking@google.com>
Jamie Madill 5a4c932a 2018-07-16T11:01:58 Vulkan: Implement "default" vertex attributes. Rendering from disabled attributes is implemented using small dynamic buffers. The buffers use a stride of zero so the same vertex data is pulled for every index. This fixes all the disable attribute tests in dEQP. Bug: angleproject:2444 Change-Id: I04fe139076da3e3ff723bed8eb17e333b4cb0ddf Reviewed-on: https://chromium-review.googlesource.com/1136664 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman 419acc8f 2018-06-24T19:57:31 Vulkan: Convert streamed vertex data as needed. Add two members to vk::Format: - vertex data copy function - flag indicating if the function converts or not Use the function when streaming vertex data so it gets converted if needed. Add fallbacks for integer formats. These formats will now work everywhere, as long as they are in client memory, not a buffer object. Adjust test expectations accordingly. BUG=angleproject:2405 Change-Id: I677221219d933c35740633a0ab7694293e218177 Reviewed-on: https://chromium-review.googlesource.com/1084328 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez ddd8eaa8 2018-07-16T14:28:58 Suppress reverse blits tests on Qualcomm/Vulkan BUG=angleproject:2732 Change-Id: I1fa3c46654c7e6d446ec3bb43eb3a6c01a15e8f9 Reviewed-on: https://chromium-review.googlesource.com/1138234 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 76c1d14b 2018-07-14T11:33:39 D3D11: Lift dEQP-GLES3 uniform_api test expectations. Unclear if these tests are still failing. Bug: angleproject:1098 Change-Id: If64a0a046d2b21b67f67aba1efb92d33a30b96c3 Reviewed-on: https://chromium-review.googlesource.com/1137390 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ecbaf666 2018-07-13T15:00:38 dEQP: Fix non-GTest error logging. Using the non-GTest dEQP targets led to crashes when deferencing a nullptr error logging method. Fix this by skipping platform init if there is a nullptr logError function. Bug: angleproject:2552 Change-Id: I161e35b49f7e9a7592cec968e3540a2e8b625f94 Reviewed-on: https://chromium-review.googlesource.com/1136663 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Luc Ferron e835609c 2018-07-12T12:36:47 Vulkan: Implement gl_DepthRange support using driver uniform Bug: angleproject:2592 Change-Id: Iec3d111df4d8e5cef205c8afb177f0514ffac5c8 Reviewed-on: https://chromium-review.googlesource.com/1135448 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron f786b706 2018-07-10T11:01:43 Vulkan: Enable viewport Y flipping Bug: angleproject:2728 Bug: angleproject:2726 Bug: angleproject:2673 Bug: angleproject:2729 Change-Id: Iad657a116bf9fcd06c3d4cf1918aaacba4f1fd38 Reviewed-on: https://chromium-review.googlesource.com/1131515 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill 523c5e31 2018-07-12T16:39:30 Vulkan: Suppress PointCoord test on Android. This started failing with the driver uniform rework: Vulkan: Add driver uniforms for point coords flipping https://chromium-review.googlesource.com/1133584 Suppress until we can investigate. Bug: angleproject:2727 Change-Id: Id1d1fe713ac058a0bb45230ba9e292f012755bcc Reviewed-on: https://chromium-review.googlesource.com/1135729 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 1617e69e 2018-07-11T11:08:19 Vulkan: Implement depth/stencil blit with flip of the viewport - This makes all end2end tests pass successfully on Win/Nvidia with viewport flipping enabled. Bug: angleproject:2673 Change-Id: I031c0a0f5fb0aede58b59479e57c2c127bcb964c Reviewed-on: https://chromium-review.googlesource.com/1133703 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill 84c11c53 2018-07-11T10:12:39 Vulkan: Implement sampler structs as function args. Bug: angleproject:2494 Change-Id: Ia8e374846427b7140ab2565ae5b9b18409a76d96 Reviewed-on: https://chromium-review.googlesource.com/1117323 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron 5c8113d3 2018-07-10T15:03:01 Vulkan/D3D11: Improve blit framebuffer tests and fix bug in D3D11 - Improving the tests revealed a bug in D3D 11 Fast Path rendering. - These changes here are preliminary to implementing the blit for depth/stencil in Vulkan when using the viewport flipping. Bug: angleproject:2673 Bug: angleproject:2719 Change-Id: I6d55084e559d3110c8eeb0e7acb4e6fb09b6c1b5 Reviewed-on: https://chromium-review.googlesource.com/1132125 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jiawei Shao a6a7842f 2018-06-28T08:32:54 ES31: Support atomic functions on D3D11 - Part I This patch is the first one of the implementation of atomic functions in D3D11. There are mainly two differences in the usage of GLSL and HLSL atomic functions: 1. All GLSL atomic functions have return values, which all represent the original value of the shared or ssbo variable; while all HLSL atomic functions don't, and the original value can be stored in the last parameter of the function call. 2. For HLSL atomic functions, the last parameter that stores the original value is optional except for InterlockedExchange and InterlockedCompareExchange. Missing original_value in the call of InterlockedExchange and InterlockedCompareExchange results in a compile error from HLSL compiler. To handle these differences, we plan to implement the translation in two steps: 1. Support direct translations from GLSL atomic functions to HLSL ones. Direct translation can only handle the following two situations: (1) The sentence is a GLSL atomic function call without requesting a return value and it is not atomicExchange or atomicCompSwap: e.g. GLSL: atomicAdd(mem, value); -> HLSL: InterlockedAdd(mem, value); (2) The sentence is a simple assignment expression: its right is a GLSL atomic function call and its left is a declared variable. e.g. GLSL: oldValue = atomicAdd(mem, value); -> HLSL: InterlockedAdd(mem, value, oldValue); 2. Support atomic functions in the situations that don't support direct translations. We will modify the intermediate tree to make direct translation work on all these situations. e.g. atomicExchange(mem, value); -> int oldValue; oldValue = atomicExchange(mem, value); int oldValue = atomicAdd(mem, value); -> int oldValue; oldValue = atomicAdd(mem, value); return atomicAdd(mem, value); -> int temp; temp = atomicAdd(mem, value); return temp; for (i = 0; i < atomicAdd(mem, value); ++i) -> int temp; temp = atomicAdd(mem, value); for (i = 0; i < temp; ++i) { ... temp = atomicAdd(mem, value); } int result = isTrue ? atomicAdd(mem, value) : 0; -> int result; if (isTrue) { result = atomicAdd(mem, value); } else { result = 0; } This patch completes Step 1 which mainly focus on the translation from GLSL atomic functions to HLSL ones. BUG=angleproject:2682 TEST=angle_end2end_tests Change-Id: I3b655b6e286dad4fd97f255f7fe87521c94db30c Reviewed-on: https://chromium-review.googlesource.com/1121835 Commit-Queue: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill a2f043d8 2018-07-10T17:21:20 dEQP: Implement platform error handling. Also downgrades several Vulkan UNIMPLEMENTED() to WARN(). Also downgrades a couple D3D-specific errors to warnings. Also downgrades an undefined behaviour integer clear error to warning. Also includes suppressions for failing D3D11 ES 3.1 SSBO tests. Also includes suppressions for failing Android GLES format tests. Also includes suppressions for failing Android Vulkan buffer tests. Bug: angleproject:2552 Bug: angleproject:2567 Bug: angleproject:1951 Bug: angleproject:2405 Change-Id: Ie619085021d42012cd578b669f7ff4252ca41a58 Reviewed-on: https://chromium-review.googlesource.com/1062791 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Omar El Sheikh efaa09fd 2018-06-27T15:40:21 Enabled Vulkan backend on as many tests as possible Bug: angleproject:2694 Change-Id: I299d71e0857065d0f60204977d395793f921deaa Reviewed-on: https://chromium-review.googlesource.com/1117702 Commit-Queue: Omar El Sheikh <theoking@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang cb8a921b 2018-06-28T12:30:36 Vulkan: Support RGB/BGR backbuffers emulated on RGBA/BGRA. BUG=angleproject:2692 BUG=angleproject:2523 BUG=angleproject:2715 BUG=angleproject:2716 Change-Id: I538b385f8b66fb97e176953b0fc4a6299849c005 Reviewed-on: https://chromium-review.googlesource.com/1118713 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Luc Ferron 82eda93f 2018-07-09T15:10:22 Vulkan: Fix for framebuffer blit and Y flip - The depth/stencil related tests are now disabled since I found out that the tests are too simple to find issues if there is a flip since they use only a single color and no gradient / checked board. This is left to implement in the Vulkan backend later on. Bug: angleproject:2673 Change-Id: I8f7091d4b9c8c3bec0353ebab28304b6209ea350 Reviewed-on: https://chromium-review.googlesource.com/1129629 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Olli Etuaho d8b1c5c5 2018-06-20T12:08:46 Return ImmutableString from ArrayString() This makes the compiler a few kilobytes smaller, and prepares getting rid of TString altogether. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I93a003fe27b99bef72f872fa1066e2e108f934c5 Reviewed-on: https://chromium-review.googlesource.com/1107713 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang 7e585118 2018-07-04T15:49:02 Vulkan: Implement eglWaitClient using a finish. In the future this can be implemented with a flush. BUG=angleproject:2707 Change-Id: I1dd4eae9551f7797865e6e17e6caa77f6ec5a9b2 Reviewed-on: https://chromium-review.googlesource.com/1126457 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Geoff Lang 072c3519 2018-07-04T15:50:12 Fix missing return when validation fails in eglWaitNative. BUG=angleproject:2707 Change-Id: Ibd70437e3a40a9a63b78ac9a4546c97611a97ba5 Reviewed-on: https://chromium-review.googlesource.com/1126458 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 62edcce8 2018-07-04T12:43:39 Vulkan: Initialize the max pbuffer size members of Config. Pass the VkPhysicalDeviceProperties to GenerateDefaultConfig to initialize the pbuffer size limitations in a platform independent way. BUG=angleproject:2622 Change-Id: Id99bc505a1965cc037c5dcd65af031c1c655d424 Reviewed-on: https://chromium-review.googlesource.com/1126406 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Geoff Lang 258e8718 2018-06-21T17:29:19 EGL: Support unvirtualized contexts and unsafe multithreading. -Add a new renderer and context type to own native EGL contexts and handle destruction. -Track the current EGL surface and context per-thread. -Support unvirtualized contexts by creating a new context for every client context. BUG=angleproject:2464 Change-Id: Ib2efa1d88c771b4a78625e0e3546f6ed95678c91 Reviewed-on: https://chromium-review.googlesource.com/1110943 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron a72ebeba 2018-06-28T11:16:58 Vulkan: Fix issue in DynamicBuffer - We weren't keeping track of mSize correctly, causing some very specific index buffer bindings to fail. The size returned when allocating the buffer can be a bit different than the size requested, and that extra space between mSize and the allocated size was not meant to be used, causing errors in the validation layers. Bug: angleproject:2580 Change-Id: I47eb7b8de6f4f657de14385b77ba6a459add599b Reviewed-on: https://chromium-review.googlesource.com/1118607 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
jchen10 2b06054d 2018-07-03T14:48:13 Vulkan: Insert a barrier after buffer copy According to the spec(section 18.1), all copy commands are treated as transfer operations for the purposes of synchronization barriers. Some tests are flaky on Intel platform without such barriers. Bug: angleproject:2663 Bug: angleproject:2664 Change-Id: Ic8bc9a0eb000670342c0df0449257324f04ad1f8 Reviewed-on: https://chromium-review.googlesource.com/1124103 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 6ef24d78 2018-06-29T16:03:34 Update dEQP EGL expectations for Vulkan on Linux. Bug: angleproject:2635 Change-Id: I74641edc405aa158a2acc0ac619343bf316454bd Reviewed-on: https://chromium-review.googlesource.com/1121076 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill cdf50444 2018-06-26T15:05:42 Add test for sampler struct rewriting indexing. The concern originally was that rewriting sampler structs could lead to incorrect behaviour for indexing. The test attempts to cover this but doesn't repro. It possibly is not an issue. Bug: angleproject:2494 Change-Id: Ibc34b08b5cee3b6ff82d150a64f1768aae64396f Reviewed-on: https://chromium-review.googlesource.com/1117321 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron fa5d84be 2018-06-28T10:40:04 Vulkan: Fix offset handling for vertex buffers Bug: angleproject:2580 Change-Id: I22f62a8549e998275224a6b1f9c133cf31ebb5b9 Reviewed-on: https://chromium-review.googlesource.com/1118419 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang f3062c3e 2018-06-28T13:33:15 Update dEQP EGL expectations for Vulkan on Windows. BUG=angleproject:2635 Change-Id: If2a4893c4099dc4a1b699ba4e4e3ca2c0f946af8 Reviewed-on: https://chromium-review.googlesource.com/1118906 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Luc Ferron be30c4fb 2018-06-21T09:43:08 Vulkan: Framebuffer blit support for depth/stencil cases Bug: angleproject:2643 Change-Id: Ib50e4051f5b3965c2a752cf2cd45d3470312cdcf Reviewed-on: https://chromium-review.googlesource.com/1115370 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill a0adaf98 2018-06-27T15:49:35 Vulkan: Work around unused sampler validation. Work around glslang's improved validation by using a valid but very high layout binding. This should be more robust. Tests already passing: dEQP-GLES2.functional.state_query.shader.uniform_value_sampler Bug: angleproject:2691 Bug: angleproject:2612 Bug: angleproject:2600 Change-Id: Ie78ae89f76cc0a42806724b622d7f201241bd041 Reviewed-on: https://chromium-review.googlesource.com/1117477 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron dc66ef9d 2018-06-28T08:18:47 Vulkan: Add simple test to trigger issue of buffer.write tests Bug: angleproject:2580 Change-Id: I08666d1c5fc7ce977e9623a09ef08645b02339f3 Reviewed-on: https://chromium-review.googlesource.com/1117913 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Geoff Lang 9e14164d 2018-06-27T11:43:18 VK: Support pbuffer surfaces. TEST=PbufferTest TEST=dEQP-EGL.functional.color_clears.single_context.gles2.rgba8888_pbuffer TEST=dEQP-EGL.functional.color_clears.multi_context.gles2.rgba8888_pbuffer TEST=dEQP-EGL.functional.render.single_context.gles2.rgba8888_pbuffer TEST=dEQP-EGL.functional.render.multi_context.gles2.rgba8888_pbuffer BUG=angleproject:2622 Change-Id: I99f64689c274fbb565b365f4a05b52252528fc38 Reviewed-on: https://chromium-review.googlesource.com/1117030 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron a26de250 2018-06-28T07:24:38 Vulkan: Enable dEQP a passing test in buffer.write Bug: angleproject:2580 Change-Id: I74ab2dec41400781c7236e08f008e2240386c80e Reviewed-on: https://chromium-review.googlesource.com/1117911 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>