แพ็คเกจ wayland-protocols 1.42 ได้รับการเผยแพร่แล้ว ซึ่งประกอบด้วยชุดโปรโตคอลและส่วนขยายที่เสริมโปรโตคอล Wayland พื้นฐาน และมอบความสามารถที่จำเป็นสำหรับการสร้างเซิร์ฟเวอร์คอมโพสิตและสภาพแวดล้อมของผู้ใช้
Wayland-Protocols 1.42 แนะนำโปรโตคอล "cursor-shape" เวอร์ชันใหม่ซึ่งขยายความสามารถในการกำหนดรูปร่างของเคอร์เซอร์ และเพิ่มการรองรับสำหรับรูปร่างเคอร์เซอร์ด้วยตัวบ่งชี้การรับข้อมูล (เครื่องหมายคำถาม) และการเปลี่ยนแปลงขนาด นอกจากนี้ เวอร์ชันของโปรโตคอล "แท็บเล็ต" ยังได้รับการอัปเดตอีกด้วย ซึ่งเพิ่มโอกาสให้กับการจัดระเบียบอินพุตจากแท็บเล็ตกราฟิก โปรโตคอลแท็บเล็ตเวอร์ชันใหม่เพิ่มการรองรับสำหรับเหตุการณ์ "bustype" และเพิ่มความสามารถในการจัดการเหตุการณ์จากการควบคุมแบบหมุนด้วยการส่งการเปลี่ยนแปลงที่สัมพันธ์กันคล้ายกับการจัดการการเคลื่อนไหวของล้อเมาส์
โปรโตคอลทั้งหมดจะผ่านขั้นตอนการพัฒนา การทดสอบ และความเสถียรตามลำดับ หลังจากเสร็จสิ้นขั้นตอนการพัฒนา (หมวดหมู่ "ไม่เสถียร") โปรโตคอลจะถูกวางในสาขา "การแสดงละคร" และรวมอย่างเป็นทางการไว้ในชุดโปรโตคอลเวย์แลนด์ และหลังจากการทดสอบเสร็จสิ้น จะถูกย้ายไปยังหมวดหมู่ที่เสถียร โปรโตคอลจากหมวดหมู่ "การจัดเตรียม" สามารถใช้ได้แล้วในเซิร์ฟเวอร์คอมโพสิตและไคลเอนต์ที่จำเป็นต้องมีฟังก์ชันการทำงานที่เกี่ยวข้อง ต่างจากหมวดหมู่ "ไม่เสถียร" ใน "การแสดงละคร" ห้ามมิให้ทำการเปลี่ยนแปลงที่ละเมิดความเข้ากันได้ แต่หากมีการระบุปัญหาและข้อบกพร่องในระหว่างการทดสอบ การแทนที่ด้วยโปรโตคอลเวอร์ชันสำคัญใหม่หรือส่วนขยาย Wayland อื่นจะไม่ได้รับการยกเว้น
เพื่อเร่งความเร็วในการส่งมอบโปรโตคอลให้แก่นักพัฒนาและส่งเสริมการนำโปรโตคอลไปใช้ในระยะเริ่มต้นในโครงการที่มีอยู่ จึงได้เพิ่มเฟส "ทดลอง" ขึ้นมาโดยเริ่มตั้งแต่การเปิดตัวครั้งก่อน ซึ่งอนุญาตให้มีการเปลี่ยนแปลงที่ทำลายความเข้ากันได้ และเพิ่มโปรโตคอล "แบบดิบ" ที่สามารถปรับให้ค่อยๆ พัฒนาไปสู่ระดับที่เหมาะสมได้ ในขณะที่โปรโตคอลจำเป็นต้องจัดตั้งทีมสนับสนุนและรับคำยืนยันจำนวนหนึ่ง (ACK) จากผู้ตรวจสอบเพื่อเข้าสู่ระยะการจัดเตรียม แต่จำเป็นต้องไม่ได้รับการคัดค้าน (NACK) เฉพาะในช่วงระยะเวลาการตรวจสอบสองสัปดาห์เท่านั้นเพื่อเข้าสู่ระยะทดลอง
ปัจจุบันชุดโปรโตคอล wayland ประกอบด้วยโปรโตคอลที่เสถียรซึ่งเข้ากันได้แบบย้อนหลังดังต่อไปนี้:
- "viewporter" - อนุญาตให้ไคลเอนต์ดำเนินการปรับขนาดและครอบตัดที่ขอบของพื้นผิวในฝั่งเซิร์ฟเวอร์
- "เวลานำเสนอ" - แสดงวิดีโอ
- "xdg-shell" เป็นอินเทอร์เฟซสำหรับการสร้างและโต้ตอบกับพื้นผิวในรูปแบบหน้าต่าง ซึ่งช่วยให้คุณสามารถย้ายไปรอบๆ หน้าจอ ยุบ ขยาย ปรับขนาด ฯลฯ ได้
- "linux-dmabuf" - ให้ความสามารถในการสร้าง wl_buffers บนพื้นฐานของ DMA-BUF
- "แท็บเล็ต" - การจัดระเบียบอินพุตจากแท็บเล็ตกราฟิก
โปรโตคอลที่ทดสอบในสาขา "staging":
- drm-lease - จัดหาทรัพยากรที่จำเป็นในการสร้างภาพสเตอริโอที่มีบัฟเฟอร์ที่แตกต่างกันสำหรับตาซ้ายและขวาเมื่อแสดงบนหมวกกันน็อคเสมือนจริง
- "ext-session-lock" - กำหนดวิธีการล็อคเซสชัน เช่น ระหว่างการทำงานของโปรแกรมรักษาหน้าจอหรือเอาต์พุตของไดอะล็อกการรับรองความถูกต้อง
- "บัฟเฟอร์พิกเซลเดียว" - ให้คุณสร้างบัฟเฟอร์พิกเซลเดียวที่มีค่า RGBA 32 บิตสี่ค่า
- "xdg-activation" - ช่วยให้คุณถ่ายโอนโฟกัสระหว่างพื้นผิวต่างๆ ของระดับแรก (เช่น ใช้ xdg-activation แอปพลิเคชันหนึ่งสามารถเปลี่ยนโฟกัสไปยังอีกแอปพลิเคชันหนึ่งได้)
- ประเภทเนื้อหา - อนุญาตให้ไคลเอนต์ส่งผ่านข้อมูลเกี่ยวกับเนื้อหาที่แสดงผลไปยังเซิร์ฟเวอร์คอมโพสิต ซึ่งสามารถใช้เพื่อปรับพฤติกรรมการรับรู้เนื้อหาให้เหมาะสม เช่น การตั้งค่าคุณสมบัติเฉพาะ DRM เช่น "ประเภทเนื้อหา" มีการประกาศการสนับสนุนสำหรับประเภทเนื้อหาต่อไปนี้: ไม่มี (ไม่มีข้อมูลเกี่ยวกับประเภทข้อมูล), ภาพถ่าย (เอาต์พุตของภาพถ่ายดิจิทัลที่ต้องใช้การประมวลผลน้อยที่สุด), วิดีโอ (วิดีโอหรือภาพเคลื่อนไหว, จำเป็นต้องมีการซิงโครไนซ์ที่แม่นยำยิ่งขึ้นเพื่อขจัดอาการตะกุกตะกัก) และเกม (เริ่มเกม, ออกจากการหน่วงเวลาขั้นต่ำ)
- ext-idle-notify - อนุญาตให้เซิร์ฟเวอร์คอมโพสิตส่งการแจ้งเตือนการไม่ใช้งานของผู้ใช้ไปยังไคลเอนต์ ซึ่งสามารถใช้เพื่อเปิดใช้งานโหมดประหยัดพลังงานเพิ่มเติมหลังจากไม่มีการใช้งานในระดับหนึ่ง
- การควบคุมการฉีกขาด - ช่วยให้คุณสามารถปิดใช้งานการซิงโครไนซ์ในแนวตั้ง (VSync) ด้วยพัลส์การหน่วงแนวตั้งในแอปพลิเคชันแบบเต็มหน้าจอ ซึ่งใช้เพื่อป้องกันการฉีกขาดในเอาต์พุต ในแอปพลิเคชันมัลติมีเดีย สิ่งประดิษฐ์เนื่องจากการฉีกขาดเป็นผลที่ไม่พึงประสงค์ แต่ในโปรแกรมเกม สิ่งประดิษฐ์สามารถยอมรับได้หากการจัดการกับสิ่งเหล่านั้นทำให้เกิดความล่าช้าเพิ่มเติม
- ext-foreign-toplevel-list - ดึงข้อมูลเกี่ยวกับพื้นผิวที่วางอยู่ที่ระดับบนสุด ซึ่งช่วยให้คุณสามารถจัดระเบียบหน้าต่างเพื่อเทียบเคียงกับเนื้อหาอื่น ๆ ได้ เช่น เพื่อแนบแผงและสวิตช์หน้าต่างของคุณเอง
- บริบทความปลอดภัย - ช่วยให้คุณระบุไคลเอนต์โดยใช้การแยกแซนด์บ็อกซ์ ลูกค้าสามารถลงทะเบียนการเชื่อมต่อใหม่กับเซิร์ฟเวอร์คอมโพสิตที่ใช้ Wayland และแนบบริบทความปลอดภัยเข้าไป หลังจากนั้นตัวจัดการคอมโพสิตจะจำกัดความสามารถที่มีให้กับการเชื่อมต่อที่สร้างขึ้นตามบริบทความปลอดภัยที่ระบุ
- รูปร่างเคอร์เซอร์เป็นอีกทางเลือกหนึ่งในการปรับแต่งรูปลักษณ์ของเคอร์เซอร์ โดยอิงจากการส่งชุดรูปภาพของเคอร์เซอร์แทนที่จะจัดชิดบนพื้นผิว (wl_surface)
- “ที่นั่งเสริมชั่วคราว” - ออกแบบมาเพื่อสร้างเซสชันอิสระชั่วคราว (ที่นั่ง) ที่ออกแบบมาเพื่อใช้กับอุปกรณ์อินพุตเสมือน ตัวอย่างเช่น เมื่อใช้ความสามารถในการเชื่อมต่อกับเดสก์ท็อประยะไกล โปรโตคอลจะอนุญาตให้คุณสร้างเซสชันแยกต่างหากสำหรับผู้ใช้แต่ละคนด้วยแป้นพิมพ์และเมาส์เสมือน
- "xdg-toplevel-drag" - ขยายกลไก "ลากและวาง" ด้วยความสามารถในการแนบหน้าต่างระดับบนสุดกับการลากซึ่งสามารถใช้เพื่อจัดระเบียบการลากแถบเครื่องมือหรือแท็บเบราว์เซอร์ด้วยเมาส์ โปรโตคอลใหม่ช่วยให้คุณสร้างส่วนที่ถอดออกได้ของหน้าต่าง ซึ่งเมื่อลากจากหน้าต่างนั้น จะกลายเป็นหน้าต่างใหม่ และสามารถย้ายไปไว้ด้านบนของหน้าต่างที่มีอยู่ก่อนจะติดตั้งใหม่อีกครั้ง
- "xdg-dialog" - ช่วยให้คุณสามารถกำหนดคุณลักษณะเฉพาะของกล่องโต้ตอบให้กับพื้นผิวระดับบนสุดได้ ตัวอย่างเช่น คุณสามารถสร้างกล่องโต้ตอบโมดอลที่บล็อกการโต้ตอบของผู้ใช้กับส่วนที่เหลือของอินเทอร์เฟซ
- "linux-drm-syncobj" - ให้เครื่องมือสำหรับการซิงโครไนซ์บัฟเฟอร์ที่ชัดเจนโดยใช้วัตถุการซิงโครไนซ์ DRM (Direct Rendering Manager) สันนิษฐานว่าในบริบทของการซิงโครไนซ์เมื่อเรนเดอร์ไปยังบัฟเฟอร์ โปรโตคอลที่เสนอจะช่วยปรับปรุงการทำงานกับไดรเวอร์ที่ใช้ Vulkan และ OpenGL กราฟิก API (การใช้งานนั้นใช้ตัวจัดการในไดรเวอร์เป็นหลัก) โปรโตคอลใหม่นี้ทำให้มั่นใจได้ว่าการดำเนินการวาดลงบนบัฟเฟอร์จะเสร็จสมบูรณ์ก่อนที่ตัวจัดการการจัดองค์ประกอบจะแสดงบัฟเฟอร์นั้น
- alpha-modifier ซึ่งช่วยให้ไคลเอ็นต์เปลี่ยนระดับความโปร่งใสของพื้นผิวและการดำเนินการถ่ายโอนเพื่อให้แน่ใจว่ามีความโปร่งใสที่ด้านข้างของเซิร์ฟเวอร์คอมโพสิต ซึ่งจะเปลี่ยนเส้นทางการดำเนินการเหล่านี้ไปยัง KMS
- xdg-toplevel-icon - ผูกไอคอนเข้ากับหน้าต่างระดับบนสุด
- ext-image-capture-source และ ext-image-copy-capture - จัดระเบียบการจับเนื้อหาที่แสดงบนหน้าจอ
- xdg-system-bell - อนุญาตให้คุณส่งสัญญาณระบบซึ่งสามารถใช้เป็นคำเตือนในโปรแกรมจำลองเทอร์มินัล รูปแบบของสัญญาณเอาท์พุตจะขึ้นอยู่กับดุลยพินิจของผู้จัดการคอมโพสิต ซึ่งไม่เพียงแต่เป็นเสียงเท่านั้น แต่ยังเป็นการตอบสนองด้วยภาพอีกด้วย
- fifo - ใช้กลไก FIFO (เข้าก่อนออกก่อน) สำหรับการประมวลผลคิวการอัปเดตเนื้อหาของพื้นผิวที่แสดง ในทางปฏิบัติ โปรโตคอลอนุญาตให้เอาต์พุตรอการสแกนแนวตั้งให้เสร็จสิ้น (vblank) แทนที่จะใช้การโทรกลับทุกครั้งที่พร้อมที่จะแสดงเฟรมใหม่ ซึ่งจะช่วยแก้ปัญหาโหลด GPU สูงเมื่อใช้ VSync
- commit-timing - อนุญาตให้คุณผูกการจำกัดเวลากับเนื้อหาพื้นผิว (เซิร์ฟเวอร์คอมโพสิตควรสะท้อนถึงการเปลี่ยนแปลงเนื้อหาหากเป็นไปได้หลังจากเวลาที่กำหนด แต่ไม่ใช่ก่อนหน้านั้น)
- ext-data-control - อนุญาตให้ไคลเอ็นต์ที่มีสิทธิ์ควบคุมการประมวลผลข้อมูล เช่น ใช้ผู้จัดการคลิปบอร์ด
- ext-workspace — นำแนวคิดนี้ไปใช้ เดสก์ท็อปเสมือน และนำเสนอเหตุการณ์ต่างๆ ที่ให้ข้อมูลเกี่ยวกับสถานะของเดสก์ท็อป รวมถึงความสามารถในการเปิดใช้งานและปิดใช้งานเดสก์ท็อป โปรโตคอลนี้สามารถใช้เพื่อสร้างแดชบอร์ดและตัวชี้วัดที่แสดงรายการเดสก์ท็อปเสมือนที่มีอยู่และอนุญาตให้สลับไปมาระหว่างเดสก์ท็อปเหล่านั้นได้
- การจัดการสี — ให้ความสามารถในการจัดการสีและรองรับช่วงไดนามิกสูง (HDR) ส่วนขยายนี้ช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถรับข้อมูลเกี่ยวกับคุณสมบัติที่เกี่ยวข้องกับสีของอุปกรณ์เอาต์พุตและส่งข้อมูลเกี่ยวกับคุณสมบัติสีของเนื้อหาของตนเองไปยังเซิร์ฟเวอร์คอมโพสิต ในโหมดคอมโพสิต เซิร์ฟเวอร์ ข้อมูลนี้สามารถนำไปใช้ในการจัดการสีอัตโนมัติเมื่อแสดงเนื้อหาบนอุปกรณ์แสดงผลต่างๆ ตัวอย่างเช่น เพื่อแปลงเนื้อหาให้เหมาะสมสำหรับการแสดงผลบนจอภาพ HDR โปรไฟล์ ICC ใช้เพื่ออธิบายพื้นที่สี
โปรโตคอลที่กำลังพัฒนาในสาขา "ไม่เสถียร":
- "fullscreen-shell" - ควบคุมการทำงานในโหมดเต็มหน้าจอ
- "วิธีการป้อนข้อมูล" - การประมวลผลวิธีการป้อนข้อมูล
- "idle-inhibit" - บล็อกการเรียกใช้สกรีนเซฟเวอร์ (สกรีนเซฟเวอร์)
- "input-timestamps" - การประทับเวลาสำหรับเหตุการณ์อินพุต
- "keyboard-shortcuts-inhibit" - ควบคุมการแนบแป้นพิมพ์ลัดและปุ่มลัด
- "linux-explicit-synchronization" มีลักษณะเฉพาะสำหรับ Linux กลไกสำหรับการซิงโครไนซ์บัฟเฟอร์ที่สัมพันธ์กับพื้นผิว
- "ตัวชี้ท่าทาง" - ควบคุมจากหน้าจอสัมผัส
- "ข้อ จำกัด ตัวชี้" - ข้อ จำกัด ตัวชี้ (การปิดกั้น)
- "การเลือกหลัก" - โดยการเปรียบเทียบกับ X11 จะมีคลิปบอร์ดหลัก (การเลือกหลัก) การแทรกข้อมูลที่โดยปกติจะทำด้วยปุ่มกลางของเมาส์
- "เหตุการณ์ตัวชี้สัมพัทธ์" - เหตุการณ์ตัวชี้สัมพัทธ์
- "การป้อนข้อความ" - การจัดระเบียบของการป้อนข้อความ
- "xdg-foreign" เป็นอินเทอร์เฟซสำหรับการโต้ตอบกับพื้นผิวของไคลเอนต์ "เพื่อนบ้าน"
- "xdg-decorative" - แสดงการตกแต่งหน้าต่างในฝั่งเซิร์ฟเวอร์
- "xdg-output" - ข้อมูลเพิ่มเติมเกี่ยวกับเอาต์พุตวิดีโอ (ใช้สำหรับการปรับขนาดเศษส่วน)
- "xwayland-keyboard-grab" - จับอินพุตในแอปพลิเคชัน XWayland
ที่มา: opennet.ru
