Log

Author Commit Date CI Message
Jamie Madill caafd890 2017-05-19T14:31:25 D3D11: Don't store device in InputLayoutCache. We will need the Renderer pointer for resource allocation, so pass it around instead of storing the device and context. BUG=angleproject:2034 Change-Id: Iaf271913f88c5402895aa81de310aa22fcd72cc4 Reviewed-on: https://chromium-review.googlesource.com/509930 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: 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>
Olli Etuaho 19ecebe7 2017-05-24T16:44:42 Fix compound assignment precision emulation Precision emulation for compound assignment used to set the wrong type for the compound assignment nodes, which could cause an assert to trigger. The wrong rounding function was also being called in the lowp rounded compound assignment function. BUG=chromium:699479 TEST=angle_unittests Change-Id: I60b4cb3bf1830e8249511c13037348bb2423e5b9 Reviewed-on: https://chromium-review.googlesource.com/514045 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill e0e009fe 2017-05-19T14:13:03 D3D11: Consolidate SRV allocation. This change also moves all SRV storage to use the custom smart pointer classes in ResourceManager11. Every single SRV is now allocated in ResourceManager11. For TextureStorage11 and RenderTarget11, we use a shared pointer type since the SRVs use shared ownership by both classes. BUG=angleproject:2034 Change-Id: I90666fbbbc23ff10870b7401f3da09ef79258136 Reviewed-on: https://chromium-review.googlesource.com/503250 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 39b826fc 2017-05-24T09:47:44 Reduce warning spam for failed D3D shaders. This prevents Chrome's about:gpu from being filled with bad shaders, and instead only prints the relevant error lines. BUG=None Change-Id: I75fcd2ef920d2ed7b98e8668c487b0921faf4c0b Reviewed-on: https://chromium-review.googlesource.com/513417 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Lei Zhang 22717ce2 2017-05-24T00:15:22 Wrap safe numerics library in namespace angle. When ANGLE is used with Chromium, having two copies of safe numerics code in namespace base causes ODR violations. BUG=449754 Change-Id: I686049e7d8926373d00dd17ec8142fa3c508b9c5 Reviewed-on: https://chromium-review.googlesource.com/513434 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Wei-Yin Chen (陳威尹) 04a56818 2017-05-24T00:45:54 Reduce absolute paths in generated ninja files in angle BUG=chromium:723856 Change-Id: I7481d3335111c697f77aa0ea673614e79b4a86f6 Reviewed-on: https://chromium-review.googlesource.com/513588 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>
Olli Etuaho 487b63ab 2017-05-23T15:55:09 Disallow structs as scalar/vector constructor arguments The spec isn't very explicit about disallowing this, but conversions from structs are not among the conversion constructors or specified in any other way either. BUG=angleproject:2036 TEST=angle_unittests Change-Id: I23f2ceda1d1348cec0d3bba38a7a013275ff84eb Reviewed-on: https://chromium-review.googlesource.com/514002 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 83498433 2017-05-19T14:57:23 Put global init code inside main() instead in a function Otherwise we may run into a name conflict issue if the shader code is run through the translator twice, since neither user-defined function names or internal function names are currently being prefixed in GLSL output. This could be fixed by prefixing user-defined variables in GLSL output, but this solution is much simpler. BUG=angleproject:1966 TEST=angle_end2end_tests, WebGL conformance tests Change-Id: I15c8de5a0a5e596fafe9f55e8d370345c790d5cc Reviewed-on: https://chromium-review.googlesource.com/509688 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kenneth Russell 538c7bcf 2017-05-19T15:58:24 Remove failure expectations for shader_random tests. Apparently the current clang roll has fixed these already. BUG=722345 Change-Id: I59f07f197fdfd1eb6e000390ee93d41938fe4d42 Reviewed-on: https://chromium-review.googlesource.com/510031 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho e01c02b6 2017-05-08T14:41:49 Clean up ternary op validation Use "?:" as the operator string to make the error message clearer. Update some comments to refer to specific revisions of the spec, since there have been some spec changes in this area. BUG=angleproject:2032 Change-Id: Ic5d128391bfa46187ad335228077f5eab9eac349 Reviewed-on: https://chromium-review.googlesource.com/500270 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill 764a1e76 2017-05-18T11:11:47 D3D11: Consolidate DSV allocation. This uses the new classes introduced in ResourceManager11. Smart pointers mean we can use ANGLE_TRY in more places, and don't need to manually release these views. There is now a single point in the D3D11 back-end where depth stencil views are allocated. BUG=angleproject:2034 Change-Id: If0de2529ece1298e8babf24c07cc4be9849cc4de Reviewed-on: https://chromium-review.googlesource.com/503249 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Shao df682a8e 2017-03-31T15:13:21 ES31: Refactor syncState in VertexArrayGL This patch intends to solve several design issues by refactoring the process of syncState in VertexArrayGL before implementing ES3.1 feature Vertex Attrib Binding on the OpenGL back-end. 1. Use nullptr as the flag of using client memory pointer 2. Simplify comparisons in updateAttribPointer. 3. Put all code related to mFunctions->vertexAttrib*Pointer() into an individual function 4. Remove redundant mStateManager->bindVertexArray() in all update* functioins and only call it once in syncState(). BUG=angleproject:1593 Change-Id: I8f68534bb9291a601b9b77954d7281e5171c2b55 Reviewed-on: https://chromium-review.googlesource.com/465378 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 9676d1af 2017-05-16T11:29:24 Handle multiple AST insertions to the same parent in updateTree() Multiple insertions to the same parent can be handled as long as the insertions don't have the same position as well. They're sorted in reverse order so that insertions to greater indices get processed first. This helps to make some AST transformations faster - they don't need multiple tree traversals and updateTree() steps anymore. The SimplifyLoopConditions AST transformation is changed to only use a single traversal. BUG=angleproject:1966 TEST=angle_unittests, angle_end2end_tests, WebGL conformance tests, dEQP-GLES2.functional.shaders.*select_iteration_count* Change-Id: I3183f2644ad58b282926093c77b204fb7e4e9b71 Reviewed-on: https://chromium-review.googlesource.com/506202 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho b427920e 2017-05-18T15:08:24 Clean up ValidateMaxParameters It doesn't need to use a traverser, since all function definitions can be found simply by iterating over the children of the root node. BUG=angleproject:2040 TEST=angle_unittests Change-Id: I18a98eff9710485c0cdce73e7fffe124f7d7afb2 Reviewed-on: https://chromium-review.googlesource.com/508791 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Kenneth Russell bb580b1b 2017-05-18T11:17:05 Fix names of some crashing shader tests. The names were wrong, so the test expectations weren't applying. BUG=722345 Change-Id: Ic64abf08e512dbf3c297ee89a74b614cd4590b58 Reviewed-on: https://chromium-review.googlesource.com/508166 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Jamie Madill 403c1682 2017-05-18T11:11:46 D3D11: Add resource manager classes. The resource manager tracks the allocations and deallocations of all D3D11 resources that have device memory: Buffers and Textures (which are either 2D or 3D). It also tracks the number of active Views (DSV, RTV, and SRV, potentially UAV with ES 3.1). A new smart pointer type will wrap the resource deallocation so that the object notifies the manager when ANGLE is done with the resouce. This allows us to track precisely how much GPU memory we think we're using at any point, and will help prevent resource leaks for these object types. It also makes initialization and releasing much more trivial. The base class for a resource uses a template template parameter so that we can use a unique or shared pointer depending on if the object in question needs unique or shared ownership. For some resources (in our case, SRVs are shared between the TextureStorage11 and RenderTarget11 classes, and Textures are shared in many places) we need to have the ability to have shared ownership. Unique ownership is a little bit more efficient so supporting both can be helpful. In this patch RenderTargetView allocation is moved to use the unique smart pointer. BUG=angleproject:2034 Change-Id: Idb1245c24cd66733b8b5ca524c727350b2d2c745 Reviewed-on: https://chromium-review.googlesource.com/503248 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 9f10b775 2017-05-16T15:51:03 Refactor checks for incomplete framebuffer attachments. BUG=722684 Change-Id: I6f47d92b450a056a2344767bef28e96c4552f98e Reviewed-on: https://chromium-review.googlesource.com/506927 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Olli Etuaho 5df2b9d2 2017-05-18T12:15:28 Clean up AddDefaultReturnStatements It doesn't need to use a traverser, since all function definitions can be found simply by iterating over the children of the root node. BUG=angleproject:2040 TEST=angle_end2end_tests Change-Id: I380942f90a0e73152f296b98d1fb027762d913b0 Reviewed-on: https://chromium-review.googlesource.com/508689 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Kenneth Russell df22132f 2017-05-17T17:36:49 Skip, rather than fail, crashing functional_shaders_random tests. BUG=722345 TBR=geofflang@chromium.org Change-Id: Ie4c488b730ed2b51ce8f62d5bf7961dcc8ac0104 Reviewed-on: https://chromium-review.googlesource.com/508102 Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Kenneth Russell <kbr@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 44653302 2017-05-17T11:03:44 Use fprintf(stderr) instead of std::cerr. This allows us to include <ostream> instead of <iostream> to avoid including a static initializer. BUG=angleproject:2037 Change-Id: Ib7e84a15018fa951bad1c87ffec4bfb0c896749f Reviewed-on: https://chromium-review.googlesource.com/507627 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 1a310b84 2017-05-17T18:04:14 dEQP expectations: suppress failures caused by a clang roll Hopefully this makes the bot green while we investigate whether the bug is in dEQP or clang, and find a fix. BUG=722345 Change-Id: I2813881addb4ebfe23443244d175b4c6db698a7d Reviewed-on: https://chromium-review.googlesource.com/507767 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 1dd07a64 2017-05-12T17:01:22 Simplify DeferGlobalInitializers It doesn't need to use a traverser, it's simpler to just iterate over all statements in the global scope. BUG=angleproject:1966 TEST=angle_unittests, WebGL conformance tests Change-Id: I11200f72842db86be2bcdd11934262da183cc3b4 Reviewed-on: https://chromium-review.googlesource.com/504727 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@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>
Olli Etuaho 7854d861 2017-05-09T14:29:15 EmulatePrecision: Round constructor args only when needed Constructor arguments don't need to be rounded if the constructor result will be rounded to the same precision. This will make precision emulated shaders slightly faster to execute in some cases. BUG=angleproject:874 TEST=angle_unittests Change-Id: I4220cd2289c97dcf5b7a25a4cbdd18487947c2d2 Reviewed-on: https://chromium-review.googlesource.com/500288 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 9cbc07c3 2017-05-10T18:22:01 Simplify AST transformations that need to find main Share code for finding the main function from the AST between InitializeVariables, DeferGlobalInitializers, EmulateGLFragColorBroadcast and UseInterfaceBlockFields. This makes InitializeVariables simpler in particular, as it doesn't need an AST traverser anymore. BUG=angleproject:2033 TEST=angle_unittests, WebGL conformance tests Change-Id: I14c994bbde58a904f6684d2f0b72bd8004f70902 Reviewed-on: https://chromium-review.googlesource.com/501166 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jiawei-Shao 995c2ed2 2017-05-15T13:31:45 Initialize currentValueAttrib->binding in updateCurrentValueAttribs This patch intends to fix a crash issue in the win-clang build of ANGLE by adding the missing currentValueAttrib->binding assignment in StateManager11.cpp::updateCurrentValueAttribs(). In D3D11 all vertex attributes (VertexAttribute and its VertexBinding) should be treated as a whole, so we should always ensure these two parts are availabe. This patch also add ASSERTs before using *translated->attrib and *translated->binding to prevent a TranslatedAttribute object having a null attrib or binding. BUG=chromium:721783, angleproject:1593 Change-Id: Id11d6f1d4c37daabad2265e01ea38eb51046b9cb Reviewed-on: https://chromium-review.googlesource.com/505928 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Frank Henigman d5e8e196 2017-05-15T18:37:48 Check FunctionsEGL::terminatePtr before use. FunctionsEGL::terminatePtr could be null if initialization failed, so check it before use to avoid crashing. Change-Id: Ide9378c8e26749ab9d58c01cb36cd923836cde98 Reviewed-on: https://chromium-review.googlesource.com/506627 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Corentin Wallez e9ed3d86 2017-05-15T15:51:37 Use unused uniform blocks workarounds on Linux AMD. The Linux AMD driver optimizes out uniform blocks where WebGL2 and maybe OpenGL ES 3 forbids it. Try to fix this by enabling the workaround that was made for the same problem on OSX. BUG= Change-Id: If3b18ec1f463582d7594221a6f2a08d25207e737 Reviewed-on: https://chromium-review.googlesource.com/506189 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@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>
Corentin Wallez c895b4c7 2017-05-04T14:18:42 Make IGarbageObject's destructor virtual This fixes a warning. BUG=angleproject:1668 Change-Id: Idf063be9dde0bfbf5f088d69ef38fd97baa69df3 Reviewed-on: https://chromium-review.googlesource.com/495434 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Shao 2b324d50 2017-05-09T15:02:39 Fix formatting of struct indexing in intermediate output This patch fixes 2 format issues in the intermediate output of structs and interface blocks in indexing expressions. 1. Adds the missing line feed (LF) so that the next expression can be started in a newline correctly. 2. Remove unnecessary mDepth++ and mDepth-- to avoid redundant indentions. BUG=angleproject:2031 Change-Id: I04e36443a851df4c26ba6b1cbf3a7f8fd6405d3a Reviewed-on: https://chromium-review.googlesource.com/499569 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Olli Etuaho 8fab320c 2017-05-08T18:22:22 Share a single TOperator enum among all constructor AST nodes The code is a lot simpler when the type information is only carried in the TType of the node, instead of being partially duplicated in the enum value. BUG=angleproject:1490 TEST=angle_unittests Change-Id: I956376225ec01e469c7afb7378fa48cc097c0cea Reviewed-on: https://chromium-review.googlesource.com/498768 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 9405005f 2017-05-08T14:17:44 Disallow interface blocks in arithmetic expressions Interface blocks were mistakenly being allowed in some types of unary, binary and ternary expressions, when they should not have been. BUG=angleproject:2030 TEST=angle_unittests Change-Id: Ie75833ee208e1b7fef8f77fa91b90da278bc6498 Reviewed-on: https://chromium-review.googlesource.com/500269 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
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>
Eric Engestrom 82830ede 2017-05-09T11:17:00 Fix assert in EGLSyncControlTest `ust`, `ust2`, `msc`, and `msc2` are unsigned, so their difference is still unsigned. The `>0` assert could never fail. Fix this by simplifying the test to compare the pairs of values directly. Fixes: 5d9f5df01ac5a384d9b7 ("Implementation of eglGetSyncValuesCHROMIUM extension.") Fixes: ee218f273f3eb4e14d96 ("Re-land eglGetSyncValuesCHROMIUM extension.") Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com> Change-Id: I0b19d786720f545c846640d48c30a83a1d001396 Reviewed-on: https://chromium-review.googlesource.com/500189 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: 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 0c09e265 2017-05-03T09:43:13 Add BGRA formats to glCopyTexSubImage validation. These formats were already accepted by glCopyTexImage and allow glCopyTexSubImage to work on the default framebuffer for D3D9 and D3D11. BUG=angleproject:2027 Change-Id: I5d8b839ae2c69e1e8381aa011df6223e18afb308 Reviewed-on: https://chromium-review.googlesource.com/493803 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shao 29e9035d 2017-05-05T16:41:29 Add Linux and MacOS support to perf_test_runner.py This patch enables perf_test_runner.py to run on Linux and MacOS. BUG=angleproject:2029 Change-Id: Ia7176a3f5fed0245ab72d5def1199623c4fb4fe2 Reviewed-on: https://chromium-review.googlesource.com/497648 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 8ceaedf8 2017-05-09T10:32:22 Generate an INVALID_OPERATION error if a texture format is not supported. We already generate an INVALID_VALUE in the ValidES3InternalFormat check above. If an error is generated here, it is because the internal format and type are not valid. TEST: conformance2/textures/misc/tex-image-with-bad-args BUG=angleproject:1958 BUG=angleproject:1715 Change-Id: I50d479e64d687cc971c8f41b5691dcb123da0391 Reviewed-on: https://chromium-review.googlesource.com/499690 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 65ac5b9c 2017-05-01T13:16:30 Allow glGenerateMipmaps on sRGB textures in WebGL. The generated mipmaps are still not correct on all ANGLE backends. TEST=conformance/extensions/ext-sRGB BUG=angleproject:2009 Change-Id: I6299dcb93c71f48e61ec660347b4747366ecfb71 Reviewed-on: https://chromium-review.googlesource.com/491367 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Olli Etuaho a7ecec38 2017-05-08T17:43:55 GLSL: Simplify constructor parsing Constructor argument checking rules are reorganized to make them easier to understand and constructor node creation is made simpler. This removes usage of constructor op codes from ParseContext. This paves the way for getting rid of constructor op codes entirely, which will remove duplicate information from the AST and simplify lots of code. This refactoring will make adding arrays of arrays slightly easier. BUG=angleproject:1490 TEST=angle_unittests Change-Id: I4053afec55111b629353b4ff7cb0451c1ae3511c Reviewed-on: https://chromium-review.googlesource.com/498767 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Andrei Volykhin 73fa4b83 2017-05-05T18:45:06 ES31: Validate fragment shader outputs This allows to validate fragment shader outputs for shader version #300 and newer. Change-Id: I21b21ebb357eab61e36c080c328291ed20b8eb8f Reviewed-on: https://chromium-review.googlesource.com/497749 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> Commit-Queue: 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>
Jamie Madill 53d3841c 2017-04-20T11:33:00 Refactor entry point gen slightly. This makes the entry points a bit smaller and avoids redundant return statements. BUG=angleproject:1309 Change-Id: I895c26d4235900578f5acc0eb94a7deef67b946b Reviewed-on: https://chromium-review.googlesource.com/483428 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
jchen10 b4cf5656 2017-05-05T18:51:17 Validate opaque operands against binary operators Add checks that opaque operands can only be used with array indexing and field section, as mentioned in ESSL 3.10 section 4.1.7. BUG=angleproject:2028 Change-Id: I41b7f10785bf712dfc999f85ebff925341c51911 Reviewed-on: https://chromium-review.googlesource.com/497767 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
jchen10 cc2a10e9 2017-05-03T14:05:12 Unify opaque type validation in GLSL parsing Refactor separate sampler and image validations into unified opaque type handling. This paves way for adding atomic counter, another new opaque type. BUG=angleproject:1729 Change-Id: I201d28e31c84534db43e656d518650e378bab76c Reviewed-on: https://chromium-review.googlesource.com/493618 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Olli Etuaho 7142f6ce 2017-05-05T17:07:26 Prevent using gl_ViewID_OVR as an l-value It's a shader input and as such should not be writable. BUG=angleproject:1669 TEST=angle_unittests Change-Id: I05cb5c63b7272dfa6e80cad57385da02504e4d8f Reviewed-on: https://chromium-review.googlesource.com/497408 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Geoff Lang 62a416d5 2017-04-28T09:59:56 Re-enable the RGB10A2 backbuffer format. BUG=angleproject:1662 Change-Id: I9bd830a3021a0cfa9010c5e58d3a284cc3eeca26 Reviewed-on: https://chromium-review.googlesource.com/490346 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Geoff Lang 5e4343a1 2017-05-05T10:56:12 Add msvs_cygwin_shell to all actions in vulkan.gypi. BUG=angleproject:1668 Change-Id: I93bc7584ff7d945f9efde25c3379a282ee246b53 Reviewed-on: https://chromium-review.googlesource.com/497328 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 06f76552 2017-05-05T10:09:32 UniformsPerf: Define a vertex attribute. This seems to fix a crash on D3D9/Win7/Intel. BUG=chromium:704211 Change-Id: If600a6b8409774503f28ca122d87ef723e4ea2e5 Reviewed-on: https://chromium-review.googlesource.com/497649 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill ee769dd2 2017-05-04T11:38:30 GLES2: Auto-generate entry points file. BUG=angleproject:1309 Change-Id: I7817444c3ea56f932fe769a860f4a70b29262019 Reviewed-on: https://chromium-review.googlesource.com/483427 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@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>
Corentin Wallez 6a1d2f93 2017-05-02T16:47:38 Fix compilation of the Vulkan loader / layers in standalone This commit introduces a stamping mechanism to make sure the order of build dependencies is correct. In GYP there are the following build order dependencies (between others): - A target link depends on previous target links - A target source compile depends on that target actions outputs - An action output depends on the action inputs The problem was that there were actions in vulkan_layer_utils_static that generated headers needed by vulkan_loader's sources (between others) Making a "dependencies" relationship between the two was not enough to ensure the headers were generated before the source were compiled. Instead we replicated the "stamping" mechanism used in GN using GYP actions that depend on the headers and output a dummy stamp file. This completes the build order dependencies: the sources depend on the stamp which depend on the action's input, i.e. the generated headers. BUG=angleproject:1668 Change-Id: I2de15ac2ea8f838acdbf43da1f111b28b8cc2184 Reviewed-on: https://chromium-review.googlesource.com/493892 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: 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>
Olli Etuaho bb7e5a7c 2017-04-24T10:16:44 GLSL parser: Fix empty declaration qualifier checks The shader validation now does the same checks for qualifier combinations regardless of if a declaration is empty, as is specified. Some of these checks used to be in singleDeclarationErrorCheck, and have now been moved to a new function declarationQualifierErrorCheck. The other parts of singleDeclarationErrorCheck are under a renamed nonEmptyDeclarationErrorCheck. The patch also contains another related cleanup: Unnecessary symbol nodes won't be created for empty declarations any more. BUG=angleproject:2020 TEST=angle_unittests Change-Id: I1c864a5e151c52703926d8c550450b2561bfcbb2 Reviewed-on: https://chromium-review.googlesource.com/493227 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Geoff Lang 6ba99e3d 2017-05-03T13:10:46 Re-generate pre-compiled D3D shaders. BUG=angleproject:1932 Change-Id: I927eb5adc73bcede220ec56a9634783edd735d18 Reviewed-on: https://chromium-review.googlesource.com/494706 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Jamie Madill 60c65556 2017-05-02T14:34:05 Shrink FunctionsGL.cpp. Templating here was causing a lot of redundant functions to be generated. We can use a bit of macro magic instead of template magic to reduce the binary size. This reduces the size of the compile file by about 25k. Note that the ASSIGN macro doesn't itself reduce size, but it does save a bit of code size and makes the file look consistent. BUG=angleproject:2022 Change-Id: I3d9a6e1739dcab1fceca3c63d2a4e35c1e847289 Reviewed-on: https://chromium-review.googlesource.com/493891 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 170efbf9 2017-05-02T13:45:01 validationES: reorder draw validation for the WebGL CTS dEQP dEQP tries to test specific GL ES errors, but also triggers errors in the additional WebGL validation. This commit reoders ANGLE's validation so that WebGL-specific validation for draws is done after the common GL ES checks. BUG=angleproject:2021 Change-Id: Ie06b132ef6a4378f7c82ae8d354a8343d897c478 Reviewed-on: https://chromium-review.googlesource.com/493828 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ba29fa47 2017-05-02T12:17:24 Reduce binary size with format enum arrays. Apparently using std::vector::push_back causes heavy inlining in MSVS. This refactor (no functionality change) reduces the binary size from ~10kb for all the gl::Determine* functions plus the holding function (setTextureExtensionSupport) to about 1.4k. The visible size of my compiled 32-bit Release libGLESv2.dll went from 4648 to 4642 kb. Note that using PoD arrays was sinificantly better than using vectors with initializer lists (size was ~4kb instead vs 1.4kb). BUG=angleproject:2022 Change-Id: I5b7efd41455d5ee35afc699bafef31ce8367934e Reviewed-on: https://chromium-review.googlesource.com/493890 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Olli Etuaho 193c0950 2017-05-02T15:51:47 Fix assert when attempting to create a void array node TIntermTyped::CreateZero can be reached with a void array type in an error case. Handle this gracefully instead of asserting. Also remove an assert that wasn't really checking anything in CreateZero. type.isScalar() || type.isVector() || type.isMatrix() can only be false in case of a struct, and struct type was being checked in the condition on the line above. BUG=chromium:717385 TEST=angle_unittests Change-Id: Iff0811d18d399d7b32b2b46deea5df172412eb8c Reviewed-on: https://chromium-review.googlesource.com/492887 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Jamie Madill be849e4f 2017-05-02T15:49:00 GLES2: Clean up entry points for auto-gen. This cleans up a few things: * refactors a few remaining missed EPs * removes unnecessary includes * rename one Context entry point * moves some ES2 EP validation to validationES2 The last item makes for a significant diff, but this is a refactor change only, with no functionality change. BUG=angleproject:747 Change-Id: I7860cc4b6260b6c22faa5f2885297333c0cdb4ed Reviewed-on: https://chromium-review.googlesource.com/483426 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@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>
Frank Henigman f231232b 2017-05-02T15:46:18 vulkan: assume secure_getenv(). Vulkan's cmake files check for the availability of secure_getenv() but we just assume it exists. BUG=chromium:717558 Change-Id: I22054c3967f543d163dde37b9a6b13e896da7a50 Reviewed-on: https://chromium-review.googlesource.com/494126 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8562b773 2017-04-26T13:39:12 GLES2: Apply clang-format to entry points. This will make the diff for the auto-gen patch easier to review. BUG=angleproject:1309 Change-Id: I58526a29b7f538b45409c6ab48b75b41b3521321 Reviewed-on: https://chromium-review.googlesource.com/487883 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jamie Madill 2e16d96d 2017-04-19T14:06:36 GLES2: Use codegen for the entry point header. This is a first step towards auto-generating more entry point files. BUG=angleproject:1309 Change-Id: Ic75a627feb91c19b6bb398a6f9f1a37b603dea14 Reviewed-on: https://chromium-review.googlesource.com/483425 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Corentin Wallez 0d434046 2017-05-02T13:34:12 Disable Vulkan support on Linux There are both compile error and missing build file dependencies in standalone builds. BUG=angleproject:1668 Change-Id: I8741bd3dd20452c94921101bbf7c5be39fb463b7 Reviewed-on: https://chromium-review.googlesource.com/493608 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@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>
Corentin Wallez 180973c7 2017-04-28T14:42:07 Fix params.h compilation. The ANGLE_PARAM_TYPE_INFO macro was referencing the TypeInfo static member that was only added when release asserts are enabled. BUG=angleproject:747 BUG=chromium:716323 Change-Id: I0657dde69c62ab697b3c095fe19f38c130188cef Reviewed-on: https://chromium-review.googlesource.com/490687 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Shahmeer Esmail 5416f753 2017-03-09T22:02:43 Clear11 Shader Optimizations and Shader Management Rework - ClearShader made into a class that manages all required shaders and input layouts for clears - ClearShader reuses VS for all clear types. This reduces shader compilation time and memory usage significantly - Use constantBuffer for color/z values instead of VB to decouple VB & VS from clearType and allowing for the same VS to be used for multiple clear types - FL10+ Devices: Generate positions using SV_VertexID in VS to avoid having to bind VB. - FL93 Devices: Use an immutable VB containing only position data (SV_VertexID not supported) - Implement CB cache. Incoming color/Z values checked against cache and CB/cache only updated if there is a mismatch. Significantly reduces the frequency of expensive CB map/rename operations especially in common scenarios where most/all clears use the same color/z values BUG=angleproject:1935 Change-Id: I2015fbdcc135ba08b65dbecbe9c62499c2801037 Reviewed-on: https://chromium-review.googlesource.com/453882 Commit-Queue: Shahmeer Esmail <shahmeer.esmail@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ae39958a 2017-04-28T10:42:42 Fix params.h compilation. Because our ASSERT macro always references the conditional expression, not defining TypeInfo was causing a compile error on builders which had release asserts disabled. BUG=angleproject:747 BUG=chromium:716323 Change-Id: I3b5f27e39235f26b8bef5921c2d398320eb0ebaf Reviewed-on: https://chromium-review.googlesource.com/490426 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Shao 37219c87 2017-04-26T10:59:48 Fix missing return values in bitset_utils.h This patch adds the missing return value *this in the operator= of class BitSetT BUG=angleproject:1814 Change-Id: I758d62e80e4ade92aac64315f1808ca1eabdc787 Reviewed-on: https://chromium-review.googlesource.com/487423 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill ffa4e611 2017-04-27T12:37:52 GLES2: Reformat entry point header. This should simplify the diff with the auto-gen patch. BUG=angleproject:1309 Change-Id: Ibea503f236e7dc07d0862e20f77e866d6ec1f316 Reviewed-on: https://chromium-review.googlesource.com/489081 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang e8b35512 2017-04-27T10:38:20 Fix workaround formats not being used when EXT_texture_storage is emulated. This bug showed up on Mac which doesn't support the extension. The internalFormat is correctly translated to the workaround format but the format and type are not. BUG=angleproject:1958 Change-Id: I9b31f0491df1bb623bf59996cbb02d0276b6355c Reviewed-on: https://chromium-review.googlesource.com/488582 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: 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>
Jamie Madill e1fd475b 2017-04-26T16:46:48 Apply release asserts config to all dependents. Our test sets (e.g. angle_perftests) were not having the config applied. BUG=angleproject:747 Change-Id: Idd3a2cba214d38a923c1936787f9dec4bd016326 Reviewed-on: https://chromium-review.googlesource.com/487730 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@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>
Jamie Madill 9c9b40ac 2017-04-26T16:31:57 Use parameter cache to skip passing IndexRange. For DrawElements et al., we can use a simple design to store entry point parameters and compute index ranges lazily. This allows us to compute the index range outside of the validation layer. Fixing this will let us implement a few things, such as the no error extension. It will also allow auto-generation of the entry points, since we won't have to have special cases for certain entry points. It will also help fix the syncState layering problem. Now the cached parameter helper (which is owned by the Context) can make the impl layer calls, instead of the validation layer calling the impl directly. We use a small array in Context to gather parameters in a generic way without reallocation on call. We also check type safety by storing a type info struct which can handle inheritance between type classes. Optional variables for the cache determine when to re-compute values. The intent with gatherParams is to call this in every entry point, and have in most cases be a no-op. In some cases like for IndexRange, we store some parameters for later use. The inheritance scheme enables auto-generation of the entry points by keeping signatures similar. BUG=angleproject:747 Change-Id: I871e99e1334cf6e61ef8da62fde3ced094903f8a Reviewed-on: https://chromium-review.googlesource.com/474119 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 25e297e9 2017-04-20T17:01:20 D3D11: Alias dirty buffer channel bindings. The types for this were a bit disorganized. Clean this up. BUG=angleproject:1635 Change-Id: I669d347697e0c7c5b06ed7165fa0997c375e876e Reviewed-on: https://chromium-review.googlesource.com/483315 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Frank Henigman 29f148b0 2016-11-23T21:05:36 Support Vulkan on Linux as well as Windows. Refactor display and surface classes into Win32 and Linux parts and add Linux parts to gn and gyp builds. BUG=angleproject:1668 Change-Id: I2a7d29c35f4f42fa0035bd97938d3770f3627672 Reviewed-on: https://chromium-review.googlesource.com/412426 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 6d1ccf01 2017-04-24T14:09:58 Re-order the error generation for ES3 TexImage calls. Explictly check if the internal format enum is ever valid before checking if it is valid in combination with other parameters. Some WebGL tests expect a certain order for generated errors. BUG=angleproject:2009 TEST=conformance2/textures/misc/tex-input-validation Change-Id: I31166a78d00629f8281ef53eced72575497ae448 Reviewed-on: https://chromium-review.googlesource.com/486099 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@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>
Frank Henigman f5841774 2017-04-19T16:31:11 Move Vulkan layer json files. Put the Vulkan layer JSON files in the same place as the gn build puts them, for consistency. Change-Id: I6294372ce34ed20da357a8b8ea83018c4e748c37 Reviewed-on: https://chromium-review.googlesource.com/475074 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Jamie Madill d75dd26c 2017-04-20T17:01:19 Make ImageSibling inherit from FramebufferAttachment. Only currently Renderbuffers and Textures can be bound with images. This makes the relationship explicit, and also ensures that an image sibling can determine if it's been initialized or not, which is important for the robust resource init extension with Textures and EGLImages. BUG=angleproject:1635 Change-Id: Ie05319cfbfda50f1497cab3f0b9ca64e1bff8955 Reviewed-on: https://chromium-review.googlesource.com/469154 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: 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>
Jiawei-Shao 331f6dbd 2017-04-13T13:57:59 Tighten workaround on unary minus for Intel D3D drivers This driver bug has been fixed in 20.19.15.4624. BUG=chromium:644033 Change-Id: I6f621d7c4d4b823da29255f869af84097f4f7c2c Reviewed-on: https://chromium-review.googlesource.com/476118 Reviewed-by: Yunchao He <yunchao.he@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@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>
Geoff Lang 94ba36a7 2017-03-31T13:58:55 Only bind that native GL texture if it should be complete. If extensions such as OES_texture_float_linear are not exposed but the native drive still supports them, we don't want to bind the native texture and instead bind a texture that is known to sample like the incomplete texture. BUG=angleproject:1959 Change-Id: I610dbd93bb566c8eb2166488a7494b74da4aa327 Reviewed-on: https://chromium-review.googlesource.com/465090 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 780612a5 2017-04-21T12:58:53 Fix the zlib build on 64-bit Windows. BUG=angleproject:2004 Change-Id: Ifb4f19abbbb1b6724d2af5b0a5dfb005b49ae3d1 Reviewed-on: https://chromium-review.googlesource.com/483906 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 76b8f469 2017-04-21T12:23:40 Use a shared state for egl::Image. This allows us to stop duplicating some information in the impl. BUG=angleproject:1635 Change-Id: If8f7d2418571c3254729f48c463814ec18ed2644 Reviewed-on: https://chromium-review.googlesource.com/469153 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Jiajia Qin f6b986c8 2017-04-18T14:52:31 Refactor TextureStorage11 The CL includes below changes: 1. Change bool isAssociatedImageValid to void verifyAssociatedImageValid since we always required that the validation check should never be false. So ASSERT() is enough. Same to Image11::isAssociatedStorageValid->Image11::verifyAssociatedStorageValid. 2. Remove the unnecessary if checking after ASSERT 3. Use override instead of virtual if the function is virtual and is overriding a virtual function from the base class. BUG=angleproject:2006 Change-Id: I036666ae1ed4bfcaa8cef9e0e9626d375cd81a27 Reviewed-on: https://chromium-review.googlesource.com/480015 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Frank Henigman d22b8f72 2017-04-20T21:06:09 Fix zlib compile. The zlib roll 50a8d0e0 broke the Window/gyp/ninja build. Suppress C4245. BUG=angleproject:2004 Change-Id: Ifdac7a1ec3162c8a296f6d4919a2b6f83bdf1e50 Reviewed-on: https://chromium-review.googlesource.com/483802 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@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>