Home > Windows 7, กราฟิกการ์ด, ซอฟต์แวร์, บทความ > เจาะลึก WARP 10 การสร้างภาพ 3D โดยการใช้พลังการประมวลผลจากซีพียู


เจาะลึก WARP 10 การสร้างภาพ 3D โดยการใช้พลังการประมวลผลจากซีพียู

April 19th, 2009

BIG-PIC

หนึ่งในความพยายามของไมโครซอฟท์ที่จะพัฒนาระบบปฏิบัติการ Windows 7 ก็คือ ต้องการใช้คอมพิวเตอร์ระดับล่างที่ไม่ได้มีกราฟิกการ์ดระดับสูงสามารถทำงานร่วมกับอินเทอร์เฟซแบบ Aero Glass ได้ ซึ่งก่อนหน้านี้เองไมโครซอฟท์ก็เคยมีปัญหาเรื่อง Aero Glass มาแล้วกับคอมพิวเตอร์จำนวนมากที่มีโลโก้คำว่า Vista Ready และ Vista Capable มาแล้ว นั่นก็คือฮาร์ดแวร์เหล่านั้นไม่สามารถรองรับการทำงานของวินโดวส์วิสต้าได้อย่างครบถ้วนในทุกคุณสมบัติ ซึ่งเรื่องนี้อาจจะเป็นการจงใจปกปิดจากผู้ค้าฮาร์ดแวร์เองก็เป็นได้ อย่างไรก็ตามไมโครซอฟต์ไม่ต้องการให้เกิดปัญหาในลักษณะดังกล่าวขึ้นมาอีก โดยเฉพาะในเรื่องของการเปิดใช้ความสามารถแบบ Aero Glass โดยล่าสุดไมโครซอฟท์ได้ทำการพัฒนาเทคโนโลยีที่เรียกว่า WARP ขึ้นมาเพื่อป้องกันแก้ปัญหาดังกล่าวไม่ให้กลับมาเกิดขึ้นอีกเมื่อวินโดวส์ 7 ออกสู่ตลาด

ซึ่งอันที่จริงแล้วเป้าหมายหลักของเทคโนโลยี WARP ที่ไมโครซอฟท์สร้างขึ้นมานั้นมันไม่ใช่เพียงแค่เรื่องของทำให้เราสามารถใช้ Aero Glass ของ Windows 7 บนฮาร์ดแวร์ระดับล่างเท่านั้น แต่ยังมีเป้าหมายไปยังแอพพลิเคชันใดๆ ที่ต้องการใช้ระบบกราฟิกบนเอนจินของ DirectX สามารถที่จะทำงานได้แม้ว่าคอมพิวเตอร์เครื่องนั้นจะไม่มี GPU อยู่เลยก็ตาม ส่วนรายละเอียดจะเป็นอย่างไรก็ต้องติดตามครับ

Component-Relation-500

ภาพแสดงความสัมพันธ์โดยพื้นฐานของระดับชั้น โดยชั้นบนสุดก็คือแอพพลิเคชันที่ผู้ใช้ทั่วไปใช้งาน ระดับต่อมาก็คือเรื่องของภาษาที่ใช้ในการเขียนแอพพลิเคชัน ลดลงมาอีกขั้นก็จะเป็นระดับของพวกไลบราลีของภาษาต่างๆ จากนั้นจึงจะเป็นส่วนของฮาร์ดแวร์

 

GDI-500

ลักษณะการเขียนแอพพลิเคชันพื้นฐานทั่วไปบนวินโดวส์ก็จะใช้ GDI (Graphics Design Interface) เป็นหลักแล้วจึงส่งข้อมูลให้เลเยอร์ของ DirectX

WARP คืออะไร?

WARP10 (Windows Advanced Rasterization Platform) คือส่วนประกอบล่าสุดที่เป็นส่วนหนึ่งของเทคโนโลยีกราฟิก DirectX ในวินโดวส์ 7 WARP10 เป็นซอฟต์แวร์ราสเตอร์ไรเซอร์ (rasterizer) ที่มีมาตรฐานซึ่งทำงานด้วยความเร็วสูง และเปิดตัวรุ่นเบต้าครั้งแรกใน DirectX SDK ประจำเดือนพฤศจิกายน 2008

ส่วนคำว่า Rasterization หรือ Rasterizer ก็คือกระบวนการแปลงข้อมูลที่อยู่ในรูปแบบของเวคเตอร์กราฟิก (Vector graphics) คือข้อมูลที่ประกอบไปด้วยขนาดและทิศทางให้มาอยู่ในรูปแบบของ Raster Image หรือพูดให้ง่ายกว่านั้นก็คือแปลงภาพแบบเว็คเตอร์ให้มาเป็นภาพแบบบิตแมพเพื่อใช้แสดงผลบนหน้าจอนั่นเอง

วัตถุประสงค์ของ WARP10

