Chúng ta sẽ cần phải chờ xem AMD sẽ thương lượng như thế nào để Mantle không đem lại những tác động xấu lên thị trường như Glide đã từng làm
Hiện nay trên thị trường đồ họa PC, 3 cái tên nắm nhiều quyền lực nhất vẫn là AMD, Intel và NVIDIA. Liệu các hãng sinh sản game có phải một lần nữa phân tán nhân lực của mình để phát triển đồng thời các phiên bản game trên nền Mantle và Direct3D – đồng nghĩa với việc chất lượng bản game Direct3D sẽ phải đi xuống? Việc phát triển một API cấp thấp hoàn chỉnh không thể xong trong 1 sớm một chiều, và cũng không có vẻ rằng NVIDIA và Intel cũng sẽ cấp chạy theo cuộc đua này khiến cho thị trường xáo động.
Cách tiếp cận của Mantle hoàn toàn ngược lại. Cả hai máy console sắp ra mắt này đều có vi xử lí hoạt động dựa trên kiến trúc GCN, đồng nghĩa với việc AMD đóng vai trò cực lớn trong việc phát triển chúng – không chỉ trong phạm vi phần cứng mà còn có sự can hệ không nhỏ với hệ thống phần mềm, tức các game đi kèm.
Cách tiếp cận này không phải quá phức tạp, và cũng không phải mới được thí nghiệm lần đầu, nhưng cũng khá lâu rồi ngành công nghiệp PC mới xuất hiện một “tay chơi” dám thực hành điều này. Và thực bụng mà nói thì cho tới giờ giới lập trình game, cả những người đảm nhiệm mảng phần cứng và phần mềm đều chưa bao giờ bằng lòng với tốc độ thực thi draw calls trên PC.
Một tiếng tăm lớn khác của ngành công nghiệp vi xử lí đồ họa thời bấy giờ là 3dfx cũng có một bộ API cấp thấp cho riêng các phần cứng của mình mang tên Glide. Khoảng cuối thập kỷ 90 của thế kỷ trước. Nhìn vào các phân tích trong phần 2, người ta có thể lầm tưởng làm thêm 1 phiên bản module đồ họa riêng cho các GPU GNC của AMD bằng cách dùng lại các dòng code viết trên nền Mantle API là rất đơn giản, thậm chí hầu như thường phải làm gì
Chí ít đó là những gì mà hãng này đang cố tả trong những thông báo cung cấp cho giới truyền thông. Tham khảo: Anandtech. Chúng chỉ được thống nhất với nhau bởi các đề nghị tính năng mà Microsoft đã định ra trong Direct3D. Cũng do vậy mà Glide lúc đó rất được các lập trình viên ưa chuộng, đến mức mà có những thời khắc game mới ra mắt chỉ tương trợ mỗi Glide (tức chỉ chạy trên nền phần cứng của hãng 3dfx) hoặc nếu có phiên bản dựa trên Direct3D, OpenGL thì chất lượng cũng kém hơn so với phiên bản dùng Glide.
Bộ API này đi sâu hạ tầng hết mức có thể, đưa các dòng code của lập trình viên đến gần với thiết bị phần cứng hơn bao giờ hết.
Lúc này các hãng lập trình game trên Xbox One có thể dễ dàng đem phần code đồ họa đã được viết cho console lên PC để tận dụng lại, hơn nữa lại vẫn tận dụng được các lợi thế về mặt hiệu năng khi dùng API cấp thấp (ít ra là cho các GPU GNC của AMD).
Xét cho cùng, để có thể lột tả hết những gì mà các họa sĩ thiết kế dự định trình bày, các vật thể cần được xử lí càng tách biệt và chi tiết càng tốt.
Nếu không có sự tồn tại của các bộ API như Direct3D và OpenGL, việc chúng ta có thể dễ dàng tận hưởng mọi thể loại game trên phần đông nền tảng phần cứng như hiện giờ hầu như là bất khả thi, bởi mỗi máy PC có một cấu hình khác nhau.
Giờ đây khi mà Direct3D đã già cỗi và các trở ngại về hiệu năng như trong phần 1 ngày một gây phiền phức cho giới lập trình, sự xuất hiện của Mantle thực thụ là cần thiết. Direct3D được hoàn thiện và lên ngôi vua API trên thị trường PC. Về căn bản, các API cấp cao như Direct3D hay OpenGL đều phải đánh đổi các lợi thế đã nói ở trên với một phần hiệu năng.
Các giải pháp tình thế của DirectX như việc gộp chung một cụm cây trên bản đồ của các game chiến thuật vào thành một đối tượng (object) độc nhất để chỉ phải thực hiện một draw call cho cả cụm đó vẫn sẽ hoàn toàn không đủ trong tương lai sắp tới
Tuy hãng có hẹn rằng sẽ biểu lộ cụ thể các chi tiết kỹ thuật của Mantle tại AMD Developer Summit vào tháng 11 tới, nhiều cây bút của các trang tin công nghệ hiện đã đang phát sốt vì những đổi thay mà bộ API này có thể mang lại. Nhưng ngược lại người dùng card ATI (sau này thuộc về AMD) và NVIDIA hẳn nhiên sẽ không lấy gì làm vui vẻ, thậm chí đôi lúc gần như bị bỏ rơi.
Để tạo ra một frame hình có thể cần tới hàng trăm thậm chí hàng ngàn draw calls (đặc biệt đối với các game 3D bối cảnh rộng), việc sắp đặt các thông báo cần thiết cho việc render và gửi đi một draw calls sẽ tốn một khoảng thời gian khăng khăng. Cũng chính nên, sau này người ta coi sự lụi tàn của Glide và sự sụp đổ của 3dfx hồi 2002 là tin tốt cho toàn ngành công nghiệp.
Mối liên hệ với console Chúng ta đã nhắc sơ qua về lợi thế của việc lập trình game console trong phần thứ nhất. Còn trên PC? Chỉ ở mức 2 - 3000 là các lập trình viên đã phải vật lộn với sự cắt giảm mạnh về hiệu năng do API cấp cao gây ra. V. Một trong số những vấn đề thường gặp nhất là vấn đề về draw calls (tạm dịch: lệnh gọi vẽ), lệnh đề nghị GPU tiến hành render một vật thể. Hiện thời Mantle mới chỉ được hiểu là một bộ dụng cụ giúp các lập trình viên tiếp cận hơn với nền tảng phần cứng đồ họa trên PC.
Chí ít thì cho đến giờ khắc này, Mantle đã có một khởi đầu khá tốt đẹp. Các API cấp cao vẫn có thể được dùng cho các công việc đơn giản, các công việc đòi hỏi nhiều sức mạnh xử lí từ phần cứng vẫn luôn phải được hiện trên các API cấp thấp. Đối với các chuyên gia, mọi công việc từ cai quản bộ nhớ, quản lí trạng thái của các đối tượng trong game
Hiện AMD là nhà cung cấp APU cho cả hai dòng máy được chuộng Xbox One và PS4. Câu hỏi đặt ra là, với cùng một nền móng kiến trúc vi xử lí, liệu có lí do nào để AMD – thay vì port thẳng các API này từ console lên PC – lại đi phát triển các bộ API cho từng hệ máy biệt lập hay không? Tuy hãng chưa đưa ra câu giải đáp chính thức, nhưng câu trả lời mà rất nhiều chuyên gia trong ngành tin tưởng.
Nếu Mantle chỉ đơn giản cung cấp khả năng tiếp cận gần hơn với kiến trúc GPU GCN của AMD, nó sẽ chỉ đơn giản.
Đều trở thành dễ dàng và có lí hơn nếu họ hoàn toàn nắm được việc các dòng code của mình tương tác với phần cứng như thế nào – mặc dù điều này cũng đồng nghĩa với khối lượng công việc nhiều hơn tí chút. Kiến trúc đồ họa của mỗi hãng là hoàn toàn khác nhau, thậm chí tùy theo khoảng cách về tuổi đời mà các dòng sản phẩm của cùng một hãng cũng có thể khác nhau một trời một vực.
Cụ thể hơn, chính AMD chứ không ai khác sẽ phải cung cấp các driver và API mà các nhà lập trình game cho các máy này sẽ cần dùng để tận dụng hết các sức mạnh xử lí của phần cứng trên đó.
Một trong những Studio tăm tiếng nhất của cả ngành công nghiệp game - DICE của EA – đã nhận vai trò tiên phong trong việc ứng dụng Mantle vào trong phần tiếp theo của tựa game đình đám Battlefield. Ngoài việc làm ẩn đi sức mạnh xử lí thực sự của phấn cứng, tách nó khỏi tầm kiểm soát của các lập trình viên, bản thân quá trình trừu tượng hóa của các API này cũng có những tác động không nhỏ lên hiệu năng.
Nhưng để tránh đi vào vết xe đổ của Glide, câu hỏi cần đặt ra là liệu Mantle có tác dụng gì cho người dùng NVIDIA và Intel hay không. V. Các bộ API về xử lí đồ họa mà chúng ta thường gặp như OpenGL hay Direct3D có mức trừu tượng hóa cao hơn, cắt giảm bớt khối lượng công việc mà các lập trình viên game và đồ họa phải thực hiện – cũng như cho phép chúng hoạt động trên nhiều loại nền móng phần cứng khác nhau.
Nhìn vào hình minh họa, nhiều người có thể lầm tưởng hiệu năng đã được cải thiện đáng kể trên DirectX 10? Nhưng thực tiễn đáng buồn là từ trước tới giờ số lượng draw calls mà một GPU high-end thực thụ có thể xử lí (render) vẫn luôn lớn hơn nhiều lần so với số lực draw calls mà nó nhận được tại bất kỳ thời điểm nào
Thời khắc này có thể nói ngành công nghiệp máy tính đã qua thuở nguyên sơ, nhưng các API cấp cao với khả năng trừu tượng hóa mạnh vẫn còn rất hiếm hoi, và Microsoft thì vẫn còn đang vật lộn hoàn thiện Direct3D.
Tác hại của API cấp thấp Khác biệt lớn nhất của các máy console với PC là sự đồng nhất. Nói một cách chuẩn xác và đầy đủ, Mantle là một bộ API cấp thấp chuyên dùng cho kiến trúc Graphic Core Next của AMD.
Nói chuẩn xác hơn, các lãnh đạo của AMD không ngu ngơ đến mức đột nhiên một ngày đẹp trời nổi hứng bảo nhau phát triển Mantle rồi mới tính cách mời gọi các hãng game sử dụng API của mình.
Việc được tương tác trực tiếp đến phần cứng là điều không mấy khó khăn cho các lập trình viên console, trong đó kiến trúc phần cứng hầu như là nhất mực – đặc biệt là với các máy console đời cũ khi mà hãng sinh sản sẽ luôn muốn cho phép các lập trình viên tận dụng mọi khả năng xử lí của phần cứng. Từ trước tới giờ trên console, thực tiễn thì các API cấp cao và cấp thấp vẫn thường được dùng cùng lúc.
Để tổng kết lại cho buổi giới thiệu sản phẩm hôm 24/9 mới rồi, AMD có đưa ra một số giới thiệu khá ngắn gọn về bộ API (application programming interface) mới nhất mang tên Mantle của mình.
Lập trình viên Ngay cả khi những lợi thế của Mantle đã là vô cùng rõ ràng, khả năng thành công của API này vẫn chưa phải là tuyệt đối. Trước mắt, người dùng VGA của 3dfx có hiệu năng tốt hơn, nhiều tính năng hơn và ít lỗi hơn. Cách xử lí thường gặp trước giờ vẫn là vắt giảm bớt số lượng draw calls – nhưng với nhu cầu ngày một tăng cao về mặt đồ họa, điều này càng ngày càng lộ rõ nhiều nhược điểm.
Câu hỏi đặt ra là, liệu AMD có thuyết phục nổi giới lập trình viên ưu ái mình đến vậy hay không? Và câu giải đáp, theo như các thông báo mà AMD cung cấp thời kì gần đấy, thật may mắn là có.
Rút cuộc Mantle có gì đặc biệt và liệu nó có thực sự có thể thay đổi cách các lập trình viên làm việc với vi xử lí đồ họa? Hãy cùng điểm qua các phân tích của chuyên trang AnandTech về vấn đề này
Về mặt lợi. Điều này dẫn đến kết luận rằng Mantle – dù được giới thiệu là sản phẩm cho PC – bản tính chính là bộ API cấp thấp của Xbox One được AMD port lên PC. Không, Mantle ra đời bởi suốt bao lâu nay giới lập trình đã kêu gào khản cổ yêu cầu các hãng sản xuất đồ họa PC cung cấp cho họ một bộ API cấp thấp để thỏa sức “vắt kiệt” tiềm năng xử lí của phần cứng - và AMD đã quyết định đáp.
Lúc này việc các hãng phát triển game có thể tập trung mọi nguồn lực vào một API độc nhất vô nhị đã đem đến kết quả tốt hơn cho quờ quạng người dùng thay vì phân tán sức lực vào các cách render khác nhau cho từng nền tảng phần cứng khác nhau.
Kết luận: Mantle là một trong các API cấp thấp hiếm hoi loại bỏ hầu hết việc trừu tượng hóa, cho phép lập trình viên tiếp cận gần hơn với phần cứng và loại bỏ các vấn đề thường gặp trên API cấp cao như giới hạn số lượng draw call. Tuy thực tế chẳng thể phủ nhận rằng AMD chỉ là nắm một phần trên miếng bánh đồ họa PC (đồng nghĩa với Mantle chẳng thể hoàn toàn thay thế Direct3D) nhưng ít nhất đây cũng là một bước tiến đáng kể khi cung cấp cho các lập trình viên một phương án để tận dụng lại các dòng code cấp thấp hiệu năng cao của mình, điều mà trước đây hầu như bất khả thi.
Nếu những thông báo AMD cung cấp là thật, chúng ta sẽ sớm thấy hàng loạt tựa game gán mác Mantle ra mắt trên thị trường. Nhưng rất tiếc các dòng mã lệnh cấp thấp không hoạt động đơn giản như vậy, ngay cả khi Mantle trên PC và trên console gần như là một thì khối lượng công việc mà các lập trình viên phải thực hiện cho riêng phiên bản này vẫn lớn hơn việc chỉ làm một bản Direct3D rất nhiều lần.
Tuy nhiên mối liên quan của Mantle với các máy console có nhiều điều để nói hơn thế. Kể cả sau khi Microsoft và các đối tác sử dụng Direct3D khác đã cải thiện đáng kể điều này khi nâng cấp từ DirectX 9 lên DirectX 10.
Trên các máy console, người ta hiện có thể render 10000 – 20000 đối tượng trên mỗi khung hình và vẫn đạt mức 30-60 fps tùy theo chất lượng. Cách nhìn này nâng tầm vai trò của Mantle lên thêm một bậc. Nhưng trên PC, do sự đa dạng của các kiến trúc GPU, các API cấp cao vẫn luôn chiếm ưu thế.
Khi port game từ console lên PC, các hãng game vốn thắt phải có một phiên bản module đồ họa xây dựng trên nền API Direct3D nếu muốn game của mình chạy được với nhiều mẫu VGA khác nhau.