mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
ce7cc32129
This introduces two new statistics to the overlay. The first is the ratio of pixel shader invocations (as determined by the GPU) to the number of pixels we determined need to be redrawn. The ideal ratio is 1.0, indicating that we filled every pixel exactly once. Anything over 1.0 indicates overdraw. We also add the ratio of shaded pixels to window size. This indicates how well we computed the invalid region, and whether or not we overfilled that region. Note that the OpenGL and Basic compositors do not yet query the GPU for this statistic, so they will estimate shader invocations by the area of DrawQuad calls. Finally, we remove the feature where layout can request the most recent overdraw statistic. It was not implemented on all compositors, and the only test that used it was disabled. --HG-- extra : rebase_source : 448a162998921974575a1a988bcfde52c959d3ed
35 lines
1023 B
C++
35 lines
1023 B
C++
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_gfx_layers_d3d11_HelpersD3D11_h
|
|
#define mozilla_gfx_layers_d3d11_HelpersD3D11_h
|
|
|
|
#include <d3d11.h>
|
|
#include "mozilla/TimeStamp.h"
|
|
|
|
namespace mozilla {
|
|
namespace layers {
|
|
|
|
template <typename T> static inline bool
|
|
WaitForGPUQuery(ID3D11Device* aDevice, ID3D11DeviceContext* aContext, ID3D11Query* aQuery, T* aOut)
|
|
{
|
|
TimeStamp start = TimeStamp::Now();
|
|
while (aContext->GetData(aQuery, aOut, sizeof(*aOut), 0) != S_OK) {
|
|
if (aDevice->GetDeviceRemovedReason() != S_OK) {
|
|
return false;
|
|
}
|
|
if (TimeStamp::Now() - start > TimeDuration::FromSeconds(2)) {
|
|
return false;
|
|
}
|
|
Sleep(0);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
} // namespace layers
|
|
} // namespace gfx
|
|
|
|
#endif // mozilla_gfx_layers_d3d11_HelpersD3D11_h
|