WARP10 มีเป้าหมายที่สำคัญหกประการ อันได้แก่

  1. เติมเต็มแพลตฟอร์มมีความสมบูรณ์
  2. แทนที่ความต้องการใช้ซอฟต์แวร์ราสเตอร์ไรเซอร์เฉพาะ
  3. ช่วยให้ใช้ฮาร์ดแวร์ได้อย่างเต็มสมรรถภาพ
  4. ช่วยให้สามารถสร้างภาพได้เมื่อไม่มีฮาร์ดแวร์ Direct3D 10 ให้ใช้งาน
  5. ยกระดับทรัพยากรสำหรับการสร้างภาพด้วยซอฟต์แวร์ที่มีอยู่แล้ว
  6. ทำให้ทำงานได้โดยไม่ต้องใช้ฮาร์ดแวร์กราฟิก

many-platform-500

แพลตฟอร์มของฮาร์ดแวร์ในปัจจุบันมีอยู่มากมาย ไมโครซอฟท์ต้องการให้ผู้พัฒนาแอพพลิเคชันสามารถที่จะเขียนแอพพลิเคชันเพียงครั้งเดียวโดยสามารถให้แอพพลิเคชันตัวนั้นรันบนแพลตฟอร์มที่มีความแตกต่างกันได้ แต่มีเงื่อนไขอยู่ว่าแพลตฟอร์มเหล่านั้นต้องรองรับการทำงานของ DirectX ไม่ว่าจะเป็นการรองรับในระดับฮาร์ดแวร์หรือซอฟต์แวร์ก็ตาม

เติมเต็มแพลตฟอร์มมีความสมบูรณ์

การเปลี่ยนแปลงที่สำคัญประการหนึ่งของ Direct3D 10 คือการขจัดความแตกต่างระหว่างการ์ดแสดงผลแต่ละแบบและสร้างความมั่นใจว่าการ์ด Direct3D 10 ทุกตัวจะมีคุณสมบัติเหมือนกันและผ่านการรับรองจากไมโครซอฟท์ อันช่วยให้นักพัฒนาได้รับประโยชน์ของความสามารถทุกประการของการ์ดแสดงผลอันหลากหลายและช่วยรับประกันว่าแอพพลิเคชันมีลักษณะเหมือนกันทุกประการแม้ว่าผู้ใช้จะใช้การ์ดแสดงผลที่ต่างกันไป เราสามารถเร่งสมรรถภาพของแอพพลิเคชันเหล่านี้ได้ง่าย ๆ ด้วยการปิดการทำงานของกราฟิกที่ละเอียดบนการ์ดแสดงผลระดับล่างหรือสร้างภาพโดยตั้งเป้าหมายให้เล็กลง WARP10 ทุ่มเทให้กับเป้าหมายเดียวกับ Direct3D 10 ด้วยการเปิดทางให้นักพัฒนาสามารถเข้าถึงคุณสมบัติกราฟิก Direct3D 10 ทั้งหมดแม้ว่าบนเครื่องนั้นจะไม่ได้มีการติดตั้งฮาร์ดแวร์กราฟิก Direct3D 10 ก็ตาม

 

D3D-WARP10-500 
โครงสร้างการทำงานของ DirectX และส่วนของ WARP 10 ใน Windows 7

แทนที่ความต้องการใช้ซอฟต์แวร์ราสเตอร์ไรเซอร์เฉพาะ

WARP ช่วยให้การพัฒนากระทำได้ง่ายขึ้นด้วยการขจัดเวลาที่ต้องใช้ในการสร้างซอฟต์แวร์ราสเตอร์ไรเซอร์เฉพาะและปรับแต่งแอพพลิเคชันให้เหมาะสมเพื่อใช้แทนฮาร์ดแวร์ การที่ WARP จัดหาซอฟต์แวร์ราสเตอร์ไรเซอร์สำหรับใช้งานทั่วไปที่มีมาตรฐานที่ชัดเจน ทำให้เราไม่มีความจำเป็นที่จะต้องเขียนอัลกอริธึมในการสร้างภาพแบบต่าง ๆ เพื่อให้สามารถทำงานบนฮาร์ดแวร์หรือซอฟต์แวร์ที่มีคุณสมบัติและความสามารถที่ต่างกัน นักพัฒนายังคงสามารถเลือกที่จะพัฒนาอัลกอริธึมแบบต่าง ๆ หากต้องการได้สมรรถภาพที่ดีขึ้นหรือยืดหยุ่นมากขึ้น อย่างไรก็ดี ไม่มีความจำเป็นจะต้องแก้ไข API หรือสถาปัตยกรรมในการสร้างภาพที่ใช้สำหรับพัฒนาอัลกอริธึมเหล่านี้ นักพัฒนาสามารถใส่ใจกับการสร้างแอพพลิเคชัน Direct3D 10 และมั่นใจว่ามันจะออกมามีหน้าตาเหมือนกันและทำงานได้ดีทั้งบนฮาร์ดแวร์และซอฟต์แวร์

ช่วยให้ใช้ฮาร์ดแวร์ได้อย่างเต็มสมรรถภาพ

