src


Log

Author Commit Date CI Message
Jamie Madill 57ff6f95 2018-09-14T12:44:52 Inline and micro-optimize more for perf tests. Using a custom array instead of std::vector speeds up the resource manager. One reason is because calls to size() are implemented in many implementations as a difference between two pointers. This sub size implementations are slower than storing a simple size variable in a custom class. Also includes more inlining of hot spots functions. Also includes a small unit test class for ResourceMap. And an unrelated but small test fix for TextureLimisTest. Also a small unrelated fix for a Transform Feedback test. Increase the scores of the draw call perf test with texture and buffer bindings and the buffer binding perf test. Bug: angleproject:2763 Change-Id: I41c327987db27ac45e6a62579f01e1cdc22e396c Reviewed-on: https://chromium-review.googlesource.com/1171510 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
jchen10 bb2f2c43 2018-09-16T09:47:38 Squash State dirty bits for CHROMIUM_path_rendering Currently we limit the maximum of State bits to 64 for performance consideration. To accommodate new ES31 states, we have to pick and squash some existing bits which are less hot. Bug: angleproject:2814 Change-Id: I8fc19286bbf8d8273949da8d986a8b1587fa105e Reviewed-on: https://chromium-review.googlesource.com/1227069 Reviewed-by: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Qin Jiajia 017bda42 2018-09-14T18:11:50 Fix the ASSERT error This change adds shader type checking before entering initializeOutputVariables. BUG: angleproject:2821 Change-Id: Ib931031f2fc187f1f2a1821a09664bbe172a5e90 Reviewed-on: https://chromium-review.googlesource.com/1226229 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Courtney Goeltzenleuchter 62114aae 2018-08-28T09:36:46 glBufferSubData: Exit early if size is zero glBufferSubData is calling vkMapMemory with a size of zero is invalid. Check for that and exit early if found. Bug: angleproject:2790 Change-Id: I965badeb3aa2cec1adc24dd7ff5695f8aa3e553d Reviewed-on: https://chromium-review.googlesource.com/1194610 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 4230d484 2018-09-14T10:14:45 Finish fixing EGL enums. This removes the temporary defines now that Chromium is up-to-date. Bug: angleproject:2806 Change-Id: I8e3308d6b80e49c2b2a7a698ee5d8ad40f442475 Reviewed-on: https://chromium-review.googlesource.com/1227031 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 3f3b358f 2018-09-14T10:38:44 Vulkan: Fix cube map attachment clears and readpixels. These were both missing the correct layer offset. Cache the layer inside the RenderTargetVk for easy access. Bug: angleproject:2470 Change-Id: I690dbf0702d7ec52f44ba0a9429b6ef0e51baf6b Reviewed-on: https://chromium-review.googlesource.com/1225910 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 7f232939 2018-09-12T11:03:06 Run git cl format on several files. Bug: angleproject:2763 Change-Id: Idcb8a714a6dccdff3dd953679e17a7314866a37d Reviewed-on: https://chromium-review.googlesource.com/1214206 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 8a561914 2018-09-12T11:03:06 Pack SamplerState into small struct. Is much faster for completeness cache checks in syncProgramTextures. Bug: angleproject:2763 Change-Id: Iffdacbb8a4f6640caa5051643c379a7b4c3311b6 Reviewed-on: https://chromium-review.googlesource.com/1171508 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 097d3c0c 2018-09-12T11:03:05 Make SamplerState a contained class. This will more easily allow us to use a cached completeness comparison value. The cached value only gets updated on certain setters. Bug: angleproject:2763 Change-Id: Ib80db8517560617087ae8360f7af69d6c2392b76 Reviewed-on: https://chromium-review.googlesource.com/1171507 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Courtney Goeltzenleuchter f0d258c3 2018-09-11T09:37:48 Vulkan: Emulate eglSwapBuffersWithDamage with full swap Android expects to use eglSwapBuffersWithDamage so implement that for Vulkan backend. BUG=angleproject:2464 Change-Id: I8d599e70e6c8fee92b530d472dc97e3996630458 Reviewed-on: https://chromium-review.googlesource.com/1220066 Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill f4d429c1 2018-09-13T11:20:52 Fix EGL enum allocation. The following enums had a small typo causing them to be takend from an unused block: EGL_CONTEXT_WEBGL_COMPATIBILITY_ANGLE EGL_CONTEXT_BIND_GENERATES_RESOURCE_CHROMIUM EGL_DISPLAY_TEXTURE_SHARE_GROUP_ANGLE Fix this by temporarily defining a secondary enum. Once Chromium is fixed upstream we can remove the temporary enum. Reported by dan.glastonbury@gmail.com. Bug: angleproject:2806 Change-Id: I2ce1dec0a30d5e83f2bec0ae243fd860cbcea4fc Reviewed-on: https://chromium-review.googlesource.com/1220371 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 17dff6d2 2018-09-13T12:03:51 Vulkan: Update LineLoopTest expectations. One test was working but the suppression was not lifted. The other test had no issue filed. Bug: angleproject:2802 Change-Id: I88cd082b2edeca30ec4a8406809af749bb6ce152 Reviewed-on: https://chromium-review.googlesource.com/1200367 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 16e28fd3 2018-09-12T11:03:05 More micro-optimization for draw call validation. Mostly inlining checks on the hot draw call path. Slight increase in draw call validation performance. (Up to 13%) Bug: angleproject:2747 Change-Id: I34c4d7f412c3bca5e559e9bfb5689c0618bb7536 Reviewed-on: https://chromium-review.googlesource.com/1171506 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 526a6f6b 2018-09-12T11:03:05 Cache valid draw modes for draw calls. This optimizes some of our dynamic switching. It uses packed enum maps. Bug: angleproject:2747 Change-Id: Ibd2f9306d066f2fd9eb64c99a25668b7ba5c009c Reviewed-on: https://chromium-review.googlesource.com/1171505 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho daab0014 2018-09-13T14:56:28 Test and fix robust resource init for multisampled textures New test coverage for robust initialization of multisampled textures is added in angle_end2end_tests. Some missing functionality that was affecting the initialization of multisampled 2D array textures is now fixed. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I1d9d3cd154ca2910159941fe8b1bef4ae6320bdd Reviewed-on: https://chromium-review.googlesource.com/1224530 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 44286dc8 2018-09-12T11:03:05 Allow an extra slot in PackedEnumMap. This can be used for fast lookups with InvalidEnum. Will be useful for optimizing valid primitive mode lookups. Bug: angleproject:2747 Change-Id: I5d668863eb23d3c1eb85a775b3e9e46f25a0a335 Reviewed-on: https://chromium-review.googlesource.com/1171504 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 71bb0267 2018-09-12T11:09:42 Vulkan: Implement cube map render targets. Each TextureVk now stores vectors of RenderTargetVks and ImageViews associated with the image faces. They are initialized lazily when the RenderTarget is queried in getAttachmentRenderTarget. There's still one missing edge case for handling clear with the Framebuffer when using cube maps. Also one additional test failure on Android. Bug: angleproject:2470 Change-Id: Ib959a3434a992cef010a11940cf2ee49e118ac17 Reviewed-on: https://chromium-review.googlesource.com/1220727 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 0226041b 2018-09-12T18:10:25 Disable some deqp depth stencil on Android vulkan. These are suspected of causing an out-of-memory failure. BUG=angleproject:2655,angleproject:2549 Change-Id: I92bb4290c79ae8d7b572034666ec181c50c2a587 Reviewed-on: https://chromium-review.googlesource.com/1222370 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Olli Etuaho efbabde2 2018-08-29T14:37:36 Support multisample array textures on D3D11 This implements complete support for multisample array textures on the D3D11 backend. There's a specialized TextureD3D class as well as a TextureStorage11 class for multisample array textures that have the bulk of the functionality. BUG=angleproject:2775 TEST=angle_end2end_tests, angle_deqp_gles31_tests Change-Id: I68116635c01cef0e48c089fd9da05a844ef2d802 Reviewed-on: https://chromium-review.googlesource.com/1216003 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Frank Henigman 6c6be2ce 2018-09-10T14:23:57 Vulkan: add S8_UINT texture fallbacks. Add two fallbacks for S8_UINT. Enable tests. BUG=angleproject:2655 Change-Id: If7df23745a8de8a01d86ab6efa3bca67b5227d76 Reviewed-on: https://chromium-review.googlesource.com/1217282 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 8370e6bc 2018-09-11T17:56:23 Rename constant to kCubeFaceCount. This corrects the naming style for this constant variable. Also updates many usages in TextureD3D.cpp and TextureGL.cpp. Bug: angleproject:2470 Change-Id: I029dd98e925cabf23a4bb26467a62afe6c5bb6e0 Reviewed-on: https://chromium-review.googlesource.com/1220726 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 3b1fe64f 2018-09-04T13:15:35 Vulkan: allow a list of fallback formats. Allow a list of fallback formats as well as a single one in the format map. The first supported format is used. No functional change. BUG=angleproject:2655 Change-Id: Ica312b7899471a7a65184a6921713b79da056f31 Reviewed-on: https://chromium-review.googlesource.com/1214847 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Ian Elliott a59ae05b 2018-09-11T12:48:16 Fix compilation error and memory leak Bug: angleproject:2794 Change-Id: Iaedf83aabef6813c023b97387b35510165cb831c Reviewed-on: https://chromium-review.googlesource.com/1220370 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 2da04538 2018-08-24T13:59:44 Add sampler2DMSArray support to HLSL output This is done with small adjustments to TextureFunctionHLSL. Most of the functionality was already in place before. This changes the categorization of sampler types in BasicTypes.h helper functions: 2D array samplers are no longer treated as 2D samplers, but the two categories are now entirely disjoint. This makes TextureFunctionHLSL a little bit simpler. BUG=angleproject:2775 TEST=angle_unittests, angle_end2end_tests Change-Id: I84d9b56c37b1aaa01ee5921b6f17f8a78698fce2 Reviewed-on: https://chromium-review.googlesource.com/1188562 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 0d0fb43f 2018-09-07T17:43:32 Pass unpack buffer as explicit parameter to texSubImage. This allows us to override it in the incomplete texture init. Any back-end that used incomplete textures was vulnerable to a bug where the unpack buffer would be used to initialize the incomplete texture. Bug: chromium:880906 Change-Id: Ica558e4a4d81de9212f0bc6619ccd812a048ad45 Reviewed-on: https://chromium-review.googlesource.com/1214207 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Will Harris 63aa0e5b 2018-09-05T16:15:46 Fix 64-bit -> 32-bit implicit conversions in libangle. ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(910,63): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] const gl::ImageUnit &imageUnit = glState.getImageUnit(imageUnitIndex); ~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(914,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] bindImageTexture(imageUnitIndex, textureGL->getTextureID(), imageUnit.level, ~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(920,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] bindImageTexture(imageUnitIndex, 0, imageUnit.level, imageUnit.layered, imageUnit.layer, ~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~ ../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp(1080,66): warning: implicit conversion loses integer precision: 'GLsizeiptr' (aka 'long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32] glVertexAttribFormat(mTestAttrib, 1, GL_FLOAT, GL_FALSE, inputRelativeOffset); ~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~ BUG=chromium:879657 Change-Id: Ic6e8e5ebc0dc5fd38c15a48a936ceafd5407bba8 Reviewed-on: https://chromium-review.googlesource.com/1208315 Commit-Queue: Will Harris <wfh@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8e9d2340 2018-09-10T13:29:37 Vulkan: Fix FragCoord scaling when a viewport is applied. We were using the pivot based on the viewport dimensions which is only valid if the viewport is the size of the framebuffer. The more correct pivot size is actually based on the Framebuffer height. Also updates the driver uniforms block to be a bit simpler. Bug: angleproject:2598 Change-Id: I1cb500cded7141d10e8db6862b6ed29758cc7fb4 Reviewed-on: https://chromium-review.googlesource.com/1214205 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Olli Etuaho 480edb8c 2018-08-30T18:25:43 Clean up TextureStorage11_2DMultisample This de-duplicates functionality from TextureStorage11_EGLImage and TextureStorage11_2DMultisample. Neither of those supports changing the associated images or image access in shaders. Multisampled textures also cannot be compressed, so the size doesn't need to be adjusted according to block size. BUG=angleproject:2275 TEST=angle_end2end_tests Change-Id: I45bc573584065bf4f528f883435fadfbd7281077 Reviewed-on: https://chromium-review.googlesource.com/1216002 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Qin Jiajia a735ee2f 2018-05-18T13:29:09 ES31: Support shader storage block in D3D11 compiler - Part1 This patch is the first step to implement a basic skeleton to translate shader storage block to HLSL RWByteAddressBuffer. In GLSL each shader storage block is just one structured block and in API side it corresponds to a buffer range where stores the whole structure. RWStructuredBuffer is an array-like object and can have many structured elements. The structured element doesn't support unsized array and also have a small limitation on the element size. So we choose RWByteAddressBuffer as the counterpart of shader storage block in HLSL. Due to RWByteAddressBuffer does not support using an index to reference a specific location, we must use Load and Store to process the read/write operation of a buffer variable. Moreover, in the compiler tree, since we can't use variable name to get the resource value in RWByteAddressBuffer, we have to calculate the offset of buffer variable in a shader storage block, then call the corresponding wrapper function to get the right value. In this patch, we only process below situations: assign_to_ssbo := ssbo_access_chain = expr_no_ssbo; assign_from_ssbo := lvalue_no_ssbo = ssbo_access_chain; The translation is like below: // GLSL #version 310 es layout(local_size_x=8) in; layout(std140, binding = 0) buffer blockA { float f[8]; } instanceA; layout(std140, binding = 1) buffer blockB { float f[8]; }; void main() { float data = instanceA.f[gl_LocalInvocationIndex]; f[gl_LocalInvocationIndex] = data; } // HLSL RWByteAddressBuffer _instanceA: register(u0); RWByteAddressBuffer _blockB: register(u1); float float_Load(RWByteAddressBuffer buffer, uint loc) { float result = asfloat(buffer.Load(loc)); return result; } void float_Store(RWByteAddressBuffer buffer, uint loc, float value) { buffer.Store(loc, asuint(value)); } void gl_main() { float _data = float_Load(_instanceA, 0 + 16 * gl_LocalInvocationIndex); float_Store(_blockB, 0 + 16 * gl_LocalInvocationIndex, _data); } We will do below things in the following patches: 1. Modify the intermediate tree to flatten all ssbo usages to: assign_to_ssbo := ssbo_access_chain = expr_no_ssbo; assign_from_ssbo := lvalue_no_ssbo = ssbo_access_chain; e.g. intanceA.a +=1; ->tmp = intanceA.a; intanceA.a = tmp + 1; while(++instanceA.a < 16) { } -> int PreIncrement(out int a) { a += 1; return a; } tmp = instanceA.a; while(PreIncrement(tmp) < 16) { instanceA.a = tmp } 2. Add offset calculation for structure and array of arrays. TODOs have been marked in the corresponding places in this patch. 3. Improve helper functions so that they can process all possible types. TODOs have been marked in the corresponding places in this patch. 4. Process the swizzle situation. TODOs have been marked in the corresponding places in this patch. A possible method is to extend current helper functions like below: *_Load(RWByteAddressBuffer buffer, uint loc, bool isSwizzle, uint4 swizzleOffset) Bug: angleproject:1951 Test: angle_end2end_tests Change-Id: I68ae68d5bb77d0d5627c8272627a7f689b8dc38b Reviewed-on: https://chromium-review.googlesource.com/848215 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Frank Henigman 1cee0421 2018-09-09T17:00:21 Suppress ...shaders.builtin_variable.fragcoord_w. Suppress dEQP-GLES2.functional.shaders.builtin_variable.fragcoord_w on Android Vulkan. BUG=angleproject:2808 Change-Id: Ib2dcb83bef97352e6a169c0531e2316217d9149e Reviewed-on: https://chromium-review.googlesource.com/1215382 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Frank Henigman 3b968053 2018-09-05T14:46:25 Clean up state in EGLDebugTest. Reset the EGL error callback for the benefit of following tests. BUG=chromium:880495 Change-Id: Idd94fe032b89b8a0fe829cb4656e4204d9d71b53 Reviewed-on: https://chromium-review.googlesource.com/1208310 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill ef6023ea 2018-09-06T16:24:38 Vulkan: Make ContextVk driver uniforms a dirty bit. This makes the update lazier and won't trigger as many times during state changes. It also makes a command buffer available during the update so we can use barriers if necessary. Bug: angleproject:2598 Bug: angleproject:2727 Change-Id: I23ac91c84f6b1f4bad14b3354d19402e5978791e Reviewed-on: https://chromium-review.googlesource.com/1211730 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill fb19e084 2018-09-06T15:39:09 Vulkan: Correct gl_FragCoord with default FBO. The viewport flipping we use would give incorrect values. Correct them using the same logic we do for gl_PointCoord. Also corrects the viewport scale driver uniform. It was not being updated after the draw framebuffer setting was adjusted. Also corrects the naming of the replaced builtin variables so it can't possibly conflict with a user variable. This was affecting the OpenGL line raster emulation. Bug: angleproject:2598 Change-Id: I843b5ac7b02160a5ec81a6f8ed2d937b0937198b Reviewed-on: https://chromium-review.googlesource.com/1208515 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 55b03d0e 2018-09-07T00:15:46 Fix ClearTest.RGB8WithMaskFramebuffer. Clear all channels to known state before clearing with one masked, so we know what to expect in the masked one. BUG=angleproject:2674 Change-Id: Icbe58615c68e2b282a27d8f29c2f2a48fb8b1c3e Reviewed-on: https://chromium-review.googlesource.com/1212822 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill d84b6737 2018-09-06T15:54:35 Cache ValidateDrawStates. This improves performance of all draw call validation. The error that should be generated on the draw call is cached in the Context. The cache is updated in several places. Bug: angleproject:2747 Change-Id: I178617623731608e2e7166b53ab6489d8b742ff5 Reviewed-on: https://chromium-review.googlesource.com/1158612 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Ian Elliott 4d42ef39 2018-09-06T10:38:50 Add A4A opt-in/out logic This version of the code #ifdef's out the JSON-parsing code (which dependency was not yet found). Instead, 2 in-code rules are created and used (default and run Maps). Bug: angleproject:2794 Change-Id: I9d8c00459d5e674035f4073ccb839fac8d4d7aa5 Reviewed-on: https://chromium-review.googlesource.com/1200375 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Ian Elliott <ianelliott@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho dff32a0d 2018-08-28T14:35:50 Support multisample arrays in shader programs The added tests check that using textureSize() and texelFetch() on textures with a fixed point format return expected results. texelFetch is also covered for integer format textures. dEQP GLES 3.1 tests also cover a variety of multisampled array texture formats. BUG=angleproject:2775 TEST=angle_end2end_tests, angle_deqp_gles31_tests Change-Id: I99b422e24b39e3563ed72f0fb85c9c1907df807d Reviewed-on: https://chromium-review.googlesource.com/1196521 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 155bfd11 2018-08-31T17:27:10 Fix that same resource is bound on SRV and UAV simultaneously This change makes sure that resource being set to UnorderedAccessView slot is not bound on ShaderResourceView and resource being set to shader resource slot is not bound on UnorderedAccessView. Bug: angleproject:2768 Change-Id: I52fc5bf5e76ccf8be61c59b2195459728f95e536 Reviewed-on: https://chromium-review.googlesource.com/1201324 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Jamie Madill 3d61ac27 2018-08-28T16:58:55 Vulkan: More micro-optimizations. Inlining more methods into headers. In total the patch series improves performance by about 60-70% in the Vulkan draw call overhead test. Bug: angleproject:2786 Change-Id: I70913ac6b3d5836c17c13e249950987df362f203 Reviewed-on: https://chromium-review.googlesource.com/1194883 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Shahbaz Youssefi 9137adea 2018-08-27T14:22:37 Add support for EGL_ANDROID_blob_cache The functionality of MemoryProgramCache is divided up in two. BlobCache is now a generic binary cache, which interfaces with the callbacks from EGL_ANDROID_blob_cache. MemoryProgramCache handles program [de]serialization and interacts with BlobCache. Bug: angleproject:2516 Change-Id: Ie4328a2e56a26338e033d84f4e53a1103411937d Reviewed-on: https://chromium-review.googlesource.com/1194285 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Xinghua Cao 913ff54d 2018-08-07T15:14:05 ES31: support compute shader uniform buffer on D3D backend BUG=angleproject:2759 TEST=angle_end2end_tests.ComputeShaderTest.UniformBuffer/ES3_1_D3D11 Change-Id: I92326c3a84f13b364aed0daf567b68f8a411ed2b Reviewed-on: https://chromium-review.googlesource.com/1164843 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Jamie Madill 3e29cf31 2018-08-31T17:19:17 Vulkan: Fix redefining TexStorage after TexImage. This can be easily implemented via a release call. Bug: angleproject:2651 Change-Id: I0adb3ed385284c6342716cd7c347de9966a81bab Reviewed-on: https://chromium-review.googlesource.com/1200368 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a792193e 2018-08-31T17:19:18 Vulkan: Enable StateChangeTest.DisablingBufferedVertexAttribute. This was likely fixed with default vertex attribute support. Bug: angleproject:2650 Change-Id: Ibbc19013ed8227c6fe32ae186b0fa88e5c837589 Reviewed-on: https://chromium-review.googlesource.com/1200369 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2b858c2f 2018-09-03T13:58:14 Vulkan: More micro-optimizations to setupDraw. Still a hotspot but much improved. Bug: angleproject:2786 Change-Id: Ie68ff314e6c952f281b48f6d9af37b5dcd194d6a Reviewed-on: https://chromium-review.googlesource.com/1194882 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill a153eddb 2018-08-31T17:19:19 Vulkan: Enable UniformTest.Sampler. This test was fixed quite some time ago. Bug: angleproject:2462 Change-Id: I49714dd08a5e477d72337147f83b80945a8486ee Reviewed-on: https://chromium-review.googlesource.com/1200370 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill fda46aa5 2018-08-31T17:19:15 Vulkan: Enable GLSLTest.ScopedStructsOrderBug. This was fixed upstream in glslang. Bug: None Change-Id: I21751dba101fe39f94c91de6e73853ee9ad8c8f2 Reviewed-on: https://chromium-review.googlesource.com/1200366 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill bf4dc156 2018-08-31T17:19:15 Vulkan: Enable BindUniformLocationTest.Compositor. This was probably fixed some time ago. Possibly due to matrix uniform support. Bug: angleproject:2642 Change-Id: Ic4b9524d82e6770dcba117f5c155c413074ec172 Reviewed-on: https://chromium-review.googlesource.com/1200365 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 44558e37 2018-08-31T17:19:14 Vulkan: Enable TextureLimitsTest. Seems to pass possibly because of a prior bug fix. Bug: angleproject:2654 Change-Id: I53e67bfa28e5429c51720fa71d9168d2f1cf1ece Reviewed-on: https://chromium-review.googlesource.com/1199928 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 73d15ba4 2018-08-31T17:19:13 Vulkan: Enable a dEQP point raster test. This passes on the bots. It fails on 5x but passes on Pixel 2. Bug: angleproject:2599 Change-Id: Ib71dcaf6adff104d7f70d1d6fe800e78c6778e66 Reviewed-on: https://chromium-review.googlesource.com/1199725 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d1249de0 2018-08-28T16:58:53 Vulkan: Optimize ContextVk::setupDraw. This improves performance significantly in the Vulkan CPU overhead test. Bug: angleproject:2786 Change-Id: I911bc66a6b2d11dd3848ffa90927b314aeadfc24 Reviewed-on: https://chromium-review.googlesource.com/1194301 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 30b5d84c 2018-08-31T17:19:12 Vulkan: Fix line width caps. We would need to enable the wide lines feature to support non-unit line widths. For now just disable the caps. Bug: angleproject:2598 Bug: angleproject:2706 Change-Id: I0dd228fc2c357bdd9442c3d841be769987a53f72 Reviewed-on: https://chromium-review.googlesource.com/1127303 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 0a17e484 2018-08-31T17:19:11 Vulkan: Fix sync of initially disabled attributes. If an attribute was never enabled or disabled the default state was not properly synced in our implementation. This wasn't caught by currently enabled tests. Those tests are now enabled in VertexAttributeTest. Bug: angleproject:2800 Change-Id: I97c063651911379e16de4ee557d9840782114c54 Reviewed-on: https://chromium-review.googlesource.com/1199724 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 9808d38c 2018-08-31T13:12:14 Fix that image texture works incorrectly when loading from program binary This bug is introduced when we implement image texture robust initialization, where we forgot to update active image units mask in program cache. Bug: angleproject:2766 Change-Id: I01de02803173f2cf5b7b9ff740175a4d7cbee4ba Reviewed-on: https://chromium-review.googlesource.com/1198683 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Jamie Madill ef3b9b46 2018-08-30T16:18:38 Vulkan: Add ContextVk dirty bits. These dirty bits mostly track state needed for the command buffer. It should speed up ContextVk::setupDraw by skipping unset dirty bits instead of using boolean checks. Improves perf slightly on the Vulkan null draw call test. Bug: angleproject:2786 Change-Id: I071ce558c522732a17ad101d097ee4d10740abf1 Reviewed-on: https://chromium-review.googlesource.com/1194300 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 37386b02 2018-08-30T16:18:37 Vulkan: Cache object pointers in ContextVk. Small performance optimization. Bug: angleproject:2786 Change-Id: Ib01c1762d438ffb72ec25bf05135a7d3271d6aee Reviewed-on: https://chromium-review.googlesource.com/1188954 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 88fc6da3 2018-08-30T16:18:36 Vulkan: Mega-refactor to VertexArrayVk. This moves a lot of the code in VertexArrayVk into ContextVk. Having the code in a centralized place makes the code a bit more organized since the Context is reponsible for binding state to the command buffers. It also makes it easier to use dirty bits to track the command buffer state. Bug: angleproject:2786 Change-Id: I5cefbb14028e8f3fe651f26e997ca88f8f1c7628 Reviewed-on: https://chromium-review.googlesource.com/1188953 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 253038d8 2018-08-30T16:18:35 Vulkan: Refactor VertexArrayVk::streamIndexData. This enables us to use the same code for streaming client side index arrays and for translating buffers. Also includes a few more code cleanups. Bug: angleproject:2786 Change-Id: Ic615d87cb50fd0acd8ab6b63ed334da4b1c40eff Reviewed-on: https://chromium-review.googlesource.com/1188952 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Yuly Novikov 2eb54074 2018-08-22T16:41:26 Fix EGLImage pixel format validation This fixes the scenario when EGLImage source and target have different types. For example, a texture is created with unsigned format using glTexImage2D, it is used as a source of EGLImage with eglCreateImageKHR, and then the EGLImage is used to create a renderbuffer target with glEGLImageTargetRenderbufferStorageOES. OES_EGL_image doesn't specify what should happen in this case, but GL implementations (Nexus 5X) seem to allow using this renderbuffer in glFramebufferRenderbuffer and the resulting framebuffer is complete. Thus, in this case, instead of checking whether the renderbuffer format can be used in glFramebufferRenderbuffer, we need to check whether the original texture can be used in glFramebufferTexture2D. Similarly in reverse direction. Also, for the case of source renderbuffer and target texture, presume that glEGLImageTargetTexture2DOES will succeed regardless of renderbuffer format. 1. Add isRenderable and isTexturable checks to egl::Image class, and perform different checks depending on source type. 2. Add isRenderable check to FramebufferAttachment and delegate EGLImage attachments check to egl::Image. 3. Use these checks in validation of EGLImageTargetTexture2D, EGLImageTargetRenderbufferStorage and when checking attachment completeness Bug: angleproject:2567 Change-Id: I8e9f4a2930a4075a4d8464f62582c6825270187e Reviewed-on: https://chromium-review.googlesource.com/1192585 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Ian Elliott abcb2b3b 2018-08-29T17:04:15 Add stubs for A4A opt-in library. Bug: angleproject:2794 Change-Id: I9ba8abf5fdac4a1bae24bc78ece62337d24e903b Reviewed-on: https://chromium-review.googlesource.com/1196043 Commit-Queue: Ian Elliott <ianelliott@google.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tobin Ehlis 3a181e3e 2018-08-29T15:17:05 Roll VK deps forward as of 8/31/2018 Roll Vulkan ANGLE dependencies forward as of 8/31/2018. This grabs some new validation checks including point-related checks that may be interesting for bug 2727. One of these checks, related to PointSize, is firing so I've added some code in the VK debug callback to suppress those error messages for now and filed a separate bug (2796) to fix that issue in the renderer. Had to overhaul the json gen script as validation changed how these are generated. They now use a base template with some strings replaced to account for platform and Vulkan header version. Offloaded all of that work to our existing json generate script which was previously more of an intelligent copy but now had some further intelligence for transforming from input template into final json files. Had to also roll glslang forward to meet shader validation dependency. Bug: angleproject:2727 Change-Id: I929619cd258cddd6bc9c6743600e072c46736f5c Reviewed-on: https://chromium-review.googlesource.com/1194617 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tobin Ehlis <tobine@google.com>
Geoff Lang 89e82979 2018-08-28T11:32:53 Vulkan: Allow gaps in vertex attributes by packing them. Work around restrictions with setting null vertex buffers on command buffers by binding ranges of non-null buffers. Enable VertexAttributeTest on ES2/Vulkan BUG=angleproject:2792 BUG=angleproject:2797 Change-Id: Ief9db1e60c8c9045a4101abe859302d529decbcb Reviewed-on: https://chromium-review.googlesource.com/1194282 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang b02fc662 2018-08-21T09:48:01 Lock around all EGL and GL calls with a global mutex. BUG=angleproject:2464 Change-Id: I0231cc84777272f9cf26298c6a137f1ad3fd51d6 Reviewed-on: https://chromium-review.googlesource.com/1183441 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 86792f44 2018-08-30T16:18:34 Vulkan: Optimize ContextVk::updateDefaultAttributes. This function was getting called every time because the dirty bit mask included dirty bits for unused program attributes. Fix this by making sure we never have dirty bits set for inactive attributes. Bug: angleproject:2786 Change-Id: Icf72dadd8a853d3a448abb303119b7b71f6c8193 Reviewed-on: https://chromium-review.googlesource.com/1188951 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a064c27c 2018-08-30T16:18:34 Vulkan: Refactor VertexArrayVk::streamVertexData. Merges duplicated code in convertVertexBuffer with streamVertexData. Refactoring change only. Bug: angleproject:2786 Change-Id: I32baaad42d74918cfb17f04970d3c7e9b88362e7 Reviewed-on: https://chromium-review.googlesource.com/1188950 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 70a4ef10 2018-08-30T15:55:41 Vulkan: Fix depth range scaling. We were using a formula that didn't work for some of the clipping tests. Bug: angleproject:2601 Change-Id: I60d965c2701656ad590c3b250c2cc777fb432421 Reviewed-on: https://chromium-review.googlesource.com/1194919 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 161a89b1 2018-08-31T10:12:38 Skip DrawElementsIndexOutOfRangeWithStaticDraw on NVIDIA D3D11 FL9.3. This test started consistantly failing after changing the shard count on this test suite. BUG=angleproject:2799 Change-Id: I75769b08f9d4dda1d436facc34a8292193b4538e Reviewed-on: https://chromium-review.googlesource.com/1199723 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 064458a8 2018-08-30T14:02:02 Remove separate ANGLE_texture_multisample_array We can just expose OES_texture_storage_multisample_2d_array instead. The compiler was already changed to accept OES_texture_storage_multisample_2d_array, and now the change is made also at the API level. Out-of-bounds access guarantees provided by ANGLE were the only big difference between the ANGLE spec and the OES spec, so it's simpler to just expose the native extension. Safe out-of-bounds accesses can be guaranteed without having them in the extension spec. This also adds missing texStorage3DMultisample entry point to the proc table, which will enable running dEQP tests. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Idf376ee877a3374a33de177df023f0531ec8f01d Reviewed-on: https://chromium-review.googlesource.com/1196722 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho fd162107 2018-08-27T16:14:57 Support multisample arrays as framebuffer attachments This contains tests for framebuffer completeness when layers of multisample array textures are attached. Simple clearing of a layer of a multisample color texture array and blitting the result to a non-multisampled texture is also covered. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Idf383cab69587dbd8157ab9a2b7c47e5a90b3cf7 Reviewed-on: https://chromium-review.googlesource.com/1190184 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Tobin Ehlis 1bf963b6 2018-07-19T14:56:37 Clean up PlatformMethods attribute enum Centralize definition of EGL_PLATFORM_ANGLE_PLATFORM_METHODS_ANGLEX in Platform.h. Bug: angleproject:2528 Change-Id: Id2b022c4ea08d2e98cbd6c3b248b58d096c20dfb Reviewed-on: https://chromium-review.googlesource.com/1144265 Reviewed-by: Tobin Ehlis <tobine@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 44b2c0b1 2018-08-29T17:31:27 Avoid rebase_path() in BUILD.gn. Adjust source paths so we don't need to use rebase_path() on all of them. BUG=angleproject:1569 Change-Id: I687dbb9378b1f054eb5664320c662fe4c882a82f Reviewed-on: https://chromium-review.googlesource.com/1194619 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman e1037e9b 2018-08-29T20:49:49 Avoid rebase_path() in tests/BUILD.gn. Adjust source paths so we don't need to use rebase_path() on all of them. BUG=angleproject:1569 Change-Id: I1af7678dd8961405446fec49731eba5294bcb586 Reviewed-on: https://chromium-review.googlesource.com/1196046 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 0c5a9e22 2018-08-27T14:36:23 Implement TexStorage3DMultisample on the GL backend BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Ic980d86cd787bcf29f622e68b0c38b0eb6ca5688 Reviewed-on: https://chromium-review.googlesource.com/1190182 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 80aa5592 2018-08-29T15:50:39 Clean up TextureD3D_2DMultisample This removes some duplicate unreachable calls from TextureD3D_External and TextureD3D_2DMultisample. There will be further use for this once TextureD3D_2DMultisampleArray is implemented. This also cleans up some no-ops from TextureD3D_2DMultisample and sets it correctly as immutable. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: Ia253a1ed6f418a24bb0c4a4e61654b1c061dba97 Reviewed-on: https://chromium-review.googlesource.com/1193950 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho f0d0408a 2018-08-28T16:02:13 Use OES_texture_storage_multisample_2d_array There's an OES extension for multisample texture arrays, OES_texture_storage_multisample_2d_array. Change references from ANGLE_texture_multisample_array to the native extension in the shader compiler. ANGLE still needs to have robust behavior for out-of-range texel fetches that's not found in the original extension, but this does not need to be spelled out in the extension spec. BUG=angleproject:2775 TEST=angle_unittests Change-Id: Ie80ae767cc92ccaf7389af28789f45547f86978f Reviewed-on: https://chromium-review.googlesource.com/1193266 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman ddc41208 2018-08-23T22:11:55 Rename .gypi -> .gni. Rename and reformat all gyp files. They were previously converted to gn but not renamed to preserve continuity in git. This rename completes the removal of all traces of gyp. BUG=angleproject:1569 Change-Id: I50123105d8881583184ffc564bed65d9fbe4d41c Reviewed-on: https://chromium-review.googlesource.com/1187885 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Elliott ae6c2b88 2018-08-29T13:05:23 Fixes found while turning on A4A opt-in/out code. Bug: angleproject:2789 Change-Id: If9d83dd94d392103ed5200ba471d47dc907cf3ca Reviewed-on: https://chromium-review.googlesource.com/1194612 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Elliott <ianelliott@google.com>
Frank Henigman a7f97a27 2018-08-21T00:04:05 Gyp is dead. Long live gn. Remove the gyp build. The .gypi files were not renamed so that diff and rebase would work on this change. They will be renamed in a separate change. BUG=angleproject:1569 Change-Id: If8a217027633293664b820104f91a4ca5889b24e Reviewed-on: https://chromium-review.googlesource.com/1187380 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 4c310831 2018-08-29T13:43:17 Vulkan: Return VkDeviceSize from DynamicBuffer. This obviates many static_casts. More closely represents what Vulkan is doing. One cast remains where we are using uint32_t for dynamic offsets with uniform buffers. Bug: angleproject:2786 Change-Id: I043ebb5d965f46ee6ebbfcb91d75a58508cacfe3 Reviewed-on: https://chromium-review.googlesource.com/1188949 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 3e217f65 2018-08-28T16:55:20 Rename UniformHLSL to ResourcesHLSL In future, atomic counter and shader storage block will be added into UniformHLSL since they all need the UAV register. So this change renames UniformHLSL to ResourcesHLSL. Bug: angleproject:1951 Change-Id: Ie9eda090763fbb516468c138e65e111eb12fe514 Reviewed-on: https://chromium-review.googlesource.com/1193322 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho d310a434 2018-08-24T15:40:23 Add validation and negative tests for multisample arrays This adds errors for binding and allocating multisample array textures. New tests in TextureMultisampleTest.cpp check that the errors are generated as specified. Tests for querying supported sample counts are also improved and extended for multisample array textures. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I6a0fe7ae04bb3d0072f6cbe09026b05e2bc47325 Reviewed-on: https://chromium-review.googlesource.com/1188576 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1e1b731a 2018-08-28T13:27:23 Vulkan: Clean up point coord translation. Use - 0.5 instead of + -0.5 in FlipGLPointCoord. Bug: angleproject:2673 Change-Id: I819dcc45f9098ea64085eb71af8920fe99b67c62 Reviewed-on: https://chromium-review.googlesource.com/1194454 Reviewed-by: Tobin Ehlis <tobine@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Qin Jiajia 47f6dd0d 2018-08-10T13:36:32 Implement robust initialization for image texture This change fixes a bug that the image texture initialization time is not correct. It happens when we use compute shader to write data to an uninitialized texture, then use readPixels to read the result which results that texture initialization falls behind image store and covers the real result. Bug: angleproject:2766 Change-Id: I4e986972096857afc975c40dfa4d559a2f31194c Reviewed-on: https://chromium-review.googlesource.com/1170569 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 4e877ad3 2018-08-28T00:18:47 Suppress TransformFeedbackNegativeAPI test on Mac AMD. Seems to be failing on Mac Pro FYI Release (AMD). Unclear exactly the scope of the problem so suppress it on all Mac AMD for now. Bug: angleproject:2747 Change-Id: I7a5da00b9056839f3ed01fc4c83fa7993019bda7 Reviewed-on: https://chromium-review.googlesource.com/1192550 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 6dfdca83 2018-08-03T17:10:55 ES31: support compute shader sampling on D3D backend BUG=angleproject:2756 TEST=angle_end2end_tests.ComputeShaderTest.SamplingAndImageReadWrite/ES3_1_D3D11 Change-Id: I8f112227c5703fcaafffbd2262e6a039f869c483 Reviewed-on: https://chromium-review.googlesource.com/1161754 Commit-Queue: Xinghua Cao <xinghua.cao@intel.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 33dab025 2018-08-24T10:00:16 Add test for transform feedback state change validation. This test covers several validation edge cases with detecting feedback loops and buffers bound to multiple types of binding. Bug: angleproject:2747 Change-Id: I612a4fcf1870667a821ebcba2d3948695b3cabd5 Reviewed-on: https://chromium-review.googlesource.com/1174094 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7b2f0274 2018-08-27T10:16:08 Inline more buffer binding calls. This splits checkObjectAllocation into the inline part and the slow part. It uses ANGLE_INLINE to force the former to be inlined. Also inlines and optimizes a few other buffer binding related checks. Improves performance in a bindings performance test by about 20%. Includes contributions from matavenrath@nvidia.com. Test: Bindings_gl_100_objects_allocated_at_initialization Bug: angleproject:2777 Change-Id: I71b07d72a8e81db7a90140ef84eca599a29239ed Reviewed-on: https://chromium-review.googlesource.com/1190442 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart 22f7aafb 2018-08-23T14:13:51 Add webgl checks in GetActiveUniformsiv. Add validation that disallows GL_UNIFORM_NAME_LENGTH from being used. BUG=angleproject:1523 TEST=angle_end2end_tests Change-Id: Id70e25ab79fd93ae4eb8b8343819458a4a0e4a71 Reviewed-on: https://chromium-review.googlesource.com/1187511 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shahbaz Youssefi c14ab2a7 2018-08-24T13:57:55 Fix dEQP_GLES3.functional.negative_api.shader.program_binary The frontend was not taking into account the fact that some drivers do not support program binaries. The fix is that now glGetProgramiv(GL_PROGRAM_BINARY_LENGTH) returns 0 under such circumstances. Bug: angleproject:2780 Change-Id: I4ea2cda6bb4612e69dbd7e00b3d43b97ee3b3c3d Reviewed-on: https://chromium-review.googlesource.com/1188768 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Olli Etuaho 89664843 2018-08-24T14:45:36 Add glTexStorage3DMultisampleANGLE entry point This adds the entry point but does not implement it yet. The entry point and enums are also added to the gl2ext_angle.h header file. BUG=angleproject:2775 TEST=angle_end2end_tests Change-Id: I24c231c52e7cbb13637880b21044e655935b51e8 Reviewed-on: https://chromium-review.googlesource.com/1188575 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Shahbaz Youssefi 8707af51 2018-08-23T15:49:14 Add a test case for enabled-but-inactive vertex attributes Bug: angleproject:2138 Change-Id: Ia5331845d34f60a31280e6da041d13dc3da29232 Reviewed-on: https://chromium-review.googlesource.com/1187364 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 337bd698 2018-08-22T16:16:38 Disable vertex attributes if not active in program Even if explicitly enabled. Bug: angleproject:2138 Change-Id: I598d21296bb6843e05cdeab146c1ff3da3a1174b Reviewed-on: https://chromium-review.googlesource.com/1185743 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Shahbaz Youssefi dc248f71 2018-08-24T10:12:27 Re-enable dEQP_GLES3.functional.negative_api.texture.bindtexture The test no longer fails on any platform Bug=angleproject:2779 Change-Id: I1b184b41be23a25fb01a54587eda88fac470b7de Reviewed-on: https://chromium-review.googlesource.com/1188604 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 8ca60805 2018-08-23T14:10:02 Add 2D MS array sampler support to compiler This also places textureSize(gsampler2DMS) correctly in the ESSL 3.10 builtins instead of ESSL 3.00 builtins. BUG=angleproject:2775 TEST=angle_unittests Change-Id: Ieb0f7a7424a5558a5569af6d4fcbcc9b12ec9840 Reviewed-on: https://chromium-review.googlesource.com/1186466 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 d6781dce 2018-08-23T10:51:06 Extend LinkProgramPerfTest to support compile only Add an option for "compie_only" and "compile_and_link". Bug: chromium:849576 Change-Id: Id796ebb85ad5aff1a5272173f11ce2ff42685dce Reviewed-on: https://chromium-review.googlesource.com/1186159 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi 221fa261 2018-08-23T10:12:09 Re-enable BlitFramebuffer tests Accidentally disabled in 265811130, which intended to disable tests requiring GL_ANGLE_framebuffer_blit, but also disabled glBlitFramebuffer tests. glBlitFramebuffer is core, but was conditioned to EXT_framebuffer_blit. Bug: angleproject:2773 Change-Id: I0468af8874dc8676a4eb6214b111c08aadc0e2fc Reviewed-on: https://chromium-review.googlesource.com/1186543 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill b42162fb 2018-08-20T12:58:37 Optimize ValidateDrawStates. Apparently returning a small struct was slow enough to make a 2-3% difference in benchmark scores. Very visible on the MSVC sampling profiler. Bug: angleproject:2747 Change-Id: I459a127f3f2a0fc3a08db15c37257a67f63f20ce Reviewed-on: https://chromium-review.googlesource.com/1181465 Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill eef9de68 2018-08-23T11:03:22 Add validation state change test for draw framebuffer. This test covers feedback loops and invalid component types. Bug: angleproject:2747 Change-Id: I3e3c762c5457afef59311f7c5843e464fa386cd6 Reviewed-on: https://chromium-review.googlesource.com/1174093 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Shahbaz Youssefi c4097441 2018-08-22T12:14:52 Fix x64 visual studio build errors Bug: angleproject:2740 Change-Id: I44fd2a1daf3dca764e2eef73e437feb32b36dbaa Reviewed-on: https://chromium-review.googlesource.com/1185234 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 9259fd0d 2018-08-22T12:12:00 Clean and enable NoLeakingFragments multiview test Use helper to create multiview backing textures in NoLeakingFragments test instead of doing FBO attachments twice. The test seems to pass on Windows after the recent fixes that have been done to the tests, or possibly due to other earlier fixes. BUG=angleproject:2687 TEST=angle_end2end_tests Change-Id: I6015a5b44fdd06faf7b9375bad501355be8d7732 Reviewed-on: https://chromium-review.googlesource.com/1184713 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho a7b35c33 2018-08-21T16:32:24 Add helpers for multiview framebuffer init Multiview tests now use common helpers to create textures for multiview framebuffers and often also to attach the textures to the framebuffers. The tests now rely on uploaded texture data to initialize the buffers instead of clearing the framebuffers with glClear. BUG=angleproject:2765 TEST=angle_end2end_tests Change-Id: I7d6d63add5943cab610ab888045d5b0f8ba29215 Reviewed-on: https://chromium-review.googlesource.com/1184712 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>