tests/angle_tests/TextureTest.cpp


Log

Author Commit Date CI Message
Nico Weber ce8bb2fa 2014-12-30T13:32:25 Improve standards conformance of ANGLE's testing code. ANGLE's testing code recently got enabled in Chromium's builds. While it builds fine with cl.exe, it isn't quite standards-conformant and doesn't build with clang. Fix this. There were three issues: 1. ANGLE_TYPED_TEST_CASE() is a variadic macro that tries to use __VA_ARGS__ as argument to a variadic template and then pass that template to another macro. However, [cpp.replace] describes that ANGLE_TYPED_TEST_CASE(Test, int, float) should be expanded to TYPED_TEST_CASE(Test, ::testing::Types<int, float>) which should be interpreted as a "call" of TYPED_TEST_CASE with the 3 macro arguments `Test`, `::testing::Types<int`, and `float>`. As a fix, use a typedef for the variadic template and refer to it through the typedef in the macro call. 2. `#version` was used on its own line in a substitution of the SHADER_SOURCE macro. [cpp]p1 says that every line starting with a `#` is a preprocessing directive, and [cpp.replace]p11 says "If there are sequences of preprocessing tokens within the list of arguments that would otherwise act as preprocessing directives, the behavior is undefined" (with a footnote that this includes non-directives -- # followed by unknown text). As a fix, merge the `#version` line with the previous line. Now the line doesn't start with `#` and things are fine. 3. Unqualified lookup usually doesn't look into dependent bases. If this is desired, one usually has to make the call qualified, a good explanation for this is at http://eli.thegreenplace.net/2012/02/06/dependent-name-lookup-for-c-templates cl.exe doesn't implement this rule, and clang tries to emulate cl.exe's behavior to a certain extend when in Microsoft mode. However, that seems to not work for member templates with explicit types (filed http://llvm.org/PR22066 for this, but since it's not needed to parse Microsoft headers and not standards-conformant, I'm not sure if we'll fix that). As a fix, don't provide an explicit type, the inferred type is the same. This is also consistent with all the other tests in this file. (We might clean up -Wmicrosoft warnings in the future; if so I'll add the explicit this->s that are missing in this file when we do.) BUG=chromium:445406 Change-Id: I77a2f3ab9601a1f0f39b56ed3d05217f123155b8 Reviewed-on: https://chromium-review.googlesource.com/238090 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill eb32a2e9 2014-12-10T14:27:53 Fix cube map rendertargets. We were using the entire level parameter of the cube map, instead of using the helper functions for cube map ImageIndexes, which set the layer corresponding to the cube map face. BUG=angle:849 BUG=440701 Change-Id: Id78db5c8281b6b644392bb961d69a7f869755a34 Reviewed-on: https://chromium-review.googlesource.com/234380 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
Jamie Madill f8fccb39 2014-11-12T15:05:26 Fix bugs in 2D Array Texture support. This fixes assertion failures and other errors, reproducible by running the dEQP Texture Format tests. BUG=angle:813 Change-Id: I3b97f89323f9656b45f617211fb4579a24013951 Reviewed-on: https://chromium-review.googlesource.com/229351 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Geoff Lang 0d3683c4 2014-10-23T11:08:16 Update ANGLE_platform_angle to allow requesting of Renderer versions. Added enums to allow users to request major and minor versions of the underlying API and if a WARP device is used. BUG=angle:490 Change-Id: I0bfb2ac8d327da28a47cc8e6346300e47ab9538c Reviewed-on: https://chromium-review.googlesource.com/225081 Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 9aca059f 2014-10-06T16:26:59 Enable TexSubImage workaround on D3D11. This workaround uses UpdateResource instead of staging buffers for texture data updates. It improves performance for highly dynamic textures, especially in some benchmarks, eg the turbulenz particle demo. Re-land, with fix to the issue with glGenerateMipmaps. BUG=angle:729 BUG=365078 Change-Id: I4c9398e0645176c296bf95e35eab97a44eae4319 Reviewed-on: https://chromium-review.googlesource.com/221493 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill dcd8f13d 2014-10-03T19:54:50 Revert "Enable TexSubImage workaround on D3D11." Probably causing WebGL CTS failures: http://build.chromium.org/p/chromium.gpu.fyi/builders/Win8%20Release%20%28NVIDIA%29/builds/6148 This reverts commit 2d337ce0503db5f91fcf0a11591cd436dfb32cd7. Change-Id: Ic032640f44adf337c4b3eedd4d7f3551d565a5cb Reviewed-on: https://chromium-review.googlesource.com/221397 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 2d337ce0 2014-10-03T11:50:56 Enable TexSubImage workaround on D3D11. This workaround uses UpdateResource instead of staging buffers for texture data updates. It improves performance for highly dynamic textures, especially in some benchmarks, eg the turbulenz particle demo. BUG=angle:729 BUG=365078 Change-Id: Idd82c27845a772199caef3695111c96735e8843e Reviewed-on: https://chromium-review.googlesource.com/219864 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Austin Kinross 18b931d5 2014-09-29T12:58:31 Configure Google Tests to run against multiple renderers/GLES versions BUG=angle:611 Change-Id: I7d43612171c439045038db9ae82fd8716c0b31c6 Reviewed-on: https://chromium-review.googlesource.com/220400 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Austin Kinross <aukinros@microsoft.com>
Jamie Madill 5599c8f6 2014-08-26T13:16:39 Use shared compile helpers in the ANGLE tests. BUG=angle:730 Change-Id: Ib3bd646c73355449105e6cf79bdcf0a14b391fd2 Reviewed-on: https://chromium-review.googlesource.com/213550 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill b759a748 2014-07-17T10:40:49 Fix test class names to reflect their class-ness. Style guide dictates a camel case scheme for classes. Since the tests are actually classes, update their names to reflect that. Change-Id: Ib7422b6d8c5de8414765439704fc103eae8b2d63 Reviewed-on: https://chromium-review.googlesource.com/208680 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Jamie Madill d4cfa57d 2014-07-08T10:00:32 Move more draw call validation to the API. The GL expects us to reject invalid draw calls before we start doing any work, so we can prevent internal unnecessary state changes. Also update the program binary's cached sampler data when we validate. The previous patch was breaking draw calls in Google Earth WebGL. BUG=angle:571 BUG=390412 Change-Id: I1c4e204ae2467afc36b76af975a3a49e26349639 Reviewed-on: https://chromium-review.googlesource.com/206482 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang c41e42d4 2014-04-28T10:58:16 Early-out of *TexSubImage* calls when the width, height or depth is zero. BUG=angle:622 Change-Id: I74ef5b684151895b24a15fa8f799a633174622c2 Reviewed-on: https://chromium-review.googlesource.com/197270 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill f67115ce 2014-04-22T13:14:05 Fix validation in TexSubImage. We weren't properly checking the x and y offsets against the texture boundary, and were in some cases producing D3D errors with out-of-bounds writes. This was popping up in IncompleteTextureTest. The test itself was also bugged. BUG=angle:610 Change-Id: Id58cac088fed03cae2aabbf00bce234f17208753 Reviewed-on: https://chromium-review.googlesource.com/195410 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>