blob: 6acab6846bc6f822c39fb265ff0e5c236a2f15f1 [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/gpu_export.h"
namespace gpu {
// A unique, unguessable identifier for a SharedImagePool.
class GPU_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_;
}
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_