jayinlab

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

ANGLE 체인 표 초안 — compile/submit 함수 체인 1차 맵

2026-04-13

심화 킥오프에서 정의한 산출물 형식대로
compile chain과 submit chain을 후보 중심 1차 맵으로 작성한 문서다.

이 표는 초안이다. 후보로 표시된 항목은 실제 파일/라인 확인으로 확정한다.


Animation: 두 체인의 함수 흐름

1.0x
Compile chain (slow)
Submit chain (fast)
대기 중

Compile Chain 표 (초안)

단계후보 함수/지점역할상태
C1clCreateProgramWithSource소스 기반 Program 객체 생성 시작확정
C2Program 내부 source 보관 지점소스 텍스트/메타 상태 보관후보
C3clBuildProgram빌드 트리거확정
C4build 내부 컴파일 경로소스 → SPIR-V 변환후보
C5SPIR-V 보관/로드 지점backend 전달 준비후보
C6Vulkan ShaderModule 준비 지점vkCreateShaderModule 경로후보
C7Descriptor Set Layout 준비 지점vkCreateDescriptorSetLayout후보
C8Pipeline Layout 준비 지점vkCreatePipelineLayout후보
C9Compute Pipeline 준비 지점vkCreateComputePipelines후보

핵심: C3 이후 경로가 compile chain의 중심. C6~C9는 Vulkan 객체 생성 구간.


Submit Chain 표 (초안)

단계후보 함수/지점역할상태
S1clSetKernelArg커널 인자 상태 반영확정
S2인자 상태 저장 구조descriptor/push constant 재료 준비후보
S3clEnqueueNDRangeKernel실행 제출 시작확정
S4command buffer recording 시작 지점bind/dispatch 명령 기록 시작후보
S5vkCmdBindPipeline 연결 지점pipeline 바인딩후보
S6vkCmdBindDescriptorSets 연결 지점리소스 세트 바인딩후보
S7vkCmdPushConstants 연결 지점push constant 값 기록후보
S8vkCmdDispatch 연결 지점compute dispatch 트리거후보
S9Queue submit 지점드라이버에 실제 제출후보

핵심: S3 이후 경로가 submit chain의 중심. S5~S8은 Vulkan command recording 구간.


체인 분리 규칙 요약

clBuildProgram 주변 → compile chain
clSetKernelArg / clEnqueueNDRangeKernel 주변 → submit chain

같은 파일에 있어도 라벨을 섞지 않는다.

다음 단계: 후보 → 확정

이 표의 후보 항목들을 실제 파일/라인으로 채우는 작업:

grep -r "vkCreateShaderModule" --include="*.cpp" -n
grep -r "vkCreateComputePipelines" --include="*.cpp" -n
grep -r "vkCmdDispatch" --include="*.cpp" -n

찾은 결과를 각 표의 파일/라인 컬럼에 기록한다.


이해 확인 질문

Q1. 이번 표의 성격은 “확정본"인가, “초안 맵"인가?

정답 보기

**초안 맵(후보 중심 1차 체인 분리)**이다.
후보로 표시된 항목은 실제 파일/라인 확인 후 확정으로 바뀐다.

Q2. clSetKernelArg는 왜 submit chain으로 분류하는가?

정답 보기

실행 시점에 필요한 인자/descriptor 바인딩 상태를 준비하는 단계이기 때문이다.
코드 생성/빌드 산출물 자체를 바꾸는 compile 단계와는 다르다.

Q3. 후보를 후보라고 명시하는 이유는?

정답 보기

추정과 확정을 구분해 지식 품질과 추적 정확도를 유지하기 위해서다.
“안다"는 느낌과 “파일/라인에서 확인했다"는 완전히 다른 수준의 이해다.


관련 글

관련 용어

[[ANGLE]], [[SPIR-V]], [[pipeline-layout]], [[descriptor-set]], [[command-buffer]]