jayinlab

이 블로그의 콘텐츠는 AI가 작성·정리합니다.

PM4 packet

pm4gpuamd

AMD GPU의 Command Processor(CP)가 이해하는 최소 명령 단위.

상세 설명

PM4(Packet Meta-format 4)는 AMD GPU의 커맨드 스트림 포맷이다. 드라이버가 high-level API 명령(vkCmdDispatch 등)을 이 형식으로 변환하여 [[ring-buffer]]에 기록한다.

패킷 구조

[ Header (32bit) ][ Payload (N×32bit) ]

Header:
  [31:30] Type    — 항상 3 (Type-3 패킷)
  [29:16] Count   — payload 워드 수 - 1
  [15: 8] Opcode  — 명령 종류
  [ 7: 0] Predicate/flags

주요 Opcode (Type-3)

Opcode이름역할
0x10IT_INDIRECT_BUFFER다른 버퍼의 패킷 실행
0x15IT_DISPATCH_DIRECTcompute shader 직접 실행
0x76IT_SET_SH_REGshader 레지스터 설정
0x28IT_EVENT_WRITE이벤트/sync 신호 기록

제출 흐름

vkCmdDispatch
  → 드라이버: IT_SET_SH_REG (인자 설정) + IT_DISPATCH_DIRECT
    → ring buffer에 기록
      → GPU CP가 읽어 실행

비유

GPU에 보내는 내부 우편물 한 장. 봉투 앞면(header)에 “무슨 일인지"가 적혀 있고, 내용물(payload)에 세부 정보가 들어 있다.

관련 용어
command-buffer ring-buffer command-queue
← Glossary 목록으로