Trace events for swap chain presentations in SharedImageBacking
Also do gl::LabelSwapChainAndBuffers for D3DImageBacking as DXGISwapChainImageBacking. It can make things easier to know which SII is doing presentation. Bug: None Change-Id: I0ce37c78493656fe910e6be6e5aabe2e81b00bc0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6268400 Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Reviewed-by: Saifuddin Hitawala <hitawala@chromium.org> Commit-Queue: Chunbo Hua <chunbo.hua@intel.com> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Cr-Commit-Position: refs/heads/main@{#1422290}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
9b0282c0ec
commit
50ae3921ac
content/test/gpu/gpu_tests
gpu/command_buffer/service/shared_image
ui/gl
@ -114,7 +114,8 @@ basic_test_harness_script = r"""
|
||||
_GET_STATISTICS_EVENT_NAME = 'GetFrameStatisticsMedia'
|
||||
_SWAP_CHAIN_PRESENT_EVENT_NAME = 'SwapChain::Present'
|
||||
_BEGIN_OVERLAY_ACCESS_EVENT_NAME = 'SkiaOutputDeviceDComp::BeginOverlayAccess'
|
||||
_PRESENT_SWAP_CHAIN_EVENT_NAME = 'IDXGISwapChain1::Present1'
|
||||
_PRESENT_SWAP_CHAIN_EVENT_NAME =\
|
||||
'DXGISwapChainImageBacking::Present'
|
||||
|
||||
_HTML_CANVAS_NOTIFY_LISTENERS_CANVAS_CHANGED_EVENT_NAME =\
|
||||
'HTMLCanvasElement::NotifyListenersCanvasChanged'
|
||||
|
@ -1208,15 +1208,15 @@ void* D3DImageBacking::GetEGLImage() const {
|
||||
|
||||
bool D3DImageBacking::PresentSwapChain() {
|
||||
AutoLock auto_lock(this);
|
||||
TRACE_EVENT0("gpu", "D3DImageBacking::PresentSwapChain");
|
||||
if (!swap_chain_ || !is_back_buffer_) {
|
||||
LOG(ERROR) << "Backing does not correspond to back buffer of swap chain";
|
||||
return false;
|
||||
}
|
||||
|
||||
TRACE_EVENT1("gpu", "D3DImageBacking::PresentSwapChain", "has_alpha",
|
||||
!SkAlphaTypeIsOpaque(alpha_type()));
|
||||
constexpr UINT kFlags = DXGI_PRESENT_ALLOW_TEARING;
|
||||
constexpr DXGI_PRESENT_PARAMETERS kParams = {};
|
||||
|
||||
HRESULT hr = swap_chain_->Present1(/*interval=*/0, kFlags, &kParams);
|
||||
if (FAILED(hr)) {
|
||||
LOG(ERROR) << "Present1 failed with error " << std::hex << hr;
|
||||
|
@ -173,6 +173,8 @@ constexpr SharedImageUsageSet kSupportedUsage =
|
||||
SHARED_IMAGE_USAGE_WEBGPU_STORAGE_TEXTURE |
|
||||
SHARED_IMAGE_USAGE_WEBGPU_SHARED_BUFFER;
|
||||
|
||||
const char* kD3DImageBackingLabel = "D3DImageBacking";
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
D3DImageBackingFactory::D3DImageBackingFactory(
|
||||
@ -323,6 +325,8 @@ D3DImageBackingFactory::CreateSwapChain(const Mailbox& front_buffer_mailbox,
|
||||
return {nullptr, nullptr};
|
||||
}
|
||||
|
||||
gl::LabelSwapChainAndBuffers(swap_chain.Get(), kD3DImageBackingLabel);
|
||||
|
||||
if (gl::DXGIWaitableSwapChainEnabled()) {
|
||||
Microsoft::WRL::ComPtr<IDXGISwapChain3> swap_chain3;
|
||||
if (SUCCEEDED(swap_chain.As(&swap_chain3))) {
|
||||
|
@ -42,7 +42,7 @@ namespace gpu {
|
||||
|
||||
namespace {
|
||||
const char* kDXGISwapChainImageBackingLabel = "DXGISwapChainImageBacking";
|
||||
} // namespace
|
||||
} // anonymous namespace
|
||||
|
||||
// static
|
||||
std::unique_ptr<DXGISwapChainImageBacking> DXGISwapChainImageBacking::Create(
|
||||
@ -270,7 +270,7 @@ bool DXGISwapChainImageBacking::Present(
|
||||
: 1;
|
||||
UINT flags = use_swap_chain_tearing ? DXGI_PRESENT_ALLOW_TEARING : 0;
|
||||
|
||||
TRACE_EVENT2("gpu", "IDXGISwapChain1::Present1", "has_alpha",
|
||||
TRACE_EVENT2("gpu", "DXGISwapChainImageBacking::Present", "has_alpha",
|
||||
!SkAlphaTypeIsOpaque(alpha_type()), "dirty_rect",
|
||||
pending_swap_rect_->ToString());
|
||||
DXGI_PRESENT_PARAMETERS params = {};
|
||||
|
@ -168,8 +168,8 @@ void LabelSwapChainBuffers(IDXGISwapChain* swap_chain,
|
||||
}
|
||||
}
|
||||
|
||||
// Same as LabelSwapChainAndBuffers, but only does the buffers. Used for resize
|
||||
// operations
|
||||
// Labels swapchain with the name_prefix and its buffers with the string
|
||||
// name_prefix + _Buffer_ + <buffer_number>.
|
||||
void LabelSwapChainAndBuffers(IDXGISwapChain* swap_chain,
|
||||
const char* name_prefix) {
|
||||
SetDebugName(swap_chain, name_prefix);
|
||||
|
@ -65,7 +65,7 @@ GL_EXPORT unsigned int FrameRateToPresentDuration(float frame_rate);
|
||||
// BufferCount for the root surface swap chain.
|
||||
GL_EXPORT unsigned int DirectCompositionRootSurfaceBufferCount();
|
||||
|
||||
// Labels swapchain with the name_prefix and ts buffers buffers with the string
|
||||
// Labels swapchain with the name_prefix and its buffers with the string
|
||||
// name_prefix + _Buffer_ + <buffer_number>.
|
||||
GL_EXPORT void LabelSwapChainAndBuffers(IDXGISwapChain* swap_chain,
|
||||
const char* name_prefix);
|
||||
|
Reference in New Issue
Block a user