เมื่อมีการปรับแต่งแอพพลิเคชันเพื่อให้ทำงานบนฮาร์ดแวร์ได้อย่างมีประสิทธิภาพ แอพพลิเคชันจะทำงานบน WARP ได้อย่างมีประสิทธิภาพเช่นกัน ในทางกลับกัน แอพพลิเคชันที่ผ่านการปรับแต่งให้ทำงานบน WARP10 ได้เป็นอย่างดีจะปฏิบัติการได้เป็นอย่างดีเมื่อทำงานบนฮาร์ดแวร์เช่นกัน การใช้ Direct3D 10 อย่างไม่มีประสิทธิภาพทำให้แอพพลิเคชันไม่สามารถเปล่งศักยภาพออกมาได้อย่างเต็มที่เมื่อทำงานบนฮาร์ดแวร์ต่าง ๆ WARP10 มีโพรไฟล์สมรรถภาพเหมือนกับฮาร์ดแวร์เป็นอย่างมาก ดังนั้นการปรับแต่งแอพพลิเคชันสำหรับการทำงานเป็นกลุ่มขนาดใหญ่, การลดการเปลี่ยนแปลงสถานะ, การขจัดจุดที่ทำไปพร้อมกันหรือล็อคจะก่อให้เกิดประโยชน์แก่ทั้งฮาร์ดแวร์และ WARP10

ช่วยให้สามารถสร้างภาพได้เมื่อไม่มีฮาร์ดแวร์ Direct3D 10 ให้ใช้งาน

WARP ช่วยให้เราสามารถสร้างภาพในสถานการณ์ต่าง ๆ เมื่อไม่มีฮาร์ดแวร์ให้ใช้ได้อย่างรวดเร็ว ซึ่งสถานการณ์เหล่านี้ประกอบด้วย

  • เมื่อผู้ใช้ไม่มีฮาร์ดแวร์ที่มีความสามารถ Direct3D
  • เมื่อเครื่องทำงานในลักษณะบริการหรือทำงานภาวะแวดล้อมในเซิร์ฟเวอร์
  • เมื่อไม่มีการติดตั้งการ์ดแสดงผล
  • เมื่อไม่สามารถใช้งานไดร์เวอร์แสดงผลหรือไดร์เวอร์ทำงานไม่ถูกต้อง
  • เมื่อมีหน่วยความจำไม่พอให้การ์ดแสดงผลใช้งาน, การ์ดแสดงผลหยุดทำงานหรือการ์ดแสดงผลใช้ทรัพยากรระบบในการเริ่มทำงานมากเกินไป

SDK-DOC-500 
DirectX Sample Browser โปรแกรมที่มาพร้อมกับชุด DircetX SDK ที่ช่วยให้นักพัฒนาเข้าถึงความสามารถใหม่ๆ ของ SDK แต่ละชุดได้ง่ายยิ่งขึ้น

ยกระดับทรัพยากรสำหรับการสร้างภาพด้วยซอฟต์แวร์ที่มีอยู่แล้ว

เนื่องจาก WARP10 มีการทำงานอยู่บนพื้นฐานของ DirectX ที่มีประชาคมขนาดมโหฬาร, หนังสือ, เว็บไซต์, SDK,ตัวอย่างและเอกสารรายละเอียดเจาะลึกจำนวนมากมาย รวมไปถึงทรัพยากรอื่น ๆ ที่ช่วยให้เราสามารถใช้ประโยชน์ของการสร้างภาพที่ใช้เฉดเดอร์ Direct3D 10 เมื่อใช้ WARP10 เราสามารถยกระดับความรู้ด้านฮาร์ดแวร์ที่มีอยู่แล้วเพื่อทำให้แอพพลิเคชันทำงานได้ดีขึ้นเมื่อทำงานด้วยฮาร์ดแวร์หรือซอฟต์แวร์ นอกจากนี้ยังมีเครื่องมีอันยอดเยี่ยมหลายตัวของผู้ผลิตการ์ดแสดงผลและใน DirectX SDK ที่เราสามารถนำมาใช้เพื่อช่วยในการออกแบบ, สร้าง, พัฒนา, ดีบักและวิเคราะห์สมรรถภาพของแอพพลิเคชันกราฟิก เราสามารถใช้เครื่องมือและความรู้เหล่านี้มาก่อให้เกิดประโยชน์ในการพัฒนาแอพพลิเคชันที่ทำงานทั้งบนฮาร์ดแวร์และซอฟต์แวร์เมื่อใช้ WARP10

ทำให้ทำงานได้โดยไม่ต้องใช้ฮาร์ดแวร์กราฟิก

WARP10 นั้นถูกออกแบบมาเพื่อให้อัลกอริธึมและแอพพลิเคชันต่าง ๆ ดังเช่น อัลกอริธึมในการประมวลผลภาพ, การพิมพ์, การทำงานแบบรีโมต, พีซีเสมือนและเทคโนโลยีเสมือนอื่น ๆ, การสร้างฟอนต์คุณภาพสูง, แผนภาพ, กราฟ เหมาะสมกับการทำงานของซีพียูเนื่องจากมันไม่ได้ต้องการหรือไม่สามารถใช้คุณสมบัติเฉพาะของฮาร์ดแวร์ WARP10 ก่อให้เกิดสถาปัตยกรรมเดี่ยวที่รองรับงานเหล่านี้ และยังคงความสามารถในการใช้ประโยชน์จากตัวเร่งความเร็วฮาร์ดแวร์หากมีให้ใช้

