Log

Author Commit Date CI Message
Sami Väisänen 935cb7c5 2017-11-08T15:53:41 Support B8G8R8A8_UNORM_SRGB as D3D11 texture format Support B8G8R8A8_UNORM_SRGB as D3D11 texture format. BUG=angleproject:2172 Change-Id: I2f15a55123601735d7fc6caa40bb056243a91b44 Reviewed-on: https://chromium-review.googlesource.com/758600 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang fa125c9e 2017-10-24T13:01:46 Validate GL_COLOR_ATTACHMENT0 separately from the draw buffers attachments. EXT_draw_buffers may not be enabled but the maxColorAttachments cap is always initialized so make sure to validate for the extension instead of just checking that the attachment is in the valid range. BUG=angleproject:2058 Change-Id: I5b48cb496bf96cbc0911295aa5bf87784ce9241b Reviewed-on: https://chromium-review.googlesource.com/735749 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yunchao He 70b715c9 2017-11-07T14:59:15 ES31: Add test for DispatchCompute with rendering program BUG=angleproject:1955 Change-Id: Ib3ee1ead76c83c8dceafba30a1c7526dd0891f8c Reviewed-on: https://chromium-review.googlesource.com/756654 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 3ef06a9f 2017-11-03T18:41:33 Skip hasMappedBuffer check in draw validations in WebGL contexts MapBufferRange, FlushMappedBufferRange, and UnmapBuffer entry points are removed from the WebGL 2.0 API[1], so we don't need to validate if a vertex array buffer or an index buffer is mapped or not in draw validations (ValidateDrawBase and ValidateDrawElementsCommon) in a WebGL context. According to profiling data, hasMappedBuffer weights over 1% (1.12%) CPU times in WebGL Acquarium benchmark (10K fishes, Intel HD630). With this patch, this hot spot has disappeared and no new hot spots are introduced. This optimization can also slightly improve FPS on WebGL benchmarks, or keep the same at least. [1] https://www.khronos.org/registry/webgl/specs/latest/2.0/#5.14 BUG=angleproject:1671 Change-Id: I96e770b19b691e81774cc8e0c1b66b65dcc3cc83 Reviewed-on: https://chromium-review.googlesource.com/753281 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jiawei Shao 0e883134 2017-10-26T09:53:50 ES31: Support EXT_geometry_shader in GLSL compiler This patch intends to support "EXT_geometry_shader" as a valid extension string in ANGLE GLSL compiler. We decide to support it because in dEQP-GLES31 all geometry shader related tests are using "EXT_geometry_shader" instead of "OES_geometry_shader". 1. Support new extension string "EXT_geometry_shader" 2. Enable geometry shader layout qualifiers with EXT_geometry_shader 3. Enable geometry shader builtins with EXT_geometry_shader BUG=angleproject:1941 TEST=angle_unittests Change-Id: Iaedd01a9100ccf56243c957db36ff0c983d17060 Reviewed-on: https://chromium-review.googlesource.com/737933 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jeff Gilbert c5de4d29 2017-10-31T15:07:53 KHR_create_context with GLES forbids _KHR reset notification enum. EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT from EXT_create_context_robustness must be used with GLES instead. BUG=angleproject:2213 Change-Id: Icaf3c7550c4eb7cb61c6d4ed37adba7824ca4bc8 Reviewed-on: https://chromium-review.googlesource.com/759122 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3fb0ca02 2017-11-07T18:06:12 Move LazyResource::resolveImpl to the cpp. This avoids a compile error where GCC is not compatible with MSVS and Clang, who can both handle calls to forward declared functions in templates. It explicitly specializes LazyResource for the used template types. BUG=angleproject:2182 Change-Id: Iedb1f157d0662b0ea4472c9b4e85828217be577e Reviewed-on: https://chromium-review.googlesource.com/757758 Reviewed-by: Jeff Gilbert <jgilbert@mozilla.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6db1c2e8 2017-11-08T09:17:40 Link interface blocks in ProgramImpl::link. This allows the back-end to have access to the interface block info in the link operation, and also allows the interface block info to have direct access to the post-link Impl information. BUG=angleproject:2208 Change-Id: Ib2bfb3c9155eee715bd3d29de1c3fdd67b16eed4 Reviewed-on: https://chromium-review.googlesource.com/753521 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jeff Gilbert 8f8edd6e 2017-10-31T14:26:30 attachmentsHaveSameDimensions should not compare depths. From: https://bugzilla.mozilla.org/show_bug.cgi?id=1372083 BUG=angleproject:2210 TEST=angle_end2end_tests Change-Id: I00539fb7e0bc9a21f90f5c87d7082c2a6b1ed907 Reviewed-on: https://chromium-review.googlesource.com/747814 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez cda6af19 2017-10-30T19:20:37 Split pixelBuffer from pack/unpack state This will refactor will help use packed enums for buffer targets. BUG=angleproject:2169 Change-Id: Ie7ed3e105f89457c67027e6598d7e29503ad355c Reviewed-on: https://chromium-review.googlesource.com/745181 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 29a20992 2017-11-06T18:23:16 Add back dirty bits for pack / unpack buffer binding BUG=angleproject:2169 Change-Id: I8cee9e1c7565d90022216d62b45f0eec5bc51f14 Reviewed-on: https://chromium-review.googlesource.com/755461 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 7af0de52 2017-11-06T17:09:33 Rename UniformLinker.cpp/h to ProgramLinkedResources. A more general name for a file that will house a collection of pogram variable related linking code. BUG=angleproject:2208 Change-Id: I82710f6abadd2df58fb58a3c4179989fe956e7e4 Reviewed-on: https://chromium-review.googlesource.com/755858 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ef7fb388 2017-11-07T16:33:49 Size const unsized arrays without an initializer The array size for unsized arrays needs to be sanitized in all cases, since subsequent checks on array indexing depend on all arrays being sized. BUG=chromium:781729 TEST=angle_unittests Change-Id: I3af6c08bb249a19f7c2ef169c877a2b863eb31d3 Reviewed-on: https://chromium-review.googlesource.com/757101 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 1734e171 2017-10-27T15:30:27 Only store innermost array offset in VariableLocation Separate entries will be generated for each innermost array of arrays of arrays in the variable tables. Because of this VariableLocation actually only needs to store the innermost array index. BUG=angleproject:2125 TEST=angle_end2end_tests Change-Id: Id1ee35b3cecfc011d96b58e43cf0b1cccbfed408 Reviewed-on: https://chromium-review.googlesource.com/741742 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang fb05264b 2017-10-24T13:42:09 Disallow null pixel data for TexSubImage that have non-zero size. BUG=angleproject:2055 Change-Id: I4c338691776c6d807333c169ed876d686188a97c Reviewed-on: https://chromium-review.googlesource.com/735786 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill c9727f31 2017-11-07T12:37:07 Pass InterfaceBlockLinker to ProgramImpl::link. This change is in preparation for moving the linking logic to the Implementation. Introduces a ProgramLinkedResources class that is passed into the Impl and holds linking-related info such as the UBOs, Varyings, etc. BUG=angleproject:2208 Change-Id: I2ef0824b54bfb462c79d003bffe34e9cfad60d8a Reviewed-on: https://chromium-review.googlesource.com/746204 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho d80f2944 2017-11-06T12:44:45 Struct definition not allowed as function parameter type Struct definitions are not allowed as a function parameter type now. This is specified in ESSL 3.00.6 section 12.10. ESSL 3.00.6 section 6.1.1 contradicts this, but that seems like a mistake, it's been fixed in subsequent spec versions. BUG=angleproject:2225 TEST=angle_unittests Change-Id: I6b97d120c440f0c0a45d31bbfaf292fb497160ce Reviewed-on: https://chromium-review.googlesource.com/754606 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 977abce7 2017-11-07T08:03:19 Refactor interface block linking. This moves the logic for interface block linking. The new design is intended to be flexible enough to be passed into a back-end call to ProgramImpl::link. Then, the Impl object can be responsible for both filtering out unreferenced interface blocks as well as having access to the linked interface block information. A future change will pass the InterfaceBlockLinker objects (or objects when dealing with ES 3.1 and Shader Storage Blocks) to the Impl. This will help fix a D3D11 back-end bug where we would need acess to the Shader objects to finish a deferred uniform block link. This should also potentially make it easier for the back-ends to determine Shader Storage Block size and properties without defining new Impl methods. BUG=angleproject:2208 Change-Id: Ic5244a808dba44ba1a8c08d9ee701952034d2b18 Reviewed-on: https://chromium-review.googlesource.com/746203 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho bd3cd506 2017-11-03T15:48:52 Clean up HLSL constructor output Split generating HLSL struct constructors from generating built-in type constructors, as these didn't have much in common. Struct constructors are now only generated when they are needed, as opposed to before, when they were generated on any use of a struct. This changes built-in constructor naming to include "_ctor" and gets rid of having special built-in type names just for constructors. This will make it easier to do changes to constructor output, for example to add constructors for structs in std140 layout. This might be needed to implement SSBOs efficiently. This includes one bug fix for writing out struct declarations for varyings. Also improves const-correctness of accessing structs through TType in general. BUG=angleproject:2218 TEST=angle_unittests, angle_end2end_tests Change-Id: If865fb56f86486b9c4a2c31e016ea16427f4a5fa Reviewed-on: https://chromium-review.googlesource.com/753883 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 5b09d90d 2017-11-06T12:06:24 Skip RedefineBufferInUse Vulkan test on Win/Intel. Also cleans up GenerateWorkarounds a bit for D3D11. BUG=angleproject:2221 Change-Id: I01667f850051045006d3439406aac3f4d094a374 Reviewed-on: https://chromium-review.googlesource.com/754915 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang a579ded1 2017-11-06T10:45:45 Extend BGRA8 glGetInternalformativ workaround to ES drivers. Some ES drivers also generate INVALID_ENUM errors when querying this format, particuarly on linux Mesa+nouveau. BUG=angleproject:2219 Change-Id: I7b9cf9b003a0125fabdda63038b4c8941710e1db Reviewed-on: https://chromium-review.googlesource.com/754329 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 25858166 2017-11-06T11:25:58 Skip several multiview tests on Windows NVIDIA after P400 upgrade. BUG=angleproject:2228 Change-Id: If1ba74973e0c116e17de8ab77de712e281233d04 Reviewed-on: https://chromium-review.googlesource.com/753795 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jeff Gilbert 5e5438fe 2017-10-31T14:44:06 Make operator bool() explicit, and remove explicit from move ctors. Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1371190 BUG=angleproject:2211 Change-Id: I10b866728a844668de6373c3a0968ea4e8256ff7 Reviewed-on: https://chromium-review.googlesource.com/747841 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jeff Gilbert 20c285ec 2017-10-31T19:01:09 callClearTwiceOnSmallTarget is needed for all sizes. Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1325733 BUG=angleproject:2214 Change-Id: I6837a0fbf0bbbd0877f333f0625729445a5999aa Reviewed-on: https://chromium-review.googlesource.com/748320 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1f0b468c 2017-11-05T19:56:28 StateManagerGL: Fix reserved indexed buffer count. We were reserving the count of shader resource limits instead of API- side binding limits. This fixes a broken dEQP test that was only showing up in some device configs. Also add an ASSERT. See: dEQP-GLES31.functional.layout_binding.ubo.fragment_binding_max_array BUG=angleproject:1920 Change-Id: I993ebc7993cc3cc78e90f74e097c0bbab9d03909 Reviewed-on: https://chromium-review.googlesource.com/754721 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ebb1ea2d 2017-11-05T15:23:45 Fix dEQP test expectations. These were broken in 1f4d68d because of a lack of test expectation. Also narrow the expectations to the Quadro P400. Also add a new GLES3 OpenGL expectation. Note that putting in a certain configs breaks the GPU test expectations logic on Android: I 20.617s list_tests(01000be22172ac54) Fail to identify GPU I 20.617s list_tests(01000be22172ac54) [ CRASHED ] BUG=angleproject:2222 Change-Id: I783c5e36414a201df64b21c6b7cf8410b2260534 Reviewed-on: https://chromium-review.googlesource.com/754591 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Kenneth Russell 1f4d68db 2017-11-03T23:33:06 Suppress dEQP test failures on Quadro P400. BUG=angleproject:2222 TBR=jmadill@chromium.org NOTRY=true Change-Id: Iec2a6b63920e026e78a3f8db58dcf84bb8f5040d Reviewed-on: https://chromium-review.googlesource.com/754344 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Olli Etuaho 2ef23e2d 2017-11-01T16:39:11 Fix writing uniform block maps to HLSL output HLSL output maps structs in std140 uniform blocks to a different layout in order to eliminate padding. The padding may have been inserted to comply with std140 packing rules. There used to be two issues in writing the maps: Sometimes the same map could be written multiple times, and the maps were not being written for uniform blocks with instance names. Rewrite how the uniform buffer struct maps get generated so that the code works correctly. Instead of flagging accesses, structs inside uniform blocks are gathered from uniform block declarations. When accesses to structs in uniform blocks are written out in OutputHLSL, it's checked whether a mapped struct needs to be used instead of the original one. This code could still be optimized further by limiting mapped structs generation to those ones that really need to be used. This is left to be done later. BUG=angleproject:2084 TEST=angle_end2end_tests Change-Id: Iee24b3ef15847d2af64554ac74b8e4be5060d18c Reviewed-on: https://chromium-review.googlesource.com/751506 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho d255123c 2017-10-26T20:03:33 Store shader interface variables as per query spec GLES 3.1 section 7.3.1.1 specifies how active variable entries should be generated and how active variables are named. The specs for program interface variable queries are built on top of this section. ANGLE has already followed this spec for the most part for generating variable lists in ProgramState, but now we also follow the naming spec for arrays and include [0] at the end of the stored name. This will make implementing arrays of arrays more straightforward. Most logic for variable queries will just keep working as is when arrays of arrays are added instead of needing more complex logic for handling array indexing. BUG=angleproject:2125 TEST=angle_end2end_tests Change-Id: I3acd14253153e10bc312114b0303065da2efb506 Reviewed-on: https://chromium-review.googlesource.com/739826 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill c67323a9 2017-11-02T23:11:41 Squash State dirty bits to below 64. This will dramatically speed up performance on 64-bit systems due to the efficiency of angle::BitSet64. Improves performance of the GL back-end on benchmarks quite a bit. Squashes the Pack and Unpack states together. Also moves the current value dirty bits to a single dirty bit, with a separate set for each attribute. Also squashes a multisample dirty bit. Also fixes an incorrect dirty bit in StateManagerGL. We may want to implement a semi-fast version of BitSet64 for 32-bit systems if we find performance is not satisfactory. BUG=angleproject:2188 Change-Id: I4616782bf75413252ede3e3ac752b9ccdb9aab49 Reviewed-on: https://chromium-review.googlesource.com/722423 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1d7be50a 2017-10-29T18:06:50 Vulkan: Upgrade RGB8 textures to RGBA8. It's unlikely any real hardware supports this format. Hack in a fixed fallback format for RGB8. We could consider implementing conditional support by checking the VkPhysicalDevice properties. This extends the Vulkan format support info in the RendererVk class to distinguish between a Buffer and Texture format. This is closely related to how Vulkan has separate format support bits for Linear Textures, Optimal Textures, and Buffers. We probably won't need to keep separate caps for Linear/Optimal, but it makes sense for Buffers to eventually use the same format tables. BUG=angleproject:2207 Change-Id: I8d427a99db15b314b13dd99f31aa1ac5055f0881 Reviewed-on: https://chromium-review.googlesource.com/742376 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 7b62cf97 2017-11-02T15:20:49 Refactor TextureFormatMap to store an array. std::map lookups are already showing up as a hot spot during some profile trace analysis. We can elimintate these by only doing a single switch at the entry point level to convert the GL internal format to an internal identifier or type info pointer. This change doesn't completely fix the hot spot, since now we are doing multiple switch statements, but it does remove the std::map storage in TextureCapsMap. It replaces it with a flat std::array indexed by angle::Format::ID, and gives us the option in the future to eliminate all by one switch statement. This should allow for a faster texture caps implementation in Vulkan. This also fixes the missing ANGLE format entries for ETC1 compressed formats. BUG=angleproject:2207 Change-Id: I74ea2082e582a6790d5fde90e33246a618a2da0e Reviewed-on: https://chromium-review.googlesource.com/742375 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 0741c0f1 2017-11-02T12:57:58 Add missing reset to GL multi-view dirty bits. This missing clear was costing quite a bit of performance on any use case that called for a lot of state changes. BUG=angleproject:2188 Change-Id: I98fa6c21728c1655fa9e1019ddc10ccfbdb594d8 Reviewed-on: https://chromium-review.googlesource.com/722422 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a59fc19f 2017-11-02T12:57:58 Use active textures mask with robust init. This should speed up clearUnclearedActiveTextures considerably. It was showing up as a hotspot when running the aquarium demo with the passthrough command decoder. Also rename the complete textures mask in gl::State to an active textures mask, since it includes incomplete textures. BUG=angleproject:2188 Change-Id: Idf020fc49c1e74f17a8005c3b88516829767b84c Reviewed-on: https://chromium-review.googlesource.com/722421 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6a89d227 2017-11-02T11:59:51 Vulkan: Refactor format table. This moves the Vulkan format table to dynamically generated, but keeps it easily indexed. Because Vulkan format support is not able to be fully determined until runtime, we'll need a dynamic way to build the table. The most straight-forward way seems to be to keep a copy of the full table in the Renderer. Initializing it once at startup makes it a bit slower to init, but saves us from any threading shenanigans with lazy init when (and if) we ever support multi- threaded Contexts. BUG=angleproject:2207 Change-Id: Ib1ac879daa562c7ad1a965390be401fa2314e42c Reviewed-on: https://chromium-review.googlesource.com/742374 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho d10cf69e 2017-11-02T11:06:14 Remove repeated "success" check from compileTreeImpl This refactoring simplifies the compilation code by putting AST checks and simplification into a separate function. This function will immediately return false when an error is encountered. This is easier to maintain than repeated checking of a "success" boolean. BUG=angleproject:2068 TEST=WebGL conformance tests, angle_unittests, angle_end2end_tests Change-Id: I1ae1c8def3625ada1482104a6babe605405229ef Reviewed-on: https://chromium-review.googlesource.com/750085 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
jchen10 58f67be0 2017-10-27T08:59:27 ES31 program query: support AtomicCounterBuffer and UniformBlock Calculates atomic counter buffer's shader reference according to its child counters. Merges GL_UNIFORM_BLOCK_* queries to GL_*. Refreshes deqp_gles31_test_expectations. BUG=angleproject:1920 TEST=angle_end2end_tests:ProgramInterfaceTest* dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv dEQP-GLES31.functional.layout_binding.ubo.* Change-Id: Ia23ddfef5f5dd7e15628f4c259273e1c01c14d80 Reviewed-on: https://chromium-review.googlesource.com/715436 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill a8b73ed0 2017-11-02T09:22:29 Add a meta-script to run code generators. This script calls all the various GL and back-end python scripts to generate our internal format tables and entry points, etc. It uses a GYP-like scheme of inputs/outputs to check modified time before running the generators. It also will automatically call 'git cl format' if any generator was called. Also updates the copyright in a couple of touched files. BUG=angleproject:2207 Change-Id: I4187a7622accc1c97a8d779b8f87fe00b74855ea Reviewed-on: https://chromium-review.googlesource.com/742372 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5ca5c65c 2017-10-27T17:29:54 Pass offsets to base validation for CompressedSubTexImage3D. BUG=angleproject:2216 Change-Id: I54716fe7ba08a19d5f4c3287701cffc650adb2d8 Reviewed-on: https://chromium-review.googlesource.com/742504 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill e1f3ad4d 2017-10-28T23:00:42 Vulkan: Add vk::GetImpl helper. Using reflection helpers, we can avoid having to pass the return type to the GetImpl method. BUG=angleproject:2200 Change-Id: Id160fbdf0ea8b3de2f219d3cc92394c678189a48 Reviewed-on: https://chromium-review.googlesource.com/742371 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 7bd16666 2017-10-28T19:40:50 Vulkan: Allow in-flight Framebuffer changes. This allows the app to alter Framebuffer attachments while there are existing command buffers using the resources and attachments. BUG=angleproject:2200 Change-Id: I3298dafef5e3bd2c6efda8e8a32a6cf7febc13dc Reviewed-on: https://chromium-review.googlesource.com/742370 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 640d597d 2017-11-02T10:37:31 Add missing check in Compiler Further AST traversals should not be run in case the expression complexity check failed and set success=false. Otherwise traversal can result in stack overflow. BUG=chromium:780545 TEST=WebGL conformance tests Change-Id: Icfde8c051038c691563e199a6d3a17b1e8e5ebf5 Reviewed-on: https://chromium-review.googlesource.com/750781 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 4ef25033 2017-11-01T09:36:51 Refactor StaticallyUsed Gather vertexStaticUse, fragmentStaticUse, and computeStaticUse into a new mixin class StaticallyUsed, from which various program resources can inherit to track their shader references. BUG=angleproject:1920 Change-Id: Ibb3c0fe035bb8789aad65dbdfefaf7cb17b64c4e Reviewed-on: https://chromium-review.googlesource.com/748317 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 2348e21a 2017-09-27T17:46:25 Make GL_OES_get_program_binary enableable. BUG=angleproject:1523 Change-Id: Iad002e8cbc354b9a9d08a30ba57a293f889ecffb Reviewed-on: https://chromium-review.googlesource.com/688640 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov b8d2664f 2017-10-27T18:14:14 Run angle_perftests on GLES backend Adds OPENGLES_NULL configuration and selects between OPENGL and OPENGLES based on whether building for Android. Also 2 small changes to get the newly enabled tests to pass on N5X: 1. Require GL_EXT_texture_storage in TexSubImage test 2. Limit numVertexUniforms and numFragmentUniforms to 64 in MatrixUniforms test BUG=675997 Change-Id: I5439e5fb7e93b3a928f12594761115d56f60d81b Reviewed-on: https://chromium-review.googlesource.com/748522 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 526543cb 2017-10-28T10:59:16 Vulkan: Fix deleting in-use Framebuffer. BUG=angleproject:2200 Change-Id: I13d661b690a6a9e67b3e8a27f9d7bd4126dca87f Reviewed-on: https://chromium-review.googlesource.com/742749 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 86f8116b 2017-10-30T15:10:45 Make compressed texture format extensions enableable. Fix allowing CompressedTexSubImage calls on ETC1 texture types (disallowed in the extension spec). BUG=angleproject:1523 Change-Id: Ic90175ff4626da0170b6c94f204a9d31fd0154a7 Reviewed-on: https://chromium-review.googlesource.com/744443 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1b038241 2017-11-01T15:14:36 Vulkan: Support Texture redefinition. Because initializing the texture can queue a copy from a staging vk::Image, we must ensure we're not in a render pass. To make this easier we move the current render pass tracking into the RendererVk from the FramebufferVk class. (Note: in the future we will have deferred command submission and this will become unnecessary.) BUG=angleproject:2200 Change-Id: Ide8d4d70b50efbd79bbfa7006ad75cbc57cdf4c7 Reviewed-on: https://chromium-review.googlesource.com/741549 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 91ab54b6 2017-10-30T15:12:42 Make ANGLE_texture_usage enableable. BUG=angleproject:1523 Change-Id: I4e6e4ec6ae7cfb616869373b62dc455d0c5c8c09 Reviewed-on: https://chromium-review.googlesource.com/744444 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 8724e254 2017-10-28T10:44:40 Vulkan: Fix re-creating buffer storage. BUG=angleproject:2200 Change-Id: Id60e857517cce9c0bfa272e4e6a399f236e395f7 Reviewed-on: https://chromium-review.googlesource.com/741548 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 096f278e 2017-10-28T10:44:40 Introduce SimpleStateChangeTests. BUG=angleproject:2200 Change-Id: I5bf2305a6d98f16c3c2677d1c81b8285fa7ba3f9 Reviewed-on: https://chromium-review.googlesource.com/737559 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 25301b60 2017-10-28T20:59:31 Remove WrappedObject::retain. With resources being mostly deleted by the Renderer along with a serial number, the retain move semantics weren't very useful. Refactoring change only. BUG=angleproject:2200 Change-Id: I7b72b1decfa7604cdd767e7d9b5213b9383eb240 Reviewed-on: https://chromium-review.googlesource.com/742369 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 4751aabb 2017-10-30T15:14:52 Fix minor issues with ANGLE_texture_rectangle. * Some texture parameters were not initialized correctly. * Binding points were not created for enableable texture extensions. BUG=angleproject:1650 BUG=angleproject:1523 Change-Id: Id3436fe1dbb4069eafad97e722ac519a6b59e5db Reviewed-on: https://chromium-review.googlesource.com/744446 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez d78e33a8 2017-10-30T12:33:52 preprocessor: Fix lineno overflow on line continuations BUG=chromium:774807 Change-Id: I4b3fbee31683f411810080572cfff0f8307b93bf Reviewed-on: https://chromium-review.googlesource.com/744183 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 3590555d 2017-11-01T10:27:09 Revert BGRA renderability change for ES drivers. While these should be supported on ES drivers, ANGLE's texture format caps generation does not correctly differentiate between renderbuffer and framebuffer attachment formats and leads to assertion failures. BUG=779346 BUG=angleproject:1523 Change-Id: I9a49abdf52ae8b1ef91f88a4434ff8c3f95b025b Reviewed-on: https://chromium-review.googlesource.com/748888 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 63458a3e 2017-10-30T15:16:53 CopyTextureCHROMIUM: Validate the texture target enums first. INVALID_ENUM should be generated before any INVALID_VALUE errors based on the texture state. BUG=angleproject:1932 Change-Id: If74440602d56b1a86fa24ff87c38d2b0dec2bfb2 Reviewed-on: https://chromium-review.googlesource.com/744448 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 206a58d1 2017-10-29T11:11:29 Slight reformat to ANGLE format table. Refactoring change only. BUG=angleproject:2207 Change-Id: Id05972d2084f3254745cbf55d1b7577306020466 Reviewed-on: https://chromium-review.googlesource.com/742373 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill e88ec8ee 2017-10-31T17:18:14 Vulkan: Refactor GarbageObject. Instead of allocating a small bundle for deferred deletion, store a small triple of {Serial,VkHandle,HandleType}. The HandleType can be used in a generic way to release the VkHandle, without needing to store a pointer and use a virtual call. BUG=angleproject:2200 Change-Id: I30925c2f50fd11dafb1b986ced7d279a7dde827b Reviewed-on: https://chromium-review.googlesource.com/741163 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho c1f14fbe 2017-10-28T19:17:23 Remove empty switch statements from translated shaders The native HLSL compiler does not accept switch statements with an empty statement list. The simplest way to accommodate this is to simply remove them from the AST after parsing and some initial pruning. This is done by the new RemoveEmptySwitchStatements traverser. It preserves init statements of switch statements in case they have side effects. So for example switch(++i) {} gets translated to ++i; BUG=angleproject:2206 TEST=angle_end2end_tests Change-Id: I550a3c9b010a3566016bdfd93344ac30fd860604 Reviewed-on: https://chromium-review.googlesource.com/742922 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho b8ee9dd3 2017-10-30T12:43:27 Validate empty statements in switch statements Even an empty statement like ";" is a statement according to the grammar. They should not be allowed in switch statements before the first case statement, but on the other hand a switch statement that has just an empty statement after the last statement is valid. Now the parser creates AST nodes from empty statements so that we can validate switch statements correctly. However, they are pruned shortly after parsing completes in PruneNoOps, so they don't affect further processing of the AST. BUG=angleproject:2181 TEST=angle_unittests Change-Id: I1085056fc34b146142546fc5f2b7f3124b910ab9 Reviewed-on: https://chromium-review.googlesource.com/743621 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jeff Gilbert 1b605ee3 2017-10-30T18:41:46 Use "python2" instead of undifferentiated "python". BUG=angleproject:2209 Change-Id: I5a7a667d90160fe68a9dcf7bff5fc2dc62795270 Reviewed-on: https://chromium-review.googlesource.com/745861 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2c5c41f9 2017-10-31T10:58:09 Skip WebGLCompatibilityTest.InvalidTextureFormat on Ozone. Attempting to figure out why the Linux Ozone (Intel) is failing. BUG=779346 Change-Id: I94bb50f0b7746c90fe31ea1a9107319864d85438 Reviewed-on: https://chromium-review.googlesource.com/746372 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jiang d922775b 2017-10-19T16:23:07 Clean up passed end2end tests on Intel Windows platform Intel driver has released its latest versions, many intel driver bugs are fixed. This patch cleans up end2end test cases skipped on windows 10 and windows 7. The test environment is as follows, Hardware: Skylake(HD 530), Kabylake(HD 630) Driver version: 4815, 4821 OS: windows 10(15063), windows 7. BUG=angleproject:2205 Change-Id: Iae14763aa86a572da1221e9ea35b28da2561d3b0 Reviewed-on: https://chromium-review.googlesource.com/729549 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 6bb4f501 2017-10-31T14:54:00 Fix MSVS 2015 compilation of tests "GLenum" needs to be prefixed to disambiguate between global GLenum and sh::GLenum. TEST=compile with MSVS 2015 Change-Id: I31a13c8d410bf32c4d5114c03f4b119aae256778 Reviewed-on: https://chromium-review.googlesource.com/746761 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 722bfb51 2017-10-26T17:00:11 Fix detecting duplicate field names in structures Previously field names that were listed in the first declarator list inside a struct declaration were not checked against each other. BUG=angleproject:2204 TEST=angle_unittests Change-Id: Ibf821d45556f6dfe0223dae673644f6795daf4cb Reviewed-on: https://chromium-review.googlesource.com/739825 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 9088557f 2017-10-30T20:43:38 D3D11: Fix dirty current value updates. Fixes a bug where subsequent updates to a "current value" (disabled) Vertex Attribute would not trigger the state change to D3D11 such that the updated buffer handle would be applied to D3D11. Also adds a test to cover the problem case. This bug was introduced in 2bc947334cad: "D3D11: Minor optimizations to vertex attribute application." BUG=chromium:779675 BUG=angleproject:1155 Change-Id: Ib0447231fb6969e7dad1e1e576315cab91acf4f4 Reviewed-on: https://chromium-review.googlesource.com/744924 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang d84a00b9 2017-10-27T17:27:26 Make GL_OES_rgb8_rgba8 enableable. Allow unsized RGB/UNSIGNED_BYTE without the rgb8rgba8 extension. BUG=angleproject:1523 Change-Id: Ic7b4236c7b8389952b093719f26840ea2bbd01bf Reviewed-on: https://chromium-review.googlesource.com/742501 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 163965d5 2017-10-11T11:38:55 BUILD.gn: prepare dEQP test support on Mac BUG=angleproject:1569 Change-Id: I703f4739726c849950ba103049fa39498a4ff1df Reviewed-on: https://chromium-review.googlesource.com/744361 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill e7c5f4f0 2017-10-30T07:16:43 Fix compilation on mips devices. We need to include stddef explicity for size_t. BUG=angleproject:2167 Change-Id: I66e75b8d29e94aa9b8427e39827a0267649bb0ec Reviewed-on: https://chromium-review.googlesource.com/743702 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 660b28cc 2017-10-30T12:58:56 Disable WebGL texture_rg tests on all OpenGL ES. BUG=angleproject:1523 BUG=779346 Change-Id: I019597bea3f17f178d584b8a6f070d0640511781 Reviewed-on: https://chromium-review.googlesource.com/743852 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 55bc905f 2017-10-25T17:33:06 Always consider type arrayness for atomic counters Atomic counter arrays may be declared with various different syntax - the array size may be declared as a part of the type or as a part of the declarator. Take this into account when determining whether atomic counter offsets overlap. BUG=angleproject:1729 TEST=angle_unittests Change-Id: I7435ded9401c4c1caab22c22d83fd2ad301df768 Reviewed-on: https://chromium-review.googlesource.com/738140 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 87c35883 2017-10-19T15:19:38 Prune no-op statements with a single traverser We put pruning literal statements and pruning empty declarations in the same traverser, as some of the required logic is the same. This pruning of no-ops is always done as one of the first processing steps after parsing, so further processing of the AST is simpler. Since we now prune pure literals before removing no-op cases from the end of switch statements, we also don't need any sort of special handling for switch statements in pruning pure literals. BUG=angleproject:2181 TEST=angle_unittests Change-Id: I2d86efaeb80baab63ac3cc803f3fd9e7ec02908a Reviewed-on: https://chromium-review.googlesource.com/727803 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiawei Shao 65c56dd9 2017-10-13T16:18:57 Fix incorrect hashing on built-in interface block fields This patch intends to fix an error in translating built-in interface block fields. Any field of a built-in interface block should be kept and cannot be hashed. This patch can fix a bug in handling the interface block gl_in when we try to output the translated geometry shader string. BUG=angleproject:1941 TEST=angle_unittest Change-Id: Iebfba4b6a30c8942ed0f66131ad30d12ad96c62a Reviewed-on: https://chromium-review.googlesource.com/719454 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Bryan Bernhart (Intel Americas Inc) 2a35741b 2017-09-05T10:42:47 WebGLCompatibility: Disable ES format extensions by default. Prevents format validation errors with WebGL context. BUG=angleproject:1523 Change-Id: Iddc525eeb467de0139e166dad0893f3bea3ef35f Reviewed-on: https://chromium-review.googlesource.com/650807 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez aa9c396b 2017-10-27T14:54:39 Revert "BUILD.gn: prepare dEQP test support on Mac" This reverts commit 4b8b650c8e4586c14466faa9527175755860cd6b. Reason for revert: causes build failure on the Mac dEQP builder. Original change's description: > BUILD.gn: prepare dEQP test support on Mac > > BUG=angleproject:1569 > > Change-Id: I77aa55d28b884fa648ff52aedddf3a23fe6e4a8c > Reviewed-on: https://chromium-review.googlesource.com/713194 > Commit-Queue: Corentin Wallez <cwallez@chromium.org> > Reviewed-by: Frank Henigman <fjhenigman@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=fjhenigman@chromium.org,jmadill@chromium.org,cwallez@chromium.org Change-Id: Idc08cf12294505600890d1c6e43f62c0261631a5 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:1569 Reviewed-on: https://chromium-review.googlesource.com/741881 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Qin Jiajia ca68d988 2017-09-18T16:41:56 ES31: Add std430 support for OpenGL backend BUG=angleproject:1920 TEST=angle_unittests Change-Id: Ie8e171abec053c2c5dca93d6e79db534f74520e7 Reviewed-on: https://chromium-review.googlesource.com/737532 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 4ddae359 2017-10-26T16:20:18 Use array_specifier in struct declarator parsing This will make implementing arrays of arrays simpler for struct members as well. Similar refactoring was already done for other types of array declarations. BUG=angleproject:2125 TEST=angle_unittests Change-Id: I0483c3a7c006d37090c7c972cb3d7763d3909c8f Reviewed-on: https://chromium-review.googlesource.com/739824 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 9cd7163e 2017-10-26T14:43:20 Fix setting array sizes on a constructor Take any array sizes that have been explicitly specified in the shader text into account, and only set the ones that are unsized according to the arguments. BUG=angleproject:2125 TEST=angle_unittests Change-Id: I37d08a86c25f7cd4f3ce5689f2c9fad444e7d5ad Reviewed-on: https://chromium-review.googlesource.com/738141 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 4b8b650c 2017-10-11T11:38:55 BUILD.gn: prepare dEQP test support on Mac BUG=angleproject:1569 Change-Id: I77aa55d28b884fa648ff52aedddf3a23fe6e4a8c Reviewed-on: https://chromium-review.googlesource.com/713194 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 454c34cb 2017-10-25T16:35:56 Accept valid geometry shader inputs regardless of syntax Before, only the following style of declarations were accepted: in float f[]; Now also these styles are accepted: in float[] f; in float f[], g[]; BUG=angleproject:2201 TEST=angle_unittests Change-Id: I0af7d355a5e06a67ceef2d6bd69af7e23c180a04 Reviewed-on: https://chromium-review.googlesource.com/738234 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart (Intel Americas Inc) 335d8bf2 2017-10-23T15:41:43 WebGLCompatibility: Fix shader validation using define macros. Backslash as line-continutation character is not permitted to be used within a pre-processor directive for WebGL1. BUG=angleproject:2093 Change-Id: I649a914b9bc544a3e4f9e7eff23b95a62c9b7008 Reviewed-on: https://chromium-review.googlesource.com/734218 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov c4f1dd83 2017-10-25T17:02:29 Use angle::BitSetIterator optimizations on arm64 as well Previously were enabled only on x86_64. Also change from using target_cpu to current_cpu, as the doc recommends. BUG=angleproject:1814 Change-Id: Ia7e8e930c76aab5cfb47b75e0ec78902ab313237 Reviewed-on: https://chromium-review.googlesource.com/737438 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill b79e7bb6 2017-10-24T13:55:50 Vulkan: Implement simple render-to-texture. This was mostly working already, just needed to set up a few entry points. BUG=angleproject:2200 Change-Id: I9c13d6d4dd42f23c69a58e42e07e3e28877671a1 Reviewed-on: https://chromium-review.googlesource.com/734237 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Xinghua Cao 971f8508 2017-10-17T13:01:24 Implement get compute work group size for glGetProgramiv BUG=angleproject:2187 TEST=dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv Change-Id: Ic09153ffccfb207e37ad70cf7e14714be987e7e1 Reviewed-on: https://chromium-review.googlesource.com/722178 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 55bde916 2017-10-25T13:41:13 Parse array specifier with a separate grammar rule This brings the grammar closer to the GLSL ES 3.10 spec. Some corner cases related to handling unsized arrays are fixed. BUG=angleproject:2125 TEST=angle_unittests, angle_end2end_tests Change-Id: I9bcf87b17b97da0e2ec2954d32037c272fde3080 Reviewed-on: https://chromium-review.googlesource.com/738233 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang f7480ad2 2017-10-24T11:46:02 D3D11 FL 10: Create cubemap SRVs as cube maps instead of 2D arrays. The creation of these SRVs would fail and spew D3D11 runtime errors. BUG=angleproject:2171 Change-Id: I80b6390822f74128b3443db7b6d48c4d318ec34d Reviewed-on: https://chromium-review.googlesource.com/735745 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jiawei Shao 3d40488b 2017-10-16T13:30:48 Split varyings into input and output varyings in renderer This patch intends to split all vector<Varying> into two vectors to store input and output varyings separately in the renderer. This patch is a base of supporting program linking with geometry shader. Unlike the vertex shaders (their outputs are varyings) and fragment shaders (their inputs are varyings), the inputs and outputs of geometry shaders are all varyings, so we need two vector<Varying> to store them correctly. BUG=angleproject:1941 TEST=angle_end2end_tests Change-Id: Ic4b8343f2fc3df87b764c45f2ea7810e565f7bee Reviewed-on: https://chromium-review.googlesource.com/720617 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kai Ninomiya d4556dfc 2017-09-27T16:45:22 Reland 'Adds TUnorderedMap and uses it for tLevel in TSymbolTableLevel.' Reland of https://crrev.com/c/526672 Bug: 697758 Change-Id: I410e4774c4ad85595eb8789603901878b209c857 Reviewed-on: https://chromium-review.googlesource.com/688296 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Jamie Madill 54118be6 2017-10-24T09:20:14 Add script to generate GN/MSVS projects. BUG=angleproject:1569 Change-Id: I0e47720d17cd1a29603e471482cac31d4c281ee5 Reviewed-on: https://chromium-review.googlesource.com/735059 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 8e4b355b 2017-08-30T14:20:58 ES31: Implement Geometry Shader inputs and outputs This patch intends to implement Geometry Shader inputs and outputs in ANGLE GLSL compiler. 1. Only accept arrays as the inputs of a Geometry Shader. 2. Allow unsized arrays as the inputs of a Geometry Shader after a valid input primitive declaration and assign size to them. 3. Implement Geometry Shader outputs. 4. Allow Geometry Shader inputs and outputs using interpolation qualifiers ('flat', 'smooth', 'centroid'). 5. Allow using 'location' layout qualifier on Geometry Shader inputs and outputs. BUG=angleproject:1941 TEST=angle_unittests Change-Id: Ia7e250277c61f45c8479437b567c2831ff26b433 Reviewed-on: https://chromium-review.googlesource.com/650211 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 73e4fde6 2017-10-24T11:09:38 Mention DEPOT_TOOLS_WIN_TOOLCHAIN=0 in DevSetup This is helpful for non-googlers. It wasn't previously mentioned on the page or other directly linked documentation. BUG=angleproject:1944 Change-Id: I9c1db2c3cc9ec8ff32c4ac22edac2a07412e56cb Reviewed-on: https://chromium-review.googlesource.com/735341 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 283c2194 2017-10-23T17:11:50 Support arrays of arrays in UseInterfaceBlockFields This can be tested more fully once parsing arrays of arrays will be supported. BUG=angleproject:2125 Change-Id: I89c8f33b8cca5d6f5aa3f20aab23dccac53a956f Reviewed-on: https://chromium-review.googlesource.com/733128 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho e7c2857d 2017-10-23T16:29:33 Clean up direct access of ShaderVariable::arraySize This change is pure refactoring. It's intended to help with adding support for arrays of arrays. BUG=angleproject:2125 TEST=angle_unittests Change-Id: I82881a98c3c476fd6666a551ce6be255ae0de4cf Reviewed-on: https://chromium-review.googlesource.com/733127 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 940c48b2 2017-10-23T23:25:17 Add rc.exe hook to DEPS. This is necessary to build Windows ANGLE with the hermetic Win SDK. BUG=angleproject:1569 Change-Id: Ic2c0aac6cab8d1a20f0bca8aea55418fe7defdc5 Reviewed-on: https://chromium-review.googlesource.com/734980 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 138cf5e0 2017-10-23T22:52:12 Roll chromium/src/build. Includes the new script to generate a Visual Studio "meta" solution. BUG=angleproject:1569 Change-Id: I6760b2fb26f588117cd310afc7f92e9b4571a89c Reviewed-on: https://chromium-review.googlesource.com/734709 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5547b384 2017-10-23T18:16:01 Vulkan: Implement simple static textures. After this change, the SimpleTexture2D sample mostly runs. BUG=angleproject:2167 Change-Id: Ie6d56f890b1aede329e11d1e987d0f8c17a2d0b4 Reviewed-on: https://chromium-review.googlesource.com/720072 Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Geoff Lang cc4ce4a2 2017-10-23T16:40:12 Don't initialize textures on SubImage calls if the whole image will be filled. BUG=angleproject:2107 BUG=angleproject:2196 Change-Id: I3e7e78bfc64f1683921af2e48fe20c7be0b85af3 Reviewed-on: https://chromium-review.googlesource.com/734228 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 815a6c9a 2017-10-21T14:33:04 Vulkan: Fix copyImage region parameters. In cases where we were reading back more than one pixel in ReadPixels, and in some cases for texture init, we weren't using the correct parameters to vkCmdCopyImage. This CL fixes both of those by using more correct copy regions, and fixing the row and depth pitch computation using vkGetImageSubresourceLayout. BUG=angleproject:2167 Change-Id: Ib70217ed4a17be6b4b1b8aeec9a8a6199d210d88 Reviewed-on: https://chromium-review.googlesource.com/732190 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 8df71735 2017-10-20T16:57:09 D3D9: Perform the MAD operation AFTER pre/unmultiply logic. The multiply/add uniforms are to mask the output of the shader based on the destination format. The pre/unmuliply logic should be performed on the source data without masking applied. TEST=conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html BUG=angleproject:2192 Change-Id: I6e5f29a7d56e18bd1a81ff56500edb4c6b55eb55 Reviewed-on: https://chromium-review.googlesource.com/730494 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 56ff3ce2 2017-10-20T16:52:42 D3D9: Implement the CPU-copy path for CopyTextureCHROMIUM. This path is hit for LUMA formats. Only copy from storage to image when the storage is renderable, otherwise it already has up-to-date data. D3D9 cannot sync storage to image without it being renderable. Commit the region after CPU copies to make sure everything is synchronized afterwards. TEST=conformance/textures/canvas/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html BUG=angleproject:2192 Change-Id: I74ff748bd051a52cf472ca7ff77f54dfb5ba65b9 Reviewed-on: https://chromium-review.googlesource.com/730493 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>