Tags:
OpenGL

ในงาน SIGGRAPH 2013 ซึ่งเป็นงานประชุมด้านคอมพิวเตอร์กราฟฟิกที่จะมีทั้งผู้ผลิตฮาร์ดแวร์ ซอฟต์แวร์ และนักวิจัยจากหลาย ๆ มหาวิทยาลัยเข้ามาร่วมสัมนากัน ทาง Khronos Group ซึ่งเป็นผู้กำหนดคุณลักษณะของ API ต่าง ๆ หลายตัว ได้ประกาศเปิดตัวมาตรฐาน OpenGL เวอร์ชัน 4.4, OpenCL เวอร์ชัน 2.0 และ OpenCL SPIR

OpenGL 4.4

ฟีเจอร์ใหม่ของ OpenGL 4.4 นั้นจะเป็นฟีเจอร์ระดับล่าง ๆ โดยส่วนขยายตัวที่เด่น ๆ ที่ถูกเข้ามารวมอยู่ในแกนของ OpenGL เวอร์ชั่นนี้นั้นก็มี

  • ARB_buffer_storage - ส่วนขยายเกี่ยวกับ buffer โดยจะเพิ่มเรื่อง immutable storage ซึ่งทำให้ buffer ไม่ถูกทำลายหรือขยาย/ลดขนาดลง นอกจากนี้ยังรองรับการระบุว่าจะสร้าง buffer บนพื้นที่ส่วนไหนของระบบ (หน่วยความจำหลัก, หน่วยความจำบน gpu, ฯลฯ)
  • ARB_enhanced_layouts - ส่วนขยายเกี่ยวกับลักษณะ layout ของโครงสร้างข้อมูลที่ใช้ในโปรแกรม shader

นอกจากฟีเจอร์ใหม่ของแกนของ OpenGL แล้ว ยังมีส่วนขยายอย่างเป็นทางการใหม่ ๆ เพิ่มเข้ามาด้วย เช่น

  • ARB_sparse_texture - ส่วนขยายที่รองรับการเก็บเท็กซ์เจอร์เฉพาะส่วนที่จำเป็นต้องใช้งานจริง ๆ
  • ARB_bindless_texture - ส่วนขยายที่ทำให้ไม่จำเป็นต้องผูกเทกซ์เจอร์เข้ากับ slot ก่อนที่จะถูกใช้งาน นอกจากนั้นแล้วยังทำให้โหลดเทกซ์เจอร์ได้มากขึ้นเพราะไม่ถูกจำกัดด้วยจำนวน slot ที่มีอยู่ในระบบ

OpenCL SPIR

OpenCL เป็น API ที่เกี่ยวกับการคำนวณทั่วไปบน GPU (หรือที่เรียกว่า GPGPU) ซึ่งเปิดตัวมาตั้งแต่ปี 2008 ส่วน OpenCL SPIR (ย่อมาจาก Standard Portable Interface Representation) นั้นเป็นส่วนขยายของ OpenCL ที่จะเป็นรูปแบบกลางของโปรแกรมที่เขียนด้วย OpenCL ทำให้โปรแกรมที่ถูกคอมไพล์บนแพลตฟอร์มหนึ่งสามารถนำไปใช้บนอีกแพลตฟอร์มหนึ่งได้ เพราะว่าโค้ดนั้นจะถูกคอมไพล์ให้ไปอยู่ในรูปของ SPIR ซึ่งแพลตฟอร์มที่รองรับมาตรฐานนี้สามารถอ่านและนำไปประมวลผลได้นั่นเอง (ถ้านึกไม่ออกก็นึกถึง Java byte code หรือ .NET IL ก็ได้ครับ)

SPIR ถูกสร้างขึ้นบนพื้นฐานของ LLVM และตัวคอมไพเลอร์นั้นถูกสร้างบน CLang อีกทีหนึ่งครับ

OpenCL 2.0

สำหรับเวอร์ชั่นหลักที่สองของ OpenCL นั้นเน้นการรองรับสถาปัตยกรรมระบบแบบ HSA (Heterogeneous System Architecture) ซึ่งโดยพื้นฐานแล้วเป็นการทำงานร่วมกันระหว่าง CPU และ GPU ในระบบ โดยฟีเจอร์ใหม่ก็ได้แก่

  • shared virtual memory ซึ่งทำให้ CPU และ GPU สามารถเข้าถึงข้อมูลชุดเดียวกันได้ (โดยไม่ต้องทำสำเนา)
  • dynamic parallelism รองรับการสร้าง kernel (เป็นวัตถุที่แทนฟังก์ชั่นใน OpenCL) ย่อย ๆ ได้จาก kernel ใด ๆ
  • generic address space ทำให้สามารถเขียนฟังก์ชั่นแล้วเข้าถึง address space (เป็นการระบุว่าตัวแปรนี้มีที่มาจากหน่วยความจำส่วนไหนของระบบ) ใด ๆ ก็ได้ เมื่อเทียบกับ OpenCL 1.x ที่ผู้เขียนจะต้องระบุว่าพารามิเตอร์ที่ส่งเข้าไปนั้นต้องมาจาก address space ไหน และต้องเขียนฟังก์ชั่นใหม่เพื่อรองรับ address space ที่แตกต่างกัน

ที่มา: AnandTech

Comments

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 22/07/13 22:17 #600350 toggle
mr_tawan's picture

ย่อหน้าแรกผมลอกมาจากข่าวนี้ครับ ถ้าอ่านแล้วคุ้นก็อย่าตกใจนะครับ 555


By: tekkasit
ContributorAndroidWindowsIn Love
tekkasit's blog
on 22/07/13 22:50 #600360 toggle
tekkasit's picture

เวอร์ชั่น => เวอร์ชัน, สร้า่ง buffer => สร้าง buffer, และำไปประมวลผล => และนำไปประมวลผล, นอกจานั้นแล้ว => นอกจากนั้นแล้ว, โค๊ด => โค้ด, ครัีบ => ครับ, .Net => .NET, คำนวน => คำนวณ, กราฟฟิค => กราฟิก, ซอฟท์แวร์ => ซอฟต์แวร์

By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 23/07/13 4:26 #600412 Reply to:600360 toggle
mr_tawan's picture

หมดแล้วมั้งครับ ขอบคุณครับ


By: mr_tawan
ContributoriPhoneAndroidWindows
mr_tawan's blog
on 23/07/13 21:07 #600775 toggle
mr_tawan's picture

ที่ Khronos Group มีการ refer กลับมาข่าวนี้ด้วย 555

คนที่นั่นเขาอ่านแล้วคงคิดว่า ไอ้นี่เขียนอะไรอ่านไม่รู้เรื่องเลยแหง ๆ


By: Virusfowl
ContributorAndroidSymbianWindows
Virusfowl's blog
on 25/07/13 13:55 #601604 toggle
Virusfowl's picture
  • สัมนา > สัมมนา

@ Virusfowl

I'm not a dev. not yet a user.