다음을 통해 공유


ID3D11DeviceContext2::ResizeTilePool 메서드(d3d11_2.h)

타일 풀의 크기를 조정합니다.

구문

HRESULT ResizeTilePool(
  [in] ID3D11Buffer *pTilePool,
  [in] UINT64       NewSizeInBytes
);

매개 변수

[in] pTilePool

형식: ID3D11Buffer*

크기를 조정할 타일 풀의 ID3D11Buffer 에 대한 포인터입니다.

[in] NewSizeInBytes

형식: UINT64

타일 풀의 새 크기(바이트)입니다. 크기는 64KB 또는 0의 배수여야 합니다.

반환 값

형식: HRESULT

성공하면 S_OK 반환합니다. 그렇지 않으면 다음 중 하나를 반환합니다.

  • 새 타일 풀 크기가 64KB 또는 0의 배수가 아닌 경우 E_INVALIDARG 반환합니다.
  • 호출로 인해 드라이버가 새 페이지 테이블 매핑을 위한 공간을 할당해야 하지만 메모리가 부족한 경우 E_OUTOFMEMORY 반환합니다.
  • 비디오 카드 시스템에서 물리적으로 제거되었거나 비디오 카드 대한 드라이버 업그레이드가 발생한 경우 DXGI_ERROR_DEVICE_REMOVED 반환합니다.
E_INVALIDARG 또는 E_OUTOFMEMORY 경우 기존 타일 풀은 변경되지 않은 상태로 유지되며 여기에는 기존 매핑이 포함됩니다.

설명

ResizeTilePool 은 앱에 매핑된 바둑판식 리소스에 대해 더 많거나 적은 작업 집합이 필요한지에 따라 타일 풀의 크기를 늘리거나 줄입니다. 앱은 새 타일식 리소스에 대해 추가 타일 풀을 할당할 수 있지만 타일이 있는 단일 리소스에 타일 풀에서 처음 사용할 수 있는 것보다 더 많은 공간이 필요한 경우 앱은 리소스의 타일 풀 크기를 늘릴 수 있습니다. 타일식 리소스는 동시에 여러 타일 풀에 매핑할 수 없습니다.

타일 풀의 크기를 늘리면 드라이버에서 하나 이상의 새 할당을 통해 타일 풀의 끝에 추가 타일이 추가됩니다. 앱에서 새 할당에 대한 분석을 검색할 수 없습니다. 타일 풀의 기존 메모리는 그대로 유지되고 해당 메모리에 대한 기존 타일식 리소스 매핑은 그대로 유지됩니다.

타일 풀의 크기를 줄이면 타일이 끝에서 제거됩니다(초기 할당 크기 이하인 경우에도 0까지 허용됨). 즉, 새 크기를 지나서 새 매핑을 만들 수 없습니다. 하지만 새로운 크기의 끝단을 지나는 기존 매핑은 변함 없이 사용할 수 있습니다. 타일 풀 메모리에 사용되는 할당의 일부에 대한 매핑이 유지되는 한 메모리는 활성 상태로 유지됩니다. 감소 후 타일 매핑이 이를 가리키고 타일 풀이 다시 증가하기 때문에 일부 메모리가 활성 상태로 유지된 경우 증가 크기를 서비스하기 위해 추가 할당이 발생하기 전에 기존 메모리가 먼저 재사용됩니다.

메모리를 저장할 수 있으려면 앱은 타일 풀을 줄일 뿐만 아니라 새 작은 타일 풀 크기의 끝을 지나 기존 매핑을 제거하고 다시 매핑해야 합니다.

매핑을 감소(및 제거)하는 행위가 반드시 즉각적인 메모리 절감을 생성하는 것은 아닙니다. 메모리 해제는 타일 풀에 대한 드라이버의 기본 할당이 얼마나 세분화된지에 따라 달라집니다. 타일 풀의 크기가 감소하면 드라이버 할당을 사용하지 않도록 하기에 충분할 경우 드라이버는 할당을 해제할 수 있습니다. 타일 풀이 증가했고 이전 크기로 줄인 경우(그리고 그에 따라 타일 매핑을 제거하고 다시 매핑하는 경우) 메모리 절감이 발생할 가능성이 큽니다. 그러나 이 시나리오는 크기가 드라이버에서 선택한 기본 할당 크기와 정확히 일치하지 않는 경우 보장되지 않습니다.

타일형 리소스에 대한 자세한 내용은 타일형 리소스를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2012 R2 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d3d11_2.h
라이브러리 D3D11.lib

추가 정보

ID3D11DeviceContext2