Phát hành Mesa 21.2, triển khai miễn phí OpenGL và Vulkan

Sau ba tháng phát triển, bản phát hành triển khai miễn phí API OpenGL và Vulkan, Mesa 21.2.0, đã được xuất bản. Bản phát hành đầu tiên của nhánh Mesa 21.2.0 có trạng thái thử nghiệm - sau khi mã ổn định lần cuối, phiên bản ổn định 21.2.1 sẽ được phát hành.

Mesa 21.2 có hỗ trợ OpenGL 4.6 đầy đủ cho trình điều khiển 965, iris (Intel), radeonsi (AMD), zink và llvmpipe. Hỗ trợ OpenGL 4.5 có sẵn cho GPU AMD (r600) và NVIDIA (nvc0) và OpenGL 4.3 cho virgl (GPU ảo Virgil3D cho QEMU/KVM). Hỗ trợ Vulkan 1.2 có sẵn cho thẻ Intel và AMD, cũng như ở chế độ giả lập (vn), hỗ trợ Vulkan 1.1 có sẵn cho GPU Qualcomm và trình rasterizer phần mềm lavapipe, và Vulkan 1.0 cho GPU Broadcom VideoCore VI (Raspberry Pi 4).

Những đổi mới chính:

  • Trình điều khiển OpenGL asahi được bao gồm trong hỗ trợ ban đầu cho GPU được cung cấp trong chip Apple M1. Trình điều khiển sử dụng giao diện Gallium và hỗ trợ hầu hết các tính năng của OpenGL 2.1 và OpenGL ES 2.0, nhưng chưa phù hợp để chạy hầu hết các trò chơi. Mã trình điều khiển dựa trên trình điều khiển Gallium tham chiếu noop, với một số mã được chuyển từ trình điều khiển Pan Frost được phát triển cho GPU ARM Mali.
  • Trình điều khiển Crocus OpenGL đi kèm với sự hỗ trợ cho các GPU Intel cũ hơn (dựa trên vi kiến ​​trúc Gen4-Gen7) không được trình điều khiển Iris hỗ trợ. Không giống như trình điều khiển i965, trình điều khiển mới dựa trên kiến ​​trúc Gallium3D, kiến ​​trúc này giao nhiệm vụ quản lý bộ nhớ cho trình điều khiển DRI trong nhân Linux và cung cấp trình theo dõi trạng thái được tạo sẵn với sự hỗ trợ cho bộ nhớ đệm tái sử dụng đối tượng đầu ra.
  • Trình điều khiển PanVk được bao gồm, cung cấp hỗ trợ API đồ họa Vulkan cho GPU ARM Mali Midgard và Birost. PanVk được phát triển bởi các nhân viên của Collabora và được định vị là sự tiếp nối sự phát triển của dự án Pan Frost, dự án cung cấp hỗ trợ cho OpenGL.
  • Trình điều khiển Pan Frost cho GPU Midgard (Mali T760 trở lên) và GPU Bifrof (Mali G31, G52, G76) hỗ trợ OpenGL ES 3.1. Các kế hoạch tiếp theo bao gồm công việc nhằm tăng hiệu suất trên chip Birost và hỗ trợ GPU dựa trên kiến ​​trúc Valhall (Mali G77 trở lên).
  • Bản dựng 32 bit cho kiến ​​trúc x86 sử dụng hướng dẫn sse87 thay vì hướng dẫn x2 để tính toán.
  • Trình điều khiển Nouveau nv50 cho GPU NVIDIA GT21x (GeForce GT 2x0) hỗ trợ OpenGL ES 3.1.
  • Trình điều khiển TURNIP Vulkan và trình điều khiển Freedreno OpenGL được phát triển cho GPU Qualcomm Adreno có hỗ trợ ban đầu cho GPU Adreno a6xx gen4 (a660, a635).
  • Hỗ trợ loại bỏ nguyên thủy bằng cách sử dụng công cụ đổ bóng NGG (Hình học thế hệ tiếp theo) đã được thêm vào trình điều khiển Vulkan RADV (AMD). Triển khai khả năng xây dựng trình điều khiển RADV trên nền tảng Windows bằng trình biên dịch MSVC.
  • Trình điều khiển ANV Vulkan (Intel) và trình điều khiển Iris OpenGL đã được chuẩn bị để hỗ trợ các card đồ họa Intel Xe-HPG (DG2) sắp tới. Điều này bao gồm các tính năng ban đầu liên quan đến dò tia và hỗ trợ đổ bóng cho dò tia.
  • Trình điều khiển lavapipe với việc triển khai trình rasterizer phần mềm cho API Vulkan (tương tự như llvmpipe, nhưng đối với Vulkan, dịch các lệnh gọi API Vulkan sang API Gallium) hỗ trợ chế độ "wideLines" (cung cấp hỗ trợ cho các dòng có chiều rộng lớn hơn 1.0 ).
  • Đã triển khai hỗ trợ để phát hiện động và tải các chương trình phụ trợ GBM (Trình quản lý bộ đệm chung) thay thế. Thay đổi này nhằm cải thiện khả năng hỗ trợ Wayland trên các hệ thống có trình điều khiển NVIDIA.
  • Trình điều khiển Zink (việc triển khai API OpenGL trên Vulkan cho phép bạn tăng tốc phần cứng OpenGL khi hệ thống có trình điều khiển bị giới hạn chỉ hỗ trợ API Vulkan) hỗ trợ các tiện ích mở rộng OpenGL GL_ARB_sample_locations, GL_ARB_sparse_buffer, GL_ARB_shader_group_vote, GL_ARB_texture_filter_minmax và GL_ARB_shader_clock. Đã thêm công cụ sửa đổi định dạng DRM (Trình quản lý kết xuất trực tiếp, bao gồm tiện ích mở rộng VK_EXT_image_drm_format_modifier).
  • Đã thêm hỗ trợ cho các tiện ích mở rộng cho trình điều khiển RADV (AMD), ANV (Intel) và lavapipe Vulkan:
    • VK_EXT_provoking_vertex (RADV);
    • VK_EXT_extends_dynamic_state2 (RADV);
    • VK_EXT_global_priority_query (RADV);
    • VK_EXT_physical_device_drm (RADV);
    • VK_KHR_shader_subgroup_uniform_control_flow (RADV, ANV);
    • VK_EXT_color_write_enable (RADV);
    • VK_EXT_acquire_drm_display (RADV, ANV);
    • VK_EXT_vertex_input_dynamic_state (ống dung nham);
    • VK_EXT_line_rasterization(lavapipe);
    • VK_EXT_multi_draw(ANV, ống dung nham, RADV);
    • VK_KHR_separate_deep_stencil_layouts (ống dung nham);
    • VK_EXT_separate_stencil_usage(lavapipe);
    • VK_EXT_extends_dynamic_state2 (ống dung nham).

Nguồn: opennet.ru

Thêm một lời nhận xét