פרויקט Wine הוציא גרסה חדשה של חבילת vkd3d 1.2 עם יישום Direct3D 12 שפועל על ידי תרגום קריאות לממשק ה-API הגרפי של Vulkan.
גרסה חדשה זו של vkd3d 1.2 מכילה מספר שיפורים, אך העיקריים שבהם הבולטים הם הזמינות של libvkd3d-shader כספרייה ציבורית , תמיכה בשיידרים מסוג tessellation, וכן תמיכה בפלט stream.
החבילה כוללת את ספריית libvkd3d עם מימושים של Direct3D 12, את ספריית libvkd3d-shader עם מתרגם shaders של model 4 ו-5, ואת ספריית libvkd3d-utils עם פונקציות לפישוט העברת יישומי Direct3D 12, כמו גם סט של הדגמות, כולל הפורט של glxgears ל-Direct3D 12. קוד הפרויקט מופץ תחת רישיון LGPLv2.1.
ספריית libvkd3d תומכת ברוב התכונות של Direct3D 12, כולל פונקציות גרפיקה וחישוב, רשימות פקודות ותורי פקודות, תיאורים ותיאורי ערימה, חתימות שורש, גישה לא מסודרת, דוגמים, חתימות פקודות, קבועי שורש, רינדור עקיף וכו'.
Libvkd3d-shader מיישם את התרגום של קוד בייט 4 ו-5 של מודלי שיידר לייצוג ביניים של SPIR-V. קודקודים, פיקסלים, טיססלציה, שיידרים של גיאומטריה פשוטה וחישובית, סידור חתימת שורש ודה-סידור נתמכים.
הוראות שיידר כוללות פעולות אריתמטיות, אטומיות ופעולות ביט-אחר-ביט, אופרטורים של בקרת זרימת נתונים והשוואה, הוראות דגימה, איסוף וטעינה, ופעולות גישה לא מסודרות (UAV, Unordered Access View).
בשלב זה של הפיתוח, לא כל הקריאות של Direct3D 12 מיושמות , והבדיקות נערכו בעיקר על קבוצת יישומי הדגמה. מהדורה זו אינה כוללת תכונות בפיתוח כגון תמיכה בשיידרים של טיסלציה וגיאומטריה מורכבת, כמו גם מספר שיפורים הקשורים לשיידרים ולשיטות ליבה של Direct3D 12. תכונות אלו יוצעו במהדורה עתידית.
התכונות החדשות העיקריות של Vkd3d 1.2
אחד השינויים החשובים ביותר בגרסה החדשה הוא הזמינות של ספריית libvkd3d-shader לשימוש בפרויקטים של צד שלישי, שכן נוספו מספר תכונות של Direct3D 12, כגון:
- רב דגימה.
- משאבים שמורים.
- שיעורי העברת נתוני מקרים.
- ממשק API "נתונים פרטיים" לכל הממשקים.
- מיפויי רכיבים של תצוגת משאבי Shader.
- סיומת VK_KHR_draw_indirect_count.
- ייצוג חזוי / מותנה.
- עיבוד עומק ללא פיקסלים.
- מגזרת עומק. לשם כך נדרש סיומת VK_EXT_depth_clip_enable.
- מחק את הרסטרייזר.
- ערבוב מקור כפול.
- מיפוי משאבים שהוצבו.
- השיטות ReadFromSubresource () ו- WriteToSubresource () ID3D12Resource.
- גישה סימולטנית למשאבים מרובי תורים.
- נופים אפסיים. כלומר, תצוגות ללא משאב בסיסי.
- מספר פניות נוספות לתמיכה.
בנוסף לכך, ראויה לציון גם התמיכה הנוספת בהמרה, סידור וביטול סידור של חתימות שורש (vkd3d_serialize_versioned_root_signature() ו-vkd3d_create_versioned_root_signature_deserializer()) , כמו גם התמיכה בפלט בסטרימינג.
שינוי בולט נוסף הוא יישום משתני סביבה: VKD3D_CONFIG כדי להגדיר אפשרויות לשינוי התנהגות libvkd3d ו-VKD3D_VULKAN_DEVICE כדי לעקוף את ההתקן עבור ממשק ה-API של Vulkan.
בנוסף, נוספה תמיכה בהוראות ההצללה bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos ותמיכה ראשונית עבור שיידרים במודל 5.1.
וגם תמיכה בסביבות יעד OpenGL SPIR-V. זה מאפשר להשתמש ב- SPIR-V המיוצר על ידי libvkd3d-shader עם GL_ARB_gl_spirv. זה כולל תמיכה במונים אטומיים של OpenGL ודוגמאות משולבות.
לבסוף, אם ברצונכם ללמוד עוד על גרסה חדשה זו, תוכלו לעיין ברשימת השינויים המלאה בקישור הבא.
כיצד להתקין את vkd3d על לינוקס?
למי שמעוניין להיות מסוגל להתקין את vkd3d במערכת שלהם, עליו להשיג את קוד המקור ולהמשיך באוסף, אם כי למטרות מעשיות או עבור אותם מתחילים, הם יכולים לנסות את הספרייה הזו ללא מאמץ רב. לשם כך, עליהם רק להתקין את לוטריס ובתוך תצורותיו.
באשר למעוניינים באוסף, עליהם להשיג את הקוד עם:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"
לבסוף, יש להפעיל את שכבות Vulkan:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug