#ifndef GPU_COMMAND_BUFFER_COMMON_DEBUG_MARKER_MANAGER_H_
#define GPU_COMMAND_BUFFER_COMMON_DEBUG_MARKER_MANAGER_H_
#include <string>
#include "base/containers/stack.h"
#include "gpu/command_buffer/common/gpu_command_buffer_common_export.h"
namespace gpu {
namespace gles2 {
class GPU_COMMAND_BUFFER_COMMON_EXPORT DebugMarkerManager {
public:
DebugMarkerManager();
~DebugMarkerManager();
const std::string& GetMarker() const;
void SetMarker(const std::string& marker);
void PushGroup(const std::string& name);
void PopGroup(void);
private:
class Group {
public:
explicit Group(const std::string& name);
~Group();
const std::string& name() const {
return name_;
}
void SetMarker(const std::string& marker);
const std::string& marker() const {
return marker_;
}
private:
std::string name_;
std::string marker_;
};
using GroupStack = base::stack<Group>;
GroupStack group_stack_;
std::string empty_;
};
}
}
#endif