Vcc, trình biên dịch dựa trên Clang được thiết kế để tạo mã thực thi trong Vulkan

vcc

Vcc: trình biên dịch Vulkan Clang

Trong bối cảnh API đồ họa, Ngôn ngữ tạo bóng đã gặp phải hạn chế, bởi vì mặc dù có khả năng viết mã trong một tập hợp con chung giữa GLSL, HLSL và C++ nhưng vẫn tồn tại những hạn chế hiện tại.

Đây là lý do Vcc ra đời (Trình biên dịch Vulkan Clang) trình biên dịch Vulkan Clang, là một dự án được phát triển trong 3 năm, phát sinh như một phản ứng với những hạn chế và thách thức này. Dự án này không chỉ tìm cách khắc phục những hạn chế về mặt biểu đạt mà còn loại bỏ chính khái niệm về ngôn ngữ tạo bóng.

Bằng cách kết hợp gia đình ngôn ngữ hoàn chỉnh C / C ++ tới Vulkan, Vcc giới thiệu những tính năng chưa từng thấy trong bộ đổ bóng Vulkan, chẳng hạn như con trỏ vật lý, con trỏ chung, lệnh gọi hàm thực và luồng điều khiển hoàn chỉnh.

Sáng kiến ​​này tìm cách thu hẹp khoảng cách phần mềm giữa đồ họa và API điện toán. Bằng cách làm cho Vulkan tương thích với các API điện toán GPU khác, Vcc được coi là một bước quan trọng hướng tới việc thống nhất lập trình trong đồ họa và điện toán, phù hợp với chất lượng triển khai và áp dụng hàng loạt mà Vulkan nổi tiếng.

Giới thiệu về VCC

Vcc là trình biên dịch dựa trên Clang được thiết kế để tạo mã thực thi trong Vulkan, mục tiêu của nó là định vị mình là một trình biên dịch có khả năng dịch mã C++ trong một đại diện có thể chạy trên GPU hỗ trợ API đồ họa Vulkan. Không giống như các mô hình lập trình GPU dựa trên ngôn ngữ shader GLSL và HLSL, Vcc lấy ý tưởng loại bỏ hoàn toàn việc sử dụng các ngôn ngữ shader riêng biệt và cung cấp khả năng biên dịch trực tiếp mã C/C++ cho Vulkan.

Mặc dù có thể được coi là đối thủ cạnh tranh với GLSL và HLSL, Ý định thực sự đằng sau dự án này còn đi xa hơn nữa, vì Vcc tìm cách kết hợp họ ngôn ngữ C/C++ vào Vulkan, giới thiệu một số tính năng trong Vulkan shader.

Vcc chỉ đơn giản là một giao diện cho Shady, IR và trình biên dịch được thiết kế để mở rộng SPIR-V với sự hỗ trợ cho các cấu trúc nói trên. Shady được trình bày dưới dạng IR tương đối thông thường và bao gồm hỗ trợ phân tích cú pháp LLVM IR. Xử lý việc giảm thiểu và mô phỏng tất cả các tính năng bổ sung không có trong các phiên bản SPIR-V 3 hiện tại.

Tất nhiên, có một số tính năng độc đáo chỉ có trong shader. Chúng được hiển thị trong Vcc bằng cách sử dụng nội tại và chú thích, cho phép bạn viết mã tương tác với các tính năng khác nhau của kênh Vulkan.

Quá trình biên dịch trong Vcc liên quan đến việc sử dụng các thành phần dự án LLVM và Clang như giao diện. Để thực thi trên GPU, Vcc phát triển biểu diễn đổ bóng trung gian của riêng mình "Shady", cùng với một trình biên dịch chuyên dụng để chuyển đổi mã sang dạng biểu diễn này. Cách tiếp cận này cho phép biên dịch mã C/C++ tiêu chuẩn và được bổ sung bởi các chức năng tích hợp cụ thể để tận dụng các khả năng của GPU.

VDC nổi bật vì hỗ trợ các hàm C/C++ gốc để kiểm soát luồng chương trình, thậm chí cho phép sử dụng lệnh "goto". Ngoài ra, nó còn cung cấp khả năng gọi hàm, thực thi hàm đệ quy và sử dụng nhiều loại con trỏ khác nhau, chẳng hạn như con trỏ vật lý, con trỏ được gắn thẻ và con trỏ hàm. Ngoài ra, nó giúp thực hiện các phép tính số học trên con trỏ và xác định kiểu bố cục trong bộ nhớ dễ dàng hơn.

Biểu diễn trung gian của Shady shader dựa trên SPIR-V 3 và được mở rộng để hỗ trợ các cấu trúc đặc biệt vốn có của các tính năng C/C++. Mô phỏng được sử dụng để triển khai các khả năng nâng cao không thể áp dụng trực tiếp cho SPIR-V. Vcc bao gồm các chức năng và chú thích tích hợp để cho phép các chương trình sử dụng hiệu quả các khả năng cụ thể của trình đổ bóng, do đó cung cấp môi trường linh hoạt và mạnh mẽ để phát triển các ứng dụng GPU.

Cuối cùng, điều đáng nói là không phải mọi thứ đều màu hồng vàĐiều cần thiết là phải tính đến một số hạn chế trong việc thực hiện. Ví dụ: Vcc không hỗ trợ ngoại lệ C++ và chức năng malloc/free không khả dụng. Ngoài ra, còn có hạn chế về khả năng di chuyển của các chức năng và con trỏ giữa hệ thống máy chủ và GPU. Những cân nhắc này rất quan trọng khi lập kế hoạch phát triển các ứng dụng sử dụng Vcc để đảm bảo triển khai hiệu quả và không gặp sự cố.

Nếu bạn là muốn biết thêm về nó, bạn có thể tham khảo ý kiến nơi và đối với những người quan tâm đến mã, bạn nên biết rằng nó có sẵn ở đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.