D3D12_RESOURCE_DESC 구조체(d3d12.h)
텍스처와 같은 리소스를 설명합니다. 이 구조는 광범위하게 사용됩니다.
통사론
typedef struct D3D12_RESOURCE_DESC {
D3D12_RESOURCE_DIMENSION Dimension;
UINT64 Alignment;
UINT64 Width;
UINT Height;
UINT16 DepthOrArraySize;
UINT16 MipLevels;
DXGI_FORMAT Format;
DXGI_SAMPLE_DESC SampleDesc;
D3D12_TEXTURE_LAYOUT Layout;
D3D12_RESOURCE_FLAGS Flags;
} D3D12_RESOURCE_DESC;
회원
Dimension
리소스의 차원(예: D3D12_RESOURCE_DIMENSION_TEXTURE1D) 또는 버퍼((D3D12_RESOURCE_DIMENSION_BUFFER) 여부를 지정하는 D3D12_RESOURCE_DIMENSION멤버 중 하나입니다.
Alignment
맞춤을 지정합니다.
Width
리소스의 너비를 지정합니다.
Height
리소스의 높이를 지정합니다.
DepthOrArraySize
3D인 경우 리소스의 깊이를 지정하거나 1D 또는 2D 리소스의 배열인 경우 배열 크기를 지정합니다.
MipLevels
MIP 수준 수를 지정합니다.
Format
DXGI_FORMAT하나의 멤버를 지정합니다.
SampleDesc
DXGI_SAMPLE_DESC 구조를 지정합니다.
Layout
D3D12_TEXTURE_LAYOUT하나의 멤버를 지정합니다.
Flags
비트 OR 플래그(D3D12_RESOURCE_FLAGS 열거형 상수)입니다.
발언
다음과 함께 이 구조를 사용합니다.
- ID3D12Resource::GetDesc
- ID3D12Device::GetResourceAllocationInfo
- ID3D12Device::CreateCommittedResource
- ID3D12Device::CreatePlacedResource
- ID3D12Device::CreateReservedResource
- ID3D12Device::GetCopyableFootprints
- 여러 도우미 함수는 D3D12
도우미 구조 및 함수를 참조합니다.
두 가지 일반적인 리소스는 버퍼와 텍스처이며, 둘 다 이 구조를 사용하지만 필드의 용도는 매우 다릅니다.
버퍼
버퍼는 연속 메모리 영역입니다. Width 예약된 리소스에 대한 MaxGPUVirtualAddressBitsPerResourceD3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT 필드 또는 커밋된 리소스에 대한 MaxGPUVirtualAddressBitsPerProcess 필드 사이일 수 있습니다. 그러나 GPU 가상 주소 공간, 메모리 상주 예산(IDXGIAdapter3::QueryVideoMemoryInfo참조) 또는 시스템 메모리가 먼저 쉽게 발생할 수 있습니다.맞춤 64KB(D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT) 또는 0(사실상 64KB)이어야 합니다.
Height, DepthOrArraySize및 MipLevels 1이어야 합니다.
서식 DXGI_FORMAT_UNKNOWN 합니다.
SampleDesc.Count 1이어야 하고 품질 0이어야 합니다.
레이아웃 애플리케이션에서 버퍼 메모리 레이아웃을 이해하고 행 주 텍스처 데이터가 일반적으로 버퍼를 통해 마샬링되므로 D3D12_TEXTURE_LAYOUT_ROW_MAJOR 합니다.
플래그 예외를 제외하고 버퍼에 대한 애플리케이션에서 정확하게 작성해야 합니다. 그러나 애플리케이션은 버퍼에 미치는 효율성에 대한 우려 없이 대부분의 기능 지원을 사용할 수 있습니다. 플래그 필드는 텍스처와 관련된 속성을 제어하기 위한 것입니다.
텍스처
텍스처는 연속된 메모리 영역에서 텍셀의 다차원 배열로, 렌더링 및 샘플링을 위한 대역폭을 최대화하도록 최적화되어 있습니다. 텍스처 크기는 예측하기 어렵고 어댑터마다 다릅니다. 애플리케이션은 ID3D12Device::GetResourceAllocationInfo 사용하여 크기를 정확하게 이해해야 합니다.TEXTURE1D, TEXTURE2D 및 TEXTURE3D 모든 형식에서 직교적으로 지원되지 않습니다. D3D12_FORMAT_SUPPORT1D3D12_FORMAT_SUPPORT1_TEXTURE1D, D3D12_FORMAT_SUPPORT1_TEXTURE2D 및 D3D12_FORMAT_SUPPORT1_TEXTURE3D 사용을 참조하세요.
Width, Height및 DepthOrArraySize 1에서 특정 기능 수준 및 텍스처 차원에 대해 지원되는 최대 차원 사이여야 합니다. 그러나 GPU 가상 주소 공간, 메모리 상주 예산(IDXGIAdapter3::QueryVideoMemoryInfo참조) 또는 시스템 메모리가 먼저 쉽게 발생할 수 있습니다. 압축된 형식의 경우 이러한 차원은 논리적입니다. 예를 들어:
- TEXTURE1D 경우:
- Width 기능 수준이 11_0 미만이고 기능 수준 11_0 이상에서 D3D11_REQ_TEXTURE1D_U_DIMENSION D3D10_REQ_TEXTURE1D_U_DIMENSION 작거나 같아야 합니다.
- 높이 1이어야 합니다.
- DepthOrArraySize 배열 크기로 해석되며 기능 수준 11_0 이상에서 D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION 11_0 미만의 기능 수준에서 D3D10_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION 작거나 같아야 합니다.
- TEXTURE2D 경우:
- Width 및 Height 11_0 미만의 기능 수준과 D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION 또는 기능 수준 11_0 이상에서 D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION 작거나 같아야 합니다.
- DepthOrArraySize 배열 크기로 해석되며 기능 수준 11_0 이상에서 11_0 미만의 기능 수준과 D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION 작거나 같아야 합니다.
- TEXTURE3D 경우:
- Width 및 Height 및 DepthOrArraySize 기능 수준이 11_0 미만이고 기능 수준 11_0 이상에서 D3D11_REQ_TEXTURE2D_U_V_OR_W_DIMENSION D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION 작거나 같아야 합니다.
- DepthOrArraySize 깊이로 해석됩니다.
맞춤
맞춤 0, 4KB, 64KB 또는 4MB 중 하나일 수 있습니다.맞춤 0으로 설정된 경우 런타임은 MSAA 텍스처에 4MB, 다른 모든 항목에는 64KB를 사용합니다. 애플리케이션은 텍스처가 작을 때 두 가지 텍스처 형식에 대해 이러한 기본값보다 작은 맞춤을 선택할 수 있습니다. UNKNOWN 레이아웃 및 MSAA가 있는 텍스처는 64KB 맞춤으로 만들 수 있습니다(아래에 설명된 작은 크기 제한을 통과하는 경우).
MSAA가 없고 렌더링 대상이나 깊이 스텐실 플래그가 없는 UNKNOWN 레이아웃의 텍스처는 4KB 맞춤을 사용하여 만들 수 있습니다(다시 작은 크기 제한을 통과).
가장 자세한 밉 수준의 예상 크기가 더 큰 맞춤 제한 이하인 경우 애플리케이션은 더 작은 정렬된 리소스를 만들 수 있습니다. 런타임은 표준 스위즐 및 D3D12 타일식 리소스의 크기를 모방하는 아키텍처 독립적 크기 예측 메커니즘을 사용합니다. 그러나 타일 크기는 이러한 계산에 대한 더 작은 맞춤 제한입니다. 비 렌더링 대상 및 비-깊이-스텐실 텍스처를 예로 사용하여 런타임은 거의 평형 타일 셰이프 4KB를 가정하고 가장 자세한 밉 수준에 필요한 타일 수를 계산합니다. 타일 수가 16보다 작거나 같은 경우 애플리케이션은 4KB 정렬 리소스를 만들 수 있습니다. 따라서 너비와 높이가 특정 형식 및 MSAA에 대해 충분히 작으면 배열 크기와 밉 수준 수의 미핑된 tex2d 배열은 4KB일 수 있습니다.
MipLevels
MipLevelsWidth, Height 및 DepthOrArraySize 차원에서 지원하는 최대 밉 수준까지 0 또는 1일 수 있습니다. 0을 사용하면 API는 지원되는 최대 밉 수준을 자동으로 계산하고 사용합니다. 그러나 일부 리소스 및 힙 속성은 밉 수준을 배제하므로 앱은 값을 1로 지정해야 합니다.형식별 제한은 D3D12_FORMAT_SUPPORT1 D3D12_FORMAT_SUPPORT1_MIP 필드를 참조하세요. MSAA 리소스, D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER 있는 텍스처 및 D3D12_HEAP_FLAG_ALLOW_DISPLAY 있는 힙은 모두 밉 수준을 배제합니다.
형식
형식 디바이스의 기능 수준에서 지원되는 유효한 형식이어야 합니다.SampleDesc
SampleDesc.Count 1 및/또는 0이 아닌 품질 TEXTURE2D D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 또는 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 설정된 경우에만 지원됩니다.지원되지 않는 항목은 다음과 같습니다.
- D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE,
- D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS,
- D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS,
- D3D12_HEAP_FLAG_ALLOW_DISPLAY
요구 사항
요구 | 값 |
---|---|
헤더 | d3d12.h |
참고 항목
핵심 구조