สรุปความสามารถของ WARP

สนับสนุนคุณสมบัติของ Direct3D 10 และ 10.1 อย่างสมบูรณ์แบบ

  • สนับสนุนระดับความละเอียดของมาตรฐาน Direct3D 10 และ 10.1 ทุกระดับอย่างสมบูรณ์แบบ
  • สนับสนุน Direct3D 11 เมื่อใช้กับ FeatureLevel 9_1, 9_2, 9_3, 10_0 และ 10_1
  • สนับสนุนรูปแบบพื้นผิวตัวเลือกทุกแบบ เช่น การสร้างภาพหลายเป้าหมายและการสร้างภาพจากพื้นผิวที่ลอยอยู่
  • สนับสนุนการสร้างภาพคุณภาพสูงและ anti-aliased สูงถึง 8x MSAA
  • สนับสนุนการกรองแบบ anisotropic
  • สนับสนุนแอพพลิเคชัน 32 และ 64 บิตรวมทั้งแอพพลิเคชัน 32 บิตที่ใช้แอดเดรสขนาดใหญ่

ความต้องการต่ำสุดสำหรับ WARP10 เหมือนกับวินโดวส์วิสต้า อันได้แก่

  • ซีพียูขั้นต่ำ 800 MHz
  • “ไม่”ต้องการ MMX, SSE หรือ SSE2
  • หน่วยความจำขั้นต่ำ 512 MB

วิธีการใช้ WARP

ในชุด SDK รุ่นเบต้าของ Direct3D 10, 10.1 และ 11 ที่ออกมาเมื่อเดือนพฤศจิกายนมีไดร์เวอร์แบบเพิ่มเติมที่เรียกว่า D3D10_DRIVER_TYPE_WARP ที่สามารถนำมาใช้กับ CreateDevice เพื่อสร้างอุปกรณ์ WARP10 โดยไม่มีการใช้งานอุปกรณ์ฮาร์ดแวร์

DirectX SDK ประจำเดือนพฤศจิกายนประกอบด้วยราสเตอร์ไรเซอร์ WARP10 เวอร์ชันเบต้า เนื่องจาก WARP10 ใช้ซอฟต์แวร์อินเทอร์เฟซไปยัง Direct3D แบบเดียวกับที่ราสเตอร์ไรเซอร์อ้างอิงใช้ ดังนั้นแอพพลิเคชัน Direct3D 10 หรือ 10.1 ที่สามารถทำงานกับราสเตอร์ไรเซอร์อ้างอิงจึงสามารถทดสอบกับ WARP10 โดยเปลี่ยนชื่อ D3D10WARP.DLL ไปเป็น D3D10REF.DLL และนำไปวางในโฟลเดอร์เดียวกับโปรแกรมตัวอย่างหรือแอพพลิเคชัน จากนั้นเมื่อเปลี่ยนไปใช้ระบบอ้างอิง เราจะเห็นการสร้างภาพด้วย WARP10

หากเรานำไฟล์ D3D10Ref.dll ของ WARP10 ที่ผ่านการเปลี่ยนชื่อมาแล้วไปใส่ไว้ใน C:\Program Files (x86)\Microsoft DirectX SDK (November 2008)\Samples\C++\Direct3D\Bin\x86 โปรแกรม DirectX ตัวอย่างทุกตัวสามารถทำงานกับ WARP10 ด้วยการคลิกปุ่ม Toggle Ref ในโปรแกรมตัวอย่างหรือเรียกใช้โปรแกรมด้วยพารามิเตอร์ /ref บนแถวคำสั่ง

ลำดับความสำคัญในการพัฒนา

  • ไมโครซอฟท์จัดลำดับความสำคัญในการพัฒนา WARP เป็นดังนี้
  • การทำงานตามมาตรฐาน, ความมีเสถียรภาพ, ความน่าเชื่อถือ
  • สมรรถภาพ
  • การใช้หน่วยความจำ

เป้าหมายหลักระหว่างการพัฒนา WARP10 คือการสร้างราสเตอร์ไรเซอร์ที่อย่างน้อยตรงตามมาตรฐานของ Direct3D 10 และ 10.1 โดยยังคงมีความน่าเชื่อถือสูงและมีเสถียรภาพสูง เนื่องจากต้องมีการใช้ราสเตอร์ไรเซอร์นี้เมื่อไม่มีฮาร์ดแวร์ให้ใช้ จึงมีความสำคัญที่มันต้องทำงานได้ทุกสถานการณ์, ทุกรูปแบบและทุกเครื่อง เมื่อสามารถทำได้ตามมาตรฐานเหล่านี้ หลังจากคำนึงเรื่องมาตรฐานแล้ว สมรรถภาพเป็นเป้าหมายที่สำคัญถัดไป ซึ่งต้องการความมั่นใจว่ามีสมรรถภาพที่น่าประทับใจ สามารถดึงพลังทั้งหมดของซีพียูสมัยใหม่ออกมาใช้ได้อย่างเต็มที่โดยไม่มีผลกระทบต่อความเร็ว ไมโครซอฟท์ตัดสินใจว่าจะไม่มีการเปิดตัว API ใหม่, ไฟล์คอนฟิกุเรชันหรือกุญแจรีจิสตรีเพื่อเปิด, ปิดหรือปรับแต่งความสามารถต่าง ๆ ของ WARP10 เพราะคิดว่า API ของ Direct3D 10 มีตัวเลือกคอนฟิกุเรชันที่เพียงพอสำหรับนักพัฒนาในการปรับแต่งแอพพลิเคชันเพื่อใช้กับซอฟต์แวร์ราสเตอร์ไรเซอร์อย่างมีประสิทธิภาพมากขึ้นโดยไม่ต้องสร้างคุณสมบัติใหม่ใน API

