Log

Author Commit Date CI Message
Frank Henigman 6df487ef 2017-12-20T19:12:57 Move angle_enable_* inside declare_args(). This allows enabling and disabling parts of the build via gn args, similar to what gyp allowed. BUG=angleproject:1569 Change-Id: Ia95c134f98f8941408df96b1d4e2563e713a9ef2 Reviewed-on: https://chromium-review.googlesource.com/838260 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill fc3463da 2018-01-03T13:46:21 HandleAllocator: Fix heap ordering using std::greater. The default heap ordering is to return the greatest element in the heap. Since the handle allocator expects a minimal return value on a new allocation, this caused a bug. The bug is triggered by reserving handles, allocating new handles, then freeing the handles and allocating again with the same allocator. Fix the bug by using std::greater instead of std::less, which will make the heap return the smallest value instead of largest. Also adds some logging debugging code for the handle allocators. Bug: angleproject:1458 Change-Id: Ibef5dcbed0a664ccad0e0335f081e2355162584b Reviewed-on: https://chromium-review.googlesource.com/848644 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 36937a64 2018-01-03T14:03:44 Revert "Enable depth buffer to workaround driver bug on Intel windows" This reverts commit 63ba357c093954d2bc475867e1296fbf5afc1d37. Reason for revert: May be causing Windows GPU.FYI bot failures. https://ci.chromium.org/buildbot/chromium.gpu.fyi/Win10%20Release%20%28Intel%20HD%20630%29/1443 maps_pixel_test on Intel GPU: Unexpected Failures: * gpu_tests.maps_integration_test.MapsIntegrationTest.Maps_maps webgl2_conformance_tests on Intel GPU: Unexpected Failures: * gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglConformance_deqp_functional_gles3_fboinvalidate_default * gpu_tests.webgl_conformance_integration_test.WebGLConformanceIntegrationTest.WebglConformance_deqp_functional_gles3_fboinvalidate_sub Bug: chromium:798757 Original change's description: > Enable depth buffer to workaround driver bug on Intel windows > > Rendering with depth buffer disabled and stencil buffer enabled > leads to memory leak if we set viewport a large size on Intel > windows platforms. So we enable depth buffer if stencil buffer > is enabled to workaround this issue. > > TEST=gl_test.exe --gtest_filter=GLClearFramebufferTestWithParam/GLClearFramebufferTest.ClearDepthStencil/0 > TEST=conformance/rendering/rendering-stencil-large-viewport.html > TEST=RenderStencilBufferTest.DrawWithLargeViewport/ES3_D3D11 > > BUG=782317 > > Change-Id: Idb185db296f13e3fa897534514e198651a56439f > Reviewed-on: https://chromium-review.googlesource.com/809574 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=zmo@chromium.org,geofflang@chromium.org,jmadill@chromium.org,kbr@chromium.org,cwallez@chromium.org,yunchao.he@intel.com,jiajia.qin@intel.com,xinghua.cao@intel.com,bryan.bernhart@intel.com,yizhou.jiang@intel.com,yang.gu@intel.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 782317 Change-Id: I7e29da683b22fd4640c230598c7b220cfae6a177 Reviewed-on: https://chromium-review.googlesource.com/848133 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8b5e8fdb 2017-12-15T14:59:15 Replace remaining usage of TName with TSymbol TName used to contain just a subset of the information stored in TSymbol. It makes more sense to use TSymbol directly instead of converting it to TName. This also improves type safety a bit by making some functions only take in TVariable or TFunction instead of the more generic TName. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Icb46923c25d33ebbbbc06ddc487da25957dda771 Reviewed-on: https://chromium-review.googlesource.com/829143 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 93b059db 2017-12-20T12:46:58 Index symbols by id in OutputHLSL This is cleaner than indexing them by their name string. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I0d0ef5e3f6a3f26c94f096b086cdf3da40d495e4 Reviewed-on: https://chromium-review.googlesource.com/845559 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho d8724a94 2017-12-29T18:40:36 Start D3D constant register allocations from 1 on NVIDIA Recent NVIDIA drivers have a bug where a specific optimized path inside the driver doesn't handle constant register 0 correctly. Work around this by starting constant register allocations from 1. This should make sure that the bug doesn't trigger if the ordering of uniforms is changed on the D3D backend. The repro case seems to require some specific driver state to be set that's used inside Chromium. Because of this we have not been able to develop a standalone test case so far. The maximum number of available uniform slots is reduced accordingly. This should not take them below required minimums in the spec. BUG=angleproject:2294 TEST=WebGL tests on passthrough command buffer, angle_end2end_tests --gtest_filter=*GLSLTest*Uniform* Change-Id: I92fff71efe5432ea7f15a7e90d497492514c65dc Reviewed-on: https://chromium-review.googlesource.com/847481 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 910a3daf 2017-11-15T09:40:11 ES31 program query: support TRANSFORM_FEEDBACK_VARYING TRANSFORM_FEEDBACK_VARYING corresponds to the set of output variables in the last non-fragment stage of program that would be captured when transform feedback is active. The resources enumerated by this query are listed as specified by the most recent call to TransformFeedbackVaryings before the last call to LinkProgram. This mainly collects these resources for query. BUG=angleproject:1920 TEST=angle_end2end_tests:ProgramInterfaceTest* dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.* Change-Id: I0655b12c6d82cef1b44d4ca57ea55bb60d1f78fb Reviewed-on: https://chromium-review.googlesource.com/770450 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill c8c9a24a 2018-01-02T13:39:00 Entry Points: Refactor generator script. This cleans up some of the organization of the python generator. It will make the extension entry point generation simpler. It also changes the header guards to use more underscores, which produces a small diff. Also updates the copyright year in a few generated files. Bug: angleproject:2263 Change-Id: I42f061c24a6cfcd8328c56c57eaed9ca6c7bb293 Reviewed-on: https://chromium-review.googlesource.com/846306 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho c33f1e8c 2017-12-29T16:55:29 Simplify creating the call DAG Don't copy function name strings unnecessarily and traverse function body nodes manually to avoid some extra traversal steps. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ie010aabcb8bc78fa6abce397ea2bdd9092e74187 Reviewed-on: https://chromium-review.googlesource.com/847552 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill d078c681 2018-01-02T11:50:24 VertexArray: Add enabled attribs bitmask. This replaces the "max enabled attrib" integer with a bitmask of enabled attribs. Should have better worst-case performance (only attribute 15 is enabled) and similar best-case performance (when only attribute 0 is enabled). This might also help implementing validation optimizations. Bug: angleproject:2202 Change-Id: I5cbb533c3af23851a42c80a6dc409a0da84e87c3 Reviewed-on: https://chromium-review.googlesource.com/847284 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ffa2cd04 2017-12-28T14:57:53 Entry Points: Speed up auto-gen. This refactors the auto-generation script to use a simpler XML iteration. It will only query the Xpath once per script, instead of once per entry point. This speeds up execution significantly. Also this change sorts the entry points alphabetically instead of having them appear in the order they appear in the XML. This gives a more consistent ordering. Bug: angleproject:1309 Change-Id: Ifa1110af786b91ad0e6ff1cd3707e17666d398a5 Reviewed-on: https://chromium-review.googlesource.com/846419 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 73618601 2017-12-20T15:47:15 ES31: Clean up Program::link This patch intends to solve some structure and coding style issues in Program::link to make it easier to support linking program with geometry shader. 1. Move all the shader specific validations to linkValidateShaders. Geometry shader related link validations can also be added here. 2. Rename functions with "VertexAndFragment" to "Graphics" because these functions will also be responsible for the validations on geometry shader. 3. Refer uniforms by pointer when validating uniforms. 4. Re-declare functions to 'static' if we can and capitialize the first letter of all static functions in Program.h. BUG=angleproject:1941 Change-Id: I46608e86bddc12d95cbbbf9a85803d07ccf843d8 Reviewed-on: https://chromium-review.googlesource.com/836149 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
JiangYizhou 63ba357c 2017-12-06T10:25:40 Enable depth buffer to workaround driver bug on Intel windows Rendering with depth buffer disabled and stencil buffer enabled leads to memory leak if we set viewport a large size on Intel windows platforms. So we enable depth buffer if stencil buffer is enabled to workaround this issue. TEST=gl_test.exe --gtest_filter=GLClearFramebufferTestWithParam/GLClearFramebufferTest.ClearDepthStencil/0 TEST=conformance/rendering/rendering-stencil-large-viewport.html TEST=RenderStencilBufferTest.DrawWithLargeViewport/ES3_D3D11 BUG=782317 Change-Id: Idb185db296f13e3fa897534514e198651a56439f Reviewed-on: https://chromium-review.googlesource.com/809574 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 2768bc8a 2017-12-12T11:51:48 Clean up creating constant folded nodes It's not necessary to set the qualifier on folded nodes separately, they always use the qualifier of the node being folded. BUG=angleproject:1490 TEST=angle_unittests Change-Id: Id2581ef4cae42d7137fbe0caf18c3fcacbf954c6 Reviewed-on: https://chromium-review.googlesource.com/847553 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 4728bdc8 2017-12-20T17:51:08 Unify looking for symbols with a specific name in the AST Keep only one traverser for looking up symbol nodes by name instead of having two largely identical ones. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I36e906258180e22b7b1353cab79d90266d99fa0e Reviewed-on: https://chromium-review.googlesource.com/836895 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiawei Shao 492b5f51 2017-12-13T09:39:27 ES31: Support struct arrays as Geometry Shader inputs This patch adds the support of struct arrays as valid geometry shader user-defined inputs. Struct arrays are accepted as geometry shader inputs to match the vertex shader outputs that are also declared as structs. BUG=angleproject:1941 TEST=angle_unittests Change-Id: I0b5d545b10e9dda576a1c96d7c93ec2450611e9e Reviewed-on: https://chromium-review.googlesource.com/823622 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 8c3988c5 2017-12-21T14:44:56 Vulkan: Use one pipeline layout for all Programs. This simplifies the pipeline state object caching. We will not need to use any extra bits to cache based on program properties - instead all programs will be compatible. The pipeline layout strucutre is described in the design docs. It currently only has two bind groups: the first for default uniforms, and the second for Textures. In the future we might re-organize this to handle driver uniforms, dynamic push constants, and/or program uniform buffers with ES 3.0. Instead of storing only the Textures that are required by a Program, we reserve space for the maximum possible Texture units. We might have to revisit this very simple design in the future to support texture arrays, which are handled specially in Vulkan. Bug: angleproject:2163 Change-Id: I3e1656c2c73045aed56838a5f1267b246a623362 Reviewed-on: https://chromium-review.googlesource.com/837943 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho bed35d76 2017-12-20T16:36:26 Don't query names of empty symbols This makes it possible to return a reference from TSymbol::name() instead of a pointer. This is safer since it completely avoids the possibility of a nullptr dereference. An assert is making sure that the function is not being called for empty symbols. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I44279f65989dbb828322843fc0216ba84d91dedf Reviewed-on: https://chromium-review.googlesource.com/836894 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 49ac74bd 2017-12-21T14:42:33 Vulkan: Implement command re-ordering. This introduces a new CommandBufferNode class. Nodes are linked together to form a graph based on their dependencies. When the app triggers a readback or swap, the graph is flushed entirely. This sends the queued ANGLE Vulkan work to the Vulkan queue which is then processed on the GPU with the right dependencies. This design allows us to save on some unnecessary RenderPass creation and also allows us to know what load/store ops to use. It also allows us to take advantage of the Vulkan automatic RenderPass transitions for performance. Load/Store ops and automatic transitions will be implemented in later patches. Bug: angleproject:2264 Change-Id: I0e729c719e38254202c6fedcede4e63125eb4810 Reviewed-on: https://chromium-review.googlesource.com/780849 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho b8cb939f 2017-12-20T14:23:19 Fix tracking variables in folded ternary operators The result of folding a ternary operator may be a TIntermSymbol node where the qualifier doesn't match the qualifier of the variable that the node is referring to. Get the qualifier from the variable instead of directly from TIntermSymbol when collecting variables in CollectVariables or when tracking referenced variables in OutputHLSL. BUG=angleproject:2288 TEST=angle_unittests, angle_end2end_tests Change-Id: If294a7fe9dca50f2ebcea3feff887e72a521d395 Reviewed-on: https://chromium-review.googlesource.com/836893 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 8a57b468 2017-12-28T12:25:03 Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)" Second re-land fixes git.bat access on developer machines. Re-landing with upstream fixes to the layers so they no longer need to copy the parameter validation errors to the current working directory of the layer generation. Also includes fixes for the GCC build. This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. This second step re-enables Vulkan and includes the updated build. Includes a workaround for parameter_validation.h no longer being auto-generated, and the stale file clobbering the build. Also includes a fix for an incorrect memory barrier. Bug: angleproject:2237 Change-Id: Ic1a3ad7458bb743d7279a1af9334693ab6cb59d6 Reviewed-on: https://chromium-review.googlesource.com/845859 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 007530ea 2017-12-28T14:27:04 Entry Points: Refactor Extensions Part 2. This moves the validation and entry point files to use a consistent syntax. This will facilitate auto-generation. Bug: angleproject:2263 Change-Id: If5d06e97db66783d7b3d7fb1d6365f8218d956ae Reviewed-on: https://chromium-review.googlesource.com/846022 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho f095799b 2017-12-22T11:10:04 Fix accessing the name of a nested struct definition When generating an error message about the struct nesting limit, the code should make sure that the struct definitions are not nested. While nested struct definitions by themselves are also an error, they're not a syntax error so parsing will continue after encountering them. This fixes a regression from commit: Don't allocate name strings for empty symbols. BUG=chromium:797156 TEST=angle_unittests Change-Id: I4149fbe874c0e7ec90e690aec078ccaf7313eab0 Reviewed-on: https://chromium-review.googlesource.com/842643 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho aaa55bfa 2017-12-28T11:20:30 Index symbols by id in ValidateOutputs This is cleaner than indexing them by their name string. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I6cdc4125fadb6c7049ad8664e8a66da2a9a5bb8d Reviewed-on: https://chromium-review.googlesource.com/836892 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Zhenyao Mo 06f86377 2017-12-22T19:28:35 Revert "Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)"" This reverts commit 755a9317ff1ec983f2704fc9f4619cac49992960. Reason for revert: Broke local win build. crbug.com/797253 Original change's description: > Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)" > > Re-landing with upstream fixes to the layers so they no longer > need to copy the parameter validation errors to the current > working directory of the layer generation. Also includes fixes > for the GCC build. > > This hasn't been updated in a while, so there are many changes. > It should also include better validation for memory barriers. > > Also includes updated builds for SPIRV Tools and glslang. > A few pull requests need to land before landing this in ANGLE. > > This second step re-enables Vulkan and includes the updated build. > > Includes a workaround for parameter_validation.h no longer being > auto-generated, and the stale file clobbering the build. > > Also includes a fix for an incorrect memory barrier. > > Bug: angleproject:2237 > Change-Id: I1ed87ecfa84f51ee1edf6a8581d9b3c8f9a6f26e > Reviewed-on: https://chromium-review.googlesource.com/834429 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=fjhenigman@chromium.org,jmadill@chromium.org Change-Id: I605d72207d64c7d0853678595e255b74ad69d887 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2237 Reviewed-on: https://chromium-review.googlesource.com/842918 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Jamie Madill 2b7bbc28 2017-12-21T17:30:38 Entry Points: Refactor Extensions Part 1. This moves the validation and entry point files to use a consistent syntax. This will facilitate auto-generation. Bug: angleproject:2263 Change-Id: Ica2dbffff3898103c6827ae7f6b1154a45d14a85 Reviewed-on: https://chromium-review.googlesource.com/841345 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho b6af22b5 2017-12-15T14:05:44 Store TVariable* in TIntermSymbol instead of storing id This is an intermediate step to only storing a TVariable * in TIntermSymbol instead of copying the name. This makes it possible to get a constant value out of a TIntermSymbol without doing a symbol table lookup. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ibff588241a4ad4ac330063296273288b20a072c9 Reviewed-on: https://chromium-review.googlesource.com/829142 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 755a9317 2017-12-21T14:34:05 Re-land "Vulkan: Roll loader/validation layers SDK. (2/2)" Re-landing with upstream fixes to the layers so they no longer need to copy the parameter validation errors to the current working directory of the layer generation. Also includes fixes for the GCC build. This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. This second step re-enables Vulkan and includes the updated build. Includes a workaround for parameter_validation.h no longer being auto-generated, and the stale file clobbering the build. Also includes a fix for an incorrect memory barrier. Bug: angleproject:2237 Change-Id: I1ed87ecfa84f51ee1edf6a8581d9b3c8f9a6f26e Reviewed-on: https://chromium-review.googlesource.com/834429 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho beb6dc74 2017-12-14T16:03:03 Always use TFunction instead of TFunctionSymbolInfo This reduces unnecessary memory allocations and conversions between different objects containing the same data. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I87316509ab1cd6d36756ff6af7fa2b5c5a76a8ea Reviewed-on: https://chromium-review.googlesource.com/827134 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 1bb8528c 2017-12-14T13:39:53 Remove TFunctionSymbolInfo from TIntermAggregate All the information stored in TFunctionSymbolInfo was duplicated from the TFunction that the aggregate node pointed to. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I1f5574ab0416e5cae00c3dae6fc11d2fe1fa128c Reviewed-on: https://chromium-review.googlesource.com/827065 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 340b5771 2017-12-21T11:42:07 Vulkan: Roll loader/validation layers SDK (1.75/2) This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. This intermediate step rolls Vulkan again to include upstream fixes to the layers so they no longer need to copy the parameter validation headers to the current working directory. The prior changed missed a second generator script. Bug: angleproject:2237 Change-Id: Ia6767af538c50e340ea5a68c69a2863c9fd9061d Reviewed-on: https://chromium-review.googlesource.com/840080 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 62fcf62a 2017-11-30T16:16:12 ES31: Add DispatchComputeIndirect suport for OpenGL backend BUG=angleproject:2270 TEST=dEQP-GLES31.functional.compute.indirect_dispatch.* Change-Id: Id062a80188b2a37f28833aaae8e6d31bac382276 Reviewed-on: https://chromium-review.googlesource.com/802763 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov c6faa974 2017-12-20T19:50:10 Skip UniformBufferTest.SimpleBindingChange on Mac NVIDIA GL Unskip UniformBufferTest.SimpleBufferChange, which was skipped by mistake instead of this test in https://chromium-review.googlesource.com/833287 BUG=angleproject:2287 Change-Id: Id79821b26ad38ed07d1193b717ad222df3bb58fe Reviewed-on: https://chromium-review.googlesource.com/838262 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho 0c37100d 2017-12-13T17:00:25 Always create TFunctions for function call nodes This simplifies code and ensures that nodes get consistent data. In the future function call nodes could have a pointer to the TFunction instead of converting the same information into a different data structure. BUG=angleproject:2267 TEST=angle_unittests, angle_end2end_tests Change-Id: Ic0c24bb86b44b9bcc4a5da7f6b03701081a3af5c Reviewed-on: https://chromium-review.googlesource.com/824606 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Xinghua Cao 26143fdd 2017-11-01T18:19:05 ES31: Support bindImageTexture on Texture2D for compute shaders on D3D BUG=angleproject:1987 TEST=angle_end2end_tests Change-Id: I3b0afb441a41dbd7f204b1d1bba7884c8d203ce1 Reviewed-on: https://chromium-review.googlesource.com/749004 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
JiangYizhou 10d41397 2017-12-18T18:13:36 Fix addDummyTextureNoRenderTarget workaround memory leak Add dummy attachment in FramebufferD3D as a private member and release the dummy attchment in destory of FramebufferD3D. BUG=angleproject:2282 TEST=FramebufferTest_ES31.RenderingLimitToDefaultFBOSizeWithNoAttachments/ES3_1_D3D11 TEST=dEQP-GLES31.functional.fbo.no_attachments.* Change-Id: I3a17282ef132185fbc25f4076f624e53661d4b20 Reviewed-on: https://chromium-review.googlesource.com/831847 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 89c422ad 2017-11-29T18:24:20 ES31: Support memoryBarrier and memoryBarrierRegion APIs BUG=angleproject:2280 TEST=dEQP-GLES31.functional.compute.basic.image_barrier_single dEQP-GLES31.functional.compute.basic.image_barrier_multiple dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_single dEQP-GLES31.functional.compute.basic.ssbo_cmd_barrier_multiple dEQP-GLES31.functional.synchronization.* Change-Id: If14debab21247dc4b446e86d1642fbc9376b6dd7 Reviewed-on: https://chromium-review.googlesource.com/798803 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 37385e11 2017-12-19T11:50:30 Emulate tanh on HLSL This ensures mathematically correct results on large inputs. BUG=chromium:795269 BUG=angleproject:1093 TEST=dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh* Change-Id: Id5ba05a3284e51a34f196b419abef0f4a41551e0 Reviewed-on: https://chromium-review.googlesource.com/832463 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho d4529f30 2017-12-12T13:06:40 Define symbol classes in a separate file The plan is to use symbols more also outside the symbol table, so it makes sense to define the symbol classes in a separate header file. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I94167415ef43ba9bd9126ca32d9c498e1437f3f8 Reviewed-on: https://chromium-review.googlesource.com/822414 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill ffd27d85 2017-12-19T15:40:14 Vulkan: Roll loader and validation layers SDK (1.5/2) This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. This intermediate step rolls Vulkan again to include upstream fixes to the layers so they no longer need to copy the parameter validation headers to the current working directory also includes fixes for the GCC build. Bug: angleproject:2237 Change-Id: I50deb70e43be36f7470c9fc2262b6da5bab39c3a Reviewed-on: https://chromium-review.googlesource.com/834230 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart (Intel Americas Inc) ca71c75d 2017-12-15T13:39:57 Fix error handling of ID3D11DeviceContext::Map Refactors error handling should map() fail to avoid crashing during a device error event. BUG=angleproject:2284 Change-Id: Ib1eb676860fa5c3a81e523f49aab82b7e6700f73 Reviewed-on: https://chromium-review.googlesource.com/826485 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ae4dbf32 2017-12-08T20:49:00 Don't allocate name strings for empty symbols This removes unnecessary memory allocations. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ide575ea19ab2f8e9fc93092490f1352efa6024a3 Reviewed-on: https://chromium-review.googlesource.com/817415 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov f2afccca 2017-12-18T20:13:15 Skip UniformBufferTest.SimpleBufferChange on Mac NVIDIA GL BUG=angleproject:2287 Change-Id: I1a5895a9b5c173b221da6ac511c05d8b7d646a5d Reviewed-on: https://chromium-review.googlesource.com/833287 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Frank Henigman 5b1180df 2017-10-10T20:26:52 Add gyp deprecation warning. gyp_angle now prints a warning every time it is run. All targets print the same warning as one of their build steps. The DEPS change updates gypi_to_gn so it doesn't choke on files with 'target_defaults' sections. BUG=angleproject:1569 Change-Id: Ibdf277fcc14cf4ebc7b7db78270210752cd8ef9d Reviewed-on: https://chromium-review.googlesource.com/711155 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Frank Henigman 0e74e059 2017-12-17T22:17:17 Fix gcc builds. Remove unused function and fix dangling else's that gcc complains about. In the gyp build specify -std=c++14. BUG=none Change-Id: I552942ccc574104a5424a9add00e6e72d6efa28a Reviewed-on: https://chromium-review.googlesource.com/830750 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho a2d98141 2017-12-15T14:18:55 Fix allowing non-constant ternary global initializer Check the qualifier of a node resulting from the folding of a ternary node correctly. The folded node might even be a TIntermConstantUnion with a non-constant qualifier. BUG=angleproject:2285 TEST=angle_unittests Change-Id: I74516e44ce9d78bc54093a5b58d14cf33a57e6e5 Reviewed-on: https://chromium-review.googlesource.com/829138 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 647dca76 2017-12-15T21:31:00 Revert "Vulkan: Roll loader/validation layers SDK. (2/2)" This reverts commit f15f9cec318b5b0042cca7f819b1df9dbd1872ee. Reason for revert: Causing a compile failure on the Fuchsia config, due to a path difference. Will fix upstream and re-land, since it's breaking the auto-roller. https://chromium-review.googlesource.com/c/chromium/src/+/829878 FAILED: clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan/parameter_validation.cpp python ../../third_party/vulkan-validation-layers/src/scripts/lvl_genvk.py -o clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan -registry ../../third_party/vulkan-validation-layers/src/scripts/vk.xml parameter_validation.cpp -quiet Error: Could not find vk_validation_error_messages.h [906/1359] ACTION //third_party/angle/src/vulkan_support:vulkan_gen_object_tracker_cpp(//build/toolchain/linux:clang_x64) FAILED: clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan/object_tracker.cpp python ../../third_party/vulkan-validation-layers/src/scripts/lvl_genvk.py -o clang_x64/gen/third_party/angle/src/vulkan_support/angle/vulkan -registry ../../third_party/vulkan-validation-layers/src/scripts/vk.xml object_tracker.cpp -quiet Error: Could not find vk_validation_error_messages.h Original change's description: > Vulkan: Roll loader/validation layers SDK. (2/2) > > This hasn't been updated in a while, so there are many changes. > It should also include better validation for memory barriers. > > Also includes updated builds for SPIRV Tools and glslang. > A few pull requests need to land before landing this in ANGLE. > > This second step re-enables Vulkan and includes the updated build. > > Includes a workaround for parameter_validation.h no longer being > auto-generated, and the stale file clobbering the build. > > Also includes a fix for an incorrect memory barrier. > > Bug: angleproject:2237 > Change-Id: Iae611764870281ed6aa7b187ec0c4e44226c722a > Reviewed-on: https://chromium-review.googlesource.com/759197 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Frank Henigman <fjhenigman@chromium.org> TBR=fjhenigman@chromium.org,jmadill@chromium.org,cwallez@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:2237 Change-Id: I9bc60860668c1da773b6e2fdb83ecc20215e9125 Reviewed-on: https://chromium-review.googlesource.com/830926 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 1955640a 2017-11-01T17:36:11 Support ozone/gbm back end in standalone gn build. This makes it possible to do a standalone gn build of the ozone/gbm back end by using the following gn args. use_ozone = true ozone_platform_gbm = true BUG=angleproject:1569 Change-Id: I70716b83943dae95df48b847ff8cca5e2c555c4a Reviewed-on: https://chromium-review.googlesource.com/749867 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Frank Henigman e42ec189 2017-12-11T23:58:53 Add angle_link_glx arg to standalone gn build. Port the angle_link_glx setting of the gyp build to the standalone gn build. When set to true, libGL will be linked into libANGLE, instead of dlopen-ed. This is useful when using apitrace. BUG=angleproject:1569 Change-Id: I16a91504960169efdcde3b2c50b944de148d9ba6 Reviewed-on: https://chromium-review.googlesource.com/821691 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Brandon Jones 9fc87331 2017-12-13T15:46:52 Fix Bug in Intel Workaround Fixes an incorrect assert that is hit when trying to find a program output when none are present. It is valid to not have an output, so we should not check for an output when there are none. Bug:angleproject:2283 Change-Id: Ia640482870c6ee589a933b989272177760237e3b Reviewed-on: https://chromium-review.googlesource.com/825957 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 9c8e1a36 2017-12-06T17:59:58 ES31: Implement image state query BUG=angleproject:2278 TEST=dEQP-GLES31.functional.state_query.indexed.image_binding* Change-Id: Ia624d55ccf1fdf92188d9e710265bdffe96a23c6 Reviewed-on: https://chromium-review.googlesource.com/810465 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 195be942 2017-12-04T23:40:14 Always create TVariables for TIntermSymbol nodes TIntermSymbol nodes are now constructed based on a specific TVariable. This makes sure that all TIntermSymbol nodes that are created to refer to a specific temporary in an AST transform will have consistent data. The TVariable objects are not necessarily added to the symbol table levels - just those variables that can be referred to by their name during parsing need to be reachable through there. In the future this can be taken a step further so that TIntermSymbol nodes just to point to a TVariable instead of duplicating the information. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I4e7bcdb0637cd3b588d3c202ef02f4b7bd7954a1 Reviewed-on: https://chromium-review.googlesource.com/811925 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill f414121d 2017-12-12T15:08:07 D3D11: Fix program uniform buffer dity bits. There were actually three missing state synchronization points: 1. When re-binding a uniform buffer, we had no dirty bits. 2. When modifying the Program bindings, we also had no update. 3. When triggering a dependent state update via BufferData. This fixes all the missing syncs and adds tests for the cases. Bug: angleproject:1390 Change-Id: I2f05766545784248bcca8308ae34ac5720237ab1 Reviewed-on: https://chromium-review.googlesource.com/823150 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jiawei Shao bd924af1 2017-11-16T15:28:04 ES31: Remove support of GL_OES_geometry_shader in compiler This patch intends to remove the support of GL_OES_geometry_shader in ANGLE compiler. To make the implementation simpler, currently we decide to only support "GL_EXT_geometry_shader" as the extension string of geometry shader in ANGLE. This patch also updates all the related shaders in angle_unittests into R"()" format. BUG=angleproject:1941 TEST=angle_unittests Change-Id: Ife9858abeedfb46b02c5c2fb1cda16fa27198511 Reviewed-on: https://chromium-review.googlesource.com/773451 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill f15f9cec 2017-12-13T15:02:24 Vulkan: Roll loader/validation layers SDK. (2/2) This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. This second step re-enables Vulkan and includes the updated build. Includes a workaround for parameter_validation.h no longer being auto-generated, and the stale file clobbering the build. Also includes a fix for an incorrect memory barrier. Bug: angleproject:2237 Change-Id: Iae611764870281ed6aa7b187ec0c4e44226c722a Reviewed-on: https://chromium-review.googlesource.com/759197 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho 9d4d7f06 2017-12-07T17:11:41 Classify TSymbols using an enum Symbols can be either built-ins, user-defined, nameless, or for ANGLE's internal use. In addition we currently use TFunction symbols that are not yet resolved - they might later resolve to either a built-in or a user-defined function. Record this information in each TSymbol so that TSymbol contains sufficient information for deciding how to format symbol names in output. The goal is to eventually replace current uses of TName with pointers to different TSymbol objects. So far only built-ins and user-defined symbols have associated TSymbol objects, but that will be expanded to cover ANGLE's internal symbols as well. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I927ce023fe257cc236da82c127700f3bd72bfe96 Reviewed-on: https://chromium-review.googlesource.com/816952 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 9af765dd 2017-12-13T15:02:23 Vulkan: Roll loader/validation layers SDK. (1/2) This hasn't been updated in a while, so there are many changes. It should also include better validation for memory barriers. Also includes updated builds for SPIRV Tools and glslang. A few pull requests need to land before landing this in ANGLE. First part disables Vulkan and rolls the layers. The second part will re-enable Vulkan with the updated loader/layers build. Bug: angleproject:2237 Change-Id: I112521541ea66b26eadeb959852418dc91be2e18 Reviewed-on: https://chromium-review.googlesource.com/805417 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 21f67ae0 2017-12-07T18:30:42 Vulkan: Remove loader/layers from GYP build. This simplifies the rolling process since the build configuration was fairly complex. It allows us to save on maintaining the two sets of build files. The back-end is also disabled in GYP. The back-end sources are kept in libGLES.gypi for now to keep all libANGLE sources in the same place. Bug: angleproject:2237, angleproject:1569 Change-Id: Ie73b40ef125cfc20da6f4ed3b33339256f1c5172 Reviewed-on: https://chromium-review.googlesource.com/805416 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill bef918cb 2017-12-13T13:11:30 Vulkan: Add packed RenderPass descriptions. This change is two-fold: it splits the compatible parts from the RenderPass description, which allows for correct caching. It also will allow the pipeline state cache to cache the compatible RenderPass bits. In order to do this we introduce a packed version of the RenderPass description, which uses carefully aligned bit representations so we can hash the descriptions easily using MurmurHash, and compare them with memcmp. Bug: angleproject:2163 Change-Id: I4179c0ff8762df81f29082168bd6e3056ceb1318 Reviewed-on: https://chromium-review.googlesource.com/815816 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Yunchao He ece12535 2017-11-21T15:50:21 ES31: Fix the issue for relink rendering/compute program. When link or relink fails, if we try to install the unsuccessfully linked program (via UseProgram) and start rendering or dispatch compute, We can not always report INVALID_OPERATION for rendering/compute pipeline. The result depends on the previous state: Whether a valid program has been installed in pipeline before. If a valid program has been installed, it should be OK to use the old executable residing in the GL state to start rendering or dispatch compute. No error should be reported. This change also add unit tests for unsuccessfully linked/relinked program for rendering pipeline to avoid potential error. If a program successfully relinks when it is in use, the program might change from a rendering program to a compute program in theory, or vice versa. BUG=angleproject:2266 Change-Id: I4726112af2bc74f5beef25e35d2fcaa9f31e0768 Reviewed-on: https://chromium-review.googlesource.com/784273 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Bryan Bernhart (Intel Americas Inc) 5f19810d 2017-12-12T14:21:39 WebGLCompat: Fix depth & stencil query results. getFramebufferAttachmentParameter returns incorrect result for framebuffers in an inconsistent state. BUG=angleproject:2281 Change-Id: Ifb83ecaf16c95bf1237b2c4f2684de6aa2d55c46 Reviewed-on: https://chromium-review.googlesource.com/823224 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 8225e73b 2017-11-14T16:29:03 Support struct varying for transform feedback Capturing struct members is vague In ES 3.00. But the ES 3.10 explicitly says that base-level members of struct are feasible for transform feedback capture. This implementation fills the gap. TEST=angle_end2end_tests:TrasnformFeedbackTest* BUG=angleproject:2241 Change-Id: Ibdf3ae6c2b8b28952e2f7fef1363545cbccad389 Reviewed-on: https://chromium-review.googlesource.com/768613 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ebe13bb1 2017-12-11T13:32:44 Remove SH_TRANSLATE_VIEWID_OVR_TO_UNIFORM Instanced multiview is fully implemented and performs much better than broadcasting draw calls on the CPU. There's no need to maintain translating ViewID_OVR to a uniform. BUG=angleproject:2267 TEST=angle_unittests Change-Id: If3a8fa573f37b7926c052aecfcd4271f266751dc Reviewed-on: https://chromium-review.googlesource.com/819417 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiajia Qin e30edd6f 2017-12-13T13:12:33 Update deqp31 test expectations dEQP-GLES31.functional.shaders.builtin_functions.precision*compute* cases were fixed by https://chromium-review.googlesource.com/c/angle/angle/+/792951 BUG=angleproject:1951,angleproject:1663 TEST=dEQP-GLES31.functional.shaders.builtin_functions.precision*compute* dEQP-GLES31.functional.draw_indirect.compute_interop.* dEQP-GLES31.functional.layout_binding.image* Change-Id: I25a9272df8c66e1e5279de54a091b3077cd59b22 Reviewed-on: https://chromium-review.googlesource.com/822606 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 87cc90df 2017-12-12T15:28:06 Set proper precision on loop index for variable init Previously the index variable was missing a precision. This may have been behind loop-based init failing on some Android platforms. BUG=chromium:735497 TEST=angle_unittests Change-Id: I0307891dfb2edf6c52efd5b495f602b380263d65 Reviewed-on: https://chromium-review.googlesource.com/822413 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 495162b9 2017-12-08T10:19:01 Don't create temporary ids ahead of time Now temporary ids are always only created for a specific temporary variable. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Icbd369695abc166ef399bed9ae11a3669f1e7228 Reviewed-on: https://chromium-review.googlesource.com/816951 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Corentin Wallez 9db70de8 2017-07-04T18:28:42 Reland: Implement EGL_ANGLE_iosurface_client_buffer Includes a fix for creating pbuffers with <buftype> EGL_D3D_TEXTURE with EGL_WIDTH and EGL_HEIGHT attributes. BUG=angleproject:1649 TBR=geofflang@chromium.org Change-Id: Id2974b8fab02c3218febfac708b9b034e65cbc53 Reviewed-on: https://chromium-review.googlesource.com/823248 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 3acfc625 2017-12-12T13:25:40 Add test for Chromium's EGL_D3D_TEXTURE pbuffer creation When creating the pbuffer, Chromium specifies EGL_WIDTH and EGL_HEIGHT attributes that are unnecessary because they are extracted from the D3D11 texture passed as <buffer> to eglCreatePbufferFromClientBuffer. This is a regression test for crbug.com/794086 where a change to ValidateCreatePbufferFromClientBuffer made EGL_WIDTH and EGL_HEIGHT invalid for <buftype> EGL_D3D_TEXTURE and caused Chromium to fail creating the pbuffer, causing all black rendering. BUG=chromium:794086 Change-Id: I262fd0991e0f46f255aeac25528ddb4a62fa1309 Reviewed-on: https://chromium-review.googlesource.com/822296 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Qin Jiajia a98a2811 2017-11-30T18:12:06 ES31: Add support for GL_DISPATCH_INDIRECT_BUFFER_BINDING binding point BUG=angleproject:2270 TEST=dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_* Change-Id: I2c286c219c5c849d7ba417069f53f2d0fae6abf1 Reviewed-on: https://chromium-review.googlesource.com/799990 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 3c613c0d 2017-11-16T23:45:34 Update docs for GN standalone and GYP deprecation. Explain how to use GN and say not to use GYP. BUG=angleproject:1569 Change-Id: I972126dced28fa7a70eb301b500f172376a569c1 Reviewed-on: https://chromium-review.googlesource.com/775858 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 7f5c3eb7 2017-12-12T14:54:17 Revert "Implement EGL_ANGLE_iosurface_client_buffer" This reverts commit c7abc08034a30a41748eefc5b628a76d4e2daa8a. Reason for revert: Might have broken Chromium Win10 composition due to validation changes. Original change's description: > Implement EGL_ANGLE_iosurface_client_buffer > > BUG=angleproject:1649 > > Change-Id: I1e72c31d7c9497ad14039a8d3fb97317ab193cb2 > Reviewed-on: https://chromium-review.googlesource.com/559107 > Reviewed-by: Corentin Wallez <cwallez@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> > Commit-Queue: Corentin Wallez <cwallez@chromium.org> TBR=geofflang@chromium.org,cwallez@chromium.org Change-Id: I605b710b6d76056d6276b09822cd6ddca277bfd0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:1649 Reviewed-on: https://chromium-review.googlesource.com/822172 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jiajia Qin feb2c63b 2017-12-08T17:59:19 ES31: Fixed the SSBO instance array error In ESSL 3.10 spec, there are below descriptions: 1. Any uniform or shader storage block declared without a binding qualifier is initially assigned to block binding point zero. 2. If the binding qualifier is used with a uniform block or shader storage block instanced as an array, the first element of the array takes the specified block binding and each subsequent element takes the next consecutive binding point. So explicitly specifying the binding to zero is different with not declaring a binding qualifier for a block instance array. For example: 1) layout(shared, binding = 0) buffer blockName { uint data; } instanceName[3]; 2) layout(shared) buffer blockName { uint data; } instanceName[3]; In 1), the binding point of each element instance is 0, 1, 2. In 2), the binding point of each element instance is 0, 0, 0. BUG=angleproject:1951 TEST=dEQP-GLES31.functional.ssbo.layout.* Change-Id: If770d6e1fd8e13d2cdc762bab289772076258e4c Reviewed-on: https://chromium-review.googlesource.com/816340 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 629a6449 2017-12-11T10:55:43 Fix HLSL integer pow workaround The exponent should be rounded prior to casting it to an integer. Also if the exponent has a significant fractional part the expression should not be turned into a multiplication. The previous code failed to check this correctly if the exponent's fractional part was greater than 0.5. The test case is expanded to cover the previously failing cases. BUG=chromium:793115 TEST=angle_end2end_tests Change-Id: Ic72cd6ddc7f3d2495f7c87a3e3cfac5791445e72 Reviewed-on: https://chromium-review.googlesource.com/817299 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Corentin Wallez c7abc080 2017-07-04T18:28:42 Implement EGL_ANGLE_iosurface_client_buffer BUG=angleproject:1649 Change-Id: I1e72c31d7c9497ad14039a8d3fb97317ab193cb2 Reviewed-on: https://chromium-review.googlesource.com/559107 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Kai Ninomiya 9b88991c 2017-12-08T15:37:49 Disable DIRTY_BIT_PROGRAM_UNIFORM_BUFFERS This dirty bit isn't getting set somewhere where it should be, so work around this by just enabling the dirty bit always. The bit was added here: https://chromium-review.googlesource.com/c/angle/angle/+/659228 There will be a followup to re-enable this dirty bit once the correctness has been fixed. Test: https://github.com/KhronosGroup/WebGL/pull/2559 Bug: chromium:792966 Change-Id: I473a60b39eff70e59ab55ff7b74f06fdb0db1305 Reviewed-on: https://chromium-review.googlesource.com/818178 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
Geoff Lang 58ba6bf5 2017-11-28T16:40:58 Enable debug layers by default whenever assertions are enabled. BUG=angleproject:2279 Change-Id: I7e7ef359fa3021aa10585653b2fec169f5d4a51f Reviewed-on: https://chromium-review.googlesource.com/794536 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho d5f1afb5 2017-12-04T15:42:59 Make TSymbol immutable There's still an exception for changing the names of structures, but otherwise the data stored in the TSymbol base class is never changed. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I5b3f44cd365320ad09b46d2cfa3654a7d3f4bbc3 Reviewed-on: https://chromium-review.googlesource.com/806556 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Kai Ninomiya 030017a4 2017-12-06T14:06:53 Mark StaticType related functions as constexpr Fixes compilation on some versions of GCC and probably Clang. Follow-up to http://crrev.com/c/786317 Bug: angleproject:1432 Change-Id: I3fc3ad0f65492f9543eb27fcdce6ca29a9ad06e5 Reviewed-on: https://chromium-review.googlesource.com/812220 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Corentin Wallez 43fd0d44 2017-12-06T15:31:10 Add the EGL_ANGLE_iosurface_client_buffer extension text BUG=angleproject:1649 Change-Id: Ie613ae835ea3e7c590f74429bdd36f7a42045131 Reviewed-on: https://chromium-review.googlesource.com/811905 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 378c3a51 2017-12-04T11:32:13 Clean up storing interface blocks in the symbol table Merge TInterfaceBlock with TInterfaceBlockName, so that there are no duplicate data structures for interface blocks. This is similar to the refactoring that was already done to structs. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I67d2af6ccbe5344bddf9c99030d118fe532fbbd8 Reviewed-on: https://chromium-review.googlesource.com/805819 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Xinghua Cao 10a4d434 2017-11-28T14:46:26 ES31: Enable some dirty bits and dirty objects for compute pipeline BUG=angleproject:2265 TEST=dEQP-GLES31.functional.shaders.builtin_var.compute.* angle_end2end_test.ShaderStorageBufferTest31 .MultiStorageBuffersForMultiPrograms Change-Id: Icc3df122602951a2328003c10a76696ab4c9f0d8 Reviewed-on: https://chromium-review.googlesource.com/792951 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 12a18ad3 2017-12-01T16:59:47 Simplify interface block instance recording Instead of storing instance names as part of TInterfaceBlock, store instance names only in interface block instance symbols. Wherever the instance name is needed it can be fetched from the instance symbol. BUG=angleproject:2267 TEST=angle_end2end_tests Change-Id: Ia265e4db7901eebec57c9c3769d84c17651a35ba Reviewed-on: https://chromium-review.googlesource.com/803221 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Corentin Wallez e4477001 2017-12-01T14:39:58 Add PackedEnumBitSet, use it for buffer binding validation Includes angle::BitSetT changes from jmadill@chromium.org BUG=angleproject:2169 Change-Id: I9f896613f5c6cdc91281cb9a00134f67291870d9 Reviewed-on: https://chromium-review.googlesource.com/804177 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 4fba4a97 2017-12-05T10:36:05 Include the D3D11 headers on Windows when OpenGL is enabled. The OpenGL backend on Windows uses D3D11 to implement several interop extensions. Without this change, there are compile failures when the D3D11 backend is disabled. BUG=angleproject:2276 Change-Id: I69ad524ca84aa0aa399cfc0b601315f3ee65ed16 Reviewed-on: https://chromium-review.googlesource.com/809186 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jeff Gilbert 3dddccff 2017-11-14T16:44:36 Support RGB gl-tex-external stream consumers for StreamProducerNV12. This makes it relatively simple to sample from a D3D11Texture of arbitrary format. From: https://bugzilla.mozilla.org/show_bug.cgi?id=1322746 BUG=angleproject:2233 TEST=angle_end2end_tests Change-Id: I10cd3043b5cb0c5d36dd613467ba6c0ceadf41af Reviewed-on: https://chromium-review.googlesource.com/758042 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kai Ninomiya 614dd0f5 2017-11-22T14:04:48 Replace TCache with static TType instances Replaces TCache with (static generation + static/dynamic lookups) of TType instances, using compile-time template and constexpr magic. Work started by jmadill here: https://crrev.com/c/776280 With more contributions from jmadill here: https://crrev.com/c/801494 Bug: angleproject:1432 Change-Id: I07181543f8fee4b2606cdd2d0738351e83d4ce57 Reviewed-on: https://chromium-review.googlesource.com/786317 Commit-Queue: Kai Ninomiya <kainino@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang ded7923b 2017-11-28T15:21:11 GL backend: Only synchronize transform feedback state when it changes. BUG=angleproject:2188 Change-Id: I5bfcc038c887dde0770564d103eb3cb234b248c9 Reviewed-on: https://chromium-review.googlesource.com/794100 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart (Intel Americas Inc) 2eeb1b34 2017-11-29T16:06:43 WebGLCompat: Fix depthstencil query results. getFramebufferAttachmentParameter returns incorrect result for framebuffers in an inconsistent state. BUG=angleproject:2259 Change-Id: I76fa99f1b8847c30469d344bd93dedd9cf6657bf Reviewed-on: https://chromium-review.googlesource.com/798318 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho fdb400d7 2017-12-01T15:12:36 Test multiview extension warning Ensure that a warning is generated if the shader tries to set a global layout qualifier. Since a num_views layout qualifier is the only valid global layout qualifier in GLSL ES 1.00, it's sufficient that checkCanUseExtension() that generates the warning is called for "num_views" specifically. Parsing "layout" or "in" storage qualifier may use the simpler isExtensionEnabled() check that doesn't generate a warning. BUG=angleproject:2238 TEST=angle_unittests Change-Id: I19caff7be9cb4f53c581b5f5526b7cade08469d6 Reviewed-on: https://chromium-review.googlesource.com/803577 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 3de2703d 2017-11-30T12:16:47 Fix handling matrix qualifiers on block members Individual block member row_major/column_major layout qualifiers may override the qualifiers set on the block. During parsing, this was already being handled correctly, so that the qualifier is resolved for each block member and recorded for each TField / InterfaceBlockField. Now we always write the qualifiers on a per-member granularity to the output GLSL shaders, so that the native driver gets the correct per-member qualifiers. This replaces earlier behavior where the matrix qualifiers were only written per-block. Also only use qualifiers from individual members in block layout. Since the block-level qualifier information is no longer used after parsing, it is no longer kept in the AST. A dummy value is still set to the InterfaceBlock structs exposed through the ShaderVars interface, since that has existing usage in Chromium that needs to be removed before the field can be removed. Some AMD OpenGL drivers don't seem to handle matrix layout qualifiers correctly, so most of the added tests need to be skipped for AMD GL. On NVIDIA and Intel the tests pass. BUG=angleproject:2271 TEST=angle_unittests, angle_end2end_tests, dEQP-GLES31.functional.program_interface_query.uniform.matrix* Change-Id: I1baa7a633bc2da548743c2190cb72db491b5227a Reviewed-on: https://chromium-review.googlesource.com/800174 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang bf0a40bb 2017-12-01T11:30:14 Improve documentation about selecting intial CL reviewers. BUG=angleproject:2274 BUG=769026 Change-Id: I8128a438a0831ebc4d6693085a41c41182d259c7 Reviewed-on: https://chromium-review.googlesource.com/803854 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang f5be5baf 2017-11-29T13:17:01 StateManagerGL: Use dirty bits for program binding. BUG=angleproject:2188 Change-Id: I7456692e779107514ab87bfb1a0ab91178c9fc3a Reviewed-on: https://chromium-review.googlesource.com/797356 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho d5f44c98 2017-11-29T17:15:40 Simplify parsing struct field declarators This removes the dummy type that was attached to struct declarators while parsing. This makes TParseContext::addStructDeclaratorList in particular simpler to understand. The new TDeclarator data type is the parsed representation of the struct_declarator grammar rule. It is completely immutable. The name and location stored in TField can also be qualified as constant now. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I2834f87fc0eee0bdb7673ef495a55fb463023c55 Reviewed-on: https://chromium-review.googlesource.com/797033 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones 76746f9b 2017-11-22T11:44:41 Optimize Fragment Shader Type Match Validation Improves ValidateFragmentShaderColorBufferTypeMatch by storing input and output types into a bitmask for quick comparison when validation is needed. This shows a 2% improvement to glDrawElements for the aquarium workload. BUG=angleproject:2203 Change-Id: Iade2ecf28383164e370b48442f01fba6c0962fba Reviewed-on: https://chromium-review.googlesource.com/775019 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 361df070 2017-11-22T09:33:59 ES31: Implement Geometry Shader resource queries on OpenGL This patch intends to implement all geometry shader related resource queries on OpenGL back-ends. This patch also fixes a memory leak by releasing the geometry shader compiler handle in the destructor of the Compiler. BUG=angleproject:1941, angleproject:2261 TEST=angle_end2end_tests Change-Id: Ieb69c162d2fc6c6550e145d1ec7948c3d36d4d15 Reviewed-on: https://chromium-review.googlesource.com/784552 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jiajia Qin 94f1e89f 2017-11-20T12:14:32 ES31: Add atomic counter buffer data size BUG=angleproject:1729 TEST=dEQP-GLES31.functional.ssbo.layout.* dEQP-GLES31.functional.compute.basic.atomic_counter* Change-Id: Ic78c0f089fd539c0b1064e8405d63505456dbc01 Reviewed-on: https://chromium-review.googlesource.com/777958 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5b18f487 2017-11-30T17:24:22 Vulkan: Implement basic TexSubImage2D. This also adds a test for updating a Texture that is in-use. This will ensure our Texture updates occur at the right time when we're implementing command re-ordering. Bug: angleproject:2264 Bug: angleproject:2200 Change-Id: Id6040d7238eca031e3cc7b27564d8ea815bf3d73 Reviewed-on: https://chromium-review.googlesource.com/801031 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Xinghua Cao 37584b36 2017-12-01T11:04:03 Refactor: replace SamplerType with ShaderType BUG=angleproject:1987 Change-Id: I189e1606bd966eb369e8192a6866c8e90810e937 Reviewed-on: https://chromium-review.googlesource.com/802956 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yunchao He 1f679cc6 2017-11-29T18:06:00 Code refactoring for angle::BitSet and EXPECT_GL_TRUE/FALSE. This change refactors two style issues to make it be consistent. 1) This CL uses "using" to replace "typedef" for all angle::BitSet<...>. 2) This CL uses EXPECT_GL_TRUE/FALSE to replace EXPECT_EQ for bool comparison. BUG=angleproject:2005 Change-Id: I4afad92313ea2457bbfedf80f917a5873d7f29ee Reviewed-on: https://chromium-review.googlesource.com/795871 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 035419fa 2017-11-28T14:27:15 Clean up storing struct types in the symbol table Instead of storing struct symbols as TVariable objects, store them as TStructure objects. This way struct type symbols don't need to store bogus data that's associated with arbitrary types, and on the other hand the name and unique id of struct types are only stored in a single place. This change is a refactoring with no effect on generated output. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I173793e0cc77a890cdac6868d72d9f275ac9461a Reviewed-on: https://chromium-review.googlesource.com/793814 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>