| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ |
| #define GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ |
| |
| #include <string> |
| |
| #include "base/unguessable_token.h" |
| #include "gpu/command_buffer/common/gpu_command_buffer_common_export.h" |
| |
| namespace gpu { |
| |
| // A unique, unguessable identifier for a SharedImagePool. |
| class GPU_COMMAND_BUFFER_COMMON_EXPORT SharedImagePoolId { |
| public: |
| SharedImagePoolId(); |
| explicit SharedImagePoolId(const base::UnguessableToken& token); |
| |
| // Creates a new SharedImagePoolId with a cryptographically random value. |
| static SharedImagePoolId Create(); |
| |
| // Generates a string representation of the SharedImagePoolId. |
| std::string ToString() const; |
| |
| bool operator==(const SharedImagePoolId& other) const { |
| return token_ == other.token_; |
| } |
| |
| std::strong_ordering operator<=>(const SharedImagePoolId& other) const { |
| return token_ <=> other.token_; |
| } |
| |
| template <typename H> |
| friend H AbslHashValue(H h, const SharedImagePoolId& id) { |
| return H::combine(std::move(h), id.token_); |
| } |
| |
| bool IsValid() const { return !token_.is_empty(); } |
| |
| const base::UnguessableToken& GetToken() const { return token_; } |
| |
| private: |
| // The underlying unguessable token. |
| base::UnguessableToken token_; |
| }; |
| |
| } // namespace gpu |
| |
| #endif // GPU_COMMAND_BUFFER_COMMON_SHARED_IMAGE_POOL_ID_H_ |