Log

Author Commit Date CI Message
Luc Ferron cc48e5fa 2018-03-09T14:17:17 Vulkan: Enable 16 additional tests for the scissor test This set of expectations modifications effectively enables exactly these tests: dEQP-GLES2.functional.fragment_ops.scissor.* -> 16/16 tests passed. Bug:angleproject:2338 Change-Id: Icb971e0e7b253e7df390de1196cc4bc4401f9631 Reviewed-on: https://chromium-review.googlesource.com/957269 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron a87023e0 2018-03-09T13:29:56 Vulkan: Enable 1046 additional tests for blending rasterization states This set of expectations modifications effectively enables exactly these tests: dEQP-GLES2.functional.fragment_ops.blend.* -> 1046 / 1046 tests passed. Bug:angleproject:2346 Change-Id: I3acf903db9be05180df41fed10c2803c59cfc838 Reviewed-on: https://chromium-review.googlesource.com/957312 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e98b1b5d 2018-03-08T09:47:23 Framebuffer: Handle errors in checkStatus. This pipes a lot more errors around in the Validation, where they now will be caught. Bug: angleproject:2372 Change-Id: Ibb4e47ddc932995a02dd92e10578b7a4097182a9 Reviewed-on: https://chromium-review.googlesource.com/954406 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 7c9492eb 2018-03-12T11:01:29 gpu_test_expectations: Fix test for API overlap Bug:angleproject:2396 Change-Id: I8069847f1389308c7c4d4e4786360dfc5a7eb1f4 Reviewed-on: https://chromium-review.googlesource.com/959047 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jiawei Shao 529434a5 2018-03-08T13:13:29 ES31: Update dEQP-GLES31 geometry shader related test expectations BUG=angleproject:1941 TEST=dEQP-GLES31.functional.shaders.builtin_constants.* dEQP-GLES31.functional.shaders.builtin_functions.*_geometry dEQP-GLES31.functional.debug.negative_coverage.*.geometry_shader Change-Id: I37b29e48f27ae31e3753efe00b849849879f848d Reviewed-on: https://chromium-review.googlesource.com/954713 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Dzmitry Malyshau b3b177d7 2018-03-09T16:37:22 Update driver constants on program change. Comes with a new SamplerMetadataUpdateOnSetProgram test. This is a fix for a graphics problem we've been seeing for a while with WebRender+Angle on Nvidia/Windows. The sampler metadata doesn't get updated properly for some of the draw calls, since it's not invalidated on program change (this is what the CL is fixing). Extra entries get filled with garbage data because the constant buffer is updated with `MAP_WRITE_DISCARD`, and only those samplers are updated that the current program has. This may generally occur undetected, if not for our `textureSize` calls that appear to go the NV-specific Angle workaround path that ignores our `baseLevel = 0` and instead picks the one from the driver constants (which contains garbage), leading to either zeroes returned or even crashing the driver sometimes... BUG=angleproject:2399 Change-Id: Ie2bef32184e2305c7255299933b899eb3fffb7ab Reviewed-on: https://chromium-review.googlesource.com/949412 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 391bda23 2018-02-23T11:43:14 Generate code for initializing built-in variables gen_builtin_symbols.py now generates code for initializing built-in variable symbols as well. Some of the variable symbols are static, but some of them also get initialized dynamically based on values in ShBuiltInResources. The static symbols have get functions in a header file so they can be referenced from AST traversers as well without doing a lookup. BUG=angleproject:2267 TEST=angle_unittests, angle_end2end_tests Change-Id: Ida7f3aeb06d2bce0f737f1483b1bd5833aeddd2e Reviewed-on: https://chromium-review.googlesource.com/911768 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill b7d924a8 2018-03-10T11:16:54 Vulkan: Make free part of DescriptorPool. This also fixes a missed VkResult error. In order to do this we also return an error from ProgramImpl::destroy. Bug: angleproject:2396 Change-Id: I649b19e64732785bb33eebadea7f361245137d0f Reviewed-on: https://chromium-review.googlesource.com/958406 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e2995cce 2018-03-09T17:43:45 Vulkan: Fix layers not being enabled on the bots. We were missing the data definition for the standard validation layer. This file was missing from the isolate, and the entire layer system was not working. Found this as a side-effect of working on depth stencil support. Also fixes a missing definition in the white_box_tests BUILD.gn. Also temporarily disables the ClearTest support for Vulkan because of an implementation bug on AMD. Unfortunately because of the failure mode it didn't work to just skip the test in the preamble. Bug: angleproject:2357 Change-Id: I4d06c54191b09e09a4ba68c24613db6f148b17e3 Reviewed-on: https://chromium-review.googlesource.com/956759 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang a36483fc 2018-03-09T16:11:21 Use full type names instead of auto for simple structs. BUG=angleproject:2107 Change-Id: I7a5e4be124ec4381799fea51de3715e09c2f7400 Reviewed-on: https://chromium-review.googlesource.com/957272 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang a8cb287c 2018-03-09T16:09:40 Rename syncRendererState methods to syncImplementationState. BUG=angleproject:2107 Change-Id: I45b914a6edf721c6ec53ca2bc6e139685b059d20 Reviewed-on: https://chromium-review.googlesource.com/957271 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez baf208a0 2018-03-09T15:59:12 cq.cfg: Add equivalent_to to ramp-up during LUCI migration BUG=chromium:815092 Change-Id: I5eece73be718eaaf2797c361e3d8671404f718d1 Reviewed-on: https://chromium-review.googlesource.com/957469 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov 3a465745 2018-03-09T15:42:25 Skip TransformFeedbackLifetimeTest.DeletedBuffer on Win Intel GL Due to wrong driver version on the bots. BUG=angleproject:2398 Change-Id: Ia6b69a24bfb0ded8848a791db6b540576ef2f57c Reviewed-on: https://chromium-review.googlesource.com/957207 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 7b5fc46b 2018-03-09T15:54:33 Vulkan: Add Vk format overrides table. This generalizes the overriding mechanism in gen_Vk_format_table.py. Instead of defining overrides inline, we keep the vk_format_map as a 1:1 mapping from angle format to vk format, and use the overrides map to specify any additional emulation or features we need to support OpenGL textures on Vulkan. This will simplify the implementation for Depth/Stencil formats by making the generator script a bit easier to work with. No code changes, generator script refactor only. Bug: angleproject:2357 Change-Id: I7132d991795eb91d6ad838481c52545c891215bc Reviewed-on: https://chromium-review.googlesource.com/957433 Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 67ae6c58 2018-03-09T11:49:01 Vulkan: Use free descriptor set bits in pool. This forces us to free descriptor sets when we're done with them, but saves us from needing to track when a descriptor set pool is no longer in use. We may need to revisit this in the future if we want to support pool allocation for performance. Bug: angleproject:2396 Change-Id: I3f3184f3dd9e4c2911e1aade4dcb95962a26c3a7 Reviewed-on: https://chromium-review.googlesource.com/956574 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 1505c750 2018-03-09T11:28:23 Vulkan: Fix issue in blending factor conversions The blend factor were not converted correctly from GL enum types to their VK equivalents. I found this by running many dEQP tests related to blending. Bug:angleproject:2346 Change-Id: I3c332bb5e5c44d2bec4ff9d62e0df2421507e136 Reviewed-on: https://chromium-review.googlesource.com/956241 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5b772312 2018-03-08T20:28:32 Nuke ValidationContext. This pattern never really took off. It was intended to be used to unit-test our Validation logic, but it become so complex because of interactions with Framebuffer::syncState that we could never really make use of it. Nuke it entirely and simplify the Context class. Bug: angleproject:2372 Change-Id: I40b9d46ce7706511a210da496ee19192cf609366 Reviewed-on: https://chromium-review.googlesource.com/954291 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang d4fff506 2017-09-22T11:28:28 Reorder state synchronization for resource init. Some backends may change state while initializing resources. Make sure that all resources are initialized before synchronizing the backend state for the given operation. BUG=angleproject:2107 Change-Id: Ie75ac3eee986e41dfe3dd11a94a706e19df7497e Reviewed-on: https://chromium-review.googlesource.com/678481 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 33140409 2018-03-08T13:57:52 Vulkan: Fix readPixels to support sub image reads correctly Also, do not return InvalidOperation from flush in order to be able to support running dEQP tests for Vulkan. Bug:angleproject:2346 Change-Id: I12f3bd115034e044fb0fa2d94687321ede4a1e9d Reviewed-on: https://chromium-review.googlesource.com/955889 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
James Darpinian e8a93c6e 2018-01-04T18:02:24 New transform feedback buffer binding rules Detects undefined behavior when a buffer is bound to a transform feedback binding point and a non transform feedback binding point at the same time. Also moves the transform feedback buffer generic binding point out of the transform feedback object and into the context's global state, to match driver behavior. This way binding a new transform feedback object does not affect GL_TRANSFORM_FEEDBACK_BUFFER_BINDING which is similar to how VAOs work with GL_ARRAY_BUFFER_BINDING. Bug: 696345 Change-Id: If3b9306cde7cd2197a8ce35e10c3af9ee58da0b8 Reviewed-on: https://chromium-review.googlesource.com/853130 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron 80964f97 2018-03-08T10:31:24 Vulkan: Support of GL_UNSIGNED_BYTE type in drawElements Bug:angleproject:1683 Change-Id: I8c79cc92406b210c9d143761ffe4ef74e14c6bed Reviewed-on: https://chromium-review.googlesource.com/956090 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones 2878379d 2018-03-05T09:37:32 Add NPOT validation to copyTextureCHROMIUM copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT texture and level not equal to zero, so we should add validation to catch this case. BUG=angleproject:2380 Change-Id: I7ca2e657287c11d560db0ad296f8e87ed0c19798 Reviewed-on: https://chromium-review.googlesource.com/956018 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 19fa1c6f 2018-03-08T09:47:21 Return an Error from Framebuffer::syncState. This pipes errors up from the Impl to the top level. There are still a few places were error swallowing is needed, because the Framebuffer API doesn't support returning an error. Bug: angleproject:2372 Change-Id: Idc06bda1817fd28075940f69874d8b6ba69194f9 Reviewed-on: https://chromium-review.googlesource.com/954290 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill 66546be2 2018-03-08T09:47:20 Vulkan: Use RenderTargetCache in FramebufferVk. The RenderTargetCache avoids many multiple calls to getRenderTarget, and should speed up the code somewhat on state changes. Also as a side benefit removes a bunch of swallowed ANGLE errors. Bug: angleproject:2372 Change-Id: I072481856aae8607f17a116e25c71acf04b4cc68 Reviewed-on: https://chromium-review.googlesource.com/948785 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 5242d5bf 2018-02-15T07:14:35 Vulkan: Implement scissored clears. Bug: angleproject:2356 Change-Id: I33888f9b4ebaf4b0b5af4ad59b12ad963325a790 Reviewed-on: https://chromium-review.googlesource.com/921882 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill bc918e7d 2018-03-08T09:47:21 Return errors from gl::State::syncDirtyObjects. This plumbs the front-end code, but doesn't implement Error handling for any objects yet. Framebuffers and VertexArrays will get error handling from their syncState methods. Bug: angleproject:2372 Change-Id: I226049e25ac7af2bdd3c4787b67a5d297c0b9c4b Reviewed-on: https://chromium-review.googlesource.com/954289 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Luc Ferron 5164b797 2018-03-06T09:10:12 Vulkan: Support GL_LUMINANCE and GL_LUMINANCE_ALPHA The dEQP tests cannot be turned on before immediate data for drawElements is supported. Bug:angleproject:2364 Change-Id: Id5fd6fbc0c74f2dba08341f36ca0091d540f4ed8 Reviewed-on: https://chromium-review.googlesource.com/951402 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill ed8b4919 2018-03-07T20:34:03 Vulkan: Fix missing depth/stencil access flags. This regressed in http://crrev.com/c/948782. It may have also exposed a problem where our bots are not correctly using the layers. Bug: angleproject:2361 Change-Id: I764bb821b5bfd2571a4c43f9444dcef67ea65bc4 Reviewed-on: https://chromium-review.googlesource.com/954412 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 443c57f6 2018-03-02T21:46:02 Add RenderTargetCache helper. This class encapsulates the Framebuffer::syncState update pattern that caches the RenderTargets for the back-end. RenderTargets abstract away the differences between Textures/Renderbuffers/Surfaces for the back-end and allows the back-end to treat the various types the same. This helper class allows sharing code to cache the RenderTargets. Bug:angleproject:2372 Change-Id: Ib2beb28a616dee1d34c485cd1a19b7202ef70a60 Reviewed-on: https://chromium-review.googlesource.com/948783 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov e3688d27 2018-03-07T22:14:54 Revert "Add NPOT validation to copyTextureCHROMIUM" This reverts commit 2202680c6a5d08ba74d57ce675af2266dddb205c. Reason for revert: ASAN found error https://ci.chromium.org/buildbot/chromium.gpu.fyi/Mac%20FYI%20GPU%20ASAN%20Release/210 Original change's description: > Add NPOT validation to copyTextureCHROMIUM > > copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT > texture and level not equal to zero, so we should add > validation to catch this case. > > BUG=angleproject:2380 > > Change-Id: I0ea50a981e4d8f10f5913969f6b629617b57aa15 > Reviewed-on: https://chromium-review.googlesource.com/951713 > Commit-Queue: Geoff Lang <geofflang@chromium.org> > Reviewed-by: Geoff Lang <geofflang@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,brandon1.jones@intel.com Change-Id: I04dcbd5e1d97b1bd968b26a06e4d3e4d175be0d8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2380 Reviewed-on: https://chromium-review.googlesource.com/953343 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Tobin Ehlis da6dd738 2018-03-06T17:02:47 Roll (2/2) to latest LVL as of 3/6/18 Bug: angleproject:2393 Moving to HEAD of LVL master on afternoon of 3/6/18. Made some updates to BUILD.gn to add args to spirv tools external_revision_generator.py script. Re-enable ANGLE Vulkan build. Change-Id: I1705d7a2acae578bab9bbd8bb93176107e0e21dc Reviewed-on: https://chromium-review.googlesource.com/952547 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 40dba690 2018-03-07T13:48:04 Update copyright notice in the style guide. See https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md#file-headers Bug: angleproject:1944 Change-Id: Ic2e284ac75ecab19e8d6c5b97e1a9d9376984f3b Reviewed-on: https://chromium-review.googlesource.com/953133 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Brandon Jones 2202680c 2018-03-05T09:37:32 Add NPOT validation to copyTextureCHROMIUM copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT texture and level not equal to zero, so we should add validation to catch this case. BUG=angleproject:2380 Change-Id: I0ea50a981e4d8f10f5913969f6b629617b57aa15 Reviewed-on: https://chromium-review.googlesource.com/951713 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill e4c5a23b 2018-03-02T21:00:31 Vulkan: Always use LOAD for RenderPass attachments. The RenderPass load/store ops allow us to specify how we want to use the data from the attachments. Previously we had the load op set to CLEAR always, which would prevent us from doing multiple kinds of operation. Using LOAD should conversatively work in any situation as long as we can ensure each Image is cleared before we use it. To this effect this patch also inserts a preliminary clear into each Texture or Renderbuffer Image's initialization. We already had this for Surfaces. In the future we'll improve this by inserting proper load/store ops, but this unblocks a lot more functionality in the interim. Bug: angleproject:2361 Change-Id: I7610eaa39d81b23dd74b4a24b7f28a66a6dfffc6 Reviewed-on: https://chromium-review.googlesource.com/948782 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tobin Ehlis 37812d45 2018-03-06T17:13:02 Roll (1/2) LVL version forward and disable VANGLE Bug: angleproject:2393 Rolling Vulkan validation code forward to HEAD of master as of 3/6/18 afternoon. Disable Vulkan from the ANGLE build until ANGLE lands in Chromium. After that second part of roll will be submitted. Change-Id: I3c98b42a0b8999e8aa26f538959d888060c2026a Reviewed-on: https://chromium-review.googlesource.com/952525 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 24180607 2018-03-02T14:12:13 Allow rectangle textures to be sample with texture() in ESSL3 This makes them consistent with the other texture types. Also adds a test for using texture(sampler2DRect, ...). BUG=chromium:757974 BUG=angleproject:1650 Change-Id: Ie966da928ae0c83850da1e530e72c0d501909394 Reviewed-on: https://chromium-review.googlesource.com/946675 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 7618eaf9 2018-03-07T11:25:40 Fix incorrect path in run_code_generation.py Adding missing "src". BUG=angleproject:2267 TEST=python scripts/run_code_generation.py Change-Id: I89d981c8f09e6d0839d0b796a2ea14a8466f98a7 Reviewed-on: https://chromium-review.googlesource.com/952925 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 065aa863 2018-02-22T15:30:27 Generate code for unmangled name lookup Instead of using an std::map at each symbol table level, use the gen_builtin_symbols.py script to build a function to query unmangled names. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I4f1cf1df1f50fe9d909f3249150ee002ee6efb61 Reviewed-on: https://chromium-review.googlesource.com/931885 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 8f184ae9 2018-03-06T20:36:50 Update dEQP EGL expectations Timeout is not enough to suppress functional.native_color_mapping.native_window.* since it's retried 3 times and always times out. Need to skip. BUG=angleproject:2382 Change-Id: Ib87f25cc6c17be2b5c4c592374b28386685115d2 Reviewed-on: https://chromium-review.googlesource.com/951973 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 28060c43 2018-03-06T19:58:33 Vulkan: Enable running SimpleTexture2D. This completes the work for the simple texture sample. Bug: angleproject:2167 Change-Id: I47c6794fa7cd59e295a98623d9ce8879ea1d3298 Reviewed-on: https://chromium-review.googlesource.com/952566 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman a53d0e18 2018-02-13T00:06:06 Vulkan: support indices in client memory. glDrawElements will now work with indices and/or vertex data in client memory, as well as in a buffer object. Enable corresponding tests. BUG=angleproject:1683 Change-Id: Iefb9796a48b21ed6f9a837b08b0ad3218ff6dd6b Reviewed-on: https://chromium-review.googlesource.com/915721 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 6dd4a92a 2018-03-02T16:35:13 Vulkan: track attributes in client memory. To support indexed draws it's useful to have a cheap query for the presence of vertex attribute data in client memory. This patch adds a bit mask to keep track of such attributes. It also lets us simplify VertexArrayVk::streamVertexData() slightly. BUG=angleproject:1683 Change-Id: I871bfb885112650b025e110c383db3c391eafb90 Reviewed-on: https://chromium-review.googlesource.com/947927 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 99d492c2 2018-02-27T15:17:10 Use packed enums for the texture types and targets, part 2 This completes the refactor by using the packed enums in the gl:: layer and in the backends. The packed enum code generation is modified to support explicitly assigning values to the packed enums so that the TextureTarget cube map faces are in the correct order and easy to iterate over. BUG=angleproject:2169 Change-Id: I5903235e684ccf382e92a8a1e10c5c85b4b16a04 Reviewed-on: https://chromium-review.googlesource.com/939994 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 98d0a2b1 2018-02-26T11:55:34 Use strtod instead of istringstream+locale for parsing floats. BUG=803034 Change-Id: I69ca7a86e1841e86c6a8cf6a0b7279a8e42b0012 Reviewed-on: https://chromium-review.googlesource.com/937964 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 879f90d2 2018-03-01T11:45:20 Vulkan: Avoid recopying the data every time we draw line loops Use the Observer pattern to get notified when the BufferVk we've copied our data from is changing. We will only recopy the data if anything has changed, but otherwise we'll keep drawing with the same index buffer we've created previously. Bug: angleproject:2335 Change-Id: Ib65677b4d5ec90c46a5e3b975fffd1fddeed59e7 Reviewed-on: https://chromium-review.googlesource.com/948622 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 7b21381e 2018-03-06T10:13:13 Vulkan: Support changing in-flight Renderbuffers. Bug: angleproject:2347 Change-Id: I9bb1494a960969bb6e7c8656c27c7c180ddba069 Reviewed-on: https://chromium-review.googlesource.com/922458 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao d2cb7cec 2018-03-02T09:04:03 ES31: Fix wrong method of computing combined interface blocks This patch fixes a bug in the method of validating the number of combined interface blocks in currenct ANGLE implementation. When a resource (uniform block, shader storage block, image, atomic counter buffer, atomic counter) is used by multiple shader stages, each such use counts separately against the combined resource limit. This patch also fixes an unexpected link error in a related test by skipping the test when the number of ssbos exceeds the resouorce limit. BUG=angleproject:1951 TEST=angle_end2end_tests Change-Id: I0de439a412148e0d5ebef3c27d20e0cbd536175a Reviewed-on: https://chromium-review.googlesource.com/945143 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Lingfeng Yang e05ffdd1 2018-02-19T13:24:17 GLES1: caps: Use GLES3 spec shader compiler If we attempt to compile the GLES1 emulation shader when the client version is 1, we use the webgl 1 / GLES2 spec, not the GLES3 spec that we use for GLES1 emulation. This CL adds a case in Compiler.cpp for ES 1 contexts to use the higher spec shader compiler. BUG=angleproject:2306 Change-Id: I86fe534dd405279155bd81680fed77b8f9a09042 Reviewed-on: https://chromium-review.googlesource.com/925548 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Lingfeng Yang a5d583e9 2018-02-08T10:59:05 GLES1: state: Add crop rect / generate mipmap texparameters GLES1 has at least two places where all texture objects can carry more state: - Crop rectangle, used with glDrawTex - Generate mipmap parameter, which lets the user auto-generate mipmaps for textures from a texture parameter This CL adds them to the Texture / TextureState classes. BUG=angleproject:2306 Change-Id: Ia43882d36f166b49a09434e77f8c288478e2a454 Reviewed-on: https://chromium-review.googlesource.com/909579 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Lingfeng Yang <lfy@google.com>
Lingfeng Yang 56e9540a 2018-02-19T16:45:26 GLES1: caps: Allow ES1 to use formats from core ES2 BUG=angleproject:2306 Change-Id: I93e85f3014e7d9a645e13d3c3025b5360e2a63db Reviewed-on: https://chromium-review.googlesource.com/925550 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez f0e89be6 2017-11-08T14:00:32 Use packed enums for the texture types and targets, part 1 In OpenGL there are two enum "sets" used by the API that are very similar: texture types (or bind point) and texture targets. They only differ in that texture types have GL_TEXTURE_CUBEMAP and target have GL_TEXTURE_CUBEMAP_[POSITIVE|NEGATIVE]_[X|Y|Z]. This is a problem because in ANGLE we use GLenum to pass around both types of data, making it difficult to know which of type and target a variable is. In addition these enums are placed somewhat randomly in the space of OpenGL enums, making it slow to have a mapping from texture types to some data. Such a mapping is in hot-code with gl::State::mTextures. This commit stack makes the texture types and target enums be translated to internal packed enums right at the OpenGL entry point and used throughout ANGLE to have type safety and performance gains. This is the first of two commit which does the refactor for all of the validation and stops inside gl::Context. This was the best place to split patches without having many conversions from packed enums to GL enums. BUG=angleproject:2169 Change-Id: Ib43da7e71c253bd9fe210fb0ec0de61bc286e6d3 Reviewed-on: https://chromium-review.googlesource.com/758835 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 140152e7 2018-02-08T14:46:44 Statically allocate built-in function symbols A script gen_builtin_symbols.py now generates code for initializing built-in function symbols. The TFunction objects are initialized at C++ compile time. The source file used for the functions is in a format that's similar to how functions are given out in the GLSL spec, so it is easy to maintain. The function symbols are still inserted to the symbol table levels same as before. Getting rid of inserting the symbols at runtime is intended to be done as follow-up. This speeds up angle_unittests on Linux in release mode by a bit less than half, and in debug mode by more than half. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I11c9de98c74d28e7e8cdf024516e2f6ee30ca33e Reviewed-on: https://chromium-review.googlesource.com/924155 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho d05f964b 2018-03-05T12:13:26 Last case in switch statement can't be empty in ESSL 3.10 This is based on recent discussion in Khronos, though public specs have not yet been updated to reflect this. BUG=angleproject:2388 TEST=angle_unittests Change-Id: I66a0d03b3c2bb9740772a813b543f8f6c6bb2a28 Reviewed-on: https://chromium-review.googlesource.com/947977 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill dc0cdba8 2018-02-28T00:42:20 Vulkan: Fix Texture attachment state changes. This implements a notification to the Framebuffer that an attachment had a state change that might require recreating the VkFramebuffer. This implementation is much simpler than the prior method with signal notifications. Only currently implemented for TextureVk but will also be implemented for RenderbufferVk. Bug: angleproject:2347 Change-Id: I05f7da4132f6ed2bda02671e8ba5ee9805252928 Reviewed-on: https://chromium-review.googlesource.com/930024 Reviewed-by: Luc Ferron <lucferron@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron 78e39b3f 2018-02-26T07:42:44 Vulkan: Line loops for indexed draw calls Bug: angleproject:2335 Change-Id: Iabd6ae8181c6d3fb487f953a6fbf699db568a1c9 Reviewed-on: https://chromium-review.googlesource.com/941261 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang b27b03a2 2018-02-19T13:38:48 GLES1: caps: GLES1-specific context limits There are some GLES1-specific caps such as the number of multitexturing units and the matrix stack depths. This is important for validation. This uses Table 6.20 and 6.22 from the GLES 1.1 spec. Specify them in Caps.h and minimums in .cpp. Since we will be emulating GLES1, there is no plan to collect the caps from the native implementation; just initialize reasonable values in Context.cpp. In fact, we will go with the values above minimum: - 4 multitexturing units (vs. 2 minimum) - 6 clip plans (vs. 1 minimum) - 16 stack depth for projection matrices (vs. 2 minimum) - 16 stack depth for texture matrices (vs. 2 minimum) + clang-format Caps.cpp / h BUG=angleproject:2306 Change-Id: Ib28c317426be598a2adad7bd01920c03f27dc74a Reviewed-on: https://chromium-review.googlesource.com/925549 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 27f4321e 2018-02-26T11:05:53 ES31: Implement memoryBarrier on D3D backend Because D3D11 makes a coherent write, so memoryBarrier is not needed on D3D backend. This patch also simples some test cases and modifies some cases errors when accessing memory after an incoherent write, but does not use memoryBarrier. BUG=angleproject:2280 TEST=angle_end2end_tests.ComputeShaderTest.* Change-Id: Iee5d105a0b6d8534aded03fdaaefc909864d33a4 Reviewed-on: https://chromium-review.googlesource.com/937023 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6f683089 2018-02-28T00:35:16 Rename signal utils to Observer. This completes the basic refactor to the Observer pattern. Bug: angleproject:2372 Change-Id: I810deff7c7e39baa64b57ce2a79cd732b1af7c34 Reviewed-on: https://chromium-review.googlesource.com/940862 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jiawei Shao 0d88ec9f 2018-02-27T16:25:31 ES31: Add link validations on geometry shader uniforms This patch adds the link validations on the uniforms defined in a geometry shader. 1. Validate if there is any link mismatch between a geometry shader uniform and a uniform defined in another shader in the current graphics pipeline. 2. Validate if the number of images, samplers or atomic counters in a geometry shader exceeds the related resource limit. 3. Validate if there is name contradiction between a geometry shader uniform and a vertex shader attribute. BUG=angleproject:1941 TEST=dEQP-GLES31.functional.shaders.linkage.es31.geometry.uniform.* dEQP-GLES31.functional.geometry_shading.basic.* dEQP-GLES31.functional.geometry_shading.conversion.* dEQP-GLES31.functional.geometry_shading.emit.* dEQP-GLES31.functional.geometry_shading.varying.* dEQP-GLES31.functional.geometry_shading.instanced.geometry_* dEQP-GLES31.functional.geometry_shading.instanced.invocation_output_* dEQP-GLES31.functional.geometry_shading.instanced.draw_* Change-Id: I365aee624a3a79658c3e4c7487a586cf9532b529 Reviewed-on: https://chromium-review.googlesource.com/939264 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 888081d5 2018-02-27T00:24:46 D3D11: Refactor dependent Framebuffer state changes. Previously, when a state change would cause a Texture to recreate its storage specific to D3D11, we would use a dependent notification from RenderTarget11 to Framebuffer11 to re-check internal dirty bits. In this new method, we instead set dirty bits on the gl::Frambuffer directly. This also means we use fewer internal objects for these notifications, because we share the same structures between the D3D11 back-end notifications and the top-level notifications we use for Robust init and Framebuffer completeness. This also allows us to get rid of one "if" that we check on every draw call in D3D11. This also introduces a dirty bits guard concept - a shadow set of dirty bits that is checked in dependent state changes to ensure that extra bits aren't set inside syncState. This also implements Framebuffer dirty bits for the D3D9 back-end. This has the side effect of cleaning up the "null colorbuffer" D3D9 workaround. Bug: angleproject:2372 Change-Id: Ie346d39030f4f6df583d735685b0babea4e745a8 Reviewed-on: https://chromium-review.googlesource.com/936691 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 92e4e079 2018-03-02T13:34:56 Test shader builtin accessibility from different stages Test that fragment, vertex or compute shader exclusive builtins are not accessible from another shader stage. This will protect against regressions when refactoring the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I50f97cbde3f1c5cb4584568e3008f1dab724b769 Reviewed-on: https://chromium-review.googlesource.com/941953 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jeff Gilbert ff32734d 2018-02-22T18:20:37 Support EGLStream from B8G8R8A8_UNORM D3D11Texture. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2368 Change-Id: Ic2c71b36e7b08560e158fd3dbf10b2fe225f1364 Reviewed-on: https://chromium-review.googlesource.com/935148 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 259b2977 2018-02-26T16:30:06 Move constructors may not be marked explicit. BUG=angleproject:2383 Change-Id: If22c7f7c15b7bbe89b859281b28c2b9695e34a1d Reviewed-on: https://chromium-review.googlesource.com/945415 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 28cf920e 2018-03-02T15:54:56 Fix checking texture function offset There was a mistake in one of the texture offset function names being checked. Fix it and add a test making sure that a similar mistake cannot slip in again. BUG=angleproject:2387 TEST=angle_unittests Change-Id: I2dddfbdc2836f9e7e94ca6573a8f3689eecf7eb2 Reviewed-on: https://chromium-review.googlesource.com/946254 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho e765e215 2018-03-01T12:00:48 Test that ESSL 300 standard derivatives compile successfully These functions have the same name in the ESSL 100 extension, creating a possibility for conflicts. This adds a convenient way to test for regressions when refactoring the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9716524a0ea85064ba5f3ee8e7adfbdfc59d257e Reviewed-on: https://chromium-review.googlesource.com/945989 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 437664b4 2018-02-28T15:38:14 Clean up TSymbolTable entry points TSymbolTable API can be cleaned up further now that we have separate logic for inserting builtins and user-defined symbols. BUG=angleprojec:2267 TEST=angle_unittests Change-Id: I7a228891ecdf4696e50868b9e7dfc2a50b5d8e92 Reviewed-on: https://chromium-review.googlesource.com/941301 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov b7d14586 2018-03-01T18:07:41 Update dEQP EGL expectations BUG=angleproject:2341,angleproject:2382 Change-Id: I5bcc0938e2d86165022cc80afda6b11c801ef5ed Reviewed-on: https://chromium-review.googlesource.com/944711 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho d6fef528 2018-03-01T13:41:13 Shorten mangled names of types This will reduce binary size by a few kilobytes once we store mangled names of functions as constexpr strings. This still keeps mangled names human readable. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia63980bd511c701a93e2c5e247d24578c7d7f332 Reviewed-on: https://chromium-review.googlesource.com/943101 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 98e6a5f7 2018-02-28T15:47:13 Add missing #include. Would not compile locally on Linux without adding #include <algorithm>. BUG=none Change-Id: I2f817faf681234c0e7eeeda0ad837e8285d9071a Reviewed-on: https://chromium-review.googlesource.com/941613 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Jamie Madill d444255a 2018-02-27T22:03:47 Refactor signal utils into Observer pattern. These types were over-generalized. All use cases featured arrays of resources attached to single parent resources. The channel ID is sufficient to identify the child resource in the parent, and having variadic template arguments wasn't necessary. Futhermore we can rename these types to use the common Observer pattern. This should make them more readable to new developers. Also update some classes to inherit from Subject instead of having a member Subject. This cleans up the code in a few places. This should lead to a simpler refactor to allow dependent dirty bits notifications in the Vulkan back-end. In the following patch the signal_utils files will be renamed. They are not renamed in this patch to ensure git history is preserved. Bug: angleproject:2372 Change-Id: I17a3f2c8d92afd4bb3cba2d378c3a2e8a6d7fb11 Reviewed-on: https://chromium-review.googlesource.com/936690 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yunchao He 2f3a0dc5 2018-02-27T22:39:44 Report INVALID_VALUE if width/height of invalidateSubFramebuffer is negative. BUG=angleproject:2376 TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.invalidate_sub_framebuffer Change-Id: Ie1ca30f29d7583c86130f46d4e6b5c7211eee63a Reviewed-on: https://chromium-review.googlesource.com/938367 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman a8e868f2 2018-01-28T23:32:25 Vulkan: use correct vertex stride. It was passing the attribute size, not the stride, so it worked only when they were the same. Enable corresponding tests. BUG=angleproject:2310 Change-Id: Ie3ab13567c16c302aa9aeda5d059e5fd4eb92b4e Reviewed-on: https://chromium-review.googlesource.com/875304 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 640fa5dc 2018-02-22T17:03:15 Enable more of AttributeLayoutTest. Enable more parts of AttributeLayoutTest because: - partial Vulkan support for vertex data in client memory has landed - we can work around bugs which prevented some parts from working - we have more fine-grained control over which parts to run Avoid glBufferSubData to work around ANGLE bug 2374. Let subclasses decide about skipping test cases. For example on Vulkan indexed draw with vertex data in client memory is not supported yet. BUG=angleproject:1683 Change-Id: Id073334299bd1a642b2518ccb3c47ebd8ff010d9 Reviewed-on: https://chromium-review.googlesource.com/933943 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron 360098d5 2018-02-21T07:33:50 Vulkan: Implement GL_LINE_LOOP support for non-indexed draw calls Line loops aren't supported in Vulkan directly, so we use line strips with an indexed buffer to emulate them. To hide the complexity of that, I've created the LineLoopHandler class in vk_utils. Bug: angleproject:2335 Change-Id: Id3e020d27e5265565e61e96d3fd0187c4fe2b152 Reviewed-on: https://chromium-review.googlesource.com/931421 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 339f65bb 2018-02-27T12:52:48 ES31: Fix incorrect initialization for indexed atomic counter buffer BUG=angleproject:1729 TEST=dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getbooleani_v Change-Id: I3f6975ecc0e69f487f66ff65d613307fcaa6eb08 Reviewed-on: https://chromium-review.googlesource.com/939106 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia aef92166 2018-02-27T13:51:44 Move the early-return case of zero mask to Context::blitFramebuffer When the mask is zero, no buffers are copied in BlitFramebuffer. But we still need to check all the error situations. So mask of zero should be put in blitFramebuffer not the validation file. Meanwhile, we adjust the checking sequence to pass the deqp case. BUG=angleproject:2375 TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer Change-Id: I73c78ffb8853153f70fc30e8ae0e704e08e454ac Reviewed-on: https://chromium-review.googlesource.com/938573 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 06a87ec8 2018-02-25T22:07:27 Vulkan: Fix offsets in BufferVk::setDataImpl. We were using a src offset instead of a dest offset. The staging buffer should always start at the zero offset, while the dest buffer (the real buffer) should use the offset argument to Buffer*Data. Bug: angleproject:2374 Change-Id: I9ee702709d9c15945935f4eae25f308b71e0d1e8 Reviewed-on: https://chromium-review.googlesource.com/937022 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jiawei Shao d063affa 2018-02-22T10:19:09 ES31: Add link validation on geometry shader varyings This patch adds the link validation on geometry shader varyings. According to SPEC, geometry shader inputs should not be treated as arrays for the purpose of interface matching. This patch also moves the checks on fragment input bindings into a single function. BUG=angleproject:1941 TEST=angle_end2end_tests dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.* Change-Id: Ib3ca64e28683e9688edc9432d43ff5a70c86117e Reviewed-on: https://chromium-review.googlesource.com/929866 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jeff Gilbert 85f0b5ea 2018-02-23T15:23:21 Allow EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE with EGL_PLATFORM_DEVICE_EXT. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1395107 BUG=angleproject:2370 Change-Id: Id0c0cecbe14c1c0a1b3de18b0ccf70d00af81a80 Reviewed-on: https://chromium-review.googlesource.com/935454 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 6ae51611 2018-02-23T14:03:25 ES31: Add missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE This patch adds missing checks for querying GL_COMPUTE_WORK_GROUP_SIZE by glGetProgramiv. When querying GL_COMPUTE_WORK_GROUP_SIZE, an INVALID_OPERATION error should be generated when this program hasn't been linked successfully or it doesn't contain any objects to form a compute shader. BUG=angleproject:2324 TEST=angle_end2end_tests dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.invalid_program_query Change-Id: I13dcebef8a0abede5c18a038d4cf915ee4164e2e Reviewed-on: https://chromium-review.googlesource.com/933627 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang b52fac03 2018-02-21T15:45:35 Refactor ImageIndex to have separate type and target members. BUG=angleproject:2169 Change-Id: Ib3fb699058f76d0eb810a9691ea1d64311dadbb1 Reviewed-on: https://chromium-review.googlesource.com/929650 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yunchao He bacaa714 2018-01-30T14:01:39 ES31: support stencil texture via DEPTH_STENCIL_TEXTURE_MODE. BUG=angleproject:2373 Change-Id: I5edd9db6ef6101b0ad75f71fdcdfbb1261100583 Reviewed-on: https://chromium-review.googlesource.com/936421 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho c4bd0ac9 2018-02-22T16:29:32 Add 32-bit hash helper to ImmutableString Since the length of the hash is known prior to compilation, it can be compared with script-generated hashes. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia0a78dfd450c4ea2d526da7f3495b9750dcbd1af Reviewed-on: https://chromium-review.googlesource.com/931884 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 2f7c04a3 2018-01-25T14:50:37 Clean up unnecessary use of TString TString was being used in some places where it was not really needed. Clean these up. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ib7fd26f9c6b6b885433c840a9520393908f1f902 Reviewed-on: https://chromium-review.googlesource.com/887068 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 3582c0e2 2018-02-22T14:38:09 Add a test for redefining an unavailable built-in This is going to guard against regressions when symbol table init is optimized. TEST=angle_unittests BUG=angleproject:2267 Change-Id: Iec7b9814f4af215dc0b3e8a39c8cfab004451836 Reviewed-on: https://chromium-review.googlesource.com/931883 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jeff Gilbert 81aa15f1 2018-02-22T18:22:52 Test `EGL_OPENGL_ES3_BIT_KHR` against `rendererType`, not `conformant`. Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2369 Change-Id: I99cae322eb70ea3920eb296fd590abccded6dab4 Reviewed-on: https://chromium-review.googlesource.com/935149 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 3c43b4d1 2018-02-23T11:08:28 Fix incorrect conversion in ConvertToGLint This patch fixes a bug in function ConvertToGLint. This function should convert ParamType into GLint instead of GLenum. This patch can fix the bug that no errors are generated when trying to set negative base level or max level by glTexParameteri because ConvertToGLint always incorrectly converts a negative integer into an unsigned integer in ValidateTexParameterBase. BUG=angleproject:2371 TEST=angle_end2end_tests dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameter* Change-Id: Id5baf3430ae574a083bcc40a7a8f7db1cb2d07ed Reviewed-on: https://chromium-review.googlesource.com/933923 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 20c46284 2018-02-22T18:18:01 Make OpenSharedResource() call become fallible in SwapChain11::resetOffscreenColorBuffer(). Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754 BUG=angleproject:2367 Change-Id: I69a75c38c6811752df6da9c3cba5901c9d8ab8c4 Reviewed-on: https://chromium-review.googlesource.com/935281 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert ad661940 2018-02-22T18:15:45 Remove unused include of math.h in matrix_utils.h. BUG=angleproject:2366 Change-Id: Ic398da0b86caef577140808a87fcc2e74ed28dc0 Reviewed-on: https://chromium-review.googlesource.com/935144 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Qin Jiajia a4ef843f 2018-02-22T16:02:24 ES31: Fix incorrect error code in DispatchComputeIndirect INVALID_VALUE error should be generated not INVALID_OPERATION if indirect is not a multiple of the size, in basic machine units, of uint. Meanwhile, we put the validation of indirect before indirect buffer so that the corresponding deqp cases can pass. BUG=angleproject:2324 Change-Id: I223ec1893a6dd613f84e51a98f02d5f79482952f Reviewed-on: https://chromium-review.googlesource.com/929900 Reviewed-by: Jiawei Shao <jiawei.shao@intel.com> Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 76bf01d7 2018-02-22T14:11:34 Fix that readonly buffer variable can be assigned This change will add memory qualifier checking for binaryNode in case the memory qualifier information is lost. BUG=angleproject:1951 TEST=angle_unittests Change-Id: I3f0cfd7d8a059753cf3c982ee0a977b4b0fd0128 Reviewed-on: https://chromium-review.googlesource.com/929877 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao e41df655 2018-02-09T14:31:39 ES31: Add shader version check for CS and GS This patch adds the missing check on the shader version for compute and geometry shaders, which can fix a bug that ANGLE GLSL compiler doesn't report a compile error when compiling an empty compute or geometry shader in version 100 or 300. This patch also updates the original compiler tests on the check of shader version. In these tests, the compile errors are all caused by illegal layouts instead of shader versions, which is against the purpose of the tests. This patch also fixes an incorrect case that used an empty compute shader in version 300. BUG=angleproject:1442, angleproject:1941 TEST=angle_unittests Change-Id: Ic26bb8eb312dbc0cec6a879997d0ae7a2e625a0f Reviewed-on: https://chromium-review.googlesource.com/910715 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho f7f0b8c3 2018-02-21T20:02:23 Rename operator enums so they can be autogenerated Camel casing is removed from the enums where it differs from the GLSL spec. This way it's easier to autogenerate code for built-in functions mapped to operators. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I2490d5d0e8ffb45eba343f225f76779e63381a65 Reviewed-on: https://chromium-review.googlesource.com/929361 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 7c8567a3 2018-02-20T15:44:07 Always add most extension symbols to symbol table An error will be generated either way if the extension symbols are used incorrectly since each use of an extension function or variable checks whether the extension is enabled. We now also track extension in unmangled built-in names, so that redefining built-ins of extensions that are not enabled can be supported. This includes refactoring the shader extension tests to share a common helper class ShaderExtensionTest. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I9cc5e9bd62fa07796e69256a6a9a493531a62446 Reviewed-on: https://chromium-review.googlesource.com/926526 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang a953b527 2018-02-21T16:56:23 Avoid possible overflow when computing ReadPixels bounds. BUG=809881 Change-Id: I69c58c93597aea5a5c25298908592ce1ab4a957b Reviewed-on: https://chromium-review.googlesource.com/929984 Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
JiangYizhou 1dce1bd3 2017-12-06T10:25:40 Add test case to catch depth stencil buffer 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. Add an end2end test case to catch this driver bug. TEST=DepthStencilFormatsTestES3.DrawWithLargeViewport/ES3_D3D11 BUG=782317 Change-Id: I16efb9459717e94e2edb5d5eb5dc24f47d746ea3 Reviewed-on: https://chromium-review.googlesource.com/858430 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 24842908 2018-02-02T01:21:12 New test for vertex attribute arrangements. Test various ways of organizing attributes: in memory or buffer object, sequential or interleaved. Test different types of vertex data. Test non-indexed draw, indices in buffer, indices in memory. Test starting at vertex zero and higher. BUG=angleproject:1683 Change-Id: I54a752679b31bbb3f573c922d59da69a18302daa Reviewed-on: https://chromium-review.googlesource.com/898608 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Frank Henigman df4b6316 2018-01-18T18:22:19 Vulkan: Add unmap in BufferVk::getIndexRange. There was a map() without a corresponding unmap(). Add a test which does multiple indexed draws, triggering the problem. BUG=angleproject:2310 Change-Id: Id33d66f24de2005ec3f9958d33ab4c2630b49dc5 Reviewed-on: https://chromium-review.googlesource.com/875318 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 8d986bf2 2018-02-21T08:28:01 Fix missing include files visible to GN. This should also fix the VS project generation. Thanks to Jeff Gilbert from Mozilla for sharing a list of missing files. Bug: angleproject:2360 Change-Id: Ideab28a0169cd7aabb6a7bd3aac3a5832443f023 Reviewed-on: https://chromium-review.googlesource.com/922874 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1f46bc12 2018-02-20T16:09:43 Vulkan: Add CommandGraph class. This also renames CommandBufferNode to CommandGraphNode. It also renames some of the intenal members to more closely represent the tree relationships (parents/children). This should clean up the command graph classes and make them a bit easier to understand. Bug: angleproject:2361 Change-Id: I024bffcc7f4157c78072ef902a3c40a07a08b18a Reviewed-on: https://chromium-review.googlesource.com/922121 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>