chromium/gpu/command_buffer/service/gpu_tracer.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file contains the GPUTrace class.
#ifndef GPU_COMMAND_BUFFER_SERVICE_GPU_TRACER_H_
#define GPU_COMMAND_BUFFER_SERVICE_GPU_TRACER_H_

#include <stdint.h>

#include <memory>
#include <string>
#include <vector>

#include "base/containers/circular_deque.h"
#include "base/containers/stack.h"
#include "base/memory/raw_ptr.h"
#include "base/threading/thread.h"
#include "base/time/time.h"
#include "gpu/gpu_gles2_export.h"

namespace gl {
class GPUTimingClient;
class GPUTimer;
}  // namespace gl

namespace gpu {

class DecoderContext;

namespace gles2 {

class Outputter;
class GPUTrace;

// Id used to keep trace namespaces separate
enum GpuTracerSource {};

// Marker structure for a Trace.
struct TraceMarker {};

// Traces GPU Commands.
class GPU_GLES2_EXPORT GPUTracer {};

class GPU_GLES2_EXPORT Outputter {};

class GPU_GLES2_EXPORT TraceOutputter : public Outputter {};

class GPU_GLES2_EXPORT GPUTrace : public base::RefCounted<GPUTrace> {};

class ScopedGPUTrace {};

}  // namespace gles2
}  // namespace gpu

#endif  // GPU_COMMAND_BUFFER_SERVICE_GPU_TRACER_H_