Root Signature

์›๋ž˜๋ฒŒ๋ ˆยท2022๋…„ 8์›” 11์ผ
0

๐ŸŒž Root Signature์˜ ํ•œ๊ณ„

  • Root Signature๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๊ฐ€ DWORD64๋กœ ์ •ํ•ด์ ธ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ Root Signature์— ๋„ฃ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์„ ์–ธํ•˜๊ณ  ๋งคํ•‘ํ•˜์—ฌ Root Signature์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

๐ŸŒž Table ์‚ฌ์šฉ ๋ฒ•

  • ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜๋Š” ๋ฒ•์„ ๋ง๋กœ ํ’€์–ด๋ณด๋ฉด,
    1) ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Constant Buffer๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” Desc Heap(CBV)์„ ํ•˜๋‚˜ ์„ ์–ธํ•œ๋‹ค.
    2) ๊ทธ๋ฆฌ๊ณ  ์ด Desc Heap(CBV)๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•  Desc Heap(Shader Visible)์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š”๋ฐ, ์ด Desc Heap(Shader Visible)์€ ์ถฉ๋ถ„ํžˆ ํฐ ํฌ๊ธฐ๋กœ ์„ ์–ธ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    ๊ทธ ์ด์œ ๋Š”, ์ „์—์„œ ์•Œ์•„๋ณธ Command Queue์˜ ์‹คํ–‰๊ณผ Device์˜ ์‹คํ–‰์˜ ์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ๋ณ€ ํ•  ๊ฐ’๋“ค์„ ๋‹ค ์ €์žฅ ํ•  ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์ด ํ•„์š”ํ•œ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฒ„ํผ๋ฅผ ๋‘์ง€ ์•Š๊ณ , ํ•˜๋‚˜์˜ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” Command Queue์™€ Table์„ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ธ SetDescriptorHeaps ๋ฉ”์†Œ๋“œ๊ฐ€ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    3) ์ด๋ ‡๊ฒŒ SetDescriptorHeaps ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•˜์—ฌ CommandQueue๋กœ Desc Heap์ด ๋„˜์–ด๊ฐ€๊ณ , SetGraphicsRootDescriptorTable ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•˜์—ฌ ๋ช‡๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์‚ฌ์šฉ ํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•ด์ค€๋‹ค. ์ด ๋‘˜์€ ์„ธํŠธ๋กœ ๋งŒ์•ฝ์— SetDescriptorHeaps๋ฅผ ์•ˆํ•œ ์ƒํƒœ์—์„œ SetGraphicsRootDescriptorTable์„ ์‚ฌ์šฉ์„ํ•˜๋ฉด Crash๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์ด๋ ‡๊ฒŒ ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” DirectX์—์„œ๋Š” View๋ผ๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•œ๋‹ค. ์ด๊ฒƒ์€ ํŠน์ •ํ•œ Resource ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•˜์—ฌ GPU์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด์„ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์ด View๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฉด Resource๋ฅผ ์ฝ๋Š” ๊ฒƒ ๋˜ํ•œ ๋‹ฌ๋ผ์ง„๋‹ค. ์ฆ‰ Resource๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฆ‡์ด๊ณ , ์ด ๊ทธ๋ฆ‡์ด ๋ฌด์—‡์ธ์ง€ ๋ผ๋ฒจ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด View๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Resource์— ํ•ด๋‹นํ•˜๋Š” Constant Buffer๋ฅผ ํ•˜๋‚˜ ๋‘๊ณ , View์— ํ•ด๋‹นํ•˜๋Š” Desc Heap(CBV)๋ฅผ ๋†“๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด View๋กœ ๋ผ๋ฒจ์„ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ Desc Heap(Shader Visible)์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

profile
ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋‹ด์€ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€