เนื่องจากทีมพัฒนา WARP10 ใช้สถาปัตยกรรมสร้างภาพแบบหน่วง อันทำให้มักมีงานที่มีนัยสำคัญเพิ่มเติมเพื่อช่วยให้คอร์ซีพียูหลายตัวสามารถทำงานแบบขนานโดยมีการเข้าจังหวะเพียงเล็กน้อย ซึ่งประสิทธิภาพที่ทำได้ในการทำงานแบบมัลติเธรดมีความสัมพันธ์กับปริมาณหน่วยความจำที่ต้องใช้ ดังนั้นทีมพัฒนาจึงพยายามปรับปริมาณการใช้หน่วยความจำให้มีความสมดุลอย่างสมเหตุสมผลโดยยังคงทำได้ตรงตามเป้าหมายประสิทธิภาพในการปรับสเกล นอกจากนี้ยังมีการใช้ทรัพยากรของหน่วยความจำบางส่วนของโครงสร้างข้อมูลภายในหรือการจัดเก็บทรัพยากรราสเตอร์ไรเซชันในรูปแบบที่เหมาะแก่ซีพียู ซึ่งได้มีการปรับแต่งให้มีประสิทธิภาพเท่าที่จะเป็นไปได้

กลุ่มเป้าหมายของ WARP10

ลูกค้าเป้าหมายสำหรับ WARP10 คือ แอพพลิเคชันทุกตัวที่สามารถใช้ Direct3D 10 หรือ 10.1 อันประกอบด้วย

  • เกมแคชวล : เกมประเภทนี้มีความต้องการสร้างภาพอย่างเรียบง่ายแต่ยังคงต้องการความสามารถในการใช้เอฟเฟกต์พิเศษที่น่าประทับใจซึ่งสามารถใช้ฮาร์ดแวร์เพื่อเร่งความเร็วในการทำงาน เกมที่ขายดีที่สุดบนวินโดวส์คือเกมจำลองสถานการณ์หรือเกมแคชวล ซึ่งทั้งสองแบบไม่ได้ต้องการกราฟิกสมรรถภาพสูง แต่ต้องการใช้ประโยชน์จากกราฟิกที่ใช้เฉดเดอร์สมัยใหม่และความสามารถในการปรับสเกลบนฮาร์ดแวร์หากมีให้ใช้
  • แอพพลิเคชันซึ่งไม่ใช่เกมที่มีอยู่แล้ว : มีแอพพลิเคชันกราฟิกจำนวนมากที่ต้องการลดจำนวนเส้นทางโค้ดในชั้นสร้างภาพซึ่ง WARP10 ช่วยให้แอพพลิเคชันเหล่านี้สามารถสร้างเส้นทางโค้ด Direct3D 10, 10.1 เพียงชุดเดียวซึ่งสามารถทำงานกับเครื่องแบบต่าง ๆ จำนวนมากมาย
  • เกมที่มีการสร้างภาพขั้นสูง : ทีมพัฒนาเชื่อว่าเกมทุกเกมรวมทั้งเกมที่ใช้กราฟิกอย่างหนักจะได้รับประโยชน์จากความสามารถในการสร้างภาพโดยใช้ WARP เพื่อตรวจสอบความถูกต้องการภาพที่สร้างขึ้นมาว่าเกิดความผิดพลาดจากการสร้างภาพหรือปัญหาของฮาร์ดแวร์หรือไดรเวอร์

ดังที่ได้กล่าวมาแล้วว่า กลุ่มเป้าหมายของ WARP ยังรวมไปถึงผู้ที่อาจไม่ได้ใช้ Direct3D 10 หรือ 10.1 ในปัจจุบัน อันหมายความว่า มันรวมไปถึงแอพพลิเคชันที่ต้องการให้ทำงานได้กับทุกเครื่อง, แอพพลิเคชันประมวลผลภาพที่ไม่ต้องการเขียนอัลกอริธึมสำหรับประมวลผลภาพบนซีพียูและจีพียู, อัลกอริธึมประมวลผลภาพที่ไม่ได้สนใจเรื่องความเร็วหรือการใช้พลังของจีพียูดังเช่น การพิมพ์, การจำลองการทำงาน, สภาพแวดล้อมเสมือนที่สามารถแสดงผลกราฟิกสามมิติขั้นสูง

