blob: 1b0fd621de6f8229bf43c4a9a71cc410ce26864a [file] [log] [blame]
Bryan Bernhart21dfc912019-10-03 18:17:31 +00001// Copyright 2019 The Dawn Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
Corentin Wallezca354352019-10-24 21:28:16 +000015#ifndef DAWNNATIVE_RESOURCEHEAPALLOCATOR_H_
16#define DAWNNATIVE_RESOURCEHEAPALLOCATOR_H_
Bryan Bernhart21dfc912019-10-03 18:17:31 +000017
18#include "dawn_native/Error.h"
19#include "dawn_native/ResourceHeap.h"
20
Stephen Whitefe221ac2019-10-30 00:19:43 +000021#include <memory>
22
Bryan Bernhart21dfc912019-10-03 18:17:31 +000023namespace dawn_native {
Bryan Bernhart21dfc912019-10-03 18:17:31 +000024
Corentin Wallezca354352019-10-24 21:28:16 +000025 // Interface for backend allocators that create memory heaps resoruces can be suballocated in.
26 class ResourceHeapAllocator {
27 public:
28 virtual ~ResourceHeapAllocator() = default;
29
30 virtual ResultOrError<std::unique_ptr<ResourceHeapBase>> AllocateResourceHeap(
31 uint64_t size) = 0;
32 virtual void DeallocateResourceHeap(std::unique_ptr<ResourceHeapBase> allocation) = 0;
Bryan Bernhart21dfc912019-10-03 18:17:31 +000033 };
Corentin Wallezca354352019-10-24 21:28:16 +000034
Bryan Bernhart21dfc912019-10-03 18:17:31 +000035} // namespace dawn_native
36
Corentin Wallezca354352019-10-24 21:28:16 +000037#endif // DAWNNATIVE_RESOURCEHEAPALLOCATOR_H_