پس از دو سال کار، کنسرسیوم استانداردهای گرافیکی Khronos مشخصات Vulkan 1.3 را منتشر کرد که یک API برای دسترسی به گرافیک و قابلیت های محاسباتی GPU ها تعریف می کند. مشخصات جدید شامل اصلاحات و تمدیدات انباشته شده در طول دو سال است. لازم به ذکر است که الزامات مشخصات Vulkan 1.3 برای تجهیزات گرافیکی کلاس OpenGL ES 3.1 طراحی شده است که پشتیبانی از API گرافیکی جدید را در تمام GPUهایی که از Vulkan 1.2 پشتیبانی می کنند تضمین می کند. ابزار Vulkan SDK قرار است در اواسط فوریه منتشر شود. علاوه بر مشخصات اصلی، برنامه ریزی شده است که افزونه های اضافی برای دستگاه های موبایل و دسکتاپ میان رده و رده بالا ارائه شود که به عنوان بخشی از نسخه "Vulkan Milestone" پشتیبانی می شود.
همزمان، طرحی برای پیادهسازی پشتیبانی از مشخصات جدید و افزونههای اضافی در کارتهای گرافیک و درایورهای دستگاه ارائه شد. محصولاتی که از Vulkan 1.3 پشتیبانی میکنند توسط اینتل، AMD، ARM و NVIDIA در حال آمادهسازی هستند. به عنوان مثال، AMD اعلام کرد که به زودی از Vulkan 1.3 در سری کارتهای گرافیک AMD Radeon RX Vega و همچنین تمام کارتهای مبتنی بر معماری AMD RDNA پشتیبانی خواهد کرد. NVIDIA در حال آمادهسازی برای انتشار درایورهایی است که از Vulkan 1.3 پشتیبانی میکنند. Linux и WindowsARM پشتیبانی از Vulkan 1.3 را به پردازندههای گرافیکی Mali اضافه خواهد کرد.
نوآوری های اصلی:
- پشتیبانی از پاسهای رندر ساده شده (Sreamlining Render Passes، VK_KHR_dynamic_rendering) پیادهسازی شده است که به شما امکان میدهد بدون ایجاد پاسهای رندر و اشیاء فریم بافر، رندر را شروع کنید.
- افزونههای جدیدی برای سادهسازی مدیریت کامپایل خط لوله گرافیکی اضافه شدهاند (خط لوله، مجموعهای از عملیات که گرافیکهای اولیه و بافتهای برداری را به نمایشهای پیکسلی تبدیل میکند).
- VK_EXT_extended_dynamic_state، VK_EXT_extended_dynamic_state2 - اضافه کردن حالت های پویا اضافی برای کاهش تعداد اشیاء حالت کامپایل شده و پیوست شده.
- VK_EXT_pipeline_creation_cache_control - کنترل های پیشرفته ای را در مورد زمان و نحوه کامپایل خطوط لوله ارائه می دهد.
- VK_EXT_pipeline_creation_feedback - اطلاعاتی در مورد خطوط لوله کامپایل شده برای آسان کردن پروفایل و اشکال زدایی ارائه می دهد.
- تعدادی از ویژگی ها از اختیاری به اجباری منتقل شده اند. به عنوان مثال، پیاده سازی مراجع بافر (VK_KHR_buffer_device_address) و مدل حافظه Vulkan، که تعریف می کند چگونه رشته های همزمان می توانند به داده های مشترک و عملیات همگام سازی دسترسی داشته باشند، اکنون اجباری هستند.
- کنترل زیرگروه ریز (VK_EXT_subgroup_size_control) ارائه شده است تا فروشندگان بتوانند از چندین اندازه زیرگروه پشتیبانی کنند و توسعه دهندگان بتوانند اندازه مورد نیاز خود را انتخاب کنند.
- پسوند VK_KHR_shader_integer_dot_product ارائه شده است که می تواند برای بهینه سازی عملکرد چارچوب های یادگیری ماشین به لطف شتاب سخت افزاری عملیات محصول نقطه ای استفاده شود.
- در مجموع 23 توسعه جدید شامل:
- VK_KHR_copy_commands2
- VK_KHR_dynamic_rendering
- VK_KHR_format_feature_flags2
- VK_KHR_maintenance4
- VK_KHR_shader_integer_dot_product
- VK_KHR_shader_non_semantic_info
- VK_KHR_shader_terminate_invocation
- VK_KHR_synchronization2
- VK_KHR_zero_initialize_workgroup_memory
- قالبهای VK_EXT_4444
- VK_EXT_Extended_dynamic_state
- VK_EXT_extended_dynamic_state2
- VK_EXT_ استحکام تصویر
- VK_EXT_inline_uniform_block
- VK_EXT_pipeline_creation_cache_control
- VK_EXT_pipeline_creation_feedback
- VK_EXT_ خصوصی_ داده ها
- VK_EXT_shader_demote_ برای_کمک_کننده_نام
- VK_EXT_subgroup_size_control
- ترازبندی VK_EXT_texel_buffer
- VK_EXT_texture_compression_astc_hdr
- VK_EXT_tooling_info
- فرمت های VK_EXT_ycbcr_2plane_444
- یک نوع شی جدید VkPrivateDataSlot اضافه کرد. 37 فرمان جدید و بیش از 60 ساختار اجرا شد.
- مشخصات SPIR-V 1.6 برای تعریف یک نمایش سایه زن میانی که برای همه پلتفرم ها جهانی است و می تواند هم برای گرافیک و هم برای محاسبات موازی استفاده شود، به روز شده است. SPIR-V شامل جداسازی یک مرحله کامپایل سایهزن جداگانه به یک نمایش متوسط است که به شما امکان میدهد برای زبانهای سطح بالا مختلف ایجاد کنید. بر اساس پیاده سازی های مختلف سطح بالا، یک کد میانی به طور جداگانه تولید می شود که می تواند توسط درایورهای OpenGL، Vulkan و OpenCL بدون استفاده از کامپایلر سایه زن داخلی استفاده شود.
- مفهوم پروفایلهای سازگاری مطرح شد. گوگل اولین کسی بود که یک پروفایل پایه برای پلتفرم آماده کرد. Androidکه تعیین سطح پشتیبانی دستگاه از ویژگیهای پیشرفته Vulkan فراتر از مشخصات Vulkan 1.0 را سادهتر میکند. برای اکثر دستگاهها، پشتیبانی از پروفایل بدون بهروزرسانیهای OTA حاصل خواهد شد.
یادآوری می کنیم که Vulkan API به دلیل ساده سازی شدید درایورها، انتقال تولید دستورات GPU به سمت برنامه، توانایی اتصال لایه های اشکال زدایی، یکسان سازی API برای پلتفرم های مختلف و استفاده از یک پیش کامپایل شده قابل توجه است. نمایش میانی کد برای اجرا در سمت GPU. برای اطمینان از کارایی و قابلیت پیشبینی بالا، Vulkan برنامههایی را با کنترل مستقیم بر عملیات GPU و پشتیبانی بومی از GPU Multi-threading ارائه میکند که سربار راننده را به حداقل میرساند و قابلیتهای سمت راننده را بسیار سادهتر و قابل پیشبینیتر میکند. به عنوان مثال، عملیاتی مانند مدیریت حافظه و مدیریت خطا، که در OpenGL در سمت راننده پیادهسازی شدهاند، به سطح برنامه در Vulkan منتقل میشوند.
ولکان تمام پلتفرمهای موجود را پوشش میدهد و یک API واحد برای دسکتاپ، موبایل و وب ارائه میدهد که یک API واحد و مشترک را در بین GPUها و حوزههای مختلف برنامه فعال میکند. معماری چندلایه ولکان، که امکان ایجاد ابزارهایی را فراهم میکند که با هر GPU کار میکنند، به تولیدکنندگان سختافزار اجازه میدهد تا از ابزارهای مشترک برای بررسی کد، اشکالزدایی و پروفایلبندی در طول توسعه استفاده کنند. برای ایجاد سایهزن، یک نمایش واسطهای قابل حمل (IR) جدید به نام SPIR-V ارائه میشود که مبتنی بر LLVM است و فناوریهای اصلی را با OpenCL به اشتراک میگذارد. برای مدیریت دستگاه و نمایشگر، ولکان رابط یکپارچهسازی سیستم پنجره (WSI) را ارائه میدهد که وظایف مشابهی را با EGL در OpenGL ES انجام میدهد. پشتیبانی از WSI در Wayland به صورت پیشفرض در دسترس است - همه برنامههای مبتنی بر ولکان میتوانند در یک محیط بدون تغییر اجرا شوند. سرورها ویلند. امکان کار از طریق WSI نیز فراهم شده است Android، X11 (با DRI3)، Windows، تایزن، macOS و آیاواس.
منبع: opennet.ru
