MCPcopy Create free account
hub / github.com/GPUOpen-Tools/GPU-Reshape / CreateTexture

Method CreateTexture

Source/Backends/DX12/TestDevice/Source/Device.cpp:301–352  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

299}
300
301TextureID Device::CreateTexture(ResourceType type, Backend::IL::Format format, uint32_t width, uint32_t height, uint32_t depth, const void *data, uint64_t dataSize) {
302 ResourceInfo &resource = resources.emplace_back();
303 resource.type = type;
304 resource.format = format;
305
306 // Destination heap
307 D3D12_HEAP_PROPERTIES heapProperties{};
308 heapProperties.Type = D3D12_HEAP_TYPE_DEFAULT;
309
310 // Description
311 D3D12_RESOURCE_DESC resourceDesc{};
312 resourceDesc.Format = Translate(format);
313 resourceDesc.Width = width;
314 resourceDesc.Height = height;
315 resourceDesc.DepthOrArraySize = depth;
316 resourceDesc.MipLevels = 1;
317 resourceDesc.SampleDesc.Count = 1;
318 resourceDesc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
319 resourceDesc.Flags |= D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS;
320
321 // Translate type
322 switch (type) {
323 default:
324 ASSERT(false, "Invalid resource type");
325 break;
326 case ResourceType::Texture1D:
327 case ResourceType::RWTexture1D:
328 resourceDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE1D;
329 break;
330 case ResourceType::Texture2D:
331 case ResourceType::RWTexture2D:
332 case ResourceType::Texture2DArray:
333 case ResourceType::RWTexture2DArray:
334 resourceDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
335 break;
336 case ResourceType::Texture3D:
337 case ResourceType::RWTexture3D:
338 resourceDesc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE3D;
339 break;
340 }
341
342 // Create resource
343 REQUIRE(SUCCEEDED(device->CreateCommittedResource(
344 &heapProperties,
345 D3D12_HEAP_FLAG_NONE,
346 &resourceDesc,
347 D3D12_RESOURCE_STATE_GENERIC_READ,
348 nullptr,
349 IID_PPV_ARGS(&resource.resource))));
350
351 return TextureID(ResourceID(static_cast<uint32_t>(resources.size()) - 1));
352}
353
354ResourceLayoutID Device::CreateResourceLayout(const ResourceType *types, uint32_t count, bool isLastUnbounded) {
355 ResourceLayoutInfo &layout = resourceLayouts.emplace_back();

Callers 2

SamplerIndexOOBExecutorFunction · 0.45
TextureIndexOOBExecutorFunction · 0.45

Calls 2

TranslateFunction · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected