پس از دو سال کار، کنسرسیوم استانداردهای گرافیکی Khronos مشخصات Vulkan 1.3 را منتشر کرد که یک API برای دسترسی به گرافیک و قابلیت های محاسباتی GPU ها تعریف می کند. مشخصات جدید شامل اصلاحات و تمدیدات انباشته شده در طول دو سال است. لازم به ذکر است که الزامات مشخصات Vulkan 1.3 برای تجهیزات گرافیکی کلاس OpenGL ES 3.1 طراحی شده است که پشتیبانی از API گرافیکی جدید را در تمام GPUهایی که از Vulkan 1.2 پشتیبانی می کنند تضمین می کند. ابزار Vulkan SDK قرار است در اواسط فوریه منتشر شود. علاوه بر مشخصات اصلی، برنامه ریزی شده است که افزونه های اضافی برای دستگاه های موبایل و دسکتاپ میان رده و رده بالا ارائه شود که به عنوان بخشی از نسخه "Vulkan Milestone" پشتیبانی می شود.
در همان زمان، طرحی برای اجرای پشتیبانی از مشخصات جدید و افزونههای اضافی در کارتهای گرافیک و درایورهای دستگاه ارائه شده است. اینتل، AMD، ARM و NVIDIA در حال آماده شدن برای عرضه محصولاتی با پشتیبانی از Vulkan 1.3 هستند. به عنوان مثال، AMD اعلام کرد که به زودی از Vulkan 1.3 در سری کارت های گرافیک AMD Radeon RX Vega و همچنین در تمام کارت های مبتنی بر معماری AMD RDNA پشتیبانی خواهد کرد. NVIDIA آماده انتشار درایورهایی با پشتیبانی از Vulkan 1.3 برای لینوکس و ویندوز است. ARM پشتیبانی از Vulkan 1.3 را به GPU های مالی اضافه می کند.
نوآوری های اصلی:
- پشتیبانی از پاسهای رندر ساده شده (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 بدون استفاده از کامپایلر سایه زن داخلی استفاده شود.
- مفهوم پروفایل های سازگاری پیشنهاد شده است. گوگل اولین کسی است که یک نمایه پایه برای پلتفرم اندروید منتشر می کند، که تعیین سطح پشتیبانی از قابلیت های پیشرفته Vulkan را در دستگاهی فراتر از مشخصات Vulkan 1.0 آسان تر می کند. برای اکثر دستگاهها، پشتیبانی از نمایه میتواند بدون نصب بهروزرسانیهای OTA ارائه شود.
یادآوری می کنیم که Vulkan API به دلیل ساده سازی شدید درایورها، انتقال تولید دستورات GPU به سمت برنامه، توانایی اتصال لایه های اشکال زدایی، یکسان سازی API برای پلتفرم های مختلف و استفاده از یک پیش کامپایل شده قابل توجه است. نمایش میانی کد برای اجرا در سمت GPU. برای اطمینان از کارایی و قابلیت پیشبینی بالا، Vulkan برنامههایی را با کنترل مستقیم بر عملیات GPU و پشتیبانی بومی از GPU Multi-threading ارائه میکند که سربار راننده را به حداقل میرساند و قابلیتهای سمت راننده را بسیار سادهتر و قابل پیشبینیتر میکند. به عنوان مثال، عملیاتی مانند مدیریت حافظه و مدیریت خطا، که در OpenGL در سمت راننده پیادهسازی شدهاند، به سطح برنامه در Vulkan منتقل میشوند.
Vulkan همه پلتفرمهای موجود را پوشش میدهد و یک API واحد برای دسکتاپ، موبایل و وب ارائه میکند، که اجازه میدهد از یک API مشترک در چندین GPU و برنامه استفاده شود. به لطف معماری چند لایه Vulkan، که به معنای ابزارهایی است که با هر GPU کار می کنند، OEM ها می توانند از ابزارهای استاندارد صنعتی برای بررسی کد، اشکال زدایی و پروفایل در طول توسعه استفاده کنند. برای ایجاد سایه زن، یک نمایش میانی قابل حمل جدید، SPIR-V، پیشنهاد شده است که بر اساس LLVM و به اشتراک گذاری فناوری های هسته با OpenCL است. برای کنترل دستگاه ها و صفحه نمایش ها، Vulkan رابط WSI (یکپارچه سازی سیستم پنجره) را ارائه می دهد که تقریباً همان مشکلات EGL را در OpenGL ES حل می کند. پشتیبانی WSI در Wayland در دسترس است - همه برنامههایی که از Vulkan استفاده میکنند میتوانند در محیطی از سرورهای Wayland اصلاح نشده اجرا شوند. قابلیت کار از طریق WSI برای اندروید، X11 (با DRI3)، ویندوز، تایزن، macOS و iOS نیز ارائه شده است.
منبع: opennet.ru