src/tests/gl_tests


Log

Author Commit Date CI Message
Geoff Lang 28a97ee1 2016-09-22T13:01:26 Generate unique HLSL texture function names for external textures. Because 2D and external textures have the same HLSL texture type, they were generating texture functions with the same name. This causes conflicts when both 2D and external textures are used in the same shader. BUG=angleproject:1534 BUG=645532 Change-Id: I4b324014b7d9b4851d358730cf4e31fc8461584c Reviewed-on: https://chromium-review.googlesource.com/388551 Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang f41a7151 2016-09-19T15:11:17 Add an extension to disable resource generation on bind. BUG=angleproject:1518 Change-Id: I662f7b07da5c97831496f2617b0adadf9858bdc9 Reviewed-on: https://chromium-review.googlesource.com/386799 Reviewed-by: Antoine Labour <piman@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 44ebf6b4 2016-09-22T13:00:02 ConstantUnion: Error on undefined shift. BUG=chromium:648135 Change-Id: I41581f63af650564a0f61c1baeeb38017c8513ed Reviewed-on: https://chromium-review.googlesource.com/387470 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang f607c60a 2016-09-21T11:46:48 Fix validation of ReadPixels format and type. The validation for ReadPixels allows for two combations of format/type: 1. Based on the current framebuffer's component type. * GL_RGBA/GL_UNSIGNED_BYTE if the framebuffer is a normalized (signed or unsigned). * GL_RGBA_INTEGER/GL_INTEGER if the framebuffer is an integer format. * GL_RGBA_INTEGER/GL_UNSIGNED_INTEGER if the framebuffer is an unsigned integer format. * GL_RGBA/GL_FLOAT if the framebuffer is any type of float framebuffer (added in EXT_color_buffer_float). * These combations are detailed in the ES2 spec on pg 105 or ES3 on pg 193. 2. The implementation read format/type returned from glGetIntegerv. * These formats are added by specs, OES_texture_float, EXT_texture_rg, EXT_read_format_bgra, etc. Update the GL and D3D backends to perform the conversion from GL_HALF_FLOAT to GL_HALF_FLOAT_OES. Continue allowing reading as BGRA_EXT to support Skia. Should be removed in the future. BUG=607283 BUG=angleproject:1478 Change-Id: I0312cad4d5f138ab036f383d221f8ccd19a77f6d Reviewed-on: https://chromium-review.googlesource.com/346232 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov 44d0a736 2016-09-21T16:19:50 Disable some DrawBuffersTest on Windows AMD OpenGL DrawBuffersTest.FirstAndLast/ES2_OPENGL DrawBuffersTest.FirstHalfNULL/ES2_OPENGL Hang on Win7 Release (ATI) and Win7 Debug (ATI) bots. BUG=angleproject:1533 Change-Id: I6e37893fbcdbcc7a2a76c1cab6e8ef1f7ebaec19 Reviewed-on: https://chromium-review.googlesource.com/387714 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang c287ea6e 2016-09-16T14:46:51 Add WebGL validation extensions to ANGLE. BUG=angleproject:1523 Change-Id: I6fecb5055ed8087665aeee34b3a066ea8f38d51b Reviewed-on: https://chromium-review.googlesource.com/386281 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jiawei-Shao e292e902 2016-09-07T10:49:01 Workaround the unary minus operator issue on Intel On some Intel D3D drivers, evaluating unary minor operator on an integer variable may get wrong answer in vertex shader. This patch works around this bug by replacing -(int) with ~(int)+1 on Windows Intel. BUG=chromium:644033 Change-Id: I0af719e84d618a33f25bcb33bde0c381fb462a31 Reviewed-on: https://chromium-review.googlesource.com/381675 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 5db69f57 2016-09-15T12:47:32 Add robust math to constant folding. Previously our multiplication and other operators could do overflows, which can lead to security bugs. BUG=chromium:637050 Change-Id: Icee22a87909e205b71bda1c5bc1627fcf5e26e90 Reviewed-on: https://chromium-review.googlesource.com/382678 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 2e60034b 2016-09-19T13:56:40 D3D11: Store Buffer SRVs in native storage. This allows us to not store std::pairs to identify SRVs. Instead we can release the cached SRVs directly when we re-create the native buffer. BUG=angleproject:1513 Change-Id: I6f6d5edc659aa843c9439b97661073415f1a772b Reviewed-on: https://chromium-review.googlesource.com/385818 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 8fcdf6ee 2016-09-16T10:45:30 Supress failures in end2end tests for new Intel OpenGL driver. Change-Id: I442eac44212406b0fd9fb64b2e4e914bf61f8503 Reviewed-on: https://chromium-review.googlesource.com/386280 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 7ffdda9a 2016-09-08T13:26:51 D3D11: Don't allow fast unpack from GL_ALPHA8. This format is one that doesn't support buffer SRV creation. It seems like there is no equivalent dEQP test for this format. BUG=angleproject:1503 Change-Id: I9ecdb9406ca0b62dd54b450d2b50341d76584b2b Reviewed-on: https://chromium-review.googlesource.com/381435 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Corentin Wallez e731d8aa 2016-09-07T10:56:25 TextureTest: suppress failure for newly added test. BUG=angleproject:1493 BUG=chromium:638323 Change-Id: I5cab149c735158fe810f002e47cc3c5c75bc503b Reviewed-on: https://chromium-review.googlesource.com/381951 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 14718767 2016-09-06T15:56:54 Remove usage of std::log2 in tests. For some reason, this was giving a link error on Android. Change it to use the mathutil version to be sure. BUG=angleproject:1493 BUG=chromium:638323 Change-Id: I454ba4609d7818f50c668bb7c1a3b684f9ca8444 Reviewed-on: https://chromium-review.googlesource.com/381671 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 509e4560 2016-08-25T14:55:44 compiler: Work around a HLSL compiler aliasing opt bug. BUG=angleproject:1448 Change-Id: I7d5bcbd100069152cea0cb03bc4fa6af1044460b Reviewed-on: https://chromium-review.googlesource.com/376020 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 9e3d7aa0 2016-09-02T15:19:43 D3D11: Work around small mipped stencil textures. AMD has a bug with 2x2 and 1x1 mips of depth/stencil textures. Formats D24S8 and D32FS8 both seem to render black for the very small mips. We can work around this by selectively caching a copy of the texture data that only has depth information, since stencil isn't filterable in OpenGL ES. BUG=angleproject:1493 BUG=chromium:638323 Change-Id: Iebef42c4680018d9854dbe789d677823167213dd Reviewed-on: https://chromium-review.googlesource.com/380037 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Corentin Wallez 3af2b3b0 2016-09-06T09:47:56 UniformBufferTest: add back suppressions for failing tests 296398571213608b99d12266d0ba218f99c87abf fixes most but not all UniformBuffer Wintel failures of the waterfall, add back suppressions needed to make the waterfall green. BUG=chromium:593024 Change-Id: I124666853e9943bcb71083e5563d02e65551f916 Reviewed-on: https://chromium-review.googlesource.com/381451 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 29639857 2016-09-02T15:00:09 D3D11: Work around Intel uniform buffers bug. When copying from a staging buffer to a uniform buffer, the first upload would be incorrect. Work around this by trying to upload directly to a uniform buffer on the first BufferSubData call. BUG=chromium:593024 Change-Id: I0df3a1422b962bf3ece5d445f435df01e3544b67 Reviewed-on: https://chromium-review.googlesource.com/368774 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 5b46a680 2016-09-01T15:22:06 Clear the swizzle cache in TextureStorage11::setData. BUG=angleproject:1494 Change-Id: I67471e4b961b3d8374c2da84394ead743939c225 Reviewed-on: https://chromium-review.googlesource.com/380095 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Martin Radev 9ddfa060 2016-08-29T13:56:39 Disable compute shader tests on Intel The compute shader tests in angle_end2end_tests fail on Intel Linux. The patch disables the tests for Intel. TEST=angle_end2end_tests BUG=angleproject:1483 Change-Id: I303f0852ea3ccb65c1dd96a196a640c76cc519e4 Reviewed-on: https://chromium-review.googlesource.com/377318 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho ab481645 2016-08-26T12:09:10 Fix splitting nested sequence operators Make sure that only one sequence operator is split on one iteration of SplitSequenceOperator. This prevents multiple successive PostVisit calls to nested sequence operator nodes from adding duplicate nodes to the AST. The sequence operators are split starting from the outermost one to preserve execution order. Note that the shader translator somewhat unexpectedly generates nested sequence operators in the AST when there is a sequence operator with more than two operands, so this bug ended up affecting shaders in the wild. The code around parsing sequence operators could be clarified separately. BUG=638313 TEST=angle_end2end_tests Change-Id: Ic6400a484ceff0c790c2290f7b4b80980f87cd88 Reviewed-on: https://chromium-review.googlesource.com/376678 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Martin Radev 4c4c8e72 2016-08-04T12:25:34 Add compute program compilation and linking support Compute shaders can be now compiled and linked to create programs. Some tests are added to verify successful and unsuccessful compute shader linking. The patch also replaces std::array<int, 3> with a custom struct WorkGroupSize. BUG=angleproject:1442 TEST=angle_end2end_tests TEST=angle_unittests Change-Id: I4ab0ac05755d0167a6d2a798f8d7f1516cf54d84 Reviewed-on: https://chromium-review.googlesource.com/366740 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 666f65a1 2016-08-26T01:34:37 Revert "Revert "Cover vector dynamic indexing case in SplitSequenceOperator"" This reverts commit d2f59bb6dda4f3548e158a09540829f9ff56bba4. Change-Id: If2842bce17a0c085e2bc913ff120083fbe90497c Reviewed-on: https://chromium-review.googlesource.com/376189 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d2f59bb6 2016-08-17T11:50:52 Revert "Cover vector dynamic indexing case in SplitSequenceOperator" This CL was causing inverted rendering in a WebGL application. This reverts commit 7da9850643f55335a13a4663d226c73d0ac4d3b1. Vectors or matrices that are dynamically indexed as a part of an l-value generate new statements in the RemoveDynamicIndexing AST transformation step. SplitSequenceOperator needs to detect this case and split the sequence operator before statements are generated from its operands to ensure the correct order of execution. BUG=angleproject:1341 TEST=angle_end2end_tests Change-Id: I854f8cce2d46107afa62f48edf3d32c6d5c97eda Reviewed-on: https://chromium-review.googlesource.com/371643 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 6c9503ec 2016-08-16T14:06:32 D3D11: Improve integer pow workaround. A slight bug in the problem case detection applied the workaround overly-broadly. Also included a much more thorough test. BUG=angleproject:851 Change-Id: I5c09d67eee3622c144401769af85958f23b60c57 Reviewed-on: https://chromium-review.googlesource.com/371380 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1200c41b 2016-08-16T14:09:14 Suppress two new AMD failures. These failures were exposed with the new R7 240 card. BUG=chromium:637037 Change-Id: I1fe5add2fc08d5c93e338250efb2af62712d0e53 Reviewed-on: https://chromium-review.googlesource.com/371318 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8cf70d55 2016-08-09T11:10:35 D3D11: Rename ANGLEFormatSet to Format. BUG=angleproject:1455 Change-Id: I896b3ed2d5e4ff3ad72de9a3a4b554841129e4e9 Reviewed-on: https://chromium-review.googlesource.com/367093 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill c98cd326 2016-08-09T11:10:33 D3D11: Merge d3d11::TextureFormat and ANGLEFormatSet. BUG=angleproject:1455 Change-Id: I7fc2640ec9d73528feb526b4d8b89cabccda4d17 Reviewed-on: https://chromium-review.googlesource.com/367092 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 17b10a9a 2016-08-03T14:10:06 D3D11: Store more format info by-reference. This CL stores the d3d11::TextureFormat by reference in the texture storage. Adding the internalFormat to the TextureFormat allows us to store a single ref instead of three per TextureStorage11. Also store the format sets in a d3d11::TextureFormat by-ref instead of by-pointer, making the code a bit cleaner. BUG=angleproject:1455 Change-Id: I3c0e966d948c694435577d7d45dc0cd156480cdb Reviewed-on: https://chromium-review.googlesource.com/365412 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 509a1d46 2016-07-18T10:10:29 GN: Enable more MSVS warnings. Some warnings were enabled only in standalone builds. Enabling them in the GN config will prevent standalone build breakage and also make some potentially harmful warnings more visible to non-Windows devs. BUG=angleproject:1449 Change-Id: I11fe9bac957864d37af37b3860a22fcbd91946ac Reviewed-on: https://chromium-review.googlesource.com/360961 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 97073d12 2016-04-20T10:42:34 Implement CHROMIUM_copy_texture for D3D11. BUG=angleproject:1356 Change-Id: I70246762411dbeeb3e291e317854139a68d80070 Reviewed-on: https://chromium-review.googlesource.com/339434 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 5655b849 2016-08-02T11:00:07 D3D11: Fix integer pow workaround for nested pows. For some nested pow expressions, queueing two node replacements in the same tree traversal would mangle tree, resulting in invalid code. Fix this by iterating over the tree until no replacements are found, and doing one replacement each iteration. BUG=angleproject:851 Change-Id: Ie08ab23f4bfe3d5f32726856afc61ff1f3d6c789 Reviewed-on: https://chromium-review.googlesource.com/365400 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 1e0ea4f5 2016-07-22T13:07:24 Add a workaround for NVIDIA drivers with repeated transform feedback. BUG=angleproject:1298 Change-Id: Ibfbad8eb8ec824e377d8c1746a6691d6b689f498 Reviewed-on: https://chromium-review.googlesource.com/362601 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill c9bde926 2016-07-24T17:58:50 D3D11: Allow gl_PointCoord when not rendering points. ANGLE D3D11 uses a geometry shader to expand points into quads. This led to an edge case with gl_PointCoord. When the user references gl_PointCoord in the fragment shader but renders with GL_TRIANGLES or other non-point primitives, gl_PointCoord is undefined, but ANGLE would produce a link error. This would break some very odd edge-case shaders (e.g. a shader that is used with both points and triangles). We can fix this by simply adding a dummy PointCoord value to our vertex shader is all cases. If the user renders points, we ignore the PointCoord value passed to the geometry shader. If they render tris or lines and use PointCoord, the shader signatures will match, and PointCoord will even have a sane value of (0.5, 0.5). BUG=angleproject:1380 Change-Id: I322155cd3801d0241cabc9bb639a5aaa502831b3 Reviewed-on: https://chromium-review.googlesource.com/362779 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
Jamie Madill 1048e43f 2016-07-23T18:51:28 D3D: Work around HLSL integer pow folding bug. BUG=angleproject:851 Change-Id: I68a47b8343a29e42c0a69ca3f2a6cb5054d03782 Reviewed-on: https://chromium-review.googlesource.com/362775 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a3944d4f 2016-07-22T22:13:26 Add gl::Format to represent a texture/rb/surface format. This has a few advantages: it preserves all the information of the internal format, such as if it is sized or unsized. It also saves looking up the format multiple times in the table, which should improve speed in some cases. The extra sized-ness information will allow us to perform the correct validation in CopyTexSubImage calls. BUG=angleproject:1228 Change-Id: I42954771b0a9a968f5d787b8cf6e0af721791855 Reviewed-on: https://chromium-review.googlesource.com/362626 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 156d7197 2016-07-21T16:11:00 HLSL: Insert return statements into functions that are missing them. It's allowed to not have all code paths return a value in ESSL but the HLSL compiler detects this and generates an error. Work around this by adding dummy return statements at the end of each function that doesn't have one. TEST=deqp/data/gles2/shaders/functions.html BUG=angleproject:1015 BUG=478572 Change-Id: I2913f90f0994d4caf25cc43b16b9fc4e9efb19a5 Reviewed-on: https://chromium-review.googlesource.com/362085 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang dacac90a 2016-07-21T17:12:27 Skip the TransformFeedbackTest.BufferRebinding on Windows NVIDIA. BUG=angleproject:1298 Change-Id: I32750d5d81c14fe5a17634586cddf117f0a4e692 Reviewed-on: https://chromium-review.googlesource.com/362157 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 7da98506 2016-07-20T18:45:09 Cover vector dynamic indexing case in SplitSequenceOperator Vectors or matrices that are dynamically indexed as a part of an l-value generate new statements in the RemoveDynamicIndexing AST transformation step. SplitSequenceOperator needs to detect this case and split the sequence operator before statements are generated from its operands to ensure the correct order of execution. BUG=angleproject:1341 TEST=angle_end2end_tests Change-Id: I84e41a59c88fb5d0111669cab60312b930531a22 Reviewed-on: https://chromium-review.googlesource.com/361695 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho e1d199bb 2016-07-19T17:14:27 Split sequence operator when necessary Split sequence operators if some of their operands generate statements in subsequent AST transformations to guarantee the right order of execution. For now, this is supported for expressions that return arrays and unfolded short-circuiting operators, which is enough to get WebGL 2 tests passing. A trickier corner case with dynamic indexing of vectors as an l-value is left to be addressed later. BUG=angleproject:1341 TEST=angle_end2end_tests, WebGL 2 conformance test: conformance2/glsl3/array-in-complex-expression.html Change-Id: I9301edd3366be7607a8aa4c42a5ec13928749e10 Reviewed-on: https://chromium-review.googlesource.com/361694 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Martin Radev 1fc7493e 2016-07-21T10:15:04 Fix TearDown incorrect order in ReadPixelsTest The ANGLETest::TearDown() call was set at the beginning of the function where as it should be at the end since it destroys the context. The earlier version would not cause any crashes because the GL function calls would be ignored. BUG=angleproject:1445 TEST=angle_end2end_tests Change-Id: I187cb8fede1db4ef2bfc13ab850594c41e00b0b0 Reviewed-on: https://chromium-review.googlesource.com/362220 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang b21e20da 2016-07-19T15:35:41 D3D: Validate that all color attachments are unique. The previous logic of only checking the currently enabled draw buffers was incorrect. Also updated the logic to be more lenient and allow multiple slices or mips of the same texture. BUG=483282 Change-Id: I0d406d1a9a96e48342baefbaf11e0c2ecc6d390c Reviewed-on: https://chromium-review.googlesource.com/361533 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Sami Väisänen c4433f48 2016-07-12T16:56:43 Fix uninitialized variables in BlendMinMaxTest BUG=angleproject:1443 Change-Id: I1ad2ecee3ffc81a4d1c128aa4de4437e3ee88e34 Reviewed-on: https://chromium-review.googlesource.com/360120 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Martin Radev 138064f5 2016-07-15T12:03:41 Improve glCopyTexSubImage2D and glReadPixels validation glCopyTexSubImage2d and glReadPixels should generate a GL_INVALID_OPERATION when GL_NONE is specified as a color buffer. There are two tests added which cover glCopyTexSubImage2D and glReadPixels. BUG=angleproject:1445 TEST=angle_end2end_tests Change-Id: I3ab1428aad7eee96ca2330909e2b6f765f539705 Reviewed-on: https://chromium-review.googlesource.com/360860 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Martin Radev 1be913cf 2016-07-11T17:59:16 Add support for ES31 context creation The dEQP test for context creation passes. SH_WEBGL3_SPEC has been added, but it should be considered whether we should keep it, remove it or rename it. It was added so that there is a webgl mapping to es 310 shaders. Check Compiler.cpp. The bison file has been modified so that some tokens from es3 can be also used in es31 as well. A separate macro ES3_1_ONLY is added so that some tokens are limited only for es 310 shaders. BUG=angleproject:1442 TEST=angle_unittests Change-Id: I2e5ca227c96046c30dc796ab934f3fda9c533eba Reviewed-on: https://chromium-review.googlesource.com/360300 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 29f908bf 2016-07-19T23:21:01 Revert "Support EXT_blend_func_extended in the GLES2 context" Test failures on Intel Release: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28New%20Intel%29/builds/1163 Also Intel Debug: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Debug%20%28New%20Intel%29/builds/820 Also NVIDIA with a different config: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NVIDIA%20GeForce%20730%29/builds/1564 BUG=angleproject:1379 This reverts commit 7f539ea52e6bc493d8e025ed2c43e10f606f088b. Change-Id: I2634ad2b3fcc31e1e5ffb3674b94cb0aed9fd773 Reviewed-on: https://chromium-review.googlesource.com/361840 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 73bd218e 2016-07-15T13:01:24 Support virtualized contexts and transform feedback in Renderer11. Track buffer offets in the transform feedback object and dirty them when a buffer is bound. This fixes problems when a buffer is rebound at the same offset and maintains tracking between context switches. BUG=angleproject:1447 BUG=angleproject:1298 Change-Id: I2f890e3ad5edacab47f624a95a502615c86cc0c8 Reviewed-on: https://chromium-review.googlesource.com/360910 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 196ca36c 2016-07-12T10:54:04 D3D11: Implement multisample depth resolve. This uses a pretty slow path with readback to the CPU. It should be possible to use SV_Depth in HLSL to resolve without a readback, but that will be left for a future optimization. Enables the WebGL 2 tests gles3/fbomultisample and fboinvalidate/sub. BUG=angleproject:1246 Change-Id: Id67178b0f6374cf53e4e107428637546ecca4124 Reviewed-on: https://chromium-review.googlesource.com/359956 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 78a9c733 2016-07-15T11:22:43 D3D11: Implement multisampled stencil resolve. This implements a fairly slow path with readback for stencil blits, and depth/stencil resolve. In a subsequent patch I'll implement the depth blits. BUG=angleproject:1246 Change-Id: I04151d1f49ca404d858172dff8286608eae29864 Reviewed-on: https://chromium-review.googlesource.com/359955 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sami Väisänen 7f539ea5 2016-05-20T13:29:08 Support EXT_blend_func_extended in the GLES2 context BUG=angleproject:1379 Change-Id: Ibda6e84c0a7f86e838247cd5c538ef956dd786fe Reviewed-on: https://chromium-review.googlesource.com/346410 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
Geoff Lang 3f6a398c 2016-07-15T15:20:45 Fix type conversion warnings. BUG=angleproject:1382 Change-Id: Idee8882a7d7576faaa08418d9d399d836cec8fa7 Reviewed-on: https://chromium-review.googlesource.com/360903 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sami Väisänen 46eaa946 2016-06-29T10:26:37 Support CHROMIUM_path_rendering fragment operations This brings two new APIs, BindFragmentInputLocation and ProgramPathFragmentInputGen that together dictate how the fragment shader varyings are used. BUG=angleproject:1382 Change-Id: I4b52fd8a3555235a73aecd4f3dba2d500789cbb0 Reviewed-on: https://chromium-review.googlesource.com/357071 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Sami Väisänen <svaisanen@nvidia.com> Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
Corentin Wallez b00dcee4 2016-07-11T17:42:58 TranslatorGLSL/ESSL: Output #pragma before #extension The Intel Mesa driver considers the #pragma directive to be a non-preprocessor token which makes shaders fail compilation. The relevant blurb from the spec is: "the extension directives must occur before any non-preprocessor tokens" BUG=627417 Change-Id: Ic22cff49a9f9c1fe5d140302581ca7b36688732c Reviewed-on: https://chromium-review.googlesource.com/359621 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov fea6e952 2016-06-23T16:29:20 Skip DXT1CompressedTextureTestES3.PBOCompressedTexImage when DXT1 not supported Was failing on Nexus 5X Adreno, which doesn't have GL_EXT_texture_compression_dxt1 extension. Also rename the tests to indicate they test DXT1 compression format. BUG=angleproject:1424 TEST=DXT1CompressedTextureTestES3.PBOCompressedTexImage Change-Id: Ic82363a6f497da12602f3f3a662a52ffa833aa0f Reviewed-on: https://chromium-review.googlesource.com/355711 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Geoff Lang 6e4cfceb 2016-06-13T15:06:31 Refactor ANGLE's image manipulation code into a static library. Allows for chromium to make use of some of the functionality. BUG=612205 Change-Id: Ib4435ca44775a3a554b0fb3bd384bd4d31d7952d Reviewed-on: https://chromium-review.googlesource.com/351753 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 91d56945 2015-07-21T18:56:48 Emulate the pack/unpack functions for unorms. BUG=angleproject:1044 Change-Id: I2cfb792de43d3a6fddd750100c74f948948dc1f6 Reviewed-on: https://chromium-review.googlesource.com/287290 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill ec0b580d 2016-07-04T13:11:59 Re-land "D3D11: Fix readback of BGRA-backed formats." For some BGRA-backed formats (RGBA4, R5G6B5, RGB5A1), our ReadPixels implementation wasn't aware the BGRA format didn't exactly match the RGBA format. For these it would do the 'fast path' memcpy method, when it should stop and do the slow pixel-by-pixel packing method. Fixes conformance2/reading/read-pixels-from-fbo-test.html. Reland: fix empty format info that was causing us to only see the first pixel in the FBO in a ReadPixels call. Also fix bugs in the unorm 16-bit format readback code, and add ASSERTs to catch bugs in subsequent new formats. BUG=angleproject:1407 BUG=chromium:616176 Change-Id: I9fd55b9e1dd6a306eb4db195d775c02a1eb1f93f Reviewed-on: https://chromium-review.googlesource.com/357132 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill a8873ef5 2016-07-04T10:44:42 Fix warnings in PathRenderingTest.cpp. Certain warnings are suppressed in Chromium but not standalone ANGLE. We should enable those warnings for ANGLE specifically, in a follow-up CL. BUG=angleproject:1382 Change-Id: I12491a61b0f349c5937a1e5d9985c8da1d76e0dc Reviewed-on: https://chromium-review.googlesource.com/358107 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Sami Väisänen d59ca052 2016-06-21T16:10:00 Support instanced CHROMIUM_path_rendering This implements instanced path rendering. BUG=angleproject:1382 Change-Id: I4654251882975d707b22c7bb522af14ae34eb1a1 Reviewed-on: https://chromium-review.googlesource.com/355401 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
Yuly Novikov 3c754194 2016-06-27T19:36:41 Skip Texture2DTestES3.UnpackSkipImages2D test on Adreno Android GLES Due to a bug in Adreno glTexImage2D with GL_UNPACK_SKIP_IMAGES. BUG=angleproject:1429 TEST=Texture2DTestES3.UnpackSkipImages2D Change-Id: Iccb4cc968915a623f0aed099b81e759c6e4343f7 Reviewed-on: https://chromium-review.googlesource.com/356494 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov ad6c0452 2016-06-24T22:24:37 Skip SamplerInStruct AsFunctionParameter tests on Adreno Android GLES Due to Adreno bug in compiling struct function parameter in shader. BUG=angleproject:1427 TEST=SamplerInStructAsFunctionParameterTest SamplerInStructArrayAsFunctionParameterTest SamplerInNestedStructAsFunctionParameterTest Change-Id: I979312885f2047e78b61530c97703854a4be1586 Reviewed-on: https://chromium-review.googlesource.com/356125 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Corentin Wallez 419bfc91 2016-06-28T10:54:45 On Desktop GL, require index-constant sampler array indexing BUG=598924 Change-Id: If97dbaa782595997b815c70d14f079e0f0c3d82a Reviewed-on: https://chromium-review.googlesource.com/356710 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 82a468af 2016-06-21T17:18:25 Don't unpack un-referenced varyings in the pixel shader. Transform feedback varyings that were optimized out were still being unpacked causing HLSL compilation failures. This was triggering failures in the conformance2/state/gl-object-get-calls.html test. BUG=angleproject:1422 Change-Id: I297cccd5b99435dfb69a3c2b0fd3086b6ddf0b3a Reviewed-on: https://chromium-review.googlesource.com/354590 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov 41db2245 2016-06-25T00:14:28 Skip GLSLTest_ES3.InitGlobalArrayWithArrayIndexing on Adreno Android GLES Due to Adreno compilation failure of two arrays in single line declaration. BUG=angleproject:1428 TEST=GLSLTest_ES3.InitGlobalArrayWithArrayIndexing Change-Id: I05d7c6b3a0eef8c879edf4d9cf24cdec0a2a403c Reviewed-on: https://chromium-review.googlesource.com/356217 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Yuly Novikov afcec834 2016-06-21T22:19:51 Skip Texture2DTestES3.TextureLuminance16ImplicitAlpha1 on Adreno Android GLES Due to Adreno bug in GL_HALF_FLOAT support BUG=angleproject:1420 TEST=Texture2DTestES3.TextureLuminance16ImplicitAlpha1 Change-Id: Id9bc12da21048a557325f076202ec482675320e3 Reviewed-on: https://chromium-review.googlesource.com/354782 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e9a6593a 2016-06-20T17:57:05 Fix suppression for Intel. BUG=None Change-Id: I3e2e7e845e9ad3814f7d85e56c12023a5e2ef0df Reviewed-on: https://chromium-review.googlesource.com/354104 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 0344b1e5 2016-06-20T11:17:37 Fix float-to-int conversion warnings in the path rendering tests. BUG=angleproject:1382 Change-Id: I586cd4a03d06a6ec87b6a57342b7f8d0ed0d9cd8 Reviewed-on: https://chromium-review.googlesource.com/354031 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez c7f59d02 2016-06-20T10:12:08 Suppress a Wintel/OpenGL failure on a new test. BUG=angleproject:1388 Change-Id: I4d346ca3c6914e56055aa6492d9d013634a1b9ad Reviewed-on: https://chromium-review.googlesource.com/353693 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Sami Väisänen e45e53bd 2016-05-25T10:36:04 Support CHROMIUM_path_rendering This is partial support for CHROMIUM_path_rendering and implements basic path management and non-instanced rendering. BUG=angleproject:1382 Change-Id: I9c0e88183e0a915d522889323933439d25b45b5f Reviewed-on: https://chromium-review.googlesource.com/348630 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 095aaa0e 2016-06-17T01:02:53 Skip ReadPixelsPBOTest.SubDataOffsetPreservesContents on Adreno Android GLES Due to either Adreno bug in glBufferSubData, or generic Android bug in ANativeWindow_setBuffersGeometry. BUG=angleproject:1415 TEST=ReadPixelsPBOTest.SubDataOffsetPreservesContents Change-Id: If55f6ad4eacde98cfdbc46a61cc9fb479b779297 Reviewed-on: https://chromium-review.googlesource.com/353396 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov d364780a 2016-06-16T15:58:35 Skip ReadPixelsTest.OutOfBounds on Adreno Android GLES Due to Adreno bug in glReadPixels BUG=angleproject:1413 TEST=ReadPixelsTest.OutOfBounds Change-Id: I2fd426bc6d21f5d9604ca32ad34dd8841cbb9a3e Reviewed-on: https://chromium-review.googlesource.com/353363 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 362876b1 2016-06-16T14:46:59 Cache Framebuffer completeness. Improves performance on the render-to-texture microbenchmark by ~3x on the OpenGL back-end. Wipes out several of the top profling hotspots on that benchmark. BUG=angleproject:1388 Change-Id: I6a35a0b435b2ed3c83d32acdb9df090df98214ad Reviewed-on: https://chromium-review.googlesource.com/348957 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
John Bauman 73d417ed 2016-06-17T00:49:40 Revert "D3D11: Fix readback of BGRA-backed formats." This reverts commit 230d95616d1309914a6703e27a797a440806dd02. This broke GLES2ConformTest.GL2Tests_framebuffer_objects_input_run on the NVIDIA Win8 Chromium bots. BUG=chromium:620908 Change-Id: Idf6e3eb51483ff0b6bc758b95c5910863ddfc25f Reviewed-on: https://chromium-review.googlesource.com/353394 Reviewed-by: John Bauman <jbauman@chromium.org> Commit-Queue: John Bauman <jbauman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Yuly Novikov a1f6dc95 2016-06-15T23:27:04 Varying invariance must match between shaders in ESSL 1.00 While in ESSL 3.00 invariant is allowed only for out varyings. Verify that, and update test expectations. BUG=angleproject:1293 TEST=GLSLTest*.Invariant* Change-Id: I5cab6c68f2b94ea2179719119668d905fe7a9b3d Reviewed-on: https://chromium-review.googlesource.com/352743 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Yuly Novikov cfa48d37 2016-06-15T22:14:36 Shader versions must match. Per GLSL_ES_Specification_3.00.4 paragraph 3.3 Version Declaration: "Shaders declaring version 3.00 of the shading language cannot be linked with shaders declaring version 1.00." BUG=angleproject:1361 TEST=GLSLTest_ES3.VersionMismatch Change-Id: Icee672b798dcdb41a189e4a6459c4e643daf1fa6 Reviewed-on: https://chromium-review.googlesource.com/353182 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 230d9561 2016-06-15T18:11:52 D3D11: Fix readback of BGRA-backed formats. For some BGRA-backed formats (RGBA4, R5G6B5, RGB5A1), our ReadPixels implementation wasn't aware the BGRA format didn't exactly match the RGBA format. For these it would do the 'fast path' memcpy method, when it should stop and do the slow pixel-by-pixel packing method. BUG=angleproject:1407 BUG=chromium:616176 Change-Id: Ie24758513af6f9ef87f0aa503135456c96493701 Reviewed-on: https://chromium-review.googlesource.com/352252 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 218cf9ee 2016-05-20T13:55:24 Fix unpacking overlapping unpack buffer rows on NVIDIA GL When unpack parameters are set so that rows being read overlap in the unpack buffer stored in GPU memory, NVIDIA GL driver may not upload the last pixels of the last one or more rows of a texture. The driver may also crash when the amount of overlap is high. This issue affects both TexImage* and TexSubImage* calls. Work around the issue by uploading textures row by row when the rows being read overlap in the unpack buffer. The workaround could possibly be optimized by uploading several of the first rows with a single call in some cases where the amount of overlap is low, but this is expected to be a rarely used corner case, so the added complexity that the optimization would create seems like a bad tradeoff. The issue does not seem to be triggered when the layers (images) of a 3D texture overlap, as long as the rows inside the images don't. The workaround has been ported from Chromium. This patch adds setting dirty bits when unpack state is set in StateManagerGL. The included test case also reveals some issue in the D3D backend, but this is left to be addressed later. BUG=angleproject:1376 TEST=angle_end2end_tests Change-Id: I7dbe73ebb70bbbc284fa92381546f4f2f832d333 Reviewed-on: https://chromium-review.googlesource.com/346430 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 989cac34 2016-06-08T16:18:49 Validate that unpack skip is in bounds Unpack skip needs to be taken into account when determining which part of the unpack buffer is read. This is now done in the out-of-bounds check when validating texture upload calls. Unpack skip code is removed from D3D9 backend, since skip is not supported in GLES2. BUG=angleproject:1411 TEST=angle_end2end_tests Change-Id: I0db4db0877a352613c57e2820e5b650edb5a73ab Reviewed-on: https://chromium-review.googlesource.com/352450 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill a9d60da8 2016-06-08T16:09:09 D3D11: Fix uploading RGB10A2 data to RGB5A1 textures. WebGL test: textures/misc/tex-new-formats BUG=angleproject:1407 BUG=chromium:616176 Change-Id: I7b557587c1ea0861bcac327a370480b36f679794 Reviewed-on: https://chromium-review.googlesource.com/351170 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill e40dd76c 2016-06-08T15:30:14 D3D11: Fix loading of RGB5A1 data from RGBA8. BUG=angleproject:1407 BUG=chromium:616176 Change-Id: I2b88616b6b72dd9caf07fac8ebba9a065cf2983f Reviewed-on: https://chromium-review.googlesource.com/350907 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9fc7b4c7 2016-06-08T15:30:14 D3D11: Fix loading of RGBA8 data to RGB565. BUG=angleproject:1407 BUG=chromium:616176 Change-Id: I663d265abfabb88a5aca8ca0002d2cbc29f6b069 Reviewed-on: https://chromium-review.googlesource.com/350906 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1d688763 2016-06-08T15:30:13 D3D11: Fix loading of RGBA4 textures for ubyte. BUG=angleproject:1407 BUG=chromium:616176 Change-Id: Ibb7c5e71b4cf8afe7b7d0092e7d019b87d507ba6 Reviewed-on: https://chromium-review.googlesource.com/350905 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 9b08a3d5 2016-06-08T15:30:12 Add RAII helpers for GL tests. These methods can obviate the need for glGen/Delete calls in tests. BUG=angleproject:1407 Change-Id: Ied571e48db92bd1d4f4089d91a95e7c7fafcfcaf Reviewed-on: https://chromium-review.googlesource.com/350904 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 7d20dd4a 2016-06-07T10:45:36 Add missing EXT_disjoint_timer_query entry points to eglGetProcAddress. BUG=angleproject:1405 BUG=angleproject:1265 Change-Id: I823e1393943f7531374c094ce590fa0a6f49d213 Reviewed-on: https://chromium-review.googlesource.com/351776 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 95faa233 2016-06-07T14:01:53 Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D Resubmitted with test skip added for Intel OpenGL. GLES 3.0.4 section 3.8.3: "For the purposes of decoding the texture image, TexImage2D is equivalent to calling TexImage3D with corresponding arguments and depth of 1, except that UNPACK_SKIP_IMAGES is ignored." An "applySkipImages" boolean parameter is added to the functions in the D3D backend that apply skip offset to the unpack pointer. In case 2D texture data is uploaded, the parameter is set to false and UNPACK_SKIP_IMAGES is not applied. BUG=angleproject:1406 TEST=angle_end2end_tests Change-Id: I5878439e3d38dbae89cc2452a056c2d6bbf9e0b3 Reviewed-on: https://chromium-review.googlesource.com/351330 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang a1d6c4dc 2016-06-09T18:00:42 Revert "Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D" The Windows Intel GPU FYI bot started failing the Texture2DTestES3.UnpackSkipImages2D/ES3_OPENGL test after this CL. Example: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28New%20Intel%29/builds/866 This reverts commit ac3575b27296398baebeb6c891871c6dac7df338. Change-Id: I5120261f5cf1ece9b21e4a94f63f85e014d2d8e4 Reviewed-on: https://chromium-review.googlesource.com/351280 Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill d2b50a0b 2016-06-09T00:13:35 Move ReadPixels logic to helper methods. These routines were pretty much duplicated between D3D9 and D3D11. Since I was going to have to rewrite them again for Vulkan, I figured it would be best to move them into a common location and clean them up a bit. BUG=angleproject:1319 Change-Id: I15d39b052daf3e1020dbd0880f01ae84f3686a0a Reviewed-on: https://chromium-review.googlesource.com/349630 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho ac3575b2 2016-06-07T14:01:53 Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D GLES 3.0.4 section 3.8.3: "For the purposes of decoding the texture image, TexImage2D is equivalent to calling TexImage3D with corresponding arguments and depth of 1, except that UNPACK_SKIP_IMAGES is ignored." An "applySkipImages" boolean parameter is added to the functions in the D3D backend that apply skip offset to the unpack pointer. In case 2D texture data is uploaded, the parameter is set to false and UNPACK_SKIP_IMAGES is not applied. BUG=angleproject:1406 TEST=angle_end2end_tests Change-Id: Iedc2b05377adee8d5c2504511a87421f4b1db18d Reviewed-on: https://chromium-review.googlesource.com/350465 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill e2e406c3 2016-06-02T13:04:10 Add base::numerics for safe math and conversions. This replaces are "IsUnsignedXXXSafe" family of methods. Also add overflow checks to unpack block sizes. BUG=angleproject:1397 Change-Id: Ib47be149b0486c70f795b0d0f8899441faac9340 Reviewed-on: https://chromium-review.googlesource.com/348062 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Vincent Lang 25ab4510 2016-05-13T18:13:59 Implement GL_EXT_texture_norm16 extension BUG=angleproject:1365 Change-Id: I972b156ecb41ff44bc1f6365373ab386bacc85f1 Reviewed-on: https://chromium-review.googlesource.com/346530 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 0f2b1560 2016-05-13T16:15:35 Fix GenerateMipmap when base level or max level are set According to GLES 3.0.4 section 3.8.10, GenerateMipmap should generate levels based on the base level, and generate them at most up to the max level. Levels outside the base/max level range should be unchanged by GenerateMipmap. The Texture class is fixed so that the image descs are set only for the changed mipmap range when GenerateMipmap is called. The D3D backend is fixed so that mipmap generation is correctly started from the base level instead of level 0, and making sure that mipmaps are generated only up to the max level. Generating mipmaps for array textures is also fixed for cases where the base level depth >= max(width, height) * 2. The GL backend is fixed to sync texture state before GenerateMipmap is called, so that base level and max level are set correctly in the driver. The GenerateMipmap entry point is refactored so that it has a separate validation function and a context function which does the work. Validation for out-of-range base levels is added. New tests are added to verify the functionality. One corner case in the tests fails on NVIDIA GL drivers likely due to a driver bug - similar rules for GenerateMipmap are found from newer GLES specs and also OpenGL specs (checked versions 3.3 and 4.4). BUG=angleproject:596 TEST=angle_end2end_tests Change-Id: Ifc7b4126281967fc4f6dc4f9452e5b01e39f83d7 Reviewed-on: https://chromium-review.googlesource.com/344514 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho e8528d89 2016-05-16T17:50:52 Fix determining texture mipmap completeness The code didn't previously take base level properly into account when determining how many levels to check when checking for texture completeness. The code is refactored so that the "q" value in spec, that is the maximum mipmap level for determining completeness, can be queried from TextureState. This value is used now for checking completeness. This requires moving ImageDescs under TextureState. Functions that operate on the ImageDesc array are also moved from Texture to TextureState. TextureState members are also renamed to start with the "m" prefix and made private. Also handle levels outside the base/max level range consistently in eglCreateImageKHR validation. We interpret the spec so that if the level used for the EGL image is not a part of the texture levels that affect texture completeness, an error is generated. BUG=angleproject:596 TEST=angle_end2end_tests Change-Id: I038ef24aa83e0a6905ca3c0bbada5989eecb00d9 Reviewed-on: https://chromium-review.googlesource.com/344880 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang b66a9097 2016-05-16T15:59:14 Add support for OES_EGL_image_external and OES_EGL_image_external_essl3. BUG=angleproject:1372 Change-Id: I8489e7fd0ab409b0775041ad5e9fbf0aab53886d Reviewed-on: https://chromium-review.googlesource.com/344734 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Sami Väisänen a797e066 2016-05-12T15:23:40 Support CHROMIUM_framebuffer_mixed_samples in the GL backend BUG=angleproject:1378 Change-Id: I634c41f3507dbdeaa56234c4de1b498f81c848ed Reviewed-on: https://chromium-review.googlesource.com/344520 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
Olli Etuaho be815a4f 2016-05-12T20:38:38 Apply effective base and max level on GL backend This works around GL drivers that neglect to clamp the base level or max level of immutable textures. BUG=angleproject:596 BUG=610800 TEST=angle_end2end_tests Change-Id: Ie4e04aaa9253f2befd73bccefa7759486b3ef487 Reviewed-on: https://chromium-review.googlesource.com/344590 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 53ea9cc6 2016-05-17T10:12:52 Replace rx::Renderer with rx::ContextImpl. Previously Context had no Impl class, but had a special relationship with the instanced Renderer class. Having a ContextImpl backing every Context will allow new designs to enable things like multithreading (where each ContextImpl stores a Context-specific device) or non- virtual Contexts on Android or other platforms where it is more efficient. A large refactoring patch that touches every back-end. BUG=angleproject:1363 Change-Id: Icb73a7d37447f08a664eeb499a310ba05d71a57e Reviewed-on: https://chromium-review.googlesource.com/342052 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 190028d3 2016-05-13T12:11:29 Clean up specifying colors and texture scale in MipmapTest Remove unnecessary scale parameter from MipmapTestES3, and use the GLColor class and EXPECT_PIXEL_COLOR_EQ instead of EXPECT_PIXEL_EQ for greater readability. BUG=angleproject:596 TEST=angle_end2end_tests Change-Id: I79c30ce85be5d554d89197f8f1ce7ab0c51c11b6 Reviewed-on: https://chromium-review.googlesource.com/344513 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Sami Väisänen 74c2347e 2016-05-09T17:30:30 Support EXT_multisample_compatibility in the GL backend BUG=angleproject:1377 Change-Id: Ie14aceca8e01f1cbc93fd5bd06d986336fb752b3 Reviewed-on: https://chromium-review.googlesource.com/343501 Reviewed-by: Sami Väisänen <svaisanen@nvidia.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
Olli Etuaho 87fc71c4 2016-05-11T14:25:21 D3D: Reallocate storage when texture format changes with base level Different levels of the same texture may have different formats, so changing the base level may affect the format that should be used for the storage. Take this into account in the D3D backend. The added test fails on some GL drivers. TEST=angle_end2end_tests BUG=angleproject:596 Change-Id: I5380e942694a75685ebb510edb01c0489e0d5179 Reviewed-on: https://chromium-review.googlesource.com/344230 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Corentin Wallez 0f2ef7f9 2016-05-11T12:51:05 Suppress and end2end failure caused by a Mesa bug BUG=610800 Change-Id: I4ee6ba589afc98277c3cf50b8f57afb184b11216 Reviewed-on: https://chromium-review.googlesource.com/343994 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 2b4ce80c 2016-04-28T13:34:50 Implement GL_CHROMIUM_sync_query for D3D9 and D3D11. BUG=angleproject:1366 Change-Id: Iadde61968f45b969c76578a6dd9116a25d63fb4b Reviewed-on: https://chromium-review.googlesource.com/341230 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>