เป้าหมายในการเปิดตัว WARP10 รุ่นเบต้าที่มาพร้อมกับ SDK ประจำเดือนพฤศจิกายนคือ การส่งมอบราสเตอร์ไรเซอร์ของ WARP10 ให้อยู่ในมือนักพัฒนา ซึ่งทางไมโครซอฟท์มั่นใจว่า ขณะนี้การพัฒนาได้มาถึงจุดที่ตรงตามมาตรฐานระดับสูงและกำลังมุ่งไปสู่การปรับปรุงสมรรถภาพและการปรับสเกลสำหรับซีพียูหลายคอร์ ซึ่ง WARP10 รุ่นจริงที่จะมาพร้อมกับวินโดวส์ 7 จะมีความแตกต่างกับรุ่นเบต้าในเรื่องสมรรถภาพที่เพิ่มขึ้นรวมทั้งประสิทธิภาพในการปรับสเกลและมาตรฐานที่ได้รับแจ้งเพิ่มเติมหลังจากเปิดตัวรุ่นเบต้าให้ทดลองใช้

สถาปัตยกรรม

WARP10 มีรากฐานมาจากราสเตอร์ไรเซอร์อ้างอิง ดังนั้นจึงใช้ซอฟต์แวร์อินเทอร์เฟซแบบเดียวกับทั้ง Direct3D 10 และ DXGI โดย WARP10 มาพร้อมกับวินโดวส์ 7 ในรูปของ DLL ที่ชื่อว่า D3D10WARP.DLL ซึ่งอยู่ในโฟลเดอร์ระบบ WARP10 สำหรับเครื่อง 64 บิตมีสองรุ่นคือ x86 และ x64 ซึ่งรุ่น x64 อาจทำงานได้เร็วกว่าในบางสถานการณ์เนื่องจากตัวสร้างโค้ดที่อยู่ใน WARP สามารถใช้ประโยชน์จากรีจิสเตอร์เพิ่มเติมที่มีให้ใช้เมื่อทำงานกับแอพพลิเคชัน 64 บิต

WARP10 มีลักษณะการทำงานสองแบบ แบบแรกคือเรียลไทม์คอมไพเลอร์ซึ่งเป็นภาษาตัวกลางระดับสูงที่แปลงไบต์โค้ด HLSL และสถานะการสร้างภาพปัจจุบันให้เป็นสตรีมที่เหมาะสมของคำสั่งเวคเตอร์สำหรับสเตจ GS, VS และ PS ของไปป์ไลน์ แบบที่สองคือตัวสร้างโค้ด Just-In-Time สมรรถภาพสูงที่สามารถนำคำสั่งเหล่านี้มาสร้างโค้ดแอสเซมบลี้ SSE2, SSE4.1, x86 หรือ x64

WARP10 ใช้เธรดพูล, การจัดการงานที่ซับซ้อนและการติดตามการพึ่งพากันของระบบปฏิบัติการวิสต้าเพื่อช่วยให้ไปป์ไลน์ในการสร้างภาพทุกส่วนสามารถกระจายการทำงานไปยังคอร์ซีพียูทุกตัวอย่างมีประสิทธิภาพ และใช้สถาปัตยกรรมสร้างภาพแบบหน่วงซึ่งมีการรวมคำสั่งสร้างภาพเป็นกลุ่มก้อนแล้วทำการราสเตอร์ไรซ์เมื่อมีข้อมูลเพียงพอสำหรับใช้ทรัพยากรซีพียูทั้งหมดอย่างมีประสิทธิภาพเท่านั้น มีการลดการทำงานบนแอพพลิเคชันหลักลงเพื่อช่วยให้แอพพลิเคชันสามารถส่งคำสั่งได้เร็วเท่าที่จะเป็นได้ หากแอพพลิเคชันทำงานแบบมัลติเธรดและยังเลือกใช้เธรดพูลของระบบปฏิบัติการวิสต้า จะมีการกระจายงานระหว่าง WARP10 และแอพพลิเคชัน

ตัวสร้างโค้ด WARP10 ผ่านการปรับแต่งให้ใช้สถาปัตยกรรมซีพียูของเครื่องสมัยใหม่ได้เป็นอย่างดี WARP10 สามารถทำงานบนเครื่องทุกเครื่องที่ใช้วินโดวส์วิสต้ารวมไปถึงเครื่องที่ไม่สนับสนุน SSE แต่ WARP10 จะทำงานได้ดีที่สุดบนเครื่องที่สนับสนุน SSE2 นอกจากนี้ WAP10 ยังผ่านการปรับแต่งให้เหมาะสมกับสถาปัตยกรรมและสมรรถภาพที่ต่างกันระหว่างโปรเซสเซอร์ของเอเอ็มดีและอินเทลรวมทั้งการสนับสนุนส่วนขยายของ SSE 4.1 ซีพียู Phenom รุ่นใหม่ของเอเอ็มดีและ Penryn สี่คอร์ของอินเทลสามารถใช้งาน WARP10 ได้อย่างมีประสิทธิภาพสูงมาก และเป็นที่คาดหมายว่าเครื่องหลายโปรเซสเซอร์และแพลตฟอร์มในอนาคตจะมีประสิทธิภาพดียิ่งขึ้น

