Vcc, pengkompil berasaskan Clang yang direka untuk menjana kod boleh laku dalam Vulkan

vcc

Vcc: pengkompil Vulkan Clang

Dalam landskap API grafik, Bahasa teduhan telah menghadapi batasan, kerana walaupun terdapat kemungkinan menulis kod dalam subset biasa antara GLSL, HLSL dan C++, sekatan semasa wujud.

Inilah sebabnya mengapa Vcc dilahirkan (Vulkan Clang Compiler) pengkompil Vulkan Clang, yang merupakan projek yang sedang dibangunkan selama 3 tahun, timbul sebagai tindak balas kepada batasan dan cabaran ini. Projek ini bukan sahaja bertujuan untuk mengatasi sekatan ekspresif, tetapi untuk menghapuskan konsep bahasa teduhan.

Dengan menggabungkan keluarga bahasa yang lengkap C / C ++ ke Vulkan, Vcc memperkenalkan ciri yang tidak pernah dilihat dalam pelorek Vulkan, seperti penunjuk fizikal, penunjuk generik, panggilan fungsi sebenar dan aliran kawalan lengkap.

Inisiatif ini berusaha untuk merapatkan jurang perisian antara grafik dan pengiraan API. Dengan menjadikan Vulkan serasi dengan API pengkomputeran GPU yang lain, Vcc dipersembahkan sebagai langkah penting ke arah menyatukan pengaturcaraan dalam grafik dan pengkomputeran, sejajar dengan penerimaan besar-besaran dan kualiti pelaksanaan yang dikenali Vulkan.

Mengenai VCC

Vcc ialah pengkompil berasaskan Clang yang direka untuk menjana kod boleh laku dalam Vulkan, objektifnya adalah untuk meletakkan dirinya sebagai pengkompil yang mampu menterjemah kod C++ dalam perwakilan yang boleh dijalankan pada GPU yang menyokong API grafik Vulkan. Tidak seperti model pengaturcaraan GPU berdasarkan bahasa shader GLSL dan HLSL, Vcc mengambil idea untuk menghapuskan sepenuhnya penggunaan bahasa shader berasingan dan menyediakan keupayaan untuk menyusun kod C/C++ secara langsung untuk Vulkan.

Walaupun boleh dianggap sebagai pesaing kepada GLSL dan HLSL, Niat sebenar di sebalik projek ini pergi lebih jauh, kerana Vcc berusaha untuk menggabungkan keluarga bahasa C/C++ ke dalam Vulkan, memperkenalkan beberapa ciri dalam pelorek Vulkan.

Vcc hanyalah antara muka kepada Shady, IR, dan pengkompil yang direka untuk melanjutkan SPIR-V dengan sokongan untuk binaan yang disebutkan di atas. Shady dipersembahkan sebagai IR yang agak konvensional dan termasuk sokongan untuk menghurai IR LLVM. Mengendalikan pengurangan dan emulasi semua ciri tambahan yang tidak ditemui dalam versi semasa SPIR-V 3.

Sudah tentu, terdapat beberapa ciri unik yang hanya terdapat dalam shader. Ini didedahkan dalam Vcc menggunakan intrinsik dan anotasi, membolehkan anda menulis kod yang berinteraksi dengan pelbagai ciri saluran Vulkan.

Proses penyusunan dalam Vcc melibatkan penggunaan komponen projek LLVM dan Clang sebagai antara muka. Untuk pelaksanaan pada GPU, Vcc membangunkan perwakilan shader perantaraan sendiri "Shady", bersama pengkompil khusus untuk menukar kod kepada perwakilan ini. Pendekatan ini membenarkan penyusunan kod C/C++ standard dan dilengkapi dengan fungsi terbina dalam khusus untuk memanfaatkan keupayaan GPU.

VDC menonjol kerana menyokong fungsi C/C++ asli untuk mengawal aliran program, malah membenarkan penggunaan arahan "goto". Selain itu, ia menyediakan keupayaan untuk memanggil fungsi, melaksanakan fungsi secara rekursif, dan menggunakan pelbagai jenis penunjuk, seperti penunjuk fizikal, penunjuk teg dan penunjuk fungsi. Selain itu, ia memudahkan untuk melaksanakan operasi aritmetik pada penunjuk dan menentukan susun atur jenis dalam ingatan.

Perwakilan perantara Shady shader adalah berdasarkan SPIR-V 3 dan dikembangkan untuk menyokong binaan khas yang wujud kepada ciri C/C++. Emulasi digunakan untuk melaksanakan keupayaan lanjutan yang tidak boleh digunakan secara langsung untuk SPIR-V. Vcc menyertakan fungsi dan anotasi terbina dalam untuk membolehkan program menggunakan keupayaan khusus shader dengan cekap, sekali gus menyediakan persekitaran yang serba boleh dan berkuasa untuk membangunkan aplikasi GPU.

Akhir sekali, ia patut disebut bahawa tidak semuanya berwarna merah jambu danAdalah penting untuk mengambil kira beberapa batasan pelaksanaan. Contohnya, Vcc tidak menyokong pengecualian C++ dan fungsi malloc/free tidak tersedia. Selain itu, terdapat sekatan pada kemudahalihan fungsi dan penunjuk antara sistem hos dan GPU. Pertimbangan ini adalah penting apabila merancang pembangunan aplikasi yang menggunakan Vcc untuk memastikan penggunaan yang cekap dan bebas masalah.

Jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh berunding dengan tapak dan bagi mereka yang berminat dengan kod, anda harus tahu bahawa ia tersedia di sini.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.