summaryrefslogtreecommitdiffstats
path: root/src/libs/dxvk-native-1.9.2a/src/dxvk/dxvk_objects.h
blob: aaa9e19bfa448673c2b41ed74ca17e8f0112e774 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#pragma once

#include "dxvk_gpu_event.h"
#include "dxvk_gpu_query.h"
#include "dxvk_memory.h"
#include "dxvk_meta_blit.h"
#include "dxvk_meta_clear.h"
#include "dxvk_meta_copy.h"
#include "dxvk_meta_mipgen.h"
#include "dxvk_meta_pack.h"
#include "dxvk_meta_resolve.h"
#include "dxvk_pipemanager.h"
#include "dxvk_renderpass.h"
#include "dxvk_unbound.h"

#include "../util/util_lazy.h"

namespace dxvk {

  class DxvkObjects {

  public:

    DxvkObjects(DxvkDevice* device)
    : m_device          (device),
      m_memoryManager   (device),
      m_renderPassPool  (device),
      m_pipelineManager (device, &m_renderPassPool),
      m_eventPool       (device),
      m_queryPool       (device),
      m_dummyResources  (device) {

    }

    DxvkMemoryAllocator& memoryManager() {
      return m_memoryManager;
    }

    DxvkRenderPassPool& renderPassPool() {
      return m_renderPassPool;
    }

    DxvkPipelineManager& pipelineManager() {
      return m_pipelineManager;
    }

    DxvkGpuEventPool& eventPool() {
      return m_eventPool;
    }

    DxvkGpuQueryPool& queryPool() {
      return m_queryPool;
    }

    DxvkUnboundResources& dummyResources() {
      return m_dummyResources;
    }

    DxvkMetaBlitObjects& metaBlit() {
      return m_metaBlit.get(m_device);
    }

    DxvkMetaClearObjects& metaClear() {
      return m_metaClear.get(m_device);
    }

    DxvkMetaCopyObjects& metaCopy() {
      return m_metaCopy.get(m_device);
    }

    DxvkMetaResolveObjects& metaResolve() {
      return m_metaResolve.get(m_device);
    }
    
    DxvkMetaPackObjects& metaPack() {
      return m_metaPack.get(m_device);
    }

  private:

    DxvkDevice*                   m_device;

    DxvkMemoryAllocator           m_memoryManager;
    DxvkRenderPassPool            m_renderPassPool;
    DxvkPipelineManager           m_pipelineManager;

    DxvkGpuEventPool              m_eventPool;
    DxvkGpuQueryPool              m_queryPool;

    DxvkUnboundResources          m_dummyResources;

    Lazy<DxvkMetaBlitObjects>     m_metaBlit;
    Lazy<DxvkMetaClearObjects>    m_metaClear;
    Lazy<DxvkMetaCopyObjects>     m_metaCopy;
    Lazy<DxvkMetaResolveObjects>  m_metaResolve;
    Lazy<DxvkMetaPackObjects>     m_metaPack;

  };

}