WARP10 ไม่ได้ต้องการฮาร์ดแวร์กราฟิกในการทำงาน อันก่อให้เกิดประโยชน์เพิ่มเติมหลายประการเพราะช่วยให้ WARP10 สามารถทำงานในสถานการณ์ที่ไม่มีฮาร์ดแวร์กราฟิกให้ใช้

การปฏิบัติตามมาตรฐาน

WARP10 ผ่านการทดสอบมาตรฐาน WHQL ทุกตัวที่ใช้เพื่อตรวจสอบความถูกต้องของอุปกรณ์ฮาร์ดแวร์ Direct3D และ WARP10 ยังผ่านการทดสอบแอพพลิเคชัน Direct3D 10 และ 10.1 รวมทั้งโปรแกรมทดสอบและตัวอย่าง SDK ของ DirectX, NVIDIA และเอเอ็มดี

WARP10 ใช้ PIX for Windows อย่างเต็มที่ระหว่างการทดสอบ มีการจับภาพเฟรมเดี่ยวของแอพพลิเคชันจำนวนมากเพื่อเปรียบเทียบผลลัพธ์ระหว่างฮาร์ดแวร์กับ WARP10 ภาพส่วนใหญ่ที่ได้ของ WARP10 เกือบเหมือนกับภาพที่สร้างด้วยฮาร์ดแวร์ โดยพบความแตกต่างเพียงเล็กน้อยซึ่งยังคงอยู่ภายในมาตรฐาน Direct3D 10

 

Crysis-500 
Crysis เกมไมโครซอฟท์ใช้ในการทดสอบประสิทธิภาพในการทำงานของ WARP10

สมรรถภาพ

แอพพลิเคชันและโปรแกรมตัวอย่างที่ถูกออกแบบและสร้างมาเพื่อทำงานบนฮาร์ดแวร์ Direct3D 10 โดยไม่ได้คำนึงถึง WARP10 ควรทำงานได้เป็นอย่างดีเมื่อใช้ WARP10 อย่างไรก็ดี เราควรลดข้อกำหนดคุณภาพและความละเอียดให้ต่ำสุดเท่าที่จะทำได้เพื่อให้ได้อัตราเฟรมที่รับได้ หากนักพัฒนาคำนึงถึงความสามารถและสมรรถภาพของ WARP10 จะมีความเป็นไปได้ที่จะพัฒนาและปรับแต่งแอพพลิเคชันเพื่อให้ทำงานได้ดีทั้งกับฮาร์ดแวร์และซอฟต์แวร์

ในระหว่างการพัฒนา WARP10 ทีมพัฒนาพยายามหลีกเลี่ยงการปรับแต่งโดยกำหนดเส้นทางที่เร็ว (fast path optimizations) ที่อาจช่วยเพิ่มความเร็วให้แก่โปรแกรมทดสอบหรือแอพพลิเคชันบางตัวแต่อาจก่อให้เกิดความสับสนแก่นักพัฒนาหากเห็นสมรรถภาพที่แตกต่างกันอย่างมากเมื่อปรับแต่งแอพพลิเคชันเพียงเล็กน้อย

เนื่องจาก WARP10 สามารถใช้คอร์ซีพียูหลายตัวได้เป็นอย่างดี สมรรถภาพที่ดีที่สุดของราสเตอร์ไรเซอร์จึงแสดงออกมาเมื่อใช้กับซีพียูสี่คอร์สมัยใหม่ WARP10 ยังทำงานได้เร็วขึ้นบนเครื่องที่มีส่วนขยาย SSE4.1 นอกจากนี้ ยังได้มีการทดสอบและปรับแต่งสมรรถภาพบนเครื่องที่มีคอร์อย่างน้อยแปดตัวและ SSE4.1 มาพอควรเพราะไมโครซอฟท์เชื่อว่า เครื่องระดับบนเหล่านี้จะได้รับความนิยมแพร่หลายมากขึ้นในช่วงชีวิตของวินโดวส์ 7

เมื่อ WARP10 ทำงานบนซีพียู เราจะพบข้อจำกัดหลายประการเมื่อเทียบกับการทำงานบนการ์ดแสดงผล ความเร็วฟรอนท์ไซด์บัสของซีพียูมักไม่เกิน 10 GB ต่อวินาที ในขณะที่การ์ดแสดงผลมีหน่วยความจำเฉพาะที่มีแบนด์วิดธ์อย่างน้อย 20-100 GB ต่อวินาที ฮาร์ดแวร์กราฟิกยังมีหน่วยฟังก์ชันการทำงานตายตัวที่สามารถจัดการงานที่ซับซ้อนและยุ่งยากดังเช่น การกรองพื้นผิว, การคลายหรือแปลงฟอร์แมตแบบไม่พร้อมกันโดยมีการใช้ทรัพยากรระบบเพียงเล็กน้อย ในขณะที่การปฏิบัติการเหล่านี้บนซีพียูต้องใช้พลังงานมากกว่าและกระทบต่อสมรรถภาพมากกว่า

