MCPcopy Create free account
hub / github.com/GPUOpen-Effects/TressFX / CreateResource

Method CreateResource

src/DX12/DX12EngineInterfaceImpl.cpp:157–205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155 }
156
157 void CreateResource(CD3DX12_RESOURCE_DESC desc, const unsigned int flags, const char* name)
158 {
159 D3D12_RESOURCE_FLAGS resourceFlags = D3D12_RESOURCE_FLAG_NONE;
160 D3D12_RESOURCE_STATES initialState = (D3D12_RESOURCE_STATES)D3D12_RESOURCE_STATE_COPY_DEST;
161
162
163 if (flags & EI_BF_NEEDSUAV)
164 {
165 resourceFlags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
166 initialState = (D3D12_RESOURCE_STATES)D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
167 }
168
169 desc.Flags = resourceFlags;
170 m_ResourceDesc = desc;
171
172 wchar_t uniName[1024];
173 swprintf(uniName, 1024, L"%S", name);
174
175 if (flags & EI_BF_NEEDSCPUMEMORY) {
176 CD3DX12_RESOURCE_DESC cpuDesc = desc;
177 cpuDesc.Flags = D3D12_RESOURCE_FLAG_NONE;
178 ThrowIfFailed(pDevice->GetDevice()->CreateCommittedResource(
179 &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
180 D3D12_HEAP_FLAG_NONE,
181 &cpuDesc,
182 D3D12_RESOURCE_STATE_GENERIC_READ,
183 nullptr,
184 IID_PPV_ARGS(&cpuBuffer)));
185
186 cpuBuffer->SetName(uniName);
187 }
188
189 ThrowIfFailed(pDevice->GetDevice()->CreateCommittedResource(
190 &CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_DEFAULT),
191 D3D12_HEAP_FLAG_NONE,
192 &desc,
193 initialState,
194 nullptr,
195 IID_PPV_ARGS(&gpuBuffer)));
196
197 gpuBuffer->SetName(uniName);
198
199 if (flags & EI_BF_INDEXBUFFER)
200 {
201 indexBufferView.BufferLocation = gpuBuffer->GetGPUVirtualAddress();
202 indexBufferView.Format = DXGI_FORMAT_R32_UINT;
203 indexBufferView.SizeInBytes = m_totalMemSize;
204 }
205 }
206
207 void FreeCPUMemory()
208 {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected