- 04 Apr, 2018 1 commit
-
-
Jamie Madill authored
This class wraps a lot of the common functionality of a vk::Image. It keeps an associated DeviceMemory and ImageView. Eventually we can probably merge this class with RenderTargetVk. We can also use it to implement the same functionality between Renderbuffer and Texture and abstract different storage types, like 2D and Cube. Bug: angleproject:2318 Change-Id: I39239f47b483cfb96290a15b06edd264f7f4bb34 Reviewed-on: https://chromium-review.googlesource.com/980772Reviewed-by:
Frank Henigman <fjhenigman@chromium.org> Reviewed-by:
Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
- 03 Apr, 2018 5 commits
-
-
Jamie Madill authored
This could happen when linking a program with missing attachments and shaders that have no compiled sources. Also re-enables the EGL program cache control tests, which were disabled due to a wrong extension name check. Bug: chromium:827158 Change-Id: I181f878093c6e3a4acc51552ade8e7c084733a3d Reviewed-on: https://chromium-review.googlesource.com/989262Reviewed-by:
Luc Ferron <lucferron@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
We now collect metadata for variables in the symbol table. The metadata is stored in a map using the variable unique id as a key, so we can store the variables themselves as constexpr while still having dynamic metadata. For now we collect whether a variable is statically read or written. This can be used to more accurately determine whether a variable is statically used, but can also enable more optimizations in the future, such as pruning variables that are never read or folding variables that are never written after initialization. The collection is done during parsing, so that nothing is pruned from the AST before the static use is recorded. Static writes are flagged in ParseContext::checkCanBeLValue, as that function is already called for all variables that are written. Static reads are flagged whenever there's an operation that requires a variable to be read. This includes: * Unary and binary math ops * Comma ops * Ternary ops * Assignments * Returning the variable * Passing the variable as an in or inout argument to a function * Using the variable as a constructor argument * Using the variable as an if statement condition * Using the variable as a loop condition or expression * Using the variable as an index * Using the variable as a switch statement init expression In case there are statements that simply refer to a variable without doing operations on it, the variable is being treated as statically read. Examples of such statements: my_var; my_arr[2]; These are a bit of a corner case, but it makes sense to treat them as static use for validation purposes. Collecting correct static use information costs us a bit of compiler performance, but the regression is on the order of just a few percent in the compiler perf tests. BUG=angleproject:2262 TEST=angle_unittests, angle_end2end_tests Change-Id: Ib0d7add7e4a7d11bffeb2a4861eeea982c562234 Reviewed-on: https://chromium-review.googlesource.com/977964Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Olli Etuaho authored
The hash values used for looking up built-ins now encode whether the mangled name contains arrays, structs or interface blocks in its parameters list. This is written in the most significant bit of the hash value. We check this bit at the start of built-in lookup and if the bit is set we exit early. After that we know that the lookup name doesn't contain array, struct or interface block parameters. When we find a hash that matches a hash of a built-in function, we now know 3 things: 1) the length of the mangled name matches 2) the open parentheses in the mangled name matches 3) the lookup doesn't contain array, struct or block parameters. Additionally, we have an if statement checking whether the function name matches. Collisions are only possible with functions that 1) have the same name 2) have the same number of parameters With these preconditions we can check beforehand whether collisions are possible for 3-parameter functions. If there are no collisions, we don't need to compare the full mangled name. This is similar to what was already being done with functions that had 0 to 2 parameters. This reduces shader_translator binary size by around 4 KB on Windows. Besides increased complexity, the tradeoff is that an exhaustive search of hash values for possible 3-parameter combinations is costly, so the gen_builtin_functions.py code generation script now takes around one minute to run on a high-end workstation. Due to this, the script now exits early if it detects it has already been run with the same inputs based on a hash value stored in builtin_symbols_hash_autogen.txt. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: I3ff8c6eb85b90d3c4971ac8d73ee171a07a7e55f Reviewed-on: https://chromium-review.googlesource.com/973372Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Frank Henigman authored
It was skipping elementArrayBufferOverride->onReadResource() if mCurrentElementArrayBufferResource was null. BUG=angleproject:2389 Change-Id: If33a11d35225daf572796abc8c18f6d6df758b48 Reviewed-on: https://chromium-review.googlesource.com/989408 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by:
Luc Ferron <lucferron@chromium.org>
-
James Darpinian authored
Also fix the check for uniform buffer size to use the actual buffer size instead of the size of the bound range. Bug: 820639 Change-Id: Iaa2a617ee7ce5ce7cfabbf64bd1d6f8c82c46b65 Reviewed-on: https://chromium-review.googlesource.com/965627 Commit-Queue: James Darpinian <jdarpinian@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 02 Apr, 2018 1 commit
-
-
Lingfeng Yang authored
BUG=angleproject:2306 Change-Id: I42834078b14aaa20c4d4e6b67c097c810f5a17a3 Reviewed-on: https://chromium-review.googlesource.com/987297 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 30 Mar, 2018 3 commits
-
-
Brandon Jones authored
Refactors ANGLE Extensions Validation functions into a common format for future autogeneration. Any writes to output parameters that occurred within the ANGLE entry point have been moved into the corresponding validation function. Bug:angleproject:2263 Change-Id: I7a678310ad481c1379596a493fcb0b0383fcf3b8 Reviewed-on: https://chromium-review.googlesource.com/985244 Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Nico Weber authored
[ RUN ] HandleAllocatorTest.Reallocation ==30439==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x1a11ef5 in gl::HandleAllocator::allocate() third_party/angle/src/libANGLE/HandleAllocator.cpp:83:9 #1 0x6643eb in (anonymous namespace)::HandleAllocatorTest_Reallocation_Test::TestBody() third_party/angle/src/libANGLE/HandleAllocator_unittest.cpp:75:42 Looks like a true positive, one of the ctors wasn't initializing a field. Change-Id: Id8a93fe6c9a6f1f01249235630981f4f0ac4a782 Reviewed-on: https://chromium-review.googlesource.com/987474 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:Jamie Madill <jmadill@chromium.org>
-
Olli Etuaho authored
Long chains of recursive swizzling could previously cause a stack overflow in checkCanBeLValue. Fold recursive swizzling when it is parsed to prevent this. BUG=angleproject:2439 TEST=angle_unittests Change-Id: I83b4c27442185709f6762d5ec23b93244010da05 Reviewed-on: https://chromium-review.googlesource.com/983593Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
-
- 29 Mar, 2018 7 commits
-
-
Yuly Novikov authored
BUG=angleproject:2280 Change-Id: If2469e037b197b5e54f8fadce7a5094c5d3159a2 Reviewed-on: https://chromium-review.googlesource.com/987015Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
-
Yuly Novikov authored
Because Perf bots have Android K with worse driver than GPU.FYI Android L BUG=angleproject:2431 Change-Id: I9b7a7d34f64a9832c57f9d26573b7c63594e1773 Reviewed-on: https://chromium-review.googlesource.com/986653Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
-
Lingfeng Yang authored
BUG=angleproject:2306 Change-Id: I4a57732d4c470c821a3847a7ee012cf3ccbba197 Reviewed-on: https://chromium-review.googlesource.com/986454 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Luc Ferron authored
- This also enables 93 dEQP tests to validate these. Bug: angleproject:2441 Change-Id: I1e0a749dde309788d7921e369cb35881c12c9a33 Reviewed-on: https://chromium-review.googlesource.com/985095 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Luc Ferron authored
- Enable dEQP tests for uniform arrays - Fix the shader translator to support arrays - Fix for finding the uniforms location - Support get/set of uniform array values Bug: angleproject:2416 Change-Id: I7d0e9c602840ffb915f8ea3ba5d832d03bd74985 Reviewed-on: https://chromium-review.googlesource.com/984599 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Xinghua Cao authored
Implement shader invocation control functions and shader memory control functions on D3D backend. BUG=angleproject:2280 TEST=angle_end2end_tests.ComputeShaderTest.ShaderInvocationAndMemoryControl Change-Id: I836c3abde35f19dd40a68cf82ae7c5417c551ab4 Reviewed-on: https://chromium-review.googlesource.com/911986 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Lingfeng Yang authored
+ adds query for GL_MAX_TEXTURE_UNITS BUG=angleproject:2306 Change-Id: Ie89fa6a067551170856bf0f7e6d7b4452b3da132 Reviewed-on: https://chromium-review.googlesource.com/984894 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
- 28 Mar, 2018 9 commits
-
-
Tobin Ehlis authored
Bug: angleproject:2159 Plumbing to allow VK Mock ICD to be selected as the Vulkan driver. Adding new ANGLE env var "ANGLE_VK_ICD_JSON" to point to json file of mock ICD in angle and use this to override Vk loader ICD search path. At Vulkan renderer initialization time, enable the Mock ICD if device is EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE. Default physicalDevice is still the first detected device. If Mock ICD is requested but not available, fall back to the first device that was detected. Added a VULKAN_NULL() testing config that uses Vulkan as renderer but NULL as device. Turned on Vulkan NULL testing for DrawCallPerf. Change-Id: I04e15c14e998448f8c98f9fd72e796389f297993 Reviewed-on: https://chromium-review.googlesource.com/961494 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Luc Ferron authored
Bug: angleproject:2430 Change-Id: Ia6fec6b622c7e235d041ec4e383a4ca2f1f191a3 Reviewed-on: https://chromium-review.googlesource.com/984898Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
-
Frank Henigman authored
No functional change. When we add vertex data format conversion to Vulkan we will need to be able to return an error from VertexArray::syncState(). BUG=angleproject:2405 Change-Id: I4b537946ecbb6593280b6510c5cd8d8e3c65e8dd Reviewed-on: https://chromium-review.googlesource.com/982897 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by:
Luc Ferron <lucferron@chromium.org>
-
Olli Etuaho authored
The hash values used for looking up built-ins now encode the string length and the location of parentheses as six-bit values, so that we don't need to check for these if the hash matches. This decreases shader_translator binary size on Windows by around 10 KB. BUG=angleproject:2267 BUG=chromium:823856 TEST=angle_unittests Change-Id: If8c28e1c8851750633509ec6273f556e06e91cd1 Reviewed-on: https://chromium-review.googlesource.com/973243Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Geoff Lang authored
Wraps a std::array and a size parameter to give the std::vector interface without making allocations. BUG=angleproject:2435 Change-Id: I7df0be1310446a2f163766149bf631a8692be9ad Reviewed-on: https://chromium-review.googlesource.com/981267 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Geoff Lang authored
Cube map destination textures may not be complete until all faces have been initialized. BUG=693090 Change-Id: I19816c9def3b9663491397cded5d24ca808a3f78 Reviewed-on: https://chromium-review.googlesource.com/982393Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
-
Olli Etuaho authored
This will make it easier to add tracking of static reads. BUG=angleproject:2262 TEST=angle_unittests Change-Id: I23e0587c022c45ac62434a2a0d8170e8978d1c24 Reviewed-on: https://chromium-review.googlesource.com/983916Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
-
Geoff Lang authored
BUG=angleproject:2408 Change-Id: I5994b5ade3c533743c9fc52915aa1d5faca3dd8f Reviewed-on: https://chromium-review.googlesource.com/984292Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Frank Henigman authored
BUG=chromium:826576 Change-Id: If241e57480efe3aabfb30a2be453f05d45367e4a Reviewed-on: https://chromium-review.googlesource.com/982910 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
- 27 Mar, 2018 14 commits
-
-
Jamie Madill authored
Using > 64 bits (we had over 90) would use a much slower dirty bit iteration. Speed this up by splitting the dirty bits into two levels. The first top level only has a single dirty bit per attrib, per binding, and one bit for the element array buffer. The next level has separate dirty bits for attribs and bindings. The D3D11 back-end doesn't actually care about individual dirty bits of attribs or bindings, since it resets entire attributes at a time, but the GL back-end only refreshes the necessary info. Improves the score of a simple state change microbenchmark by 15% on the D3D11 and GL back-ends with a no-op driver. Real-world impact will be smaller. Also includes a test suppression for an NVIDIA bug that surfaced when we changed the order of that GL commands were sent to the driver. BUG=angleproject:2389 Change-Id: If8d5e5eb0b27e2a77e20535e33626183d372d311 Reviewed-on: https://chromium-review.googlesource.com/556799Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Courtney Goeltzenleuchter authored
Bug:angleproject:2438 Bug:angleproject:2437 Change-Id: I1b41882b42e8bc30df8e8ae47e0af67ec266f7d5 Reviewed-on: https://chromium-review.googlesource.com/982382Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-
Luc Ferron authored
This will make all the dEQP tests no longer return "not supported" when trying to do any depth/stencil work. With this comes a bunch of new tests suppressions to be able to proceed forward. Bug: angleproject:2425 Bug: angleproject:2426 Bug: angleproject:2427 Bug: angleproject:2428 Bug: angleproject:2429 Change-Id: I923026bb29c4ed1f4586b89176eea848fd2ceb71 Reviewed-on: https://chromium-review.googlesource.com/976339 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Frank Henigman authored
Unmap does not flush, so we need to do it explicitly. BUG=angleproject:2436 Change-Id: Id102825b1329d97965f07b97c227214fa7524a0e Reviewed-on: https://chromium-review.googlesource.com/980927Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Luc Ferron <lucferron@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
-
Luc Ferron authored
Bug: angleproject:2421 Change-Id: Ibdd8beee8103062a566b8caa23cdd9b8ac35d3a8 Reviewed-on: https://chromium-review.googlesource.com/974105 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Lingfeng Yang authored
BUG=angleproject:2306 Change-Id: I0bf229d3ab8a4a1217c12b434dcd8fa67d7cbadc Reviewed-on: https://chromium-review.googlesource.com/973897 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Luc Ferron authored
- This change enables us to update uniforms indefintely using VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC descriptor types. - Enables 219 new dEQP tests in the uniform_api namespace. - Creates a new white box test to validate new buffer allocation. Bug: angleproject:2392 Change-Id: I8146e6104a6b7727f63265a4671577d251a8fca8 Reviewed-on: https://chromium-review.googlesource.com/965929 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Luc Ferron authored
This reverts commit 15c7d0a6. Reason for revert: This change mixed with enabling the depth/stencil backbuffer here: https://chromium-review.googlesource.com/c/angle/angle/+/976339 causes the tests to fail. I will revert these for now and put it back in a new CL once I find the fix instead. Original change's description: > Vulkan: Enable depth and stencil dEQP tests > > This enables these tests for Vulkan: > dEQP-GLES2.functional.fragment_ops.depth.* > dEQP-GLES2.functional.fragment_ops.stencil.* > > Bug: angleproject:2430 > > Change-Id: I5c58821ac2f84ce9ae5a92b3024853e5b85ad41e > Reviewed-on: https://chromium-review.googlesource.com/981999 > Commit-Queue: Luc Ferron <lucferron@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,lucferron@chromium.org Change-Id: Ifeebd078c1cc70d90ea1923257777f711c13593e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: angleproject:2430 Reviewed-on: https://chromium-review.googlesource.com/982132Reviewed-by:
Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Commit-Queue: Luc Ferron <lucferron@chromium.org>
-
Jamie Madill authored
Instead of having a direct/static observer distinction, add two messages for 'Contents Changed' and 'Storage Changed'. This makes Buffer11 itself the subject with two different message handling cases in the onSubjectStateChange methods. Bug: angleproject:2389 Change-Id: I645cd4b7cc7ce51cb7f48a01c7fc72939cbe89fe Reviewed-on: https://chromium-review.googlesource.com/957940 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Jamie Madill authored
Bug: angleproject:1155 Bug: angleproject:2389 Change-Id: If410bc9e2ea97385def5d6a8a95d6bf6ea4c6a28 Reviewed-on: https://chromium-review.googlesource.com/948797 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Yuly Novikov <ynovikov@chromium.org>
-
Jiajia Qin authored
BUG=angleproject:2265 TEST=angle_perftests Change-Id: Iad93eb3e8339c8a766b25416b28102cc54d648b8 Reviewed-on: https://chromium-review.googlesource.com/967686 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by:
Geoff Lang <geofflang@chromium.org>
-
Jiawei Shao authored
This patch uses a packed internal enum ShaderType everywhere we need a shader type instead of the GLenum value of the shader type. This patch also uses program::getAttachedShader(type) everywhere we need to get gl::Shader from a program in ANGLE. BUG=angleproject:2169 Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec Reviewed-on: https://chromium-review.googlesource.com/972844 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Corentin Wallez <cwallez@chromium.org>
-
Luc Ferron authored
This enables these tests for Vulkan: dEQP-GLES2.functional.fragment_ops.depth.* dEQP-GLES2.functional.fragment_ops.stencil.* Bug: angleproject:2430 Change-Id: I5c58821ac2f84ce9ae5a92b3024853e5b85ad41e Reviewed-on: https://chromium-review.googlesource.com/981999 Commit-Queue: Luc Ferron <lucferron@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org>
-
Jiawei Shao authored
This patch fixes a compile error when we specify ANGLE_D3D9EX as ANGLE_DISABLED by using "UNREACHABLE()" alone instead of using it as a parameter in "ASSERT". BUG=angleproject:2434 Change-Id: Ib995a951de31edcf49598a6720f677b5ec5bd855 Reviewed-on: https://chromium-review.googlesource.com/967685Reviewed-by:
Geoff Lang <geofflang@chromium.org> Reviewed-by:
Jamie Madill <jmadill@chromium.org> Reviewed-by:
Jiajia Qin <jiajia.qin@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
-