แอพพลิเคชัน Direct3D 10 จำนวนหนึ่งมีโหมดวัดผลภายในตัวซึ่งมีประโยชน์ระหว่างการพัฒนา WARP10 ทีมพัฒนา WARP10 นำแอพพลิเคชันเหล่านี้มาใช้งานเพื่อช่วยในการปรับแต่งสมรรถภาพของราสเตอร์ไรเซอร์ภายใต้สภาพการใช้งานจริง

ในตารางที่ 1 แสดงตัวอย่างที่ได้จากการทดสอบด้วยการเล่นเกม Crysis บน Direct3D 10 ที่ความละเอียด 800×600 โดยปรับแต่งข้อกำหนดคุณภาพทุกตัวให้ต่ำสุด

ซีพียู

เวลา

FPS เฉลี่ย

FPS ต่ำสุด

เฟรมต่ำสุด

FPS สูงสุด

เฟรมสูงสุด

Core i7 8 Core @ 3.0GHz

271.57

7.36

3.46

1966

15.01

995

Penryn 4 Core @ 3.0GHz

351.35

5.69

2.49

1967

10.95

980

Penryn 2 Core @ 3.0GHz

573.98

3.48

1.35

1964

6.61

988

Core 2 Duo @ 2.6GHz

707.19

2.83

0.81

1959

5.18

982

Core 2 Duo @ 2.4GHz

763.25

2.62

0.76

1964

4.70

984

Core 2 Duo @ 2.1GHz

908.87

2.20

0.64

1965

3.72

986

Xeon 8 Core @ 2.0GHz

424.04

4.72

1.84

1967

9.56

988

AMD FX74 4 Core @ 3.0GHz

583.12

3.43

1.41

1967

5.78

986

Phenom 9550 4 Core @ 2.2GHz

664.69

3.01

0.53

1959

5.46

987

ตารางที่ 1 การทดสอบด้วยการประมวลจากซีพียู

 

การ์ดแสดงผล

เวลา

FPS เฉลี่ย

FPS ต่ำสุด

เฟรมต่ำสุด

FPS สูงสุด

เฟรมสูงสุด

NVIDIA 8800 GTS

23.58

84.80

60.78

1957

130.83

1022

NVIDIA 8500 GT

47.63

41.99

25.67

1986

72.57

991

NVIDIA Quadro 290

67.16

29.78

18.19

1969

49.87

1017

NVIDIA 8400 GS

59.01

33.89

21.22

1962

51.82

1021

ATI 3400

53.79

37.18

22.97

618

59.77

1021

ATI 3200

67.19

29.77

18.91

1963

45.74

980

ATI 2400 PRO

67.04

29.83

17.97

606

45.91

987

กราฟิกชิปแบบรวมของอินเทลที่สนับสนุน DX10

386.94

5.17

1.74

1974

16.22

995

ตารางที่ 2 การทดสอบด้วยการใช้กราฟิกการ์ด

ตัวเลขสมรรถภาพที่เราได้จากเครื่อง Penryn 3.0 GHz สี่คอร์ของอินเทลแสดงให้เห็นว่า WARP10 ให้ผลลัพธ์ออกมาดีกว่าจีพียู Direct3D 10 แบบรวมระดับล่างในบางกรณี แต่เมื่อทดสอบกับฮาร์ดแวร์กราฟิกแบบแยกระดับล่าง จะพบว่าทำงานได้เร็วกว่า WARP10 4-5 เท่า ซึ่งจีพียูเหล่านี้ใช้ทรัพยากรซีพียูระดับต่ำเช่นกัน การ์ดแสดงผลระดับกลางหรือระดับบนจะทำงานได้เร็วกว่า WARP10 อย่างเห็นได้ชัดโดยเฉพาะเมื่อแอพพลิเคชันสามารถใช้ประโยชน์จากการประมวลผลแบบขนานและแบนด์วิดธ์หน่วยความจำของการ์ดแสดงผลเหล่านี้

เราไม่ได้คิดว่า WARP10 จะมาแทนที่ฮาร์ดแวร์กราฟิก โดยเฉพาะในเมื่อฮาร์ดแวร์กราฟิกแยก Direct3D 10 ระดับล่างมีราคาต่ำกว่า 25 เหรียญสหรัฐในปัจจุบัน เป้าหมายของ WARP10 คือการช่วยให้แอพพลิเคชันสามารถทำงานบนฮาร์ดแวร์ระดับ Direct3D 10 โดยไม่ต้องมีการเขียนเส้นทางโค้ดที่แตกต่างกันหรือการทดสอบที่ต่างกันเมื่อทำงานกับฮาร์ดแวร์หรือซอฟต์แวร์

เรียบเรียงจากบทความเรื่อง Windows Advanced Rasterization Platform (WARP) In-Depth Guide เว็บไซต์ Microsoft Developer Network (msdn.microsoft.com)

บทความที่เกี่ยวข้อง

Windows 7, กราฟิกการ์ด, ซอฟต์แวร์, บทความ , , ,

Reader:2344

  1. No comments yet.
  1. No trackbacks yet.