Collabora یک افزونه برای اجرای OpenCL و OpenGL در بالای DirectX ایجاد می کند

شرکت Collabora ارایه شده یک درایور گالیوم جدید برای Mesa، که لایه ای را برای سازماندهی کار OpenCL 1.2 و OpenGL 3.3 API در بالای درایورهای پشتیبانی کننده DirectX 12 (D3D12) پیاده سازی می کند. کد منتشر شد تحت مجوز MIT

درایور پیشنهادی به شما امکان می دهد از Mesa در دستگاه هایی استفاده کنید که به طور بومی از OpenCL و OpenGL پشتیبانی نمی کنند و همچنین به عنوان نقطه شروعی برای انتقال برنامه های OpenGL/OpenCL برای اجرا در بالای D3D12. برای تولیدکنندگان GPU، زیرسیستم امکان پشتیبانی از OpenCL و OpenGL را فراهم می کند، در صورتی که فقط درایورهایی با پشتیبانی از D3D12 در دسترس باشند.

از جمله برنامه های فوری می توان به موفقیت کامل در تست های سازگاری OpenCL 1.2 و OpenGL 3.3، بررسی سازگاری با برنامه ها و گنجاندن پیشرفت ها در ترکیب اصلی Mesa اشاره کرد. توسعه به طور مشترک با مهندسان مایکروسافت در حال توسعه انجام می شود باز کردن ابزار D3D11On12 برای انتقال بازی ها از D3D11 به D3D12 و کتابخانه لایه ترجمه D3D12، که گرافیک های اولیه استاندارد را در بالای D3D12 پیاده سازی می کند.

این پیاده سازی شامل درایور گالیوم، کامپایلر OpenCL، زمان اجرا OpenCL و کامپایلر سایه زن NIR-to-DXIL است که نمایش متوسط ​​سایه زن های NIR مورد استفاده در Mesa را به فرمت باینری DXIL (DirectX Intermediate Language) تبدیل می کند که در DirectX 12 پشتیبانی می شود و بر اساس آن LLVM 3.7 بیت کد (DirectX Shader Compiler مایکروسافت اساساً یک فورک توسعه یافته LLVM 3.7 است. کامپایلر OpenCL بر اساس پیشرفت های پروژه و ابزار LLVM تهیه شده است SPIRV-LLVM.

منابع با پسوند OpenCL با استفاده از clang به شبه کد میانی LLVM (LLVM IR) کامپایل می‌شوند، که سپس به یک نمایش میانی از هسته‌های OpenCL در قالب SPIR-V تبدیل می‌شود. هسته‌های موجود در نمایش SPIR-V به Mesa منتقل می‌شوند، به فرمت NIR ترجمه می‌شوند، بهینه‌سازی می‌شوند و به NIR-to-DXIL ارسال می‌شوند تا سایه‌زن‌های محاسباتی با فرمت DXIL تولید کنند، مناسب برای اجرا بر روی GPU با استفاده از زمان اجرا مبتنی بر DirectX 12.
به جای Clover، اجرای OpenCL مورد استفاده در Mesa، یک زمان اجرا OpenCL جدید پیشنهاد شده است که امکان تبدیل مستقیم بیشتری به DirectX 12 API را فراهم می کند.

Collabora یک افزونه برای اجرای OpenCL و OpenGL در بالای DirectX ایجاد می کند

درایورهای OpenCL و OpenGL با استفاده از رابط گالیوم ارائه شده در Mesa آماده شده اند، که به شما امکان می دهد بدون وارد شدن به جزئیات خاص OpenGL درایور ایجاد کنید و تماس های OpenGL را در اصل به گرافیک های اولیه ای که پردازنده های گرافیکی مدرن بر روی آنها کار می کنند نزدیک تر ترجمه کنید. درایور گالیوم، دستورات OpenGL و هنگام استفاده از مترجم NIR-به-DXIL را می پذیرد
بافرهای دستوری را ایجاد می کند که با استفاده از درایور D3D12 روی GPU اجرا می شوند.

منبع: opennet.ru

اضافه کردن نظر