blob: 29b331a57fa9200ce04ffd48096c265197eb167a [file] [log] [blame]
// 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_