blob: 53254c5e9fd549bb4d5d24a47ade73330ff95640 [file] [log] [blame]
Bryan Bernhart154badf2019-10-17 17:25:28 +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
15#ifndef DAWNNATIVE_D3D12_HEAPALLOCATORD3D12_H_
16#define DAWNNATIVE_D3D12_HEAPALLOCATORD3D12_H_
17
Brandon Jones635239f2020-04-23 21:50:32 +000018#include "dawn_native/D3D12Backend.h"
Corentin Wallezca354352019-10-24 21:28:16 +000019#include "dawn_native/ResourceHeapAllocator.h"
Bryan Bernhart154badf2019-10-17 17:25:28 +000020#include "dawn_native/d3d12/d3d12_platform.h"
21
22namespace dawn_native { namespace d3d12 {
23
24 class Device;
25
26 // Wrapper to allocate a D3D12 heap.
Corentin Wallezca354352019-10-24 21:28:16 +000027 class HeapAllocator : public ResourceHeapAllocator {
Bryan Bernhart154badf2019-10-17 17:25:28 +000028 public:
Brandon Jones635239f2020-04-23 21:50:32 +000029 HeapAllocator(Device* device,
30 D3D12_HEAP_TYPE heapType,
31 D3D12_HEAP_FLAGS heapFlags,
32 MemorySegment memorySegment);
Bryan Bernhart154badf2019-10-17 17:25:28 +000033 ~HeapAllocator() override = default;
34
Corentin Wallezca354352019-10-24 21:28:16 +000035 ResultOrError<std::unique_ptr<ResourceHeapBase>> AllocateResourceHeap(
36 uint64_t size) override;
37 void DeallocateResourceHeap(std::unique_ptr<ResourceHeapBase> allocation) override;
Bryan Bernhart154badf2019-10-17 17:25:28 +000038
39 private:
40 Device* mDevice;
41 D3D12_HEAP_TYPE mHeapType;
42 D3D12_HEAP_FLAGS mHeapFlags;
Brandon Jones635239f2020-04-23 21:50:32 +000043 MemorySegment mMemorySegment;
Bryan Bernhart154badf2019-10-17 17:25:28 +000044 };
45
46}} // namespace dawn_native::d3d12
47
Corentin Wallezca354352019-10-24 21:28:16 +000048#endif // DAWNNATIVE_D3D12_HEAPALLOCATORD3D12_H_