Log

Author Commit Date CI Message
Olli Etuaho 44861c48 2018-03-23T14:36:39 Clarify aliasing rules in CHROMIUM_bind_uniform_location The CHROMIUM_bind_uniform_location spec previously had some conflicting information on when uniform location aliasing was allowed. Now the section on uniform location aliasing makes it clear that aliasing locations of two statically used uniforms is an error. This guarantees compatibility between different compiler versions that may treat a different subset of uniforms as active, depending on optimizations. It follows the spirit of GLSL ES 3.00.6 spec section 12.46, that has similar rules for attributes. The implementation is fixed to correctly follow the spec. When flattening uniforms, static use is tracked separately from activeness. BUG=angleproject:2262 TEST=angle_end2end_tests Change-Id: I570fd384064aec66ef0380a53fa01ac5e43eec5a Reviewed-on: https://chromium-review.googlesource.com/978144 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang a571f28d 2018-03-26T11:09:37 Check result of D3D11 map operation in Blit11::copyAndConvert. BUG=825503 Change-Id: I407ded1970266bc4fa975850d5700544b9f17b4b Reviewed-on: https://chromium-review.googlesource.com/980693 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 4d549932 2018-03-22T17:32:10 Move ReplaceVariable to tree_util directory This was overlooked earlier when most AST transform related utilities were moved to tree_util. BUG=angleproject:2402 TEST=angle_unittests Change-Id: I17d3716a434f80a9316156ca019ce49aada5c249 Reviewed-on: https://chromium-review.googlesource.com/975881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 822a84b1 2018-03-23T12:30:18 Get builtin symbol info from the node in CollectVariables Since we now have a TVariable pointer in TIntermSymbol, we don't need to look up variables from the symbol table. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Id09610ccec5898eb56dcc5e9112e173edcf7ac97 Reviewed-on: https://chromium-review.googlesource.com/977828 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Yuly Novikov 26ed93d7 2018-03-23T20:06:17 Reduce number of uniforms in UniformsBenchmark perf test To fit Nexus 5 limit. BUG=angleproject:2431 Change-Id: I2184a28c19ecadb8d7f2e8ba682fc6c4e382210e Reviewed-on: https://chromium-review.googlesource.com/979154 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov ad4f9642 2018-02-08T17:58:46 Allow ANGLE libs to have arbitrary suffix. In order to work with tools which intercept EGL and GLES calls. BUG=angleproject:2343 Change-Id: I63aec7a56648dc4b3e7f4aff7f7d1608709ba118 Reviewed-on: https://chromium-review.googlesource.com/920652 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron e6a40d07 2018-03-22T10:30:57 Vulkan: Depth / stencil attachments bug fixes I found a couple of bugs trying to enable polygon offset render states. This is just pre-work to get to a better state. Bug:angleproject:2353 Change-Id: If6af949a09af1340e870afb627ae427d01c6e77c Reviewed-on: https://chromium-review.googlesource.com/975631 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 9fb23f61 2018-03-23T14:16:28 Increment ANGLE_SH_VERSION This was missing from change: "ShaderVariable: separate fields for staticUse and active" BUG=angleproject:2262 Change-Id: I521e9f9a536756d7d8163220c1d56885308272a1 Reviewed-on: https://chromium-review.googlesource.com/978203 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron 49cef9a5 2018-03-21T17:28:53 Vulkan: Support of A8 textures Bug:angleproject:2358 Change-Id: I56a86de7cc21dee00a95f1d054d2940262797ca7 Reviewed-on: https://chromium-review.googlesource.com/974305 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Jamie Madill d779f6a9 2018-03-23T01:44:33 D3D11: Refactor draw call functions. This allow for better code reuse for the Indirect draw calls. It also cleans up the InputLayoutCache to be only responsible for caching input layouts, and moves the logic for maintaining state into StateManager11. Bug: angleproject:2389 Change-Id: I84aae164bf1b94a394743cf58650adfdcfc2c17a Reviewed-on: https://chromium-review.googlesource.com/948796 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho a07b4213 2018-03-22T16:13:13 Move AST transformations to a subdirectory Move AST transformations to compiler/translator/tree_ops. BUG=angleproject:2409 TEST=angle_unittests Change-Id: I9c620e98707d22d005da6192fe7d1b4e8030aadd Reviewed-on: https://chromium-review.googlesource.com/975550 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 4ba4a82b 2018-03-19T11:28:48 Only refer to built-in function mangled names in lookup TFunction entries for built-ins don't need to store mangled names. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Ia88e8bfa5357719c98d725dc3d00885dd59c9f59 Reviewed-on: https://chromium-review.googlesource.com/973241 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Yuly Novikov 068e7030 2018-03-22T16:42:50 Make infra.cq to point to new Android configs. BUG=chromium:759301 BUG=chromium:731958 Change-Id: I1b714f0bc1b92bbcbe202cae56fa6999054cc878 Reviewed-on: https://chromium-review.googlesource.com/976552 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho 107c7247 2018-03-20T15:45:35 ShaderVariable: separate fields for staticUse and active Thus far the compiler has used the "staticUse" flag to mark variables that should have rather been marked "active", meaning that the code may actually execute in a way that accesses the variable. There's a clear definition for this use of the term "active" in the GLES 3.0.5 spec, section 2.12.6, and in GLES 3.1 section 7.3.1. Having separate fields for recording static use and "activeness" of a variable is the first step to fixing this. According to the spec, usually only active resources should be considered when checking use against max limits. Also, only active uniforms get assigned a location. libANGLE code now correctly checks the active flag rather than the static use flag in these cases. The static use field still mirrors the active field for now, since some code in Chromium also needs to be fixed to use the active field correctly before the two can diverge. After Chromium is fixed, we can fix ANGLE so that static use information is recorded earlier during compilation and will accurately reflect whether variables are statically used. Currently the compiler only records variables once some static use may already have been pruned from the AST. BUG=angleproject:2262 TEST=angle_unittests, angle_end2end_tests Change-Id: I025bb71361246ae00c911a1f8b66ec045f665f29 Reviewed-on: https://chromium-review.googlesource.com/970962 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho c26214de 2018-03-16T10:43:11 Move AST utilities to a subdirectory Move AST related utilities to compiler/translator/tree_util. BUG=angleproject:2409 TEST=angle_unittests Change-Id: I7567c2f6f2710292029263257c7ac26e2a144ac8 Reviewed-on: https://chromium-review.googlesource.com/966032 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 8b92c53b 2018-03-22T01:05:02 Skip EnableQueryExtensions test on Win/AMD/GL. This test seems to be causing device lost. Bug: angleproject:2423 Change-Id: If759aa6478df89d1cf5a5fd199a6065300c4c8ec Reviewed-on: https://chromium-review.googlesource.com/974888 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 3395c8b9 2018-03-21T15:56:59 Make infra.cq to point to new Mac configs. Change-Id: Id29e58d45665feffda2b1f5da6631ae22bdce744 BUG-chromium:815092 Reviewed-on: https://chromium-review.googlesource.com/974061 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov 9acf9120 2018-03-21T19:01:25 Revert "Skip TransformFeedbackLifetimeTest.DeletedBuffer on Win Intel GL" This reverts commit 3a46574594305af25676952825fcf2cdb849d680. Reason for revert: Win10 driver version was fixed Original change's description: > 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> TBR=ynovikov@chromium.org,jmadill@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: angleproject:2398 Change-Id: I5c147a46ad04570d25d04ff6218fde6a72a21ea6 Reviewed-on: https://chromium-review.googlesource.com/973642 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Luc Ferron 60284223 2018-03-20T16:01:44 Vulkan: Support of npot textures The bug was with the readPixels not using the rowPitch, and not really with the support of npot. Bug:angleproject:2413 Change-Id: I09c0d87768bc29d3beb452ae83996cd4d2b4a600 Reviewed-on: https://chromium-review.googlesource.com/971830 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Olli Etuaho 40b1c770 2018-03-19T10:29:37 Fix asserts related to writing nameless parameters in HLSL We rely on TSymbol::name() to generate names also for nameless parameters. Fix asserts to reflect this. BUG=chromium:823041 TEST=angle_unittests Change-Id: Ie9b8253a150e79965bf85d8a7f36643ada6c54cc Reviewed-on: https://chromium-review.googlesource.com/968242 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiawei Shao d2fa07e4 2018-03-15T09:20:25 ES31: Support queries on primitives generated by geometry shader This patch implements a new query target GL_PRIMITIVES_GENERATED_EXT for querying the number of primitives generated by geometry shader. BUG=angleproject:1941 TEST=dEQP-GLES31.functional.geometry_shading.query.primitives_generated* Change-Id: Icdc0d2d8be4ff4d589972eada2fa1f917d7bae4c Reviewed-on: https://chromium-review.googlesource.com/963793 Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 8574357f 2018-03-19T14:45:53 Share parameter arrays more between built-in functions The parameters of some built-ins are a subarray of the parameters of another built-in. In this kind of case they can point to the same parameters array, and just use a different parameter count. This shaves a few kilobytes from the binary size. BUG=angleproject:2267 TEST=angle_unittests Change-Id: Id166340b4bf5be966bf8c62ce6cd88e5409f647a Reviewed-on: https://chromium-review.googlesource.com/968601 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 115b2c4a 2018-03-15T17:46:29 Remove desktop GLSL builtins from symbol lookups Desktop GLSL builtins can be accessed through functions in BuiltIn_autogen.h. They don't need to be included in symbol table lookups. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I8ba188a0d2584353e34159c2732c9e2bd420c168 Reviewed-on: https://chromium-review.googlesource.com/964447 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Yuly Novikov b2c60b1a 2018-03-20T21:24:46 cq.cfg: equivalent_to to 100% for Android tryservers. This is moving all ANGLE Android tryservers to run on LUCI only. BUG=chromium:731958 BUG=chromium:759301 Change-Id: I302338b462f51c260afafc69aefff7bfdd89e87a Reviewed-on: https://chromium-review.googlesource.com/972610 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 40a945f2 2018-03-01T17:37:43 Rename vulkan_loader to libvulkan Also add a build argument to build it as a shared library. BUG=angleproject:2343 Change-Id: Ia590632b94d71b10d3ee64974fa4f5b4f00c3a70 Reviewed-on: https://chromium-review.googlesource.com/954403 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jiawei Shao 427071ea 2018-03-19T09:21:37 ES31: Add link validation on geometry shader interface block limits This patch adds link validation on the maximum number of active uniform blocks and shader storage blocks defined in the geometry shader. BUG=angleproject:1941 TEST=angle_end2end_tests Change-Id: Ieffc234981a3f32a569392786e8fa1c6623a7a23 Reviewed-on: https://chromium-review.googlesource.com/966491 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Lingfeng Yang a0648780 2018-03-12T14:45:25 GLES1: Revise entry points - Move the entry points common to GLES1/2 to GLES2 since GLES2 is the primary use case and we want to isolate the GLES1-only bits. - Update entry points with all the wanted extensions for Android. - Auto-generate GLES1-specific entry points and use them as a macro in Context.h. - Move all GLES1-specific renderer implementations to ContextGLES1.cpp + Fix getting pointer params in generate_entry_points.py BUG=angleproject:2306 Change-Id: If32bfd2b63657acecaec6adb10cabf39f06c4832 Reviewed-on: https://chromium-review.googlesource.com/959630 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>
Corentin Wallez d429ac56 2018-03-20T13:22:12 cq.cfg: equivalent_to to 100% for Mac tryservers. This is moving all ANGLE Mac tryservers to run on LUCI only. BUG=chromium:815092 Change-Id: I6d06fd881db9eb139dfc16c058d67396b321c183 Reviewed-on: https://chromium-review.googlesource.com/971342 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho b391ec40 2018-03-12T17:04:59 Generate code for looking up built-ins Instead of storing built-ins in a std::unordered_map, we now generate a series of switch statements using the hash value of the look-up string. This works similarly to earlier implementation of looking up unmangled built-ins. Those built-ins that need to be initialized at run-time are stored as member variables of TSymbolTable. This increases compiler init performance significantly, as well as increasing compiler perf test scores around 1-2%. Binary size is larger than before though. BUG=angleproject:2267 TEST=angle_unittests Change-Id: If1dcd36f0d2b30c2ed315cdcf6e831ae9fe70c94 Reviewed-on: https://chromium-review.googlesource.com/960031 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Courtney Goeltzenleuchter aa5d883e 2018-03-16T09:53:03 Update KHR header to avoid compiler issue. Build was dying due to undefined symbol NDK_FPABI that was coming from include/KHR/khrplatform.h. Updating to latest eliminates the issue. Bug: angleproject:2411 Change-Id: I1896755e65b9a3afad6332caf0dd5d9b52cf2b28 Reviewed-on: https://chromium-review.googlesource.com/967235 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron daedf4d2 2018-03-16T09:28:53 Vulkan: Add a DynamicDescriptorPool class. In order to manage the life of descriptor sets better and allow allocating descriptor sets infinitely. Bug:angleproject:2392 Change-Id: Ia3c7145d85d697c04e8008e8d8839c428dd2e864 Reviewed-on: https://chromium-review.googlesource.com/966786 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 4121799f 2018-03-15T11:15:33 Clean up switch/case pruning code There was some duplicate switch/case pruning in the code in PruneEmptyCases and RemoveNoOpStatementsFromTheEndOfSwitchStatements. Combine the functionality of both AST transformations into PruneEmptyCases and remove the other transformation. The tests are improved to better cover the full functionality. BUG=angleproject:2402 TEST=angle_unittests, angle_end2end_tests --gtest_filter=*Switch* Change-Id: Ib74b6b9b455769ea15650e9653a9c53635342c49 Reviewed-on: https://chromium-review.googlesource.com/964081 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Luc Ferron e3dc5dd0 2018-03-16T07:37:21 Vulkan: Add 2 features to StreamingBuffer This is prerequisite work to dynamic uniform buffer updates. 1- Alignment parameter to be able to allocate by chunks of this alignment. 2- Out boolean to indicate if a new VkBuffer has been assigned on the allocate operation. Bug:angleproject:2392 Change-Id: If346e13200455febbe78045e908ae89c9dc93cdb Reviewed-on: https://chromium-review.googlesource.com/965612 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 3761dc7b 2018-03-19T08:52:06 Fix infra.cq to point to new Linux configs. Now that the migration has happened for these builders, switch to the new new configs. Bug: angleproject:2414 Change-Id: Ied26f54f8a679b613f354d6510abf1f79adc6e9e Reviewed-on: https://chromium-review.googlesource.com/968542 Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
Jamie Madill dfebe9b2 2018-03-14T10:08:12 D3D11: Add dirty bits for Transform Feedback. After testing, it seems practially impossible to trigger a dependent state change in a Buffer that would affect XFB. Any buffer change would have to happen between a pause or begin/end of XFB, which would trigger a state update. Bug: angleproject:1155 Bug: angleproject:2389 Change-Id: Ic3c1dc7cec661a826909bb5647ddabda1d6fb7fc Reviewed-on: https://chromium-review.googlesource.com/948795 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2fe36e45 2018-03-14T16:14:26 Vulkan: Enable SimpleVertexShader. Required correct depth range implementation, matrix uniforms, etc. Bug: angleproject:2403 Change-Id: I84d12aae0c9eb760645d6b953461122bce7d31d1 Reviewed-on: https://chromium-review.googlesource.com/967265 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0e82ae9c 2018-03-16T16:46:52 Vulkan: Implement depth range correction. This is done via inserting a statement at the end of the "main" of the vertex shader which scales and offsets gl_Position.z. Relevant sections of the Vulkan spec are 23.4. Coordinate Transformations and OpenGL spec "2.12.1 Controlling the Viewport". Bug: angleproject:2406 Change-Id: Ibf5403b3ad06a5114a7de3be0a406d696cbb7dea Reviewed-on: https://chromium-review.googlesource.com/964733 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 6f5444da 2018-03-14T10:08:11 Remove HasIndexRange. This is superseded by the DrawCallParams class. Instead of storing the context, we also return an error from the index range resolution. Bug: angleproject:2389 Change-Id: I9e7d58f006f51872eb3b52cbb9efbee16fff7ef6 Reviewed-on: https://chromium-review.googlesource.com/960570 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jiawei Shao 1c08cbb3 2018-03-15T15:11:56 Clean up link validations on interface blocks This patch intends to clean up the link validations on interface blocks for better implementing program linking with geoemtry shader. 1. Move three interface block validation functions to the anonymous namespace of Program.cpp instead of the member function of class Program. 2. Use IsActiveInterfaceBlock everywhere we need to know if an interface block is active or not. BUG=angleproject:1941 Change-Id: Ic868d015e45f04d57ba382a2b447be00952fa4fc Reviewed-on: https://chromium-review.googlesource.com/965395 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jiajia Qin 5ae6ee45 2018-03-06T17:39:42 ES31: Sync dirty objects for compute shader BUG=angleproject:2395 TEST=angle_end2end_tests Change-Id: Ife833a6573c49fc453c120ebc66765064d807b16 Reviewed-on: https://chromium-review.googlesource.com/954991 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho d4bd963f 2018-03-08T16:32:44 Don't use TIntermSymbol nodes for function parameters Parameter nodes are not needed - it's simpler to just create a TVariable object for each parameter when the TFunction is initialized. With this change we also store only one object per each parameter type used in built-in functions, instead of one array of TConstParameter entries for each unique parameter sequence. This simplifies code and reduces binary size and compiler memory use. Compiler perf does not seem to be significantly affected. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I2b82400dd594731074309f92a705e75135a4c82c Reviewed-on: https://chromium-review.googlesource.com/955589 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Brandon Jones 44a73fcf 2018-03-06T09:32:17 Always Invalidate Vertex Attribute Translation Fixes bug where mVertexAttribsNeedsTranslation was not being set when vertex attribute changes internally from DIRECT to DYNAMIC. This changes mVertexAttribsNeedTranslation to be set during any change in vertex attribute type. BUG=angleproject:2381 Change-Id: I91ae86624f0cb68bd8c41c3bcbdeb31fa1ccd9ed Reviewed-on: https://chromium-review.googlesource.com/951894 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 41918387 2018-03-13T11:37:54 Vulkan: Additional texture formats support. RGB565, RGBA4444, RGBA5551 Bug:angleproject:2358 Change-Id: I4dc19f9e4cc7b51f215b57d440a108cdf17aec24 Reviewed-on: https://chromium-review.googlesource.com/960573 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 0b0dcbc1 2018-03-14T11:33:22 Prune empty cases and switch statements The translator already prunes no-ops and unreferenced variables, and this may result in case statements that are followed by nothing. Since the last case statement in as switch statement must always contain a statement to be valid GLSL, the translator must not leave empty case statements in place. They're now being pruned by the PruneEmptyCases AST transformation. This improves on the earlier RemoveEmptySwitchStatements AST transformation that did address empty switch statements but could not remove them if they had a case statement inside. BUG=angleproject:2402 TEST=angle_unittests Change-Id: Ieb9598a744078e45226d8fb7266d877f7835cf0c Reviewed-on: https://chromium-review.googlesource.com/962181 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 5eaddbd0 2018-03-14T16:16:03 Vulkan: Flag uniforms as dirty when they are updated. Currently changing uniform values will not always be seen. Bug: angleproject:2392 Bug: angleproject:2403 Change-Id: Ie315a64ad6094f2c23e48e901de2e03e4d98516a Reviewed-on: https://chromium-review.googlesource.com/963296 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org>
Luc Ferron 5b64aca8 2018-03-14T14:55:58 Vulkan: Support of float uniform matrixes (2,3,4). Bug:angleproject:2392 Change-Id: I97efea83e604d19b1745d9db4ab8f02997a1b7fc Reviewed-on: https://chromium-review.googlesource.com/962666 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 0ab41fa5 2018-03-14T11:03:30 Add an EGL extension to disable GL extensions by default. BUG=angleproject:2404 Change-Id: I2667ddc92d5c9ef6e0ef115f2fdf0c3d3643d945 Reviewed-on: https://chromium-review.googlesource.com/962702 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 1b14d7ce 2018-03-14T14:40:19 VertexArray: Add perf tests for VAO dirty bits. This simple perf test already in the source does a great job at this. Bug: angleproject:2389 Change-Id: I94ff14e0eab1cb49a8d19725056ad8f7f008ac05 Reviewed-on: https://chromium-review.googlesource.com/962962 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jiawei Shao 447bfac1 2018-03-14T14:23:40 ES31: Support program parameter queries on geometry shader This patch implements all the program queries on the geometry shader stage of a program by glGetProgramiv(), including the queries on geometry shader input/output primitives, invocations and maximum output vertices BUG=angleproject:1941 TEST=dEQP-GLES31.functional.geometry_shading.query.geometry_linked_* dEQP-GLES31.functional.geometry_shading.query.geometry_shader_invocations dEQP-GLES31.functional.state_query.program.geometry_shader_state_get_programiv Change-Id: Ibfa630c64dba5baf52ff84ce7e0bf4c567eef8c4 Reviewed-on: https://chromium-review.googlesource.com/961397 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>
Luc Ferron 7cec3353 2018-03-13T13:29:34 Vulkan: Get/SetUniform for float / int and vec* Bug:angleproject:2392 Change-Id: I2110ecde653a85a28b515dc9d8473a1b37a73eb6 Reviewed-on: https://chromium-review.googlesource.com/962718 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Corentin Wallez de51bf0a 2018-03-14T13:28:14 cq.cfg: equivalent_to to 100% for Linux tryservers. This is moving all ANGLE Linux tryservers to run on LUCI only. BUG=chromium:815092 Change-Id: I66cd2908706243a54a406fa6aa297c0d18a0127b Reviewed-on: https://chromium-review.googlesource.com/962930 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 74ba598f 2018-03-13T11:22:16 Fix cubemap robust resource init for GenerateMipmap The code in gl::Texture would only check whether the first cube map face is correctly initialized but not for the others. BUG=angleproject:2169 Change-Id: Ib565579a4570e731da785b5c74c8d1a6511ebcd4 Reviewed-on: https://chromium-review.googlesource.com/960571 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 97ab26fc 2018-03-14T10:08:10 Move DrawCallParams to the gl front-end. Previously called DrawCallVertexParams. This params helper will be passed into the VertexArray state sync method so we can handle vertex attribute updates directly in the VertexArray implementation instead of deferring the updates to the draw call, where the draw call implementation method would have access to the draw call params. Also includes the full range of draw parameters to DrawCallParams so we can use it in more places. Refactoring change only, subsequent work will contain more refactoring and lead to code cleanups and easier dependent state updates for the VertexArray implementation classes. Bug: angleproject:2389 Change-Id: Ia84f8af54ae51eca94d8fb6f5b8adc88b8d981a7 Reviewed-on: https://chromium-review.googlesource.com/948787 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 87db7c52 2018-03-14T10:08:10 D3D11: Minor cleanup to DrawCallVertexParams. The 'firstVertexDefinitelyZero' argument didn't actually have any behavioural change to the code, so remove it. Also add an explicit call to resolve the index range, instead of doing it implicitly when certain values were queried. Bug: angleproject:2389 Change-Id: I377c79006bfa541183fe94d0ed199fbaa1132afc Reviewed-on: https://chromium-review.googlesource.com/948786 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 0cec82a5 2018-03-14T09:21:07 Vulkan: Implement basic depth/stencil buffers. This implements basic depth/stencil states and clearing. This also implements "fallback" texture formats in the texture generation. Fallback formats are those that are chosen at runtime for replacements for main formats which lack driver support. They are different from override formats, which are always used because we assume there is no driver support. The Vulkan spec only asserts that one of the two of D32 or D24 has mandatory support. In the case of AMD, D24 is not supported fully, and we need the fallback format support emulation. Bug: angleproject:2357 Change-Id: Ic86cede3c69ff9893a06b3a55c3b5d2d897fa55f Reviewed-on: https://chromium-review.googlesource.com/916701 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Luc Ferron d92d9dd1 2018-03-14T08:06:44 Sort the Format_table_autogen.cpp switch case by gl format Bug:angleproject:2358 Change-Id: I8e5baa53239ab0509683114645fed0e769f43764 Reviewed-on: https://chromium-review.googlesource.com/962321 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 2bfe9f6b 2018-03-02T16:53:29 Use function id to group functions in ParseContext This way we can do numeric comparisons instead of string comparisons. The effect on compiler perf test scores is fairly marginal, but this reduces binary size by a few kilobytes, and there may be a larger effect on shaders calling a lot of texture functions. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I077db97b16b16b70b7e18ee037e06d7450d08dc9 Reviewed-on: https://chromium-review.googlesource.com/947952 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jiawei Shao fccebffe 2018-03-08T13:51:02 ES31: Support adjacency draw modes for geometry shader This patch implements adjacency primitive types as new draw modes on OpenGL back-ends. This patch also implements validations on the compatibilities among draw modes and geometry shader input primitive types. BUG=angleproject:1941 TEST=dEQP-GLES31.functional.geometry_shading.input.* dEQP-GLES31.functional.geometry_shading.negative.* Change-Id: I373ebfe88d7f50da3cc81adaf2d1b7f586b0932a Reviewed-on: https://chromium-review.googlesource.com/954715 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 690c8eb7 2018-03-12T15:20:03 Framebuffer: syncState before internal format query. Since querying the internal format of an attachment might need ot look at the RenderTarget for some back-ends, or otherwise flush attachment changes, we should call syncState internally. This means that we can't mark these queries as const. Bug: angleproject:2372 Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb Reviewed-on: https://chromium-review.googlesource.com/948784 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
James Darpinian 4d9d4839 2018-03-13T12:43:28 Optimize buffer deletion by returning early if buffer is not bound. This improves angle_perftests bindings_gl_100_objects_allocated_every_iteration by over 30%. Bug: 820723 Change-Id: Icfaa0f54f7c61db6475948e3a95296f37ab4f7dc Reviewed-on: https://chromium-review.googlesource.com/961302 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang aac6df40 2018-03-12T13:00:33 Update documentation to mention ANGLE committer status and bug editing permissions. BUG=angleproject:1944 Change-Id: I37d6f22c18e65bd53b75702f0f13ec818b83c34d Reviewed-on: https://chromium-review.googlesource.com/959224 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 4ea3b450 2018-03-13T11:48:26 run_code_generation.py: Add gen_load_functions_table.py to the list Bug:angleproject:2358 Change-Id: I93bdbbe65ac8109a5a506d88202715c51918613b Reviewed-on: https://chromium-review.googlesource.com/960574 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Luc Ferron f0b30dd8 2018-03-12T13:21:29 Vulkan: Enable a bunch of dEQP texture related tests This enables 21 tests in the texture department (including luminance texture format tests except mimap related tests). Bug:angleproject:2364 Change-Id: Ib609f0457833b34ecdb9d8f8b4479ece9ef6c1a6 Reviewed-on: https://chromium-review.googlesource.com/959233 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho e600c0aa 2018-03-02T11:23:29 Use non-human-readable mangled names for types The new mangled name format is as follows: The first character is a hex digit from 0 to F that encodes vector or matrix size. For scalars, structs etc. the character is 0. Then, if it's a struct, the mangled name continues with "{s", followed by mangled names of fields, and ends with "}". If it's an interface block, the mangled name continues with "{i", followed by mangled names of fields, and ends with "}". If it's anything else, the second alphabetic character encodes the basic type. Characters are assigned to basic types in the enumeration order. If it's an array, the mangled name has a suffix [array_size]. This saves a few kilobytes from the binary size. The effect on symbol lookup speed seems mostly marginal. BUG=angleproject:2267 TEST=angle_unittests Change-Id: I26e65dcb48c3478df9a719ffff9c15f2fd12e293 Reviewed-on: https://chromium-review.googlesource.com/945910 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 64e5ed2a 2018-03-09T16:32:32 Vulkan: Fix scissor clears + enable dEQP tests Vulkan does not support receiving out of bounds numbers for the scissor region but no validation errors are sent. This change clips the region received to fit the current viewport and it fixes many dEQP tests. Bug:angleproject:2356 Change-Id: I5dcf739366ba1f62b56593eaaccedf5f14d0c200 Reviewed-on: https://chromium-review.googlesource.com/957758 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
Lingfeng Yang dbb9c534 2018-02-25T19:58:24 GLES1: state: Define / initialize GLES1-specific states Contains definitions of GLES1-specific states such as material / lighting. Tweaked the Color class for easier copying to uniforms / reading as a float array. This CL also adds the GLES1-specific state in GLES1State, which is then part of the State class and is initialized to the spec's values if the context major version is ES 1. + Some clang-format BUG=angleproject:2306 Change-Id: I7fc3bd9a22ebf0ffcd98d931d0176f21e17b1c5c Reviewed-on: https://chromium-review.googlesource.com/936424 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Luc Ferron 92de2af5 2018-03-12T11:37:38 Vulkan: Enable culling rasterization state dEQP tests This change enables the following tests: dEQP-GLES2.functional.rasterization.culling.* 18/18 dEQP-GLES2.functional.rasterization.interpolation.* 12/12 dEQP-GLES2.functional.rasterization.fill_rules.* 5/5 Bug:angleproject:2352 Change-Id: I5a8869751ea0d787cc266ae12422633106e39983 Reviewed-on: https://chromium-review.googlesource.com/959118 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Luc Ferron 203d6365 2018-03-09T15:27:02 Vulkan: enable multiple draw* dEQP tests This enables 17 additional tests, including the line_loop tests. Bug:angleproject:2335 Change-Id: I5d441dde08e6018d089749e102070886ccef3a08 Reviewed-on: https://chromium-review.googlesource.com/957448 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Lingfeng Yang 54ef3ad4 2018-03-12T08:31:12 Run clang-format on State.cpp BUG=angleproject:2306 Change-Id: I1c5a2dd40fb7d9b51cbf3fd37720a172578d76e8 Reviewed-on: https://chromium-review.googlesource.com/959105 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
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>