src/libANGLE/renderer/d3d/d3d11/Query11.cpp


Log

Author Commit Date CI Message
Qin Jiajia e58e77f5 2022-11-10T12:49:03 Support timestamp behind flag enableTimestampQueries All timestamp queries happen in the same disjoint query in one Context11. The whole design is that we start a disjoint query in D3D11 at the first timestamp request and keep it continuously running in current context. Only end it and read it back when the user queries if there is a disjoint. We cache the frequency and assume it doesn't change. For the first timestamp, we create a temporary D3D disjoint query and end it so we have a frequency to convert the ticks to nanoseconds. This task is taken over from https://chromium-review.googlesource.com/c/angle/angle/+/3694732 Bug: angleproject:7367 Change-Id: I747c9b00e10ac58362df66332efd01a24aa395f2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4021139 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Qin Jiajia 86800e3d 2022-11-10T17:07:29 Move disjoint status from RendererD3D to Context11 Make disjoint status per-context instead of one in renderer. This is in preparation for timestamp query support. Bug: angleproject:7367 Change-Id: I6380e55cac29b2d40edfbcd32e360e8da5546a80 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4018970 Commit-Queue: Jiajia Qin <jiajia.qin@intel.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill a6206854 2019-10-24T12:55:09 Enable "-Wmissing-field-initializers". This is another warning required by Skia. This one didn't find anything that surprising. Enabling the warning does help enforce code consistency and avoids a bit of possible undefined behaviour. Bug: angleproject:4046 Change-Id: Ifec7f4afad49cd820bf3c0a79df3f46559473ee2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1877477 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Stuart Morgan 9d737966 2019-08-14T12:25:12 Standardize copyright notices to project style For all "ANGLE Project" copyrights, standardize to the format specified by the style guide. Changes: - "Copyright (c)" and "Copyright(c)" changed to just "Copyright". - Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1"). - Fixed a small number of files that had no copyright date using the initial commit year from the version control history. - Fixed one instance of copyright being "The ANGLE Project" rather than "The ANGLE Project Authors" These changes are applied both to the copyright of source file, and where applicable to copyright statements that are generated by templates. BUG=angleproject:3811 Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7c985f5c 2018-11-29T18:16:17 Make angle::Result an enum. This moves away from a class type to a value type. This should improve performance when using angle::Result as a return value. Previously the generated code would return a pointer instead of a value. Improves performance in the most targeted microbenchmark by 10%. In more realistic scanarios it will have a smaller improvement. Also simplifies the class implementation and usage. Includes some unrelated code generation changes. Bug: angleproject:2491 Change-Id: Ifcf86870bf1c00a2f73c39ea6e4f05ca705050aa Reviewed-on: https://chromium-review.googlesource.com/c/1356139 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill b980c563 2018-11-27T11:34:27 Reformat all cpp and h files. This applies git cl format --full to all ANGLE sources. Bug: angleproject:2986 Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f Reviewed-on: https://chromium-review.googlesource.com/c/1351367 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Jamie Madill f4a789f9 2018-10-18T16:56:20 Use angle::Result in front-end (Part 6) Refactors the gl::Program, gl::Compiler and gl::Query classes. Bug: angleproject:2491 Change-Id: I96acecdc6af301a89201bd7f5222a180433e5eb2 Reviewed-on: https://chromium-review.googlesource.com/c/1289711 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7a5814e2 2018-07-27T08:12:50 D3D11: Use angle::Result error pattern. 3/3 This completes the initial refactor for the D3D11 back-end. Bug: angleproject:2738 Change-Id: I6bc59d6a1a724b3c64d6cd904e6748c2acf8f67d Reviewed-on: https://chromium-review.googlesource.com/1151452 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 306b6c16 2018-07-27T08:12:49 D3D11: Use angle::Result error pattern. 1/3 This CL improves performance on the draw call microbenchmark by 10% when no-oping driver calls. Bug: angleproject:2738 Change-Id: I4f5c11db90d9056ce4557b2a4432bc55b42b5bba Reviewed-on: https://chromium-review.googlesource.com/1150093 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 5188a274 2018-07-25T10:53:56 Pass Context to Query Impl methods. The Context needed for the error refactor and Vulkan implementation. Bug: angleproject:2738 Change-Id: Id816b61ebf342c953a320ab29b6386e356dc64e8 Reviewed-on: https://chromium-review.googlesource.com/1150092 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Corentin Wallez ad3ae90a 2018-03-09T13:40:42 Use packed enums for QueryType. BUG=angleproject:2169 Change-Id: I129a9d8e295859daa071a298dab9fe1895315cc0 Reviewed-on: https://chromium-review.googlesource.com/957318 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Geoff Lang 5528d11f 2018-04-24T11:25:10 D3D: Don't test for device loss as frequenty in tight loops. BUG=angleproject:1472 BUG=621240 Change-Id: I723839bd7961167adddcccc680638ae066eacea3 Reviewed-on: https://chromium-review.googlesource.com/1025645 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Yuly Novikov c4d18aac 2017-03-09T18:45:02 Use ErrorStream everywhere Eliminates one more usage of FormatString and its static initializer. Add more ErrorStream types and replace gl::Error and egl::Error with them. BUG=angleproject:1644 Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb Reviewed-on: https://chromium-review.googlesource.com/505429 Commit-Queue: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 63fa2e94 2017-06-01T17:11:41 D3D11: Consolidate Query allocation. This compiles the resource refactor for D3D11. The only remaining non-smart handles are for things like SwapChains and ID3D11Blob. This might be more easily managed by using angle::ComPtr or similar smart pointers instead of the Resource Manager class. BUG=angleproject:2034 Change-Id: I53c753a1c19b05c4e72859dd5046e3ed10866847 Reviewed-on: https://chromium-review.googlesource.com/506777 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
He Yunchao acd1898e 2017-01-04T10:46:42 Replace Error(GL_NO_ERROR) with NoError(). In order to make the errors be consistent throughout ANGLE. BUG=angleproject:1686 Change-Id: I0a2d86091d640aedeac94beae345c1fb6971b00d Reviewed-on: https://chromium-review.googlesource.com/424835 Commit-Queue: Yunchao He <yunchao.he@intel.com> Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Jamie Madill 7efe747c 2016-10-07T16:12:46 D3D11: Fix style in the entire back-end. BUG=None Change-Id: I32cbcd4daa1f386654ea5e8f0a25d8635b5df731 Reviewed-on: https://chromium-review.googlesource.com/402016 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8234e7b3 2016-10-07T15:12:10 Refactor some errors into ANGLE_TRY macros. BUG=None Change-Id: I00ff2523995cb49d1af60cae62c2bba0d020eed4 Reviewed-on: https://chromium-review.googlesource.com/395569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill e2e406c3 2016-06-02T13:04:10 Add base::numerics for safe math and conversions. This replaces are "IsUnsignedXXXSafe" family of methods. Also add overflow checks to unpack block sizes. BUG=angleproject:1397 Change-Id: Ib47be149b0486c70f795b0d0f8899441faac9340 Reviewed-on: https://chromium-review.googlesource.com/348062 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Geoff Lang 2b4ce80c 2016-04-28T13:34:50 Implement GL_CHROMIUM_sync_query for D3D9 and D3D11. BUG=angleproject:1366 Change-Id: Iadde61968f45b969c76578a6dd9116a25d63fb4b Reviewed-on: https://chromium-review.googlesource.com/341230 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Ian Ewell d2f02c2a 2016-02-26T13:39:54 Fix a memory leak in the Query11 class. The destructor did not release D3D objects that could be in the mPendingQueries list when the destructor is called. This fix now iterates through the list and releases them. BUG=angleproject:1325 Change-Id: Ia3bd2a8a611f8dbf85051ab5bfea18ab72038af5 Reviewed-on: https://chromium-review.googlesource.com/329426 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com>
Ian Ewell 89f2845c 2016-02-10T11:33:07 Context virtualization for D3D11 queries Queries in D3D11 are now virtualized such that they work as expected with multiple contexts. Timer queries now only time the operations that their context is responsible for and the operations of other contexts are ignored. BUG=angleproject:657 Change-Id: I667de594bdb5831d126d5801c0e692ded4c88bf4 Reviewed-on: https://chromium-review.googlesource.com/327150 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Ian Ewell <ewell@google.com>
Ian Ewell f04f6671 2016-02-03T10:50:16 Add support for timer queries in D3D11 Timer queries without context virtualization are now supported in the Direct3D11 backend. Only the elapsed time portion of the GL extension is supported though due to limitations of D3D11 preventing a reliable implementation of the timestamp functionality. As a result of this, the counter bits for the timestamp is set to 0 and any queries of the timestamp will always return 0. BUG=angleproject:657 Change-Id: I51ca1a1a6bd6bc13155cebeacdca414b764db168 Reviewed-on: https://chromium-review.googlesource.com/325780 Reviewed-by: Jamie Madill <jmadill@chromium.org>
Ian Ewell 3ffd78bc 2016-01-22T16:09:42 Add initial support for EXT_disjoint_timer_query. Basic timer queries are supported and tested in the OpenGL backend but are not enabled by default. A good portion of the existing query code was also refactored for improved validation - specifically for validating that the appropriate extensions are available. BUG=angleproject:1265 Change-Id: Iebae994cd7a8d3ed3e9fc3776fe2f3d99caa9237 Reviewed-on: https://chromium-review.googlesource.com/323450 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Tryjob-Request: Ian Ewell <ewell@google.com> Tested-by: Ian Ewell <ewell@google.com>
Jamie Madill 4c76feac 2014-11-24T11:38:52 Remove notify parameter from testDeviceLost. We can get rid of this parameter now that we call notify directly on the display in cases where we need to. BUG=angle:795 Change-Id: I2024b70d0d725e755f7aa742ba221c2d0179d8b6 Reviewed-on: https://chromium-review.googlesource.com/228911 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Jamie Madill 9dd0cf0a 2014-11-24T11:38:51 Do not use notify feature of testDeviceLost. This is part one of a simplification of testDeviceLost. This patch changes the instances where we would use the notify parameter to notify the Display directly. We can do this by using the Display attached to the Renderer in some cases. BUG=angle:795 Change-Id: I24fd827989d47b0b2cefef7afb99fa62581ddc1b Reviewed-on: https://chromium-review.googlesource.com/228910 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Cooper Partin 1edac3b1 2014-11-20T13:49:27 Fixed Visual Studio 2013 Update 4 build failures for WinRT Change-Id: I393e9800d1c2e902f60728e1f7d0debca66b76a0 Reviewed-on: https://chromium-review.googlesource.com/231140 Tested-by: Cooper Partin <coopp@microsoft.com> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Geoff Lang 2b5420c0 2014-11-19T14:20:15 Merge libGLESv2 and libEGL classes into libANGLE. BUG=angle:733 Change-Id: Ic491c971411fe82c56cd97c5c8325ac14ec218df Reviewed-on: https://chromium-review.googlesource.com/230830 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>