Commit 4a41914b by Tobin Ehlis Committed by Commit Bot

Vulkan: Add trace markers

Add systrace markers for various RendererVk::finish paths in order to quickly identify cause of finishes. Also added marker to commandPool destroy which is currently a known hotspot on some devices. Bug: angleproject:2528 Change-Id: I5a2fc741679a58445d71a2edd6204cf9e869d236 Reviewed-on: https://chromium-review.googlesource.com/c/1454277 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
parent e1a763d1
......@@ -14,6 +14,7 @@
#include "libANGLE/Context.h"
#include "libANGLE/renderer/vulkan/ContextVk.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -176,6 +177,7 @@ angle::Result BufferVk::getIndexRange(const gl::Context *context,
return angle::Result::Continue;
}
TRACE_EVENT0("gpu.angle", "BufferVk::getIndexRange");
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(renderer->finish(contextVk));
......
......@@ -16,6 +16,7 @@
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/SurfaceVk.h"
#include "libANGLE/renderer/vulkan/SyncVk.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -81,6 +82,7 @@ DeviceImpl *DisplayVk::createDevice()
egl::Error DisplayVk::waitClient(const gl::Context *context)
{
TRACE_EVENT0("gpu.angle", "DisplayVk::waitClient");
return angle::ToEGL(mRenderer->finish(this), this, EGL_BAD_ACCESS);
}
......
......@@ -24,6 +24,7 @@
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/SurfaceVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -1096,6 +1097,7 @@ angle::Result FramebufferVk::readPixelsImpl(ContextVk *contextVk,
RenderTargetVk *renderTarget,
void *pixels)
{
TRACE_EVENT0("gpu.angle", "FramebufferVk::readPixelsImpl");
RendererVk *renderer = contextVk->getRenderer();
ANGLE_TRY(renderTarget->ensureImageInitialized(contextVk));
......
......@@ -31,7 +31,6 @@
#include "libANGLE/renderer/vulkan/vk_caps_utils.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "platform/Platform.h"
#include "third_party/trace_event/trace_event.h"
// Consts
......@@ -1281,6 +1280,7 @@ angle::Result RendererVk::checkCompletedCommands(vk::Context *context)
mLastCompletedQueueSerial = batch.serial;
batch.fence.destroy(mDevice);
TRACE_EVENT0("gpu.angle", "commandPool.destroy");
batch.commandPool.destroy(mDevice);
++finishedCount;
}
......
......@@ -16,6 +16,7 @@
#include "libANGLE/renderer/vulkan/FramebufferVk.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -617,6 +618,7 @@ angle::Result TextureVk::copyImageDataToBuffer(ContextVk *contextVk,
const gl::Rectangle &sourceArea,
uint8_t **outDataPtr)
{
TRACE_EVENT0("gpu.angle", "TextureVk::copyImageDataToBuffer");
// Make sure the source is initialized and it's images are flushed.
ANGLE_TRY(ensureImageInitialized(contextVk));
......
......@@ -18,6 +18,7 @@
#include "libANGLE/renderer/vulkan/FramebufferVk.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -261,6 +262,7 @@ angle::Result VertexArrayVk::convertVertexBufferCpu(ContextVk *contextVk,
size_t attribIndex,
const vk::Format &vertexFormat)
{
TRACE_EVENT0("gpu.angle", "VertexArrayVk::convertVertexBufferCpu");
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(contextVk->getRenderer()->finish(contextVk));
......@@ -660,6 +662,7 @@ angle::Result VertexArrayVk::updateIndexTranslation(ContextVk *contextVk,
// as well support the ubyte to ushort case with correct handling of primitive restart.
// http://anglebug.com/3003
TRACE_EVENT0("gpu.angle", "VertexArrayVk::updateIndexTranslation");
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(renderer->finish(contextVk));
......
......@@ -15,6 +15,7 @@
#include "libANGLE/renderer/vulkan/FramebufferVk.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/vk_utils.h"
#include "third_party/trace_event/trace_event.h"
namespace rx
{
......@@ -949,6 +950,7 @@ angle::Result LineLoopHelper::getIndexBufferForElementArrayBuffer(ContextVk *con
{
if (glIndexType == gl::DrawElementsType::UnsignedByte)
{
TRACE_EVENT0("gpu.angle", "LineLoopHelper::getIndexBufferForElementArrayBuffer");
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(contextVk->getRenderer()->finish(contextVk));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment