12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // Copyright 2015 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_GFX_GENERIC_SHARED_MEMORY_ID_H_
- #define UI_GFX_GENERIC_SHARED_MEMORY_ID_H_
- #include <stddef.h>
- #include <stdint.h>
- #include <functional>
- #include "base/hash/hash.h"
- #include "base/trace_event/memory_allocator_dump.h"
- #include "ui/gfx/gfx_export.h"
- namespace gfx {
- // Defines an ID type which is used across all types of shared memory
- // allocations in content/. This ID type is in ui/gfx, as components outside
- // content/ may need to hold an ID (but should not generate one).
- class GFX_EXPORT GenericSharedMemoryId {
- public:
- int id;
- // Invalid ID is -1 to match semantics of base::AtomicSequenceNumber.
- constexpr GenericSharedMemoryId() : id(-1) {}
- constexpr explicit GenericSharedMemoryId(int id) : id(id) {}
- GenericSharedMemoryId(const GenericSharedMemoryId& other) = default;
- GenericSharedMemoryId& operator=(const GenericSharedMemoryId& other) =
- default;
- bool is_valid() const { return id >= 0; }
- bool operator==(const GenericSharedMemoryId& other) const {
- return id == other.id;
- }
- bool operator<(const GenericSharedMemoryId& other) const {
- return id < other.id;
- }
- };
- // Generates GUID which can be used to trace shared memory using its
- // GenericSharedMemoryId.
- GFX_EXPORT base::trace_event::MemoryAllocatorDumpGuid
- GetGenericSharedGpuMemoryGUIDForTracing(
- uint64_t tracing_process_id,
- GenericSharedMemoryId generic_shared_memory_id);
- } // namespace gfx
- namespace std {
- template <>
- struct hash<gfx::GenericSharedMemoryId> {
- size_t operator()(gfx::GenericSharedMemoryId key) const {
- return std::hash<int>()(key.id);
- }
- };
- template <typename Second>
- struct hash<std::pair<gfx::GenericSharedMemoryId, Second>> {
- size_t operator()(
- const std::pair<gfx::GenericSharedMemoryId, Second>& pair) const {
- return base::HashInts(pair.first.id, pair.second);
- }
- };
- } // namespace std
- #endif // UI_GFX_GENERIC_SHARED_MEMORY_ID_H_
|