src/tests/gl_tests


Log

Author Commit Date CI Message
Shao dde78e8c 2017-05-22T14:13:27 ES31: Implement Vertex Attrib Binding on OpenGL This patch intends to implement Vertex Attrib Binding on OpenGL back-ends: 1. Add supports for updating vertex attributes by Vertex Attrib Binding APIs. 2. Refactor the process of updating vertex attribtues in class VertexArray to make it easier to implement this feature. BUG=angleproject:1593 TEST=dEQP-GLES31.functional.vertex_attribute_binding.* Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2 Reviewed-on: https://chromium-review.googlesource.com/510251 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ffb35f64 2017-07-14T18:01:07 Fix broadcasting gl_FragColor at the end of main Previously, the broadcast step would not get run in case the main() function returned before reaching its end. Now the broadcast step is put in a separate function that wraps main() if needed, so that it gets run even if the main() function in the original shader source returns in the middle. DrawBuffersTest is refactored to use ANGLETest::drawQuad() instead of calling glDrawArrays directly. BUG=angleproject:2109 TEST=WebGL conformance tests, angle_end2end_tests Change-Id: Id5f05094e816df03bc9c8ca62b60de914072682c Reviewed-on: https://chromium-review.googlesource.com/574597 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill a0016b7f 2017-07-14T14:30:46 Check depth-stencil attachment sample count. Currently we would only check for the color attachment sample count, which could return incorrect results for depth or stencil-only Framebuffers. BUG=angleproject:2108 Change-Id: I378349c91c0139ee507d88fa6a36a86234fea0d4 Reviewed-on: https://chromium-review.googlesource.com/571064 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Martin Radev cca63f2e 2017-07-14T11:08:41 Fix compilation error in RobustResourceInitTest.cpp The patch fixes a compilation bug caused from having local variable names clash with the variables names from a parent scope. BUG=angleproject:1815 Change-Id: I3d23faaafdea9be503da99512b204d7a50a3b228 Reviewed-on: https://chromium-review.googlesource.com/571000 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang c5af8ba6 2017-07-11T12:18:31 D3D11: Make sure to resolve the storage for CopyTexImage3D. TextureD3D_3D::copySubImage worked around missing functionality in D3D11 for copying a framebuffer directly to a texture storage but didn't handle the case of a texture storage already existing. This caused the image to have out-of-date data before the new data was copied into it. Simply copy the data from the storage back into the image before performing the copy from the framebuffer and then copy back to the storage afterwards. TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html BUG=angleproject:1815 Change-Id: I308d6a1d3ecbc738f7d0e232bece433e6b353638 Reviewed-on: https://chromium-review.googlesource.com/567199 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Martin Radev d178aa46 2017-07-13T14:03:22 Fix attachment validation bug Passing COLOR_ATTACHMENTm, where m is greater or equal to MAX_COLOR_ATTACHMENTS, to a FramebufferTexture* function should generate an INVALID_OPERATION instead of an INVALID_VALUE error. BUG=angleproject:2106 TEST=angle_end2end_tests Change-Id: I99045defcbe5eb2afefac1b45062ee4245f50dd3 Reviewed-on: https://chromium-review.googlesource.com/569966 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
JiangYizhou 34bc315d 2017-03-29T14:56:01 ES31: Implement multisampled Textures for D3D part. Implement TexStorage2DMultisample api for d3d part. BUG=angleproject:1590 TEST=angle_end2end_tests --gtest_filter=TextureMultisampleTest* TEST=angle_deqp_gles31_tests --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.fbo_* Change-Id: Icbfba45b9c2965af02b54dd4060b7b49970cb74b Reviewed-on: https://chromium-review.googlesource.com/457161 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit Bot 84db5733 2017-07-13T08:00:02 Merge "Fix non statically used fragment input structs on HLSL"
Yuly Novikov caa5cda0 2017-06-15T21:14:03 Validate uniforms and attributes name conflicts when linking Uniforms and attribute names have global scope, according to: GLSL 1.017 sections 4.2.6, 4.3.3 and 4.3.4. Thus, they can't have same names. BUG=angleproject:2014 Change-Id: Ibeb064aca877e404a67b9e3e9b57a0cc42e86f9f
Commit Bot 9dd5dbd8 2017-07-12T16:26:42 Merge "Link atomic counters to buffers"
Commit Bot 1636e1b9 2017-07-12T14:29:06 Merge "D3D11: Clip copy rect to the source framebuffer for copyTexImage3D."
Commit Bot f69ac0a5 2017-07-12T14:18:57 Merge "Add support for new internalformats in copyTextureCHROMIUM"
Olli Etuaho 06a06f5e 2017-07-12T12:22:15 Fix non statically used fragment input structs on HLSL Add static use information to struct fields that mirrors the static use information on the struct itself. This way dynamically generated HLSL doesn't need special handling for initializing fragment inputs if they are structs. This fixes a problem with the previous code where dynamically generated HLSL ended up trying to initialize structs that are not declared in the HLSL output because they were not being referenced. BUG=angleproject:2104 TEST=angle_end2end_tests Change-Id: I21283ce4fe26515d62d95e61f8155dc9a9b44cf1
jchen10 eaef1e5e 2017-06-13T10:44:11 Link atomic counters to buffers Gather counters from each shader and group them according the layout qualifier 'binding' into each buffer. BUG=angleproject:1729 TEST=angle_end2end_tests:AtomicCounterBufferTest Change-Id: I8d0cd0d2bf65be37c035b0e1540481c8bee0bae4
Geoff Lang bc5d7add 2017-07-10T16:17:26 D3D11: Clip copy rect to the source framebuffer for copyTexImage3D. TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html BUG=angleproject:1815 Change-Id: I146fcf97a9c90f07d6270672c5e44e05602eecf8
Corentin Wallez 59c41597 2017-07-11T13:19:54 Fix Clear validation assert for default FBOs The validation was iterating over maxDrawBuffers attachments when default framebuffers only have one attachment. Use the framebuffer's drawBufferCount instead. Also adds a regression test in the form of a WebGLComptibility test for glClearBuffer with the default framebuffer. BUG=angleproject:2091 Change-Id: I07ee524db1fcb8a99dab4043248c0885100fd216
Brandon Jones 340b7b8b 2017-06-26T13:02:31 Add support for new internalformats in copyTextureCHROMIUM This adds support in blit11::copyTexture for LUMA, LUMA_ALPHA, and ALPHA formats as destinations. Added is handling for each case to match up the corresponding shader. This required new premultiply and unmultiply D3D11 shaders for some cases. Changed copyTextureCHROMIUM validation to allow new formats. Tests have been created to demonstrate using copyTextureCHROMIUM with the new formats with default parameters, as well as with the unpackPremultiply and unpackUnmultiply parameters. BUG=:angleproject:2101 Change-Id: Id8cd303a46fe70710bc18172fc938552a6e4cfaf
Geoff Lang 88318b44 2017-07-05T14:39:01 Fall back to CPU copies for srgb textures in copy_texture_CHROMIUM. The copied data is not supposed to have sRGB conversions applied to it when written to the destination texture but an sRGB SRV is used by Blit11. Instead of creating multiple sRGB and non-sRGB SRVs for textures, simply fall back to the CPU copy path for this format for now. Clip color channels that should not exist in the destination texture formats in Image11::CopyImage. This works around issues with texture formats with emulated channels. TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte BUG=angleproject:1932 Change-Id: Ieeda3569f80d016fda781e7eb498acd3b97568d0 Reviewed-on: https://chromium-review.googlesource.com/559857 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bryan Bernhart (Intel Americas Inc) caf20889 2017-07-05T15:26:44 Fix incorrect quality level with depth-stencil buffer and MSAA configs. Using a depth buffer format requires that the DSV and RTV have equal quality levels; otherwise, the bound render target will discard writes. BUG=angleproject:1917 Change-Id: Ife25b0a8958fa2b31b43a0d877d27e440916a9bf Reviewed-on: https://chromium-review.googlesource.com/560716 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 69df242c 2017-07-05T12:42:31 Don't validate attribute types match for gl_VertexID and gl_InstanceID. TEST=conformance2/glsl3/no-attribute-vertex-shader TEST=deqp/functional/gles3/instancedrendering BUG=angleproject:2012 Change-Id: I234410fabf6a8fcd87040c8085ca5dce82fa8932 Reviewed-on: https://chromium-review.googlesource.com/559851 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Frank Henigman 2b853636 2017-07-06T09:14:41 Skip CopyTexImage outside FB test on Win/Intel/GL. BUG=angleproject:1815 Change-Id: Ia200cfe4ce4e6e3edd9ad2de841acbd1df49eb85 Reviewed-on: https://chromium-review.googlesource.com/561636 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman 1cbe9203 2017-06-15T18:13:31 Clip TextureGL::copyImage to framebuffer. Ensure the underlying GL does not modify areas of the texture that correspond to areas outside the framebuffer, as required for WebGL. Also zero out the texture in WebGL mode because CopyTexImage must return zeroes for areas outside the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: I51b1221dbf0dda0952e2ae89ee6ac925b5d1d4a4 Reviewed-on: https://chromium-review.googlesource.com/551535 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Frank Henigman 95ba174e 2017-06-22T20:38:04 Clip TextureD3D_2D::copyImage to framebuffer. WebGL CopyTexImage needs to zero the part of the texture corresponding to area outside the framebuffer, so we zero the whole texture then clip the read area. The clipping also avoids problems with code lower down that isn't prepared for read areas not entirely within the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: Ia7e0243ca72fa7c8f5bacda4d2022061d6a6d4f0 Reviewed-on: https://chromium-review.googlesource.com/551056 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Frank Henigman fa36c330 2017-06-09T18:44:45 Clip FramebufferGL::readPixels to framebuffer. In GL, ReadPixels() is allowed to modify memory that corresponds to pixels outside the framebuffer. In WebGL it must not do that, so clip the read area to the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: I8113ae417dee7834e63498aec8291ce711bd7513 Reviewed-on: https://chromium-review.googlesource.com/536434 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 088031e6 2017-07-03T15:59:33 HLSL: Disambiguate between struct function parameters Structs with different names but identical members are treated as ambiguous by the native HLSL compiler when looking up user-defined functions. Add the struct name to the function name to work around this limitation. BUG=chromium:731324 TEST=angle_end2end_tests Change-Id: Ie80ac0f1374bc5ac05dfebef3f94e2da7cdfc581 Reviewed-on: https://chromium-review.googlesource.com/558929 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 27a60631 2017-06-30T15:12:01 Re-apply UBO binding workaround on program save. The workaround which was previously defined to only apply on load also seems to affect save on some AMD drivers. BUG=angleproject:1637 BUG=angleproject:1897 Change-Id: Ia01a1420a484f3c2682ce97eaab18baccfb66a50 Reviewed-on: https://chromium-review.googlesource.com/558008 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman 739bd8ba 2017-06-19T21:02:27 Clip FramebufferD3D::readPixels to framebuffer. In GL, ReadPixels() is allowed to modify memory that corresponds to pixels outside the framebuffer. In WebGL it must not do that, so clip the read area to the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: Ie99401a2102c352ffb1193a57aa66a5b96c184aa Reviewed-on: https://chromium-review.googlesource.com/540556 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Olli Etuaho ff526f14 2017-06-30T12:26:54 Fix variable vs. function name conflict in HLSL output GLSL ES spec accepts the case where an initializer of a variable calls a function with the same name as the variable. The HLSL compiler doesn't accept that. Work around this limitation in the HLSL compiler by disambiguating user-defined functions from variables with a different prefix. BUG=angleproject:2095 TEST=angle_end2end_test, angle_unittests Change-Id: I41b32a3fcc6fd4c548e8dc3aa680d1b07fcf8719 Reviewed-on: https://chromium-review.googlesource.com/557872 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Yuly Novikov 8ff73235 2017-06-29T19:11:52 Skip couple UniformBufferTest31 on Linux AMD Broken by https://chromium-review.googlesource.com/c/522874/ on Linux Release (AMD R7 240) build 2431 BUG=angleproject:1897 TBR=jmadill@chromium.org Change-Id: I4c1f99a839f215b4c284ae1667d0a3b0774281c7 Reviewed-on: https://chromium-review.googlesource.com/557259 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov 834dd263 2017-06-29T17:19:37 Skip WebGLReadOutsideFramebufferTest.CopyTexSubImage2D on Win Intel Fails on Win10 Intel HD 530 and 630 bots. BUG=angleproject:1815 TBR=fjhenigman@chromium.org Change-Id: I27227cfa882f448e8b2de76e16dfe0dfe91703d2 Reviewed-on: https://chromium-review.googlesource.com/556759 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
jchen10 56375021 2017-06-21T11:38:04 D3D11: Fix Buffer11 for GPU-to-CPU storage copy. When copying from a non-mappable NativeStorage to a system memory based storage, a staging buffer storage should be used. Currently this is only done for PackStorage. This covers the missed SystemMemoryStorage and EmulatedIndexedStorage. Also it adds a triggering test case to expose the bug. BUG=angleproject:2076 Change-Id: I278a0eef85751e966c1c48ddd71010092a14a3f7 Reviewed-on: https://chromium-review.googlesource.com/542595 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman ab04e6a7 2017-06-22T20:38:04 Clip TextureD3D_2D::copySubImage to framebuffer. WebGL CopyTexSubImage does not allow touching parts of the texture that correspond to area outside the framebuffer, so we clip the read area to the framebuffer. The clipping also avoids problems with code lower down that isn't prepared for read areas not entirely within the framebuffer. Enable corresponding test. BUG=angleproject:1815 Change-Id: I411223669dae2a456dfc3e22acda907b73177988 Reviewed-on: https://chromium-review.googlesource.com/527411 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 79fd1e9f 2017-06-15T18:13:31 Clip TextureGL::copySubImage to framebuffer. Ensure the underlying GL does not modify areas of the texture that correspond to areas outside the framebuffer, as required for WebGL. Enable corresponding test. BUG=angleproject:1815 Change-Id: I6092d39e43868902de7ae3aee430deea3b3ff8a1 Reviewed-on: https://chromium-review.googlesource.com/538295 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Frank Henigman 68dfe0c5 2017-03-09T17:03:54 WebGL tests which read outside framebuffer. Add tests for readPixels, copyTexSubImage2D and copyTexImage2D which attempt to read outside the framebuffer boundary. readPixels and copyTexSubImage2D should not touch destination pixels which correspond to pixels outside the framebuffer. copyTexImage2D should write (0,0,0,0) to those pixels. BUG=angleproject:1815 Change-Id: I94042b5b08e319f28cb97d13613fe52514b67213 Reviewed-on: https://chromium-review.googlesource.com/452728 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 5fdaa2e3 2017-06-23T16:05:18 Reduce test failure spam in TransformFeedbackTest. The multicontext test could spam thousands of lines of error text when the test was broken. The test will still produce a lot of errors when everything is broken, but it will produce a lot less. BUG=angleproject:2088 Change-Id: Ia07e28897de3aba28cc8468acf27d5c9f56193a4 Reviewed-on: https://chromium-review.googlesource.com/549979 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 0dc97810 2017-06-22T14:38:44 WebGL2 Compat: having no 0 divisor is now valid BUG=angleproject:TBD Change-Id: Icb19a685290f4313ad567391cab5152eda91a346 Reviewed-on: https://chromium-review.googlesource.com/544545 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Jamie Madill e7b96340 2017-06-23T15:06:08 Fix uint indices WebGL test to draw something. This test was specifying a draw with two indices instead of six. This wasn't producing any error on most configurations, but on Android it was producing a driver error that was only visible in Debug. BUG=angleproject:2086 Change-Id: I7c3cee4cc10d6c37e3bac8ed9fbc16ecb2cb9e63 Reviewed-on: https://chromium-review.googlesource.com/546539 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Xinghua Cao 65ec0b2e 2017-03-28T16:10:52 ES31: Add support for bindImageTexture on GL backend This patch refers to https://chromium-review.googlesource.com/c/380636/ BUG=angleproject:1987 Change-Id: If621eed6ecaa7298214843a2a133801ca1487b03 Reviewed-on: https://chromium-review.googlesource.com/462088 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez db9e5d31 2017-06-12T12:05:45 D3D11: Only apply attachments that are written by the program This works around a bug in the AMD driver that writes 0's to the first attachment if it isn't written by the pixel shader. BUG=angleproject:2048 Change-Id: I384fd60c0e0a37fbc0fd7b69fe1ec74fe4ffac8f Reviewed-on: https://chromium-review.googlesource.com/531630 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 914b79a6 2017-06-19T16:03:19 Fix parsing GLSL loop conditions that declare a variable Now the variable declaration is included in the AST, so that the loop body may refer to the variable. The variable declaration is placed in a block that wraps the loop. This way we can still only have TIntermTyped loop conditions in the AST, which keeps the code dealing with loops fairly simple and type safe. This change includes reversing the return value of executeInitializer, so that it returns true on success and false on error. This is more in line with other ParseContext member functions. BUG=angleproject:2073 TEST=angle_end2end_tests Change-Id: I5c4ecbf1b438d3fff6d6237c0dcf191e2a19664c Reviewed-on: https://chromium-review.googlesource.com/539639 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang a71a98ee 2017-06-19T15:15:00 Allow '\' characters in shader source for WebGL2. TEST=deqp/data/gles3/shaders/preprocessor.html BUG=angleproject:2016 Change-Id: Ia5240a1ff65ebadc15604a5c3eb63042953c43a5 Reviewed-on: https://chromium-review.googlesource.com/540198 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez 672f7f3f 2017-06-15T17:42:17 WebGL Compat: forbid client side arrays, even unused BUG=angleproject:2064 Change-Id: I9a9c2df9a158799dbdc490446352cdf30fb87ca6 Reviewed-on: https://chromium-review.googlesource.com/537812 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill fe54834f 2017-06-19T11:13:24 Proliferate gl::Context. This enables a few small things: it will enable making the platform a property of the Display rather than a global. The same goes for the global logging annotator. Also it ensures all back-end implementations have access to the GL / EGL state when available. Also introduces a smart pointer helper class to angleutils for objects that prefer to be destroyed with a context (gl::Context/egl::Display) parameter. We were using std::unique_ptr in a few places that would not work well with these objects. BUG=angleproject:1156 Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba Reviewed-on: https://chromium-review.googlesource.com/529706 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 165dcf15 2017-06-07T15:05:14 Allow CHROMIUM_copy_texture to copy to non-zero mips. Fix some errors in the GL backend related to source and destination mipmap targets. BUG=angleproject:1356 Change-Id: I030529c8626f3bc30dbb4f7f859a02ba56e315e3 Reviewed-on: https://chromium-review.googlesource.com/527653 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang dbcced8e 2017-06-06T15:55:54 When validating image size, use format for SubImage calls. internalFormat is GL_NONE when validating these calls for glTexSubImage and leads to an expected minimum size of 0. Add extra unsized formats that are never supported to the format tables. These are needed for determining the size of input data. BUG=angleproject:2054 Change-Id: Ic827a279a246ff92c9f279232574521692b1c6f2 Reviewed-on: https://chromium-review.googlesource.com/526356 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Shao cabdd1a0 2017-06-09T08:33:07 Clean up coding style issues in InstancingTest.cpp This patch intends to clean up all coding style issues in InstancingTest.cpp. 1. Replace SHADER_SOURCE by std::string 2. Use (expected, actual) as the order of the parameters in ASSERT_NE 3. Replace C-style type cast operators into C++ ones. 4. Use ANGLE_GL_PROGRAM to build shader programs 5. Use constexpr when necessary 6. Other format changes done by 'git cl format' BUG=angleproject:2005 Change-Id: I37d866c5df681160a66226bf5927dd6e00a6d6b2 Reviewed-on: https://chromium-review.googlesource.com/528649 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez c084de14 2017-06-05T14:28:52 ProgramD3D: only broadcast when the GL_EXT_draw_buffers is enabled The behavior is undefined in GL ES when multiple attachments are used with gl_FragColor but WebGL clarifies that: - If the extension is enabled, broadcast happens - If the extension isn't enabled, only the first attachment is written BUG=angleproject:2048 Change-Id: I6d85ba91df77d42fb8863a03f1faa006cd7817bf Reviewed-on: https://chromium-review.googlesource.com/523809 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Frank Henigman 60f6eb20 2017-05-08T15:34:46 Add WebGL test that draws to missing attachment. In WebGL one can Clear, DrawArrays, and DrawElements to a framebuffer with a missing attachment with no error. BUG=angleproject:1822 Change-Id: I4dece2fa8fad31c812e24ae18bdc380c2857a1f8 Reviewed-on: https://chromium-review.googlesource.com/502967 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Geoff Lang 863b6236 2017-06-08T11:18:49 Refactor redefineImage and track dirty images properly. Several issues showed up in testing with WebGL: * Images should only be forcefully re-defined when there is no data to upload. * After an image is marked dirty, a later call to subImage would cause assertion failures because the texture storage would try to verify that the image was not dirty, don't try to copy directly to storage in this case. BUG=angleproject:1635 Change-Id: I9e5d83850d743b7d4d2db938312ee5c35a3a79ee Reviewed-on: https://chromium-review.googlesource.com/527348 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang bb1e750c 2017-06-05T16:40:09 Validate that structure names match when linking uniforms. GLSL 1.017 4.2.4: Structures must have the same name, sequence of type names, and type definitions, and field names to be considered the same type. TEST=conformance/glsl/misc/shaders-with-uniform-structs BUG=angleproejct:2013 Change-Id: Ieedaaca2d28ef4e1cc0b5480f413ebd513c1dc1f Reviewed-on: https://chromium-review.googlesource.com/524036 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang f2a06035 2017-06-05T14:07:36 Force-release images on redefine when robust resource init is enabled. If the user repreatedly calls glTexImage with null data and the same size, it is expected that the texture would re-fill itself with zero'd data. TextureD3D and ImageD3D would no-op these calls when the texture is already the right size. TEST=conformance2/rendering/blitframebuffer-filter-outofbounds BUG=angleproject:1635 Change-Id: I810b15922759a4acfc0ef7da198f068b81e9efc4 Reviewed-on: https://chromium-review.googlesource.com/524436 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 93a540fc 2017-06-05T14:26:47 D3D11: Reset the TF binding offsets when glBeginTransformFeedback is called. BUG=angleproject:2051 Change-Id: I09e8548ef76b7d824743d06b0bba21633bc40a24 Reviewed-on: https://chromium-review.googlesource.com/523671 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Frank Henigman fccbac2c 2017-05-28T17:29:26 Validate precision in uniform blocks for WebGL. In WebGL mode turn on checking that precision qualifiers match in corresponding vertex/fragment uniform blocks. Add test for this behavior. BUG=angleproject:2015 Change-Id: Ie035138e8c46e430bdcf8fb5bbc3e0a3ab7d6391 Reviewed-on: https://chromium-review.googlesource.com/517724 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2f348d2a 2017-06-05T10:50:59 Make gl::Compiler reference-counted. This is helpful for implementing program binary caching in ANGLE. in order to maintain the current behaviour in Chrome, we will need to defer shader compilation until link time. Since WebGL allows the app layer to enable and disable extensions explicitly, the app can enable or disable an extension between the calls to glCompileShader and glLinkProgram. Then, if we're deferring shader compilation, we will have to preserve the extension settings at the time of the call to compile, not the current settings at the time of link. Making the compiler reference-counted gives us a pretty simple and robust solution. This also changes the Context class to lazily init the shader compiler. Lazy init prevents any unexpected nulls, and also ensures the releaseShaderCompiler does exactly that: just releases the shader compiler, and does not immediately re-initialize it. BUG=angleproject:2044 Change-Id: I0f0eeb4eb94dc4eee238f92482804a0921c77df0 Reviewed-on: https://chromium-review.googlesource.com/522868 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 6e898aa3 2017-06-02T11:17:26 Allow sized GL_RGB[A]_32F to be used for TexImage2D with the chromium extensions. GL_CHROMIUM_color_buffer_float_rgb[a] allows these sized formats to be used in TexImage2D even in ES2. With this patch, the conformance/extensions/oes-texture-float and conformance/extensions/oes-texture-half-float tests now pass for WebGL1 and WebGL 2 contexts. BUG=angleproject:1958 Change-Id: I568dea5da42ba310463d2690c3e764c48598311b Reviewed-on: https://chromium-review.googlesource.com/522349 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Corentin Wallez e7557744 2017-06-01T13:09:57 WebGL compatibility: remove UB for draw buffers in the GL backend. WebGL adds two rules: - Fragment outputs declared but not written to should default to black. - FBO attachments for outputs not declared in the shader should not be written to (it is UB in OpenGL ES). Fix the first one by using the SH_INIT_OUTPUT_VARIABLES compiler options, and the second one by messing with glDrawBuffers so that the enabled draw buffers are always a subset of the ones declared by the shader. BUG=angleproject:2048 Change-Id: I1d851c190959c1acfc3e41d837e6990aec1d4086 Reviewed-on: https://chromium-review.googlesource.com/521682 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 9ab5b822 2017-05-30T16:19:23 Validate that vertex shader input matches the vertex attribute types. BUG=angleproject:2012 TEST=conformance2/rendering/attrib-type-match Change-Id: Ic282e0933a5c3c377322dd484534fcc1dfcb3840 Reviewed-on: https://chromium-review.googlesource.com/517974 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill b7d5e303 2017-06-01T16:04:46 D3D11: Default init all textures. The resource manager factory methods will use ClearView or zero-filled buffers to set initial data. It assumes there are no 3D depth/stencil textures. This will lead to some wasteful re-creation of RTVs in some cases. This is a temporary measure until we can implement more efficient lazy resource init strategies. BUG=angleproject:1635 Change-Id: I590e76587d3d96a359beedb79e21d24930e5f2e0 Reviewed-on: https://chromium-review.googlesource.com/503254 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang fc32e8b7 2017-05-31T14:16:59 WebGL: Validate shader entry point names do not contain invalid characters. Section 6.20 of the WebGL spec states that all shader-related entry points that accept strings must validate that the string does not contain characters that are not valid in ESSL. TEST=conformance/misc/invalid-passed-params BUG=2016 Change-Id: I220d9dd79c4b0e8e0195277093268b9e1e66f9d9 Reviewed-on: https://chromium-review.googlesource.com/519445 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 948bbe51 2017-06-01T13:10:42 Redesign robust resource init as a display extension. Also correct the enum allocation to values that are available to ANGLE. BUG=angleproject:1635 Change-Id: I443f5654aa6a5049b4a1ae4c253cd6473b4e446e Reviewed-on: https://chromium-review.googlesource.com/520002 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang e0cff190 2017-05-30T13:04:56 Validate that fragment shader output matches the draw buffer type. TEST=conformance2/rendering/fs-color-type-mismatch-color-buffer-type BUG=angleproject:1688 Change-Id: I17848baf40b6d32b5adc1458fe2369b850164da3 Reviewed-on: https://chromium-review.googlesource.com/518246 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill 311d9999 2017-05-30T15:38:54 Add Program Binary test for reinitialization. This test tears down and recreates GL and re-uses the binary in a new GL context. Was meant to reproduce a bug in ANGLE, but the bug had been fixed previously. BUG=angleproject:2010 Change-Id: Ic3a31ac044ef4d794dae14608877b6958452b55e Reviewed-on: https://chromium-review.googlesource.com/519463 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
jchen10 af713a24 2017-04-19T09:10:56 ES31: Implement binding layout for uniform blocks The binding point of uniform blocks can be specified in shaders with this CL. See spec ESSL 3.10, section 4.4.4, page 58 for more info. dEQP-GLES31.functional.ubo.* still can't completely pass as the missing of arrays-of-arrays feature. Neither can dEQP-GLES31.functional.layout_binding.ubo.* due to the incomplete implementation of program interface APIs. TEST=angle_end2end_tests:UniformBufferTest BUG=angleproject:1442 Change-Id: If95d468fc109834a132b9b817730d3fdc3a615da Reviewed-on: https://chromium-review.googlesource.com/483848 Commit-Queue: Jie A Chen <jie.a.chen@intel.com> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 0ffc441e 2017-05-19T14:18:55 Initialize uninitialized globals in GLSL output Initializing globals is done by the DeferGlobalInitializers AST transformation, which makes sure that the global variable init proceeds in the correct order. This is important since some global variables may use other uninitialized globals in their initializers. The global variable init is only done in case the WebGL shader spec is being followed. This avoids adding global initializers twice in case the same shader goes through multiple translations, assuming only one of them is a WebGL shader translation. BUG=angleproject:1966 TEST=angle_end2end_tests, WebGL conformance tests Change-Id: Iea701d3ae40edc906abd87303f2aa27fd23bf55a Reviewed-on: https://chromium-review.googlesource.com/509689 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho df7d13eb 2017-05-30T13:53:45 Lift outdated NVIDIA test suppressions Lift some test suppressions for bugs that have been fixed in the NVIDIA driver a good while ago. Also improve code style in some suppressions - prefer IsOSX() and IsLinux() to using ifdefs. BUG=angleproject:1305 TEST=angle_end2end_tests Change-Id: Ia069f5b9696000c901956d2952801d5f5c339a11 Reviewed-on: https://chromium-review.googlesource.com/518168 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang 80616218 2017-05-17T15:40:03 Support CHROMIUM_copy_texture for all formats on D3D11. Adds a CPU readback and conversion path when the destination texture is not renderable. BUG=angleproject:1932 Change-Id: I71461ca991dc10dd636ff38e1ae20db2be0f8d63 Reviewed-on: https://chromium-review.googlesource.com/508308 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 857c09db 2017-05-16T15:55:04 Add missing completeness checks for texture attachments. Texture attachments need to validate that the attached mip level is within the [baseLevel,maxLevel] range and that the texture is complete if the attached mip level is not the base level. BUG=722684 Change-Id: I859766506b295638572b75a0e2e9fed168be047a Reviewed-on: https://chromium-review.googlesource.com/506928 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 9733ceef 2017-05-11T19:14:35 Initialize uninitialized locals in GLSL output Guarantee that local variables are initialized before they are used in GLSL output. In HLSL output all variables were already being initialized. Locals are initialized using an AST transform. The local variable init can only be run after some simplification of the AST, so that it is able to handle complex cases like: for (int i[2], j = i[0]; i[0] < 3; ++i[0]) { } If we're dealing with ESSL 1.00 which lacks array constructors, in this kind of case the uninitialized array initialization code needs to be hoisted out of the loop init statement, and the code also needs to make sure that j's initializer is run after i is initialized. Another complex case involves nameless structs. This can be an issue also in ESSL 3.00 and above: for (struct { float f; } s; s.f < 1.0; ++s.f) { } Since the struct doesn't have a name, its constructor can not be used. We solve this by initializing the struct members individually, similarly to how arrays are initialized in ESSL 1.00. Initializing local variables is disabled on Mac and Android for now. On Mac, invalid behavior was exposed in the WebGL 2.0 tests when enabling it. On Android, the dEQP test runs failed for an unknown reason. Bugs have been opened to resolve these issues later. BUG=angleproject:1966 TEST=angle_end2end_tests, WebGL conformance tests Change-Id: Ic06927f5b6cc9619bc82c647ee966605cd80bab2 Reviewed-on: https://chromium-review.googlesource.com/504728 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 4f0e003e 2017-05-01T16:04:35 Implement the new formats/features of the ES3 CHROMIUM_copy_texture. Some non-renderable texture formats remain unimplemented. BUG=angleproject:1932 Change-Id: Id206432d6e26a70fc0e84478a4e43e9eefadcf2f Reviewed-on: https://chromium-review.googlesource.com/491948 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 341a36cc 2017-05-24T09:53:25 Fix zero size buffer robust init crash. We were not correctly checking for a zero-size buffer, which should not trigger allocating a scratch buffer. BUG=angleproject:1635 Change-Id: Iac0a3d8f1eeeb7b39c59eec411bec78a4f21bcd3 Reviewed-on: https://chromium-review.googlesource.com/513478 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Frank Henigman 9e3bd310 2017-05-17T22:41:49 Enable CopyTex(Sub)Image default FB on Mesa/GLX. Allow CopyTexImageTest.SubDefaultFramebuffer and CopyTexImageTest.DefaultFramebuffer to work with Mesa and GLX back end by doing a clear before reading the framebuffer. BUG=angleproject:2027 Change-Id: Ibb10369e3f5aceb60511fbed1d67a28132734b29 Reviewed-on: https://chromium-review.googlesource.com/507952 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 451b2b7f 2017-05-15T15:32:02 Correctly generate mipmaps for sRGB textures. sRGB textures need to linearize their data before averaging, this worked correctly on the GPU mipmap generation functions but not the CPU ones. BUG=angleproject:2019 TEST=conformance/extensions/ext-sRGB Change-Id: I554dac89b12acf5ebf5b7cab6f6faf0bce5168a6 Reviewed-on: https://chromium-review.googlesource.com/506241 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 231c7f56 2017-04-26T13:45:37 Apply clang-format to many files. This cleans up the formatting in many places. BUG=None Change-Id: I6c6652ebc042f1f0ffecced53582d09d66b4f384 Reviewed-on: https://chromium-review.googlesource.com/487884 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Xinghua Cao 73badc07 2017-03-29T19:14:53 ES31: Implement glDispatchCompute for D3D backend BUG=angleproject:1955 TESTCASE=angle_end2end_tests Change-Id: I69b4df83d67017d39df67753d6d17fc15ececebf Reviewed-on: https://chromium-review.googlesource.com/462067 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 07843cd6 2017-05-15T15:24:53 Suppress default FBO CopyTexImage failure on Linux Intel BUG=angleproject:2027 Change-Id: I337303c9f673558ed75826e96fc2cd75f6ec1441 Reviewed-on: https://chromium-review.googlesource.com/506070 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Frank Henigman cbd14085 2017-05-02T18:26:34 Test CopyTex(Sub)Image on default framebuffer. Add end2end tests that attempt CopyTexImage2D and CopyTexSubImage2D from the default framebuffer. BUG=angleproject:2027 Change-Id: Ic16527a0665317fe7d08d8204d1bd3f6309b0343 Reviewed-on: https://chromium-review.googlesource.com/494266 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
jchen10 8d835fba 2017-05-08T13:26:15 UniformBufferTest: fix invalid uniform index To get the index value of an uniform or uniform block, the Spec suggested way is to enumerate according to its name. There is no mention that index has any correspondence regarding the order of uniforms in shader source code. BUG=angleproject:1622 BUG=angleproject:1543 Change-Id: I76dbf0ef05f89cd93ea2bdaf93a47f0f5d318f87 Reviewed-on: https://chromium-review.googlesource.com/497976 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 40762ef3 2017-05-08T13:47:03 Supress floating point texture failures on various Intel bots. BUG=angleproject:1958 Change-Id: Ia168cd1bd48b9a443da6662efeaace1f792861f3 Reviewed-on: https://chromium-review.googlesource.com/498408 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Frank Henigman aa7203ef 2017-05-03T23:32:29 Inherit privately from angle::NonCopyable. Make all inheritance from angle::NonCopyable private so the compiler complains about this (admittedly unlikely) code: class Foo: angle::NonCopyable { virtual ~Foo() { ... } }; angle::NonCopyable *p = new Foo; delete p; In the above code ~Foo() is not called, only ~NonCopyable(), because the latter is not virtual. Making it virtual would add overhead to all derived classes which don't already have a virtual method. Also tighten access in NonCopyable, because we can. BUG=angleproject:2026 Change-Id: Id0dc4d959cfb7bb82cf49382118129abb1d3a4f0 Reviewed-on: https://chromium-review.googlesource.com/495352 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Geoff Lang 677bb6ff 2017-04-05T12:40:40 Update checks for floating point renderability. * Expose GL_CHROMIUM_color_buffer_float_rgb and GL_CHROMIUM_color_buffer_float_rgba * Fix many texture formats that were incorrectly checking the wrong extension for support or renderability. * Make all floating point texture extensions dynamically enableable. BUG=angleproject:1958 BUG=angleproject:1715 Change-Id: Iefccc8b5ae5edd97623affa9de05b1d9af5c9598 Reviewed-on: https://chromium-review.googlesource.com/468450 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang c4e93668 2017-05-01T10:45:59 Update end2end tests to function without EXT_texture_storage. This also exposed an issue in our glTexSubImage2D validation where the sized format would be used for the texture support check when the unsized format was provided. The GL_ALPHA32F format is not valid unless EXT_texture_storage is present but using GL_ALPHA + GL_FLOAT is valid. BUG=angleproject:1958 Change-Id: Ice0b7549c39559990942176481c5175df17aaf92 Reviewed-on: https://chromium-review.googlesource.com/491246 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez d262799c 2017-04-28T17:17:03 Take depth into account when checking for OOB in TexImage3D BUG=angleproject:2017 Change-Id: Id75a8c0ddf4eda4b569509e2014c20db6f5c46ff Reviewed-on: https://chromium-review.googlesource.com/490848 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Kenneth Russell e7a792c6 2017-04-28T16:31:03 Suppress MipmapTestES3.BaseLevelTextureBug failures on 10.12.4. BUG=705865 Change-Id: Ife59aaf009365a51b5362a00373d1efaceba9fb8 Reviewed-on: https://chromium-review.googlesource.com/490946 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 876429b7 2017-04-20T15:46:24 Update gl2.h and update entry points. Some method signatures were updated. Types like GLclampf and GLvoid were replaced with other equivalents. BUG=angleproject:1309 Change-Id: I05e8e2072c5a063d87ad96a855b907424661e680 Reviewed-on: https://chromium-review.googlesource.com/475011 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2aadbfc3 2017-04-27T10:11:27 Expand the MipmapTestES3.BaseLevelTextureBug supression to all AMD OpenGL. BUG=705865 BUG=715875 Change-Id: Ib4d83a8c9cb3f65ac8517bfd3ff7c38794dd0654 Reviewed-on: https://chromium-review.googlesource.com/488661 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 66c5e619 2017-04-25T11:40:03 TextureD3D: Mark images dirty after deleting the texture storage. When a texture storage is deleted, it copies its mip levels back into images and marks them clean. Marking the images dirty before deleting the texture storage would have no effect. BUG=705865 Change-Id: Ib4c0fc9bea1236fc31963d1b7db814785bc54abc Reviewed-on: https://chromium-review.googlesource.com/486107 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yunchao He f81ce4a3 2017-04-24T10:49:17 Refactoring: replace NULL by nullptr for pointers (3rd CL). This CL mainly handles passing/returning NULL to/from a function. BUG=angleproject:2001 Change-Id: I34802f792e710e3d7ff697cbe4701dc1bf5ab009 Reviewed-on: https://chromium-review.googlesource.com/485060 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bryan Bernhart (Intel Americas Inc) 151d5de6 2017-04-13T09:52:23 Enable MSAA for texture client buffers Enhancement to the EGL_ANGLE_d3d_texture_client_buffer extension to allow use of a shared D3D texture that can be multi-sampled. BUG=angleproject:1917 Change-Id: Iaf59bbd575a5dfb29345f55b549bc4017bf2d7d0 Reviewed-on: https://chromium-review.googlesource.com/446907 Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 966c940b 2017-04-18T12:38:27 Fix validation for compressed texture functions. * No validation that the format matched the texture level's format for SubImage calls. * WebGL does not allow the base level to be smaller than the block size. * ANGLE used to allow mips of size 3 when this is disallowed. * Don't early-exit validation when dimensions are 0, imageSize validation happens later. TEST=conformance/extensions/webgl-compressed-texture-s3tc BUG=angleproject:1998 Change-Id: I05f5a0b5180344d67b036fdecc17edd2256e85ab Reviewed-on: https://chromium-review.googlesource.com/480442 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang e491578f 2017-04-12T15:19:07 WebGL: Validate the read and write buffers for BlitFramebuffer are unique. TEST=conformance2/rendering/blitframebuffer-test BUG=angleproject:1990 Change-Id: I0caeaac824f1689867134f34f74e5ef2c2f1b016 Reviewed-on: https://chromium-review.googlesource.com/475990 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yunchao He 4f285443 2017-04-21T12:15:49 Refactoring: replace NULL by nullptr for pointers (2nd CL). This CL mainly handles the pointer comparisons (== or !=). BUG=angleproject:2001 Change-Id: I25ac3b61032e7ad91459a1c6541cadc87cf9b160 Reviewed-on: https://chromium-review.googlesource.com/483935 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 407d4e77 2017-04-12T14:54:11 Perform ANGLE_instanced_arrays validation for WebGL contexts. TEST=conformance2/rendering/instanced-arrays BUG=angleproject:1988 Change-Id: Ie513dcc7b1af540764fd5fe3790d3e6e3457f048 Reviewed-on: https://chromium-review.googlesource.com/475136 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang ff5c63ee 2017-04-12T15:26:54 Allow dynamically enabling shading language extensions. GL_OES_standard_derivatives, GL_EXT_shader_texture_lod and GL_EXT_frag_depth. TEST=conformance2/extensions/promoted-extensions-in-shaders TEST=conformance/glsl/misc/shader-with-dfdx.frag BUG=angleproject:1719 Change-Id: Ic0bd50c6a222940cc8de903f88f19a4f5ee08088 Reviewed-on: https://chromium-review.googlesource.com/476030 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang ba992ab5 2017-04-19T11:18:14 Fix HLSL 3 generation of shaders with texture LOD. BUG=angleproject:2002 Change-Id: If8e6bbaeb5769341f92f05025eafb6a202fec437 Reviewed-on: https://chromium-review.googlesource.com/481680 Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yunchao He d7297bfb 2017-04-19T15:27:10 Code refactoring: replace NULL by nullptr for pointers. This is the frist change to replace NULL by nullptr. It handles the initialization and assignment for pointers. BUG=angleproject:2001 Change-Id: I6d4bb198a72e38b867cd2f65a6e6f2f61339a0b5 Reviewed-on: https://chromium-review.googlesource.com/481600 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Shao 4181bc97 2017-03-17T14:55:25 Fix bug in updating vertex attribs with client memory pointers In DEBUG version, when using OpenGL back-ends, ANGLE may meet an INVALID_OPERATION error from driver when attemping to update an attribute which is disabled and using a client memory pointer. This patch fixes this bug by skipping such vertex attributes when updating them to driver. With this patch the process to update vertex attributes should be: (1) For enabled attributes using client memory pointer: update by streaming mode in streamAttributes() (2) For disabled attributes using client memory pointer: just label them dirty and skip them (3) For attributes using buffer objects: update with vertexAttrib*Pointer BUG=angleproject:1942 Change-Id: I57043e5904eb4a342fa22d449d98a957010170d6 Reviewed-on: https://chromium-review.googlesource.com/456747 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang ca27139e 2017-04-05T12:30:00 Key the format tables on internal format and type. Keying the format tables on internal format alone is not enough to fully validate the unsized formats which require additional type information. This CL has no functional changes, it just splits the tables and updates the calls to GetInternalFormat info to provide type information when the format is not sized. BUG=angleproject:1523 BUG=angleproject:1958 BUG=angleproject:1228 Change-Id: I37e5201e7f54fa8eca01b8a6e64b11a6b94484e7 Reviewed-on: https://chromium-review.googlesource.com/468449 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 8162926b 2017-04-19T11:56:01 Never add declarations without children to the AST When block nodes were being created for loop bodies that didn't have braces in the parsed source, the code didn't check if the loop body was a declaration node without children. Always use appendStatement() for adding statements to a block, so that declaration nodes without children don't end up in the AST. Similarly make sure that loop init nodes aren't declarations without children. BUG=chromium:712550 TEST=angle_end2end_tests Change-Id: I5e79b700fe6158fa2422fcf4cd13818b2bd24863 Reviewed-on: https://chromium-review.googlesource.com/481660 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang a0e0aebb 2017-04-12T15:06:29 Validate that framebuffer attachments all have the same size for WebGL. TEST=conformance2/rendering/draw-buffers BUG=angleproject:1989 Change-Id: Ifcbc766dea99a8361261713fde7a6b6ad724fd55 Reviewed-on: https://chromium-review.googlesource.com/475083 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill c1d770e8 2017-04-13T17:31:24 Refactor remaining GLES 2.0 entry points. This will pave the way for several features, like auto-generation. BUG=angleproject:747 Change-Id: Ic390ac412f4e6b61346629093f185a4c07ea0284 Reviewed-on: https://chromium-review.googlesource.com/474118 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>