Khronos GDC 2015 新消息:Vulkan 與 OpenCL 2.1

| | 0 Comments| 15:36
Categories:

這篇算是簡單整理一下 Khronos 在 GDC 2015 發表的一些消息。今年 Khronos 發表的消息,主要是下一代的 OpenGL、「Vulkan」,以及 OpenCL 兩個部分;而實際上,繪圖和計算這兩部分,看來已經越來越一體化了。

整體性的介紹,可以參考官方的投影片:Khronos GDC Press Briefing : Mar15.pdf


在 3D 繪圖 API 的部分,Khronos 終於發表了下一代的 OpenGL(GLnext)、其名稱為「Vulkan」,他的官方網站是:

https://www.khronos.org/vulkan

他基本上是一個和舊有 OpenGL 不相容,針對現代化的 GPU 架構的新的跨平台、開放標準的 3D 繪圖 API。不過這個 API 目前還沒有正式推出、目前還在發展中,這次也只是簡單展示而已。

而會這樣砍掉重鍊的原因,主要應該是為了拋棄舊有 OpenGL、老舊的 render pipline 的包袱,讓繪圖 API 可以更適合現代化的 GPU。下面就是官方希望 Vulkan 可以達成的目標:

  • Clean, modern architecture
  • Multi-thread / multicore-friendly
  • Greatly reduced CPU overhead
  • Architecture-neutral – full support for tile-based as well as direct renderers
  • Predictable performance through explicit control
  • Improved reliability and consistency between implementations

下圖就是官方提供,Vulkan 和舊有的 OpenGL / OpenGL ES 的差異比較。

更詳細的資料,則可以參考:

另外值得一提的是,Vulkan 這個新的 API 似乎算是繼承 AMD Mantle(官網)而來的;在官方投影片裡面,也有一張大大的「Thanks AMD」,旁邊就是 Mantle 的標示。在 AMD 的官方部落格裡,也有提到「The cross-vendor Khronos Group has chosen the best and brightest parts of Mantle to serve as the foundation for "Vulkan"」(文章)。

總之,目前這個 API 還沒定案,一般應該也還沒有可以支援的裝置,所以就繼續等吧~


在計算、也就是 OpenCL 的部分,則是發表了 OpenCL 2.1 的 Provisional Specification。(官網

OpenCL 2.1 最大的特色,是提供了新的 OpenCL C kernel language!而這邊的 OpenCL C kernel language 基本上是 C 14 的子集合,理論上之後會可以更方便地來撰寫 OpenCL 的 Kernel 了。

至於在 OpenCL C 裡面所移除的 C 14 的功能,則包括了:

  • Throwing and catching exceptions (throw, catch)
  • Allocation and release of memory (new, delete)
  • Virtual functions and abstract classes (virtual)
  • Function pointers, Recursion and goto

除此之外,在 OpenCL 的 API 上,也做了一定程度的改進。更詳細的資料,可以參考下面的資料:


而前面有提到,在繪圖和計算這兩個方面,已經越來越一體化了,會這樣說主要是因為現在 Khronos 又提出了新一代的「SPIR-V」(Standard Portable Intermediate Representation)這個中繼語言、用來作為 OpenCL Kernel、Vulkan 的 Shader 到更底層的中繼。

他的官方網站是:https://www.khronos.org/spir

理論上,藉由 SPIR-V 的存在,各家廠商應該都可以定義自己的語言,來實作 OpenCL kernel 和 Vulkan 的 shader 了~或許以後在開發上,可以更有彈性吧?

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *