Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| ae2d0a0e | 2016-04-15 15:04:14 | Fix incorrect dirty bit state tracking on D3D9 AMD with color masks. When using the zero color mask workaround in StateManager9, the blend state and blend equation were being modified. This caused inconsistant state if the workaround stopped being used in subsequent draw calls. To deal with this issue, dirty the BLEND_ENABLED and BLEND_EQUATION states when the COLOR_MASK changes and dirty the COLOR_MASK state wheneither BLEND_ENABLED or BLEND_EQUATION changes. BUG=597107 Change-Id: I03de934b419b7593e4863838720ced1e5773c092 Reviewed-on: https://chromium-review.googlesource.com/339280 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tryjob-Request: Geoff Lang <geofflang@chromium.org> | ||
| 5858f7e3 | 2016-04-08 13:08:46 | Re-land "Refactor texture function handling in OutputHLSL" This change is pure refactoring, it does not introduce any functional changes. Separate texture function output into a helper class and further into different helper functions to make the code more maintainable. Some of the logic is simplified slightly by eliminating duplicate cases and limiting the scope of variables where possible, but care has been taken to preserve the exact same functionality as before. Re-land with a fix to typo in include guard. BUG=angleproject:1349 TEST=dEQP-GLES3.functional.shaders.texture_functions.* (no regression) dEQP-GLES3.texture.* (no regression) Change-Id: I57c1ec1950fa05bd16275ca578eb5ee99b34a5ae Reviewed-on: https://chromium-review.googlesource.com/339180 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| c2ed9380 | 2016-04-15 13:29:25 | Revert "Refactor texture function handling in OutputHLSL" It triggered an include guard warning on Windows Clang This reverts commit 6f6c5580553d1f3c584df692823c2f5640e23d88. Change-Id: Ibd4f2851f311a494f16376d8eed38f3119594761 Reviewed-on: https://chromium-review.googlesource.com/338933 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 6f6c5580 | 2016-04-08 13:08:46 | Refactor texture function handling in OutputHLSL This change is pure refactoring, it does not introduce any functional changes. Separate texture function output into a helper class and further into different helper functions to make the code more maintainable. Some of the logic is simplified slightly by eliminating duplicate cases and limiting the scope of variables where possible, but care has been taken to preserve the exact same functionality as before. BUG=angleproject:1349 TEST=dEQP-GLES3.functional.shaders.texture_functions.* (no regression) dEQP-GLES3.texture.* (no regression) Change-Id: I5d81b842d693c0055890d5724eae6c105e454cd8 Reviewed-on: https://chromium-review.googlesource.com/337931 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 6684007a | 2016-03-15 17:01:42 | Takes principal component analysis to improve the endpoint in ETC transcode. Insteading of getting the BC1 endpoints from the max and min intensity, a PCA on pixels might give us better quality results, with limited costs. Change-Id: I7638d78c666c2580a6b0c267470bf4a0f7082e05 Reviewed-on: https://chromium-review.googlesource.com/332871 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 3d932d83 | 2016-04-12 11:10:30 | Defer global initializers when necessary Move global variable initializers that are not constant expressions to a function that gets called at the start of main(). This is done with an AST transformation. This needs to be done because global variable initializers must be constant in native GL, but ANGLE is more lenient with what can be put into ESSL 1.00 global initializers to remain compatible with legacy WebGL content. Non-constant global variable initializers also caused issues in HLSL output, since in HLSL output some types of expressions get unfolded into multiple statements. These include short-circuiting operators and array initialization. To make sure that these cases are covered, any initializers that can't be constant folded are deferred, even if they have the const qualifier. The old deferring mechanism in OutputHLSL is removed in favor of this new AST transformation based approach. BUG=angleproject:819 BUG=angleproject:1205 BUG=angleproject:1350 BUG=596616 TEST=WebGL conformance test conformance/glsl/misc/global-variable-init.html Change-Id: I039cc05d6b8c284baeefbdf7f10062cae4bc5716 Reviewed-on: https://chromium-review.googlesource.com/338291 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| b079c7af | 2016-04-01 12:32:52 | Wrap integer textures with correct wrap mode in HLSL The wrap mode information for all three dimensions is packed to a single integer in order to conserve sampler metadata space. Only one int4 vector is used for the metadata for a single sampler. The sampler metadata is now packed into a struct instead of an array of integers in order to make the code more readable and maintainable. The internalFormatBits field is not removed in this patch. It's better to remove it in a separate patch, so restoring it is easier in case it will be used for optimizing some of the texture sampling functions. The wrap mode passed in sampler metadata is used to wrap the texture coordinates in the code generated to implement ESSL 3.00 integer texture sampling built-ins. Those dEQP-GLES3.functional.texture.units.* tests that sample from integer cube maps still fail on Intel D3D after this change, presumably due to driver issues. BUG=angleproject:1244 BUG=angleproject:1095 BUG=angleproject:1092 TEST=dEQP-GLES3.functional.texture.units.* (all pass on NVIDIA), dEQP-GLES3.functional.shaders.texture_functions.* (no regressions) Change-Id: I4e31e5796086f9cc290c6f1f8c4380a768758d71 Reviewed-on: https://chromium-review.googlesource.com/336638 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| f4863a45 | 2016-04-12 11:37:23 | Add a perf test for setting uniform data. BUG=angleproject:1353 Change-Id: Iaae79bb85318583c12b9a939ea27a7f7f7f64faf Reviewed-on: https://chromium-review.googlesource.com/338441 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 81efa8ec | 2016-04-12 14:17:19 | Disable pointer conversion warning in XNVCtrl This warning happens on some older versions of the X headers, such as those present on the current Chromium linux_chromium_chromeos_rel_ng bots. The default warnings in the GN build are slightly more strict than in GYP which is why we need to add some isolated warning disables. BUG=432959 Change-Id: Id6218780195c59f160adae789305638d3463be9a Reviewed-on: https://chromium-review.googlesource.com/338424 Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 71fb2100 | 2016-04-07 20:30:50 | Gyp support for Ozone. Introduce gyp flag 'use_ozone' to select Ozone code. Ozone is a display method used on Chrome OS which is based on gbm, drm/kms, and surfaceless egl. BUG=angleproject:1297 Change-Id: Ic1f66121d23d26bac56b09e3e6aedefec5a131df Reviewed-on: https://chromium-review.googlesource.com/338442 Commit-Queue: Frank Henigman <fjhenigman@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 9a9c0484 | 2016-04-12 10:36:25 | Lexer: Error out on invalid field start. When parsing something like x.} the following would happen: - Parsing "." the lexer would move to the FIELDS start condition - Parsing } the lexer wouldn't find any <FIELDS> rule matching - The parser would fall back to <*>. that was asserted unreachable. The fix is to add a <FIELDS>. rule to catch bad field starts BUG=angleproject:1352 Change-Id: I262d2b9ef5f7346c19ae5e19a173e24f40f2f600 Reviewed-on: https://chromium-review.googlesource.com/338222 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 50fcf744 | 2016-04-11 13:57:32 | Add a test for gl_VertexID BUG=angleproject:1217 BUG=587781 Change-Id: I2fd20c686863c1409228717606977a3c4e1cd7fa Reviewed-on: https://chromium-review.googlesource.com/338180 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 52b09c2f | 2016-04-11 14:12:31 | Re-re-land "D3D11: Implement dirty bits for VertexArray11."" Translated attributes are now stored in the VertexArray11 in a cache, and only updated when dirty bits change. Currently dynamic attributes must be re-translated every call, so these are stored in a list and processed repeatedly. This skips doing a lot of the VertexDataManager work for vertex attributes that don't change between draw calls. Current value attributes, which correspond to disabled attributes that the program will pulls vertex data from, are owned by the Context, so these need to be handled outside of the VertexArray11. Further changes will be necessary to reduce the redundant work we do in the InputLayoutCache. We shouldn't need to re-check the cache if nothing relevant changed. This give about a 23% performance improvement on the draw call benchmark on my machine. Re-land with a fix for the start vertex offset. Re-re-land with a fix for using XFB with deleted buffers. BUG=angleproject:1327 Change-Id: I0fba49515375c149bbf54d933f8d1f747fbb8158 Reviewed-on: https://chromium-review.googlesource.com/338003 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 8c15c574 | 2016-04-12 11:33:37 | Revert "Gyp support for Ozone." This broke the Linux standalone build. Error message seen when running "gclient runhooks": "gyp: name 'use_ozone' is not defined while evaluating condition 'OS=="linux" and use_ozone==0' in build/ANGLE.gyp while trying to load build/ANGLE.gyp" This reverts commit 35e65e921394713f89df8d9bfe243b4abb5e9bd7. Change-Id: Iee5f08195ee1c74ead99bb9d70d04928c9bae7af Reviewed-on: https://chromium-review.googlesource.com/338290 Reviewed-by: Olli Etuaho <oetuaho@nvidia.com> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 35e65e92 | 2016-04-07 20:30:50 | Gyp support for Ozone. Introduce gyp flag 'use_ozone' to select Ozone code. Ozone is a display method used on Chrome OS which is based on gbm, drm/kms, and surfaceless egl. BUG=angleproject:1297 Change-Id: I5272651bd1af5806b6b42067d2d0f0abf0895af3 Reviewed-on: https://chromium-review.googlesource.com/337781 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 4091119b | 2016-04-07 16:45:50 | Add workaround to always call useProgram after a successful link. This workaround is meant to reproduce the behavior of the use_current_program_after_successful_link workaround in Chromium (http://crbug.com/110263) The workaround was shown to be unnecessary for MacOSX 10.9 and higher (http://crrev.com/39eb535b). BUG=349137 Change-Id: I3023f053aa1593ba7044a889dd47746b8f7e0581 Reviewed-on: https://chromium-review.googlesource.com/337780 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 53a36004 | 2016-04-08 19:03:18 | Revert "Re-land "D3D11: Implement dirty bits for VertexArray11.""" Seems to make the following dEQP test flaky: dEQP-GLES3.functional.lifetime.attach.deleted_output.buffer_transform_feedback doesn't show up on every bot test, but run it a few times and it'll flake. Reverting while I investigate. BUG=angleproject:1327 This reverts commit 3477f3a62dc139a253a0b361ee138116e9fa881f. Change-Id: Ic23a392526f5f6e107cf0aa06448389804d6b208 Reviewed-on: https://chromium-review.googlesource.com/337961 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 76d17b27 | 2016-04-07 20:05:18 | Deqp gyp use_x11 fixes. Remove the use_x11==1 condition from two things which have nothing to do with x11: defining _GNU_SOURCE and choosing deqp_libtester_sources_unix. This lets us build for Chrome OS where typically use_x11==0. BUG=angleproject:1297 Change-Id: I9166f2a8119493aaab82af15e109d378fffb811a Reviewed-on: https://chromium-review.googlesource.com/337695 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 4a48d9a3 | 2016-03-31 16:46:25 | Initial implementation of ANGLE_stream_producer_d3d_texture_nv12. Add the validation and entrypoints for ANGLE_stream_producer_d3d_texture_nv12, which is a new EGL extension currently being written. The purpose of this extension is to allow insertion of D3D11 NV12 textures to be inserted into a stream. This acts as the producer of the EGL stream. BUG=angleproject:1332 Change-Id: I50d4565cc82b63f7da7632adad4ac4c77d8800f2 Reviewed-on: https://chromium-review.googlesource.com/336695 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com> | ||
| 06feb81c | 2016-04-06 16:39:52 | Make :angle_common depend on :commit_id. BUG=chromium:601195 Change-Id: Ic90b8c8dbe07700e66c8fe973a3e620f439d2fbe Reviewed-on: https://chromium-review.googlesource.com/337335 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| ced87057 | 2016-04-04 16:34:27 | Fix integer texture sampling with explicit gradients The lod level should be selected according to the explicit gradients, and the gradients are relative to the normalized texture coordinates, so they need to be multiplied by the base level dimensions to get the correct gradients to use in the lod level formula. In the case of sampling integer cube maps, the derivatives of the texture coordinates on the cube map face need to be calculated based on the derivatives of the cube map direction vector components. Also includes fix for sampling integer cube maps with explicit LOD. BUG=angleproject:1092 TEST=dEQP-GLES3.functional.shaders.texture_functions.*grad* Change-Id: Iadd358e713fa9695e755e98db8f368e8c512ac45 Reviewed-on: https://chromium-review.googlesource.com/337100 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| a1c917f2 | 2016-04-06 13:50:03 | Suppress samplers in structs test failures on Intel OpenGL Some of the tests made to verify D3D implementation of samplers in structs are failing on Intel's OpenGL drivers, so suppress the failures. Since the test was crashing in shader program setup, shader program setup needs to be moved out of the SetUp() function of the texture tests. BUG=600758 TEST=angle_end2end_tests Change-Id: I1b6e788d900425e914572d2a3d7ef1fc43146f50 Reviewed-on: https://chromium-review.googlesource.com/337500 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| d4102f09 | 2016-01-22 14:54:04 | Refactor HLSL texture coordinate output to prepare for wrap modes Wrap modes for integer textures need to be implemented in shaders in HLSL. This requires more complex transformations on the texture coordinates, so store the texture coordinate code for each texture coordinate in a string variable. BUG=angleproject:1244 TEST=dEQP-GLES3.functional.shaders.texture_functions.* (no regression), dEQP-GLES3.functional.texture.units.* (no regression) Change-Id: Iadd9617a7f906aa1d56dabfba6639f932152e6f1 Reviewed-on: https://chromium-review.googlesource.com/336637 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 54f8746e | 2016-03-10 13:47:21 | Add initial support for various stream extensions. Add entry points and validation for various egl stream extensions including EGL_KHR_stream_consumer_gltexture and EGL_NV_stream_consumer_gltexture_yuv and NV_EGL_stream_consumer_external. The extensions functionality is not yet implemented and the extension strings are thus not exposed yet. BUG=angleproject:1332 Change-Id: I115d872557db38d8dd94cc367038668406719109 Reviewed-on: https://chromium-review.googlesource.com/332026 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com> | ||
| ec2c0c5e | 2016-04-05 13:46:26 | Update internal AttributeMap type to EGLAttrib. Newer EGL functions use EGLAttrib to pass in attributes, which can be either 32-bit or 64-bit depending on the system while the old attributes are passed in as EGLints, which are usually 32-bits. To support these newer functions, AttributeMap now uses EGLAttrib internally instead of EGLint, and all the code using AttributeMap has been updated to cast properly. BUG=angleproject:1348 Change-Id: I7c4dd9ef23ea1b1741f3a565502fb5e26bf962d7 Reviewed-on: https://chromium-review.googlesource.com/337162 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com> | ||
| 4f66748d | 2016-03-30 15:56:35 | Fix buffer mapping validation and refactor entry points Checks for extension support are added to GetBufferPointervOES, mapBufferOES, unmapBufferOES, mapBufferRangeEXT and flushMappedBufferRangeEXT. The GetBufferPointerv function now checks if state is queried from buffer object zero. The code is also refactored so that validation happens in separate validation functions and the implementations are in Context functions. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.state.get_buffer_pointerv dEQP-GLES3.functional.*buffer*map* (no regression) Change-Id: I0f439abd12c92c51324f2e5a31bf621f61534306 Reviewed-on: https://chromium-review.googlesource.com/336164 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 9696316d | 2016-03-21 11:54:33 | Support ESSL structs containing samplers on D3D Since HLSL can't natively handle samplers in structs, samplers need to be extracted out of structs into separate variables in the translated shader code. In HLSL 4.1, samplers that were in structs go into the normal sampler arrays and are identified by index constants. In other HLSL versions, samplers that were in structs are translated as uniform variables. These transformations are done inside the HLSL output classes, not as tree transformations. This helps to keep the uniform API provided by the shader translator intact. Wherever a struct containing samplers is passed into a user-defined function, the translated HLSL code passes the separate sampler variables alongside a struct where the samplers have been removed. The D3D backend in libANGLE queries the uniform registers of any samplers that were in uniform structs, and adds them to the register maps, so that correct sampler state gets assigned to them. The extracted sampler variables are prefixed with "angle_" instead of the usual "_" to prevent any name conflicts between them and regular variables. BUG=angleproject:504 TEST=angle_end2end_tests, dEQP-GLES*.functional.shaders.struct.uniform.* (all pass), dEQP-GLES*.functional.uniform_api.* (most now pass) Change-Id: Ib79cba2fa0ff8257a973d70dfd917a64f0ca1efb Reviewed-on: https://chromium-review.googlesource.com/333743 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| f0fee07a | 2016-03-30 15:11:58 | Fix ProgramParameteri validation dEQP tests suggest that passing a value other than GL_FALSE or GL_TRUE to ProgramParameteri generates INVALID_VALUE. The code is also refactored so that the implementation of ProgramParameteri is in the Context object. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.shader.program_parameteri Change-Id: I432d19fb574e58a7e0059189ab5b1863de029cdc Reviewed-on: https://chromium-review.googlesource.com/336163 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 0c0d8006 | 2016-04-01 18:21:06 | Revert "Gyp build support for Chrome OS." http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_chromeos_rel_ng/builds/189745 ../../third_party/angle/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp:87:27: error: assigning to 'Display *' (aka '_XDisplay *') from incompatible type 'EGLNativeDisplayType' (aka 'long') mXDisplay = display->getNativeDisplayId(); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../third_party/angle/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp:93:19: error: comparison between pointer and integer ('Display *' (aka '_XDisplay *') and 'EGLNativeDisplayType' (aka 'long')) if (mXDisplay == EGL_DEFAULT_DISPLAY) ~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~ TBR=kbr@chromium.org TBR=jmadill@chromium.org BUG=angleproject:1297 This reverts commit b5aa26bda986d7f367ed4c33e50e931e9620abe9. Change-Id: Icf3bd84df4493e66e78f8351b1a3879893ae9d0e Reviewed-on: https://chromium-review.googlesource.com/336849 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 3477f3a6 | 2016-03-29 17:15:29 | Re-land "D3D11: Implement dirty bits for VertexArray11."" Translated attributes are now stored in the VertexArray11 in a cache, and only updated when dirty bits change. Currently dynamic attributes must be re-translated every call, so these are stored in a list and processed repeatedly. This skips doing a lot of the VertexDataManager work for vertex attributes that don't change between draw calls. Current value attributes, which correspond to disabled attributes that the program will pulls vertex data from, are owned by the Context, so these need to be handled outside of the VertexArray11. Further changes will be necessary to reduce the redundant work we do in the InputLayoutCache. We shouldn't need to re-check the cache if nothing relevant changed. This give about a 23% performance improvement on the draw call benchmark on my machine. Re-land with a fix for the start vertex offset. BUG=angleproject:1327 Change-Id: Ic23e48fb18ed7f29c1999914a2f799ac04aa03e9 Reviewed-on: https://chromium-review.googlesource.com/334225 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 04c8cc2e | 2016-03-31 17:18:58 | Mark mRenderer as unused in Stream11. BUG=angleproject:1332 Change-Id: I122f1b079e6d507423719df4576d7460e058f4b2 Reviewed-on: https://chromium-review.googlesource.com/336696 Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 701b74b0 | 2016-03-02 15:26:39 | Add support for EGL_KHR_stream. EGL_KHR_stream is now implemented. Since the extension does not come with any producers or consumers, it does not have much functionality and the implementation is therefore very simple (validation layers and a new object to store some attributes). This however add the groundwork to add the appropriate consumer and producer extensions to stream D3D NV12 textures directly into ANGLE which will significantly improve video performance on Chromium on D3D-based platforms. BUG=angleproject:1332 Change-Id: Ie240c73869f5098d1215cc5e27aa5decd06c3ed1 Reviewed-on: https://chromium-review.googlesource.com/330003 Commit-Queue: Ian Ewell <ewell@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| bb51c35c | 2016-03-24 16:27:37 | Insert slash when concatenating paths. BUG=angleproject:1343 Change-Id: I04180135dcd3aac2d40dc3f6d32b1aad362c69d1 Reviewed-on: https://chromium-review.googlesource.com/334920 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| b076adde | 2016-01-11 16:45:46 | Implement gl_VertexID BUG=angleproject:1217 Change-Id: Ibb9423d7de4966bce231734925a804b6340b5059 Reviewed-on: https://chromium-review.googlesource.com/321420 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 37477918 | 2016-03-30 14:54:40 | Fix samplerParameter validation Refactor the validation out from the API and into a separate Validate function. Also check the sampler parameter first to match dEQP expectations. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.shader.sampler* (all pass) Change-Id: I5f4072d9e52d37f741bd4c90f1bffe13371af3f5 Reviewed-on: https://chromium-review.googlesource.com/336162 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 9e3c615e | 2016-03-29 21:58:33 | Suppress end2end failures for the new Linux Intel bot. Since this is a new bot, we should make it green ASAP so we can catch any new regressions. BUG=angleproject:1346 Change-Id: I2c1288b8115a9d7980d5a3f37753b35cbb837486 Reviewed-on: https://chromium-review.googlesource.com/336050 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| da123308 | 2016-03-29 17:00:48 | Add ANGLE_TRY macros to reduce boilerplate with gl/egl Errors. The macros don't need to disambiguate between GL/EGL. Also make helpers to deal with ErrorOrResult. BUG=angleproject:1310 BUG=angleproject:1327 Change-Id: I8041c4b17a859fe1f236bca3ad266453d67a8fd4 Reviewed-on: https://chromium-review.googlesource.com/335826 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e2fcf5c3 | 2016-03-30 11:27:12 | Fix C4434 warnings about 32-bit shift assigned to 64-bits VS 2015 has a new or louder warning about 32-bit shifts that are then assigned to a 64-bit target. This code triggers it: int64_t size = 1 << shift_amount; Because the '1' being shifted is a 32-bit int the result of the shift will be a 32-bit result, so assigning it to a 64-bit variable is just misleading. In other cases the destination is a size_t which means that the warning only shows up on 64-bit builds. However in this case the size_t was later cast to a 32-bit type, so the warnings can be suppressed by selecting more natural types and *deleting* some casts. The two warnings were: C4334: '<<': result of 32-bit shift implicitly converted to 64 bits third_party\angle\src\tests\gl_tests\framebufferrendermipmaptest.cpp(90) third_party\angle\src\tests\gl_tests\framebufferrendermipmaptest.cpp(156) BUG=593448 Change-Id: Ice9f67096b155fbb5fa3247ad04ac41acffa36a5 Reviewed-on: https://chromium-review.googlesource.com/336332 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 7d712e7d | 2016-03-29 21:54:33 | Re-land "Clean up Buffer11." This cleans up some messy stuff from the emulated index buffers, which were caching variables that didn't need to be cached. Also add in missing error checks. This touches a lot of code. Re-land with a fix for clang-win build. BUG=angleproject:1327 BUG=angleproject:1310 Change-Id: I31ed81c7242782bef7c5f6cde2192552f7ff9403 Reviewed-on: https://chromium-review.googlesource.com/336052 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e34deaa3 | 2016-03-30 01:50:40 | Revert "Clean up Buffer11." Fails Clang-win because of std::forward ..\..\third_party\angle\src\libANGLE/Error.h(60,40): error: no matching function for call to 'forward' BUG=598944 BUG=angleproject:1327 BUG=angleproject:1310 This reverts commit 041d678b4764484386f934df927f00a5df48a351. Change-Id: I9fb0685cd01090b1faf8417ffa3c9b49eeb4510e Reviewed-on: https://chromium-review.googlesource.com/336040 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 041d678b | 2016-03-29 17:00:47 | Clean up Buffer11. This cleans up some messy stuff from the emulated index buffers, which were caching variables that didn't need to be cached. Also add in missing error checks. This touches a lot of code. BUG=angleproject:1327 BUG=angleproject:1310 Change-Id: Icd722d57d9449388fbabc62c7ea37f0526a568ff Reviewed-on: https://chromium-review.googlesource.com/334731 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 7d52be02 | 2016-03-24 14:40:58 | Move -lrt where it belongs. Only deqp uses librt so the dependency belongs there, not in util.gyp, and the condition should be OS==linux, not use_x11. This lets things work on Chrome OS. BUG=angleproject:1297 Change-Id: If397da5463b9c2d5217eb3b20841fa5a44bf56a3 Reviewed-on: https://chromium-review.googlesource.com/334813 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 7e2ba9ee | 2016-03-29 15:22:01 | Fix warning introduced in "Program::getUniformInternal: return only one array element" The warning does not seem to occur on the Chromium bots, but shows when compiling ANGLE standalone. BUG=595836 Change-Id: I3c22bbea263223f9e92f82229817e9e9894a46ad Reviewed-on: https://chromium-review.googlesource.com/335576 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| c3e55a43 | 2016-03-09 16:29:18 | Validate program changes wrt transform feedback UseProgram can't be called while transform feedback is active and unpaused. Validate this by checking the presence of active transform feedback in UseProgram. LinkProgram or ProgramBinary can't be called while transform feedback associated with the program is active. Validate this by going through all of the existing transform feedback objects when one of these functions is called and checking whether they are associated with the program being changed. A program association is added to gl::TransformFeedback to facilitate this. BeginTransformFeedback can't be used to unpause a transform feedback object, so code for that is removed. The validation of the entry points touched in this patch is refactored to follow the current convention of separate Validate* functions, though with LinkProgram following this convention fully isn't practical. This patch also makes sure that ANGLE doesn't invoke behavior that the GL spec doesn't specify if a program object associated with a paused transform feedback is deleted. Tests are edited so that they don't call UseProgram when it generates an error. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.shader.* (2 more tests pass), dEQP-GLES3.functional.transform_feedback.* (no regressions), angle_end2end_tests Change-Id: I2e5b3a027ced11249b762ec01a29fa41d2c0dd96 Reviewed-on: https://chromium-review.googlesource.com/332141 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 6596c465 | 2016-03-17 17:26:58 | Program::getUniformInternal: return only one array element Reland with a compilation fix for GPU Builder, with a fix for UniformTest.BooleanArrayUniformStateQuery and better formatting. When getUniformInternal detected a mismatch between the glGetUniform type and the uniform type, it entered a code path where it wrongly wrote the whole array instead of a single element, causing a buffer overflow. Adds a regression test. BUG=595836 Change-Id: Ie860b87ad56046483650f457457116cc22bf3c0f Reviewed-on: https://chromium-review.googlesource.com/334448 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| cc068e93 | 2016-02-29 16:37:04 | Add DisplayGL::getDriverVersion and implementation on Linux NVIDIA Some GPU driver bug workarounds should be active only for specific driver version ranges. This adds NVIDIA Linux driver detection using the XNVCtrl X11 extension. BUG=590870 Change-Id: I8cbf692a0c8a6da7473169f29d720bdc2d07663d Reviewed-on: https://chromium-review.googlesource.com/329637 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| bc4c4bc5 | 2016-03-23 21:04:43 | Re-land "Validate that attrib offsets don't overflow buffers." During draw calls, we wouldn't add the current attrib offset to the required draw call size when checking attributes. This could lead to us producing warnings in the D3D11 runtime, and miss returning some errors. Re-land with a test data initialization fix, and with some extra tests merged from another CL. BUG=angleproject:1339 Change-Id: Ifd549c3b1f6871417dc1693cb3ec534414e92cfd Reviewed-on: https://chromium-review.googlesource.com/333723 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 71dfb369 | 2016-03-10 14:04:27 | Add validation for DrawRangeElements end < start end < start must generate an INVALID_VALUE error. Before this patch INVALID_OPERATION was generated from the check which validated the actual index range against end and start in this case. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.vertex_array.* (few more subtests pass) Change-Id: Ida9c5a8bc9dc416f1955e9012e5715c0848a0307 Reviewed-on: https://chromium-review.googlesource.com/332143 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| b5aa26bd | 2016-01-24 12:43:37 | Gyp build support for Chrome OS. Don't hard code "chromeos" to zero. Fix incorrect assumptions that X11 would always be used on linux. Introduce "angle_use_drm" as the Chrome OS alternative to "angle_use_x11." Define USE_OZONE for Chrome OS. Allow overriding pkg-config. BUG=angleproject:1297 Change-Id: Ie85b5c37f39170e0d11f8fc1bb70c175db6ee334 Reviewed-on: https://chromium-review.googlesource.com/323610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| a3d333c2 | 2016-03-22 22:09:14 | Don't enable/disable sRGB on GLES. glEnable/glDisable GL_FRAMEBUFFER_SRGB isn't meaningful on GLES. BUG=angleproject:1300 Change-Id: I0afd697ed9770e2eb1cdcc851884b90de1a4583c Reviewed-on: https://chromium-review.googlesource.com/334490 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 5051eee5 | 2016-03-23 01:35:01 | Revert "Program::getUniformInternal: return only one array element" It breaks compilation on GPU Builder This reverts commit 3ea54ba890f25fcce9213d8ab7c7f8a9fdf10cad. Change-Id: Ie18f876b1db353d75cbd5a612f0a433cfc552ef2 Reviewed-on: https://chromium-review.googlesource.com/334405 Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 3ea54ba8 | 2016-03-17 17:26:58 | Program::getUniformInternal: return only one array element When getUniformInternal detected a mismatch between the glGetUniform type and the uniform type, it entered a code path where it wrongly wrote the whole array instead of a single element, causing a buffer overflow. Adds a regression test. BUG=595836 Change-Id: Id7372faece276d28363a30bf3183497d97357c76 Reviewed-on: https://chromium-review.googlesource.com/333771 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 1a4523f3 | 2016-03-18 15:33:55 | Avoid copying of texture format info structures Use const pointers to the statically allocated structures instead of copying them in TextureStorage11. This avoids the cost of copying and saves a little bit of memory. BUG=angleproject:1244 TEST=angle_end2end_tests Change-Id: Ib59fddd68ba9bc53e491d55683416c0661f26e0e Reviewed-on: https://chromium-review.googlesource.com/333930 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 90a96efc | 2016-01-27 14:53:36 | Allow BufferGL to function without being able to map buffers for read. Reading back buffer data is required for index range validation but without glMapBufferRange it is not possible to read back buffer data on OpenGL ES. To work around this, keep a shadow copy of the buffer data when this function is not available. BUG=angleproject:1145 Change-Id: I8e9b3b174574316d3af0022bd29c7d9c96d168c3 Reviewed-on: https://chromium-review.googlesource.com/324092 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> | ||
| 356f5165 | 2016-03-18 14:19:41 | Add a texture data fill helper function to tests Several tests need to initialize arrays of RGBA texture data. Add a helper function for this to reduce duplication and to make the code more readable. BUG=angleproject:596 TEST=angle_end2end_tests Change-Id: Id4a35b34a8fad25c2dc263ad8635dd43355a4f17 Reviewed-on: https://chromium-review.googlesource.com/333911 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 41997e76 | 2016-03-10 13:38:39 | Improve validation of Gen/Delete calls Add checks for negative count to GenTransformFeedbacks and DeleteTransformFeedbacks, and check for active transform feedbacks in DeleteTransformFeedbacks. Unify validation and error messages of all other Gen/Delete calls. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.* (two more tests pass) Change-Id: I128063fab3db27a25e282a10c916c53646d68b9c Reviewed-on: https://chromium-review.googlesource.com/332142 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| f26ada3b | 2016-03-16 18:05:48 | Minor mingw cross compilation fix. Change-Id: I380fa56e9f65e5982e77d2b0cd5af70777cc24be Reviewed-on: https://chromium-review.googlesource.com/332951 Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 00f394ec | 2016-03-16 12:09:11 | Revert Dirty bits for VertexArray11 This is a combination of two reverts: Revert "D3D11: Remove unused mRenderer from VertexArray11." Revert "D3D11: Implement dirty bits for VertexArray11." Reverting only the first commit would trigger warnings on the Windows clang bot. BUG=594509 BUG=angleproject:1327 This reverts commit fc4712b5ed270436f2993bfda9e916d4f92684a4. This reverts commit 7d8585b802b7eb741b380bd0d05769281d9507c9. Change-Id: I612dbba0816d6144f71ce815701c13a798585bc7 Reviewed-on: https://chromium-review.googlesource.com/332989 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| a0fc18d9 | 2016-02-29 11:17:16 | Fix D3D11 DXGI format info tables - Treat red/green views into depth/stencil formats as being red/green. - Sort all AddDXGIFormat calls in a similar way and remove duplicate AddDXGIFormat calls. - Add info on typeless formats. These changes are needed to make it possible to change integer texture DXGI formats. Native mipmap generation support will still be determined by querying the DXGI format info table with the texture storage format, so the TYPELESS formats will need entries there. The changes to format info used for depth/stencil formats will not affect existing uses of GetDXGIFormatInfo: - In Clear11.cpp, info is queried for rtvFormat and dsvFormat. Info for possible values of rtvFormat and dsvFormat is not changed. - In Renderer11::blitRenderbufferRect, info is queried for rtvFormat and dsvFormat. - In Renderer11::packPixels, GetDXGIFormaInfo is used to get a fast-copy function. The function only exists for conversion from BGRA to RGBA, so the changes do not affect this. - In Renderer11::getVertexComponentType, the component type is queried for vertex formats. The formats that might be queried here are SINT, SNORM, UINT, UNORM, or FLOAT formats with regular RGBA fields. Info is not changed for these. - In TextureStorage11_Cube::createSRV, the SRV or blitSRV format is queried for whether it has integer on unsigned integer channels. This will not be affected by the changes done to the format table. This change does not enable native mipmap generation for any new formats to avoid any possible regressions. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.texture.mipmap.* (no regressions), dEQP-GLES3.functional.fbo.* (no regressions) Change-Id: Ic5ed731ddf153ae97bce631b1634347f8d9ae75c Reviewed-on: https://chromium-review.googlesource.com/329690 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 022315de | 2016-03-13 08:18:03 | D3D: Add perf test for dynamic buffer promotion. Drawing with a DYNAMIC usage array or element array buffer should eventually lead to internally switching to a static usage, if the app doesn't modify the data very often. This perf test simply renders a bunch of random indexed triangles where both buffers are specified as DYNAMIC. It should perform just as well as the static usage after a warm-up period. BUG=angleproject:1334 Change-Id: Ibe432d2122feaefc82d3c11cdf227f93ada82eda Reviewed-on: https://chromium-review.googlesource.com/332578 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| acea5015 | 2016-03-14 17:34:00 | Add dEQP-EGL test expectations. This will allow us to put these tests on the bots. BUG=angleproject:1340 Change-Id: Ic91423414c06210a97f9fbeeda4b7a0796c490f7 Reviewed-on: https://chromium-review.googlesource.com/332219 Reviewed-by: Geoff Lang <geofflang@chromium.org> | ||
| 7b591905 | 2016-02-26 14:37:57 | D3D11: Use blit SRV format for blits blitSRVFormat stores the format that is used with ANGLE's internal blit shaders. By default, it is the same as the normal SRV format. For integer textures with a red channel, the RTV format is used instead. This makes it possible to change the storage format and the SRV format for the integer textures without affecting the blit format. The blitSRVFormat is used when doing blits in Blit11::copyTexture(). An exception is made for depth/stencil renderbuffer blit - in these cases it is okay to assume that the regular SRV format works for blitting. In the future the regular SRV format for integer textures will be changed to be different from their blit SRV format. TEST=angle_end2end_tests dEQP-GLES3.functional.fbo.blit.* (no regression) dEQP-GLES3.functional.texture.swizzle.* (no regression) BUG=angleproject:1244 Change-Id: Ie0e790e58ec054b64ef5983a09dbfc7754f269ca Reviewed-on: https://chromium-review.googlesource.com/327104 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 84c9f593 | 2016-03-09 14:37:25 | Fix framebuffer attachment enum validation In GLES 3.0, GL_COLOR_ATTACHMENTi enums run all the way up to i=31, and don't stop at i=15 which the validation was previously checking against. It's acceptable to use this new enum range also for EXT_draw_buffers, since an error will still be generated if an enum is outside the range of maximum supported attachments. Also, generate INVALID_ENUM when dEQP tests expect it to be generated for color attachment number that's outside the supported range. This is not in line with the published 3.0 spec, but that's just an oversight in the spec document. Also fix incorrect INVALID_VALUE error in the validation of renderbufferStorageMultisample to INVALID_OPERATION. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.buffer.* (all pass) Change-Id: Ib8cf92651d29ef8fe8da0ce4bfa456cbc4d48850 Reviewed-on: https://chromium-review.googlesource.com/332140 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| c979aabf | 2016-03-12 00:26:44 | Revert "Validate that attrib offsets don't overflow buffers." Seems to fail the Windows 8 bots in FL9_3 for some reason. https://build.chromium.org/p/chromium.gpu.fyi/builders/Win8%20Release%20%28NVIDIA%29/builds/20703 VertexAttributeTest.ShortNormalized_ES2_D3D11_9_3 VertexAttributeTest.ShortUnnormalized_ES2_D3D11_9_3 BUG=angleproject:1339 This reverts commit fb57c04c781df708a432f0e90acf2e431b7983bb. Change-Id: I4c678ff6b337e9a3e0a1fc809f96f6b89407ea33 Reviewed-on: https://chromium-review.googlesource.com/332442 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| fb57c04c | 2016-03-10 11:35:17 | Validate that attrib offsets don't overflow buffers. During draw calls, we wouldn't add the current attrib offset to the required draw call size when checking attributes. This could lead to us producing warnings in the D3D11 runtime, and miss returning some errors. BUG=angleproject:1339 Change-Id: I03555be396df46f83d96dfb34fbcb145169625e8 Reviewed-on: https://chromium-review.googlesource.com/331807 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| fc4712b5 | 2016-03-10 11:31:25 | D3D11: Remove unused mRenderer from VertexArray11. This was uncovered by the Clang-win bot, which uses a different set of warnings from MSVS. BUG=angleproject:1327 Change-Id: Id298fee2df92752b77bf6e2b93307fa5311cf1fc Reviewed-on: https://chromium-review.googlesource.com/332035 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 19d1dc99 | 2016-03-08 17:18:46 | Add option to limit the number of function parameters Trying to compile user-defined functions that have thousands of parameters introduces some instability in native compilers, so it is better to reject shaders with large numbers of function parameters in ANGLE. The check is only enabled if the SH_LIMIT_EXPRESSION_COMPLEXITY flag is turned on. The default limit for the number of parameters is 1024, but it can also be configured. BUG=angleproject:1338 TEST=angle_unittests Change-Id: I5c9b7a4e97e67f36e77f969368336fa8fffba1c3 Reviewed-on: https://chromium-review.googlesource.com/331970 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| bd382711 | 2016-03-09 10:38:26 | dEQP GLES3 expectations: better suppression for flaky Linux trybot BUG=angleproject:1323 Change-Id: I6d559db0e72e8efc37b447d15244465835a6f310 Reviewed-on: https://chromium-review.googlesource.com/331398 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 3be43be0 | 2016-03-09 20:05:08 | Fix crash in IndexDataManagerPerfTest. Using a mock BufferFactory would sometimes leave us with a nullptr in the VertexBufferInterface class. This would lead to a null deref in the perf tests only. Fix this by adding a null check. BUG=593541 Change-Id: I98685a9990124f521cd26ed81a26aeb11aafaf0d Reviewed-on: https://chromium-review.googlesource.com/331768 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 4e25a0d6 | 2016-03-08 13:53:03 | Use std::unordered_map in ResourceManager. The hashed query performs significantly faster than std::map. This improves performance in applications which use Bind* often. Also use the same scheme for the Context-managed resources. BUG=angleproject:1333 Change-Id: I8a1f25d80e060c62dab1f86005e1bc4df1c06dba Reviewed-on: https://chromium-review.googlesource.com/331387 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 0e49e6b5 | 2016-03-08 13:53:04 | D3D: Fix static promotion of dynamic index data. The static promotion somehow slipped into the direct usage check, meaning we would never promote dynamic index data to static, even if unchanged for many frames. Fix this by putting the update back in the correct place. BUG=angleproject:1334 Change-Id: I90897fcd2f6a2b231ccef9f1fa044d276b238b56 Reviewed-on: https://chromium-review.googlesource.com/331388 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 3f01e6c2 | 2016-03-08 13:53:02 | Return pointers from check*Allocation. This avoids the need to consult the resource maps twice per bind. It improves performance in applications which call Bind* often. BUG=angleproject:1333 Change-Id: I7b733cc89e50e24a2e38a2eb2dc7fd658d612e27 Reviewed-on: https://chromium-review.googlesource.com/331386 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 7d8585b8 | 2016-03-09 15:53:12 | D3D11: Implement dirty bits for VertexArray11. Translated attributes are now stored in the VertexArray11 in a cache, and only updated when dirty bits change. Currently dynamic attributes must be re-translated every call, so these are stored in a list and processed repeatedly. This skips doing a lot of the VertexDataManager work for vertex attributes that don't change between draw calls. Current value attributes, which correspond to disabled attributes that the program will pulls vertex data from, are owned by the Context, so these need to be handled outside of the VertexArray11. Further changes will be necessary to reduce the redundant work we do in the InputLayoutCache. We shouldn't need to re-check the cache if nothing relevant changed. This give about a 23% performance improvement on the draw call benchmark on my machine. BUG=angleproject:1327 Change-Id: I7fb944d32ea7e6c78b9e478406bdb7e10a7fc05b Reviewed-on: https://chromium-review.googlesource.com/330173 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| aa57aa4c | 2016-01-27 00:02:13 | Correct GLES depth 32 format. GL_OES_depth32 is required for DEPTH_COMPONENT32_OES render buffers. This stops Mesa from complaining when using GLES in the back end. BUG=angleproject:1301 Change-Id: I8c6ce6a5ce0cb5bf26157e3bb414f391a41d15c4 Reviewed-on: https://chromium-review.googlesource.com/331359 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| b5abec33 | 2016-03-08 11:21:20 | D3D11: Remove unused field in InputLayoutCache. The mCounter field became exposed as unused after it was initialied in the constructor initializer list. Previously this was hidden because it was initialized in the body of the constructor. BUG=angleproject:1327 Change-Id: I18d9aa8a377d234f4c161ace845edfb9fc7f226c Reviewed-on: https://chromium-review.googlesource.com/331385 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 7828c521 | 2016-02-26 14:05:12 | D3D11: Check packPixels memcpy support based on ANGLEFormat Instead of querying DXGI format info to determine whether framebuffer data can be copied to packPixels target memory with memcpy, compare the internal format information from the ANGLE format to the packing format. This makes it possible to change some of the DXGI formats used for integer textures without breaking packPixels. This makes it possible to entirely remove the DXGI format to GL internal format mapping from the DXGI format info table. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.fbo.* (no regressions), dEQP-GLES3.functional.pbo.* (no regressions), Change-Id: Id5ffd581349e7afe39872d69cb05381f3e78d352 Reviewed-on: https://chromium-review.googlesource.com/329214 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 67946766 | 2016-03-08 15:43:55 | Improve info log length checks Extend the info log length checks to shader_utils used by tests, and treat info log with length 1 as empty, since it can only include the null terminator. At least the Intel GL driver may generate "\0" as info log in some situations, for example when compiling a user-defined function with 50000 parameters. BUG=angleproject:1323 Change-Id: I00f2965539ec235cb949c80c2a9e1d063d32fa15 Reviewed-on: https://chromium-review.googlesource.com/331461 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 9a7e8cab | 2016-01-27 00:02:13 | Disallow GLES BGRA render buffers. This stops Mesa from complaining when using GLES in the back end. BUG=angleproject:1301 Change-Id: I0b8cb78efea97c1ea0d21cd6b9f656e53b9b6cc2 Reviewed-on: https://chromium-review.googlesource.com/331395 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Frank Henigman <fjhenigman@chromium.org> | ||
| 114d129d | 2016-02-26 12:33:00 | D3D11: Get color read function from ANGLE format This is done to make it possible to change some of the DXGI formats of integer textures without affecting their color read function associations. The packPixels function gets the ANGLE format from the texture helper, which now requires the ANGLE format to be passed in at the time of creation. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.fbo.* (no regressions), dEQP-GLES3.functional.pbo.* (all pass) Change-Id: I368337cfe5f8c86ff3292009ccf29e9d01409a07 Reviewed-on: https://chromium-review.googlesource.com/329213 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 3b3657be | 2016-03-07 18:37:22 | FBConfigCompatibility.md: fix rendering with gittiles BUG= Change-Id: I17d691b1e0ebdc766e2d3cb8363ce1c2b1ba26cf Reviewed-on: https://chromium-review.googlesource.com/331362 Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| be59c2fb | 2016-03-07 11:32:34 | Fix ambiguous function call issues in HLSL output D3D compiler can't resolve between these overloaded functions: float4 vec4(float2x2 x0); float4 vec4(float4 x0); Include the parameter types in the function name to disambiguate between overloaded user-defined functions and constructors, like this: float4 vec4_float2x2(float2x2 x0); float4 vec4_float4(float4 x0); This is only done for float2x2 and float4 parameters, other parameter types like float2x3 vs. float3x2 don't need this. BUG=angleproject:1099 BUG=angleproject:1030 TEST=angle_end2end_tests, dEQP-GLES3.functional.attribute_location.* (10 more tests pass), dEQP-GLES2.functional.attribute_location.* Change-Id: Ief047d41b0adbc238393c3c13cb29771cbb83d58 Reviewed-on: https://chromium-review.googlesource.com/329882 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 2b3cc815 | 2016-03-04 13:57:51 | Fix state query for DEPTH_STENCIL attachment properties Add missing negation to validate the existence of a DEPTH_STENCIL attachment correctly. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_rbo, dEQP-GLES3.functional.negative_api.state.get_framebuffer_attachment_parameteriv Change-Id: I278875684fdff562d16faba9a7eca0aa83bf80e9 Reviewed-on: https://chromium-review.googlesource.com/329867 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| f945dc8f | 2016-03-07 16:22:11 | Skip the dEQP GLES3 functional.ubo tests on Linux. We previously marked them as failing but they are causing a crash so we skip them until they are fixed. BUG=angleproject:1323 Change-Id: I717e402d56ea88ef93da50d10803d0a62aa58fdf Reviewed-on: https://chromium-review.googlesource.com/331281 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 8047c0d2 | 2016-03-07 13:02:12 | D3D11: Clean up InputLayoutCache. This change does a couple things. First, it uses the 'active attribs' mask in the gl::Program to sort the translated attributes, instead of checking the translated attribute themselves. This means we don't have to consult the 'active' field of the translated attributes, which in turns means we don't have to update the active field in the attributes, which breaks the dependency of the attributes on the gl::Program. Second, use a dynamically sized array for storing the cached vertex attributes in the InputLayoutCache. This is nice because it means we don't have to store the size of the array separately. Also some other refactoring cleanups. Refactoring change only. BUG=angleproject:1327 Change-Id: Iab22de92840b30674b92eca72e450673ed9f6d6d Reviewed-on: https://chromium-review.googlesource.com/330172 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e9e15349 | 2016-03-04 15:16:42 | D3D11: Remove RTV and DSV cache vars from Renderer11. These were only referenced by the StateManager11. Instead of using these cache variables, ensure the StateManager11 marks the RT as dirty and apply the RenderTarget state. Also remove the RenderTarget setters from Renderer11, and don't unapply RTs after a one-time set operation. The StateManager11 should take care of updating the necessary changes itself. BUG=angleproject:1321 Change-Id: Idc8d22ea9e92ac8d07392ab10d067df6084403bb Reviewed-on: https://chromium-review.googlesource.com/330462 Reviewed-by: John Bauman <jbauman@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> | ||
| 4b66f055 | 2016-02-25 16:53:38 | Make copyDepthStencil more robust to texture format table changes This will make it easier to verify changes to integer texture DXGI formats. Currently the DXGI format info table contains some values that wouldn't make sense after the integer formats are changed, such as R32_TYPELESS being recorded as a depth format, and we need to make sure no code relies on this kind of information to make changing the table safe. Includes cleaning up unused depth/stencil offset fields from DXGIFormatInfo. BUG=angleproject:1244 TEST=dEQP-GLES3.functional.fbo.blit.*depth* Change-Id: I0149f28e4c6f961af99ac2f5a656f3fbfe13aee6 Reviewed-on: https://chromium-review.googlesource.com/328964 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 86821db3 | 2016-03-04 12:05:47 | Add support for READ_BUFFER and SAMPLER_BINDING queries BUG=angleproject:1101 TEST=dEQP-GLES3.functional.state_query.integers.* (all pass) Change-Id: I3a70335eeaef39822700ff639443a59849ed53fa Reviewed-on: https://chromium-review.googlesource.com/329866 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 586bc55c | 2016-03-04 11:46:03 | Return the correct count from getAttachedShaders The count should be the total amount of shader ids written. Before this patch the code used to write the amount of attached shaders to count regardless of the value of maxCount. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.state_query.shader.* Change-Id: I5ae729748c7809f03fd496c927a76f60398d2b42 Reviewed-on: https://chromium-review.googlesource.com/329865 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| e18eb970 | 2016-03-04 15:46:59 | D3D: Refactor VertexDataManager attribute storage. Instead of splitting attributes into 'active enabled' and 'active disabled', split them into static/dynamic/direct/current value, and handle each group invidually. This also will allow the dirty bits code to call in to the VertexDataManager separately for each type of necessary vertex data translation, and skip it entirely for direct buffer storage. Should be a refactoring patch only. BUG=angleproject:1327 Change-Id: I53cb5672054d99ae68e9aa2e5a3c046a002e360d Reviewed-on: https://chromium-review.googlesource.com/330171 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| e36b92d4 | 2016-03-04 15:46:58 | D3D: Use a single D3D buffer per static vertex attribute. The current caching logic stores multiple static attributes in a single buffer if the attributes share a D3D buffer - sometimes. If a buffer is 'committed' (has been used in a draw) then we would make a new D3D buffer for the next set of static attributes. Instead use a simpler scheme of a single D3D buffer for each static attribute. Also change rx::VertexBuffer to a reference counted class. This simplifies the caching logic for static vertex buffers (translated attributes) considerably. We only need to release the buffers when the ref count is zero, and ensure we track the ref count correctly when bound to D3D. This leads the way towards using a simpler dirty bit scheme for intelligent state updates, and less overhead doing work with buffer state updates. BUG=angleproject:1327 Change-Id: I99461d50b9663024eaa654cd56b42a63f1416d08 Reviewed-on: https://chromium-review.googlesource.com/330170 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org> | ||
| 01ad6445 | 2016-03-03 13:53:45 | Program/ShaderGL: handle empty info logs The GL driver can sometimes have an empty info log and return an info log length of 0. This would cause a vector to be initialized with a length of 0 just before it's .data() pointer was used, causing a segfault. BUG=angleproject:1323 Change-Id: Iaf9b569ec64a90c714a213562e427fb7cc8daa6b Reviewed-on: https://chromium-review.googlesource.com/330197 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org> | ||
| 9cb1df4f | 2016-02-25 16:16:41 | D3D11: Get mip generation function from ANGLE format This is done to make it possible to change some of the DXGI formats of integer textures without affecting their mip generation function associations. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.texture.mipmap.*generate* (all pass) Change-Id: Ie83dd0e1883e9d8e267fbd4bf54b1e466fb0b210 Reviewed-on: https://chromium-review.googlesource.com/328963 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 99cdca03 | 2016-02-24 14:45:06 | Remove getDXGIFormat() function from RenderTarget11 This query would return either the RTV format, the DSV format or the texture format depending on the render target. This made the code hard to understand. getDXGIFormat() calls are replaced by querying the ANGLE format, and explicitly choosing which associated DXGI format to query info for (RTV format or DSV format). This refactoring makes changing some format associations for integer texture formats easier in the future. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.fbo.blit.* (no regressions) Change-Id: Ibe3c03fc6b7768af1a131d4df3909a1e20a71228 Reviewed-on: https://chromium-review.googlesource.com/329102 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| f706901e | 2016-02-24 15:14:01 | D3D11: Associate ANGLE formats with GL internal formats Add a corresponding GL internal format to ANGLE format set. This is one step on the way to removing the problematic DXGI format to GL format mapping. This will also make it possible to stop storing the DXGIFormat field in RenderTarget11. The DXGIFormat field in RenderTarget11 can currently carry either the DSV format, the RTV format or the texture storage format of the resource it is managing, which makes code using it hard to understand. Also fills in missing componentType for some compressed ANGLE formats in texture_format_data.json. BUG=angleproject:1244 TEST=angle_end2end_tests Change-Id: I87eedca8736aeface3fa6a0ec3c9d355cf006b24 Reviewed-on: https://chromium-review.googlesource.com/328961 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| 6ad07236 | 2016-03-03 17:15:49 | Fix texture and sampler state queries Round MAX_LOD / MIN_LOD values correctly according to section 6.1.2 of GLES 3.0.4, and add code for COMPARE_MODE and COMPARE_FUNC. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.state_query.texture.* (all pass), dEQP-GLES3.functional.state_query.sampler.* (all pass) Change-Id: I6043c308c23997513d5de70510a0267419dd1868 Reviewed-on: https://chromium-review.googlesource.com/330112 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> | ||
| b1853096 | 2016-02-24 16:07:39 | D3D11: Don't use DXGI to GL format map in copy functions The swizzle or copy shader needs to be chosen according to the component type of the source SRV. Before this patch, the component type was obtained by going through the mapping from the SRV DXGI formats to GL formats. This mapping is problematic, because it has entries that don't really make sense, like R16_UNORM and R16_TYPELESS formats being mapped to GL_DEPTH_COMPONENT16. This is an issue particularly because these formats will be used for integer RED textures in the future. For this reason the mapping should be removed. In the case addressed by this specific commit, rather than look up the component type of the SRV indirectly through the GL format table using the GL internal format that corresponds to the DXGI format, just use the component type of the DXGI format. The depth+stencil swizzle cases where the component type is not well defined are handled as a special case. BUG=angleproject:1244 TEST=angle_end2end_tests, dEQP-GLES3.functional.texture.swizzle.* (all pass), dEQP-GLES3.functional.fbo.blit.* (no regressions) Change-Id: I39fb8a14921b89d299e0077b3bea8b4e66ef218d Reviewed-on: https://chromium-review.googlesource.com/329103 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> | ||
| 713e4db7 | 2016-03-02 16:35:33 | D3D11: Fix RGBA32_UNORM integer vertex attribs. This formats were mistakenly listed as having no conversion necessary in the vertex formats table. Fix is to mark them as CPU-converted. This bug would only occur for 'direct' storage attributes, not those that were dynamically streamed. BUG=angleproject:1331 Change-Id: Ifa51b47d75e2f5bc762a718587470950cf195cb4 Reviewed-on: https://chromium-review.googlesource.com/329999 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> | ||
| bdec2f4e | 2016-03-02 16:35:32 | D3D11: Fix overlapping vertex shader signatures. For the case of drawing with un-normalized integer vertex attributes, we need to do some dynamic conversion in the VS. However, each attribute can either be signed or unsigned, and our shader signature code would treat both as a match, giving rise to a warning in the D3D11 Debug runtime. It's unclear if this would give incorrect results, but it certainly should not produce a warning. BUG=angleproject:1329 Change-Id: I302d11b44e8a0ef981e89c181aefac5451a899b7 Reviewed-on: https://chromium-review.googlesource.com/329998 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Zhenyao Mo <zmo@chromium.org> | ||
| d8fa9215 | 2016-03-02 11:51:43 | D3D: Refactor VertexBuffer::getSpaceRequired. By making this a virtual call to BufferFactoryD3D (aka RendererD3D), we can also stop having side-effects in the BufferD3D class of creating a static buffer storage when we only want to know the space required for some vertex elements. This refactoring will aid implementation of VertexArray11 dirty bits. BUG=angleproject:1327 Change-Id: I0e34c6e9f5da35edebc179d578ad9392dc0166db Reviewed-on: https://chromium-review.googlesource.com/329741 Reviewed-by: Zhenyao Mo <zmo@chromium.org> | ||
| 7ec6549d | 2016-03-02 16:57:32 | Use static_cast instead of reinterpret_cast for nullptr reinterpret_cast should not be used to cast nullptr_t. This should fix clang and also stops IntelliSense from complaining. TEST=build on Windows Change-Id: I4ba342172e36941f6a234fa4ed1369010527a790 Reviewed-on: https://chromium-review.googlesource.com/329901 Commit-Queue: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> |