
D7VK 2.2 এখন গ্রাফিক্স ট্রান্সলেশন লেয়ারের একটি নতুন সংস্করণ হিসেবে উপলব্ধ, যা লিনাক্সে ক্লাসিক উইন্ডোজ গেম চালানোর জন্য ডিজাইন করা হয়েছে। DXVK থেকে উদ্ভূত এই প্রকল্পটি Wine এবং Proton-এর সাথে ব্যবহারের জন্য পুরোনো Direct3D 7, 6, 5, এবং 3 API-গুলোকে Vulkan-এ অনুবাদ করার উপর মনোযোগ দেয়, এবং এই নতুন সংস্করণটি তার কাজের একটি উল্লেখযোগ্য অংশ সেই ক্ষেত্রগুলোর একটিতে উৎসর্গ করেছে যেখানে তখনও সবচেয়ে বেশি ঘাটতি ছিল: Direct3D 3 সাপোর্ট।
D7VK 2.1 আসার মাত্র কয়েক সপ্তাহ পরেই এই আপডেটটি এসেছে এবং এটি এমন একটি প্রযুক্তির পরিপক্কতার প্রক্রিয়াকে এগিয়ে নিয়ে যায়, যা বিশেষ করে তাদের জন্য আকর্ষণীয় যারা আধুনিক লিনাক্স সিস্টেমে ৯০-এর দশকের শেষভাগ এবং ২০০০-এর দশকের শুরুর দিকের গেম খেলতে চান। Direct3D 3-এর উন্নতির পাশাপাশি, D7VK 2.2-এ অসংখ্য বাগ ফিক্স এবং অভ্যন্তরীণ সমন্বয় অন্তর্ভুক্ত করা হয়েছে এবং এটি সাম্প্রতিক DXVK 3.1 সংস্করণের উপর ভিত্তি করে তৈরি।
D7VK 2.2 Direct3D 3-এর উপর আলোকপাত করে।
D7VK 2.2- এর প্রধান নতুন বৈশিষ্ট্যটি Direct3D 3 সম্পর্কিত, যা এমন একটি API যা প্রকল্পটির সমর্থিত অন্যান্য পুরোনো প্রযুক্তিগুলোর তুলনায় কিছুটা পিছিয়ে পড়েছিল। যদিও ডেভেলপারের সংগ্রহ করা এবং পরীক্ষা করা Direct3D 3 গেমগুলো ইতিমধ্যেই D7VK-এর সাথে কাজ করছিল, তবুও এমন বেশ কিছু এজ কেস এবং আচরণ ছিল যা সঠিকভাবে প্রয়োগ করা হয়নি।
এটি বিশেষভাবে সমস্যাজনক ছিল, কারণ Direct3D 3 ব্যবহার করা গেমগুলোর তালিকা পুনর্গঠন করা কঠিন। এগুলো খুবই পুরোনো গেম, যেগুলোর মধ্যে অনেকগুলো এখন আর বাণিজ্যিকভাবে পাওয়া যায় না বা খুঁজে পাওয়া কঠিন, ফলে বাস্তবে যতগুলো সম্ভাব্য বাস্তবায়ন দেখা যেতে পারে, তার সবগুলো পরীক্ষা করা বেশ চ্যালেঞ্জিং।
এই সংস্করণে, ডেভেলপার Direct3D 3 বাস্তবায়নের একটি বড় অংশ সংশোধন করেছেন, যাতে এটিকে D7VK-এর সাথে সামঞ্জস্যপূর্ণ অন্যান্য API-গুলোর অর্জিত পরিপক্কতার স্তরের কাছাকাছি আনা যায়।
D3D3 ডিভাইসগুলোর আচরণ মূলটির সাথে সামঞ্জস্যপূর্ণ।
প্রযুক্তিগত পরিবর্তনগুলোর মধ্যে একটি হলো Direct3D 3 ডিভাইসগুলোর জন্য রেফারেন্স কাউন্টিং সিস্টেমটি নতুন করে তৈরি করা। D7VK 2.2 এই প্রক্রিয়াটিকে এমনভাবে পরিবর্তন করে, যাতে এর আচরণ নেটিভ এপিআই ইমপ্লিমেন্টেশনের সাথে মিলে যায়।
এই ধরনের খুঁটিনাটি বিষয় ব্যবহারকারীর কাছে অপ্রাসঙ্গিক মনে হতে পারে, কিন্তু একটি অনুবাদ স্তরে এটি অত্যন্ত গুরুত্বপূর্ণ। পুরোনো গেমগুলো অবজেক্ট তৈরি ও ধ্বংসের সাথে সম্পর্কিত নির্দিষ্ট আচরণের উপর নির্ভর করতে পারে, এবং আপাতদৃষ্টিতে একটি ছোট পার্থক্য এমন ত্রুটির কারণ হতে পারে যা নির্ণয় করা কঠিন।
এই নতুন বাস্তবায়নের ফলে কিছু নির্দিষ্ট গেমের গ্রাফিক্স ডিভাইস পরিচালনায় ব্যর্থতার সম্ভাবনা কমে যায়, যা D7VK প্রত্যাশা করেনি।
D7VK 2.2 কালার কী ব্যবহার করে স্বচ্ছতার উন্নতি সাধন করেছে।
D7VK 2.2 বিশুদ্ধ Direct3D 3 ডিভাইসগুলিতে কালার কিয়িং ম্যানেজমেন্টও পরিবর্তন করে । এখন পর্যন্ত, প্রকল্পটি একটি খুব সাধারণ মডেল ব্যবহার করত যেখানে এই ফাংশনটি নির্দিষ্ট পরিস্থিতিতে সর্বদা সক্রিয় থাকত।
নতুন সংস্করণটি কখন এটি চালু করতে হবে তার উপর সুনির্দিষ্ট নিয়ন্ত্রণ প্রদান করে এবং Direct3D 3-এর আচরণকে আরও বিশ্বস্তভাবে পুনরুৎপাদন করে। এটি বিশেষত সেইসব পুরোনো গেমের জন্য গুরুত্বপূর্ণ, যেগুলো নির্দিষ্ট রঙের উপর ভিত্তি করে স্বচ্ছতা কৌশল ব্যবহার করে।
এছাড়াও, স্বাভাবিককৃত রঙের পরিসর সম্পর্কিত গণনাগুলোকে অপ্টিমাইজ করা হয়েছে। এই মানগুলো এখন শুধুমাত্র তখনই আপডেট করা হয় যখন পৃষ্ঠের বিবরণ পরিবর্তিত হয়, যার ফলে এগুলোকে ক্যাশ করে পরবর্তীতে পুনরায় ব্যবহার করা যায়।
এর ফলে কালার কী ট্রান্সপারেন্সি ব্যবহারকারী গেমগুলোর পারফরম্যান্সে সামান্য থেকে মাঝারি উন্নতি হবে এবং আচরণও আরও সঠিক হবে।
এক্সিকিউট বাফারের বাউন্ডারি কেসগুলো সংশোধন করা হয়েছে।
D7VK 2.2-এর আরেকটি গুরুত্বপূর্ণ দিক হলো Direct3D 3 এক্সিকিউট বাফার ভ্যালিডেশনের সংশোধন। টেস্টিংয়ের সময় চিহ্নিত বিভিন্ন এজ কেস (edge cases) সমাধানের জন্য প্রকল্পটি এই লজিকের একটি অংশ পুনর্গঠন করেছে।
এপিআই-এর প্রত্যাশিত আচরণ যাচাই করার জন্য, ডেভেলপার বিশেষভাবে Direct3D 3-এর সাথে সম্পর্কিত Wine টেস্টগুলোর উপরও নির্ভর করতে পেরেছেন। এই টেস্টগুলো D7VK-এর আচরণকে একটি সামঞ্জস্যপূর্ণ ইমপ্লিমেন্টেশনের প্রত্যাশিত আচরণের সাথে তুলনা করতে এবং এমন সব পার্থক্য শনাক্ত করতে সাহায্য করে, যা শুধুমাত্র সুপরিচিত গেম ব্যবহার করার সময় অলক্ষিত থেকে যেতে পারে।
এরকম একটি পুরোনো API-এর জন্য এই কাজটি বিশেষভাবে মূল্যবান, যেখানে পরীক্ষার জন্য উপলব্ধ টাইটেল খুবই কম এবং সেগুলো সবসময় মূল ইমপ্লিমেন্টেশনের সমস্ত সম্ভাবনাকে অন্তর্ভুক্ত করে না।
Direct3D 5 এবং 3 টেক্সচারের জন্য অধিকতর দৃঢ়তা
এই আপডেটটি শুধু Direct3D 3-এর মধ্যেই সীমাবদ্ধ নয়। D7VK 2.2, Direct3D 5 এবং Direct3D 3 দ্বারা ব্যবহৃত টেক্সচারগুলোর পরিচালনাতেও উন্নতি সাধন করেছে, যাতে ব্যবহৃত হওয়ার সময় অন্তর্নিহিত সারফেসগুলো সীমার বাইরে চলে না যায়।
এই পরিবর্তনটি গ্রাফিক্স রিসোর্স পরিচালনার দৃঢ়তা বাড়ায় এবং এমন সব ত্রুটি সমাধান করতে পারে যা কেবল নির্দিষ্ট কিছু অপারেশনের ক্রমেই দেখা যায়। ডেভেলপার আরও উল্লেখ করেছেন যে, এই উন্নতিটি ১৯৯৭ সালে প্রথম প্রকাশিত ফ্রগার (Frogger) -এর উপরও ইতিবাচক প্রভাব ফেলেছে।
এই প্যাচটি দেখায় যে, রিসোর্স ম্যানেজমেন্ট সংক্রান্ত সমস্যা সমাধানের উদ্দেশ্যে করা অভ্যন্তরীণ পরিবর্তনগুলো কীভাবে নির্দিষ্ট কিছু গেমের ওপর দৃশ্যমান প্রভাব ফেলতে পারে, এমনকি যখন সেই মডিফিকেশনটি বিশেষভাবে সেগুলোর জন্য ডিজাইন করা হয়নি।
D7VK 2.2 রূপান্তর এবং ম্যাট্রিক্স সমস্যাও সংশোধন করে।
D7VK 2.2 এছাড়াও Direct3D 3 এক্সিকিউট বাফারের রূপান্তর সম্পর্কিত একটি বাগ সংশোধন করে। ভার্টেক্স ইনপুটের জন্য ব্যবহৃত FVF ফরম্যাটের ভুল নির্ধারণের কারণে এই সমস্যাটি হয়েছিল।
লিগ্যাসি প্রোজেকশন ম্যাট্রিক্স ক্যালকুলেশনের একটি সমস্যাও সমাধান করা হয়েছে। বাগটি একটি Wine টেস্টের মাধ্যমে আবিষ্কৃত হয়েছিল, যেটি প্রত্যাশিতভাবে কাজ করছিল না এবং নির্দিষ্ট কিছু Direct3D 6, 5, এবং 3 অ্যাপ্লিকেশনকে নেতিবাচকভাবে প্রভাবিত করতে পারত।
এই পরিবর্তনগুলো D7VK-এর জন্য সামঞ্জস্যতা পরীক্ষার গুরুত্বকে আরও স্পষ্টভাবে তুলে ধরে। পুরোনো গ্রাফিক্স এপিআই-গুলোর অনেক সমস্যাই সবচেয়ে জনপ্রিয় গেমগুলোতে দেখা যায় না, বরং সেগুলো ফিচারের নির্দিষ্ট কিছু সমন্বয়ে লুকিয়ে থাকে, যা বছরের পর বছর ধরে আড়ালে থেকে যেতে পারে।
লিগ্যাসি ড্র পাথগুলিতে ওভারহেড কম
নতুন সংস্করণটি ড্রয়িং পাথকেও পুনর্বিন্যাস করে। Begin() / Vertex() / End() Direct3D 6 এবং Direct3D 5-এ ব্যবহৃত হয়। এই পরিবর্তনটি মেমরি ব্যবহার কমায় এবং পারফরম্যান্সে সামান্য উন্নতি ঘটায়।
আবারও, ফ্রগার সেইসব গেমগুলোর মধ্যে অন্যতম যা এই পরিবর্তন থেকে উপকৃত হতে পারে। যদিও এই অপটিমাইজেশনটি সব রেট্রো গেমের এফপিএস দ্বিগুণ করবে না, তবে এটি পুরোনো এপিআই দ্বারা ব্যবহৃত রুটগুলোতে জমে থাকা কিছু ওভারহেড কমাতে সাহায্য করে।
D7VK-এর পূর্ববর্তী সংস্করণগুলিতে ইতিমধ্যেই উল্লেখযোগ্য পারফরম্যান্স অপ্টিমাইজেশন করা হয়েছে, তাই বর্তমান কাজ ক্রমবর্ধমানভাবে এর বাস্তবায়নকে পরিমার্জন করা এবং অপ্রয়োজনীয় খরচ দূর করার উপর দৃষ্টি নিবদ্ধ করছে।
D7VK 2.2, যা DXVK 3.1 এর একটি অংশ
এই সংস্করণের আরেকটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো, D7VK 2.2-এর পরিবর্তে DXVK 3.1 আনা হয়েছে । এর ফলে প্রকল্পটি একটি অপেক্ষাকৃত নতুন ভিত্তি থেকে সুবিধা লাভ করতে পারছে এবং এর বাস্তবায়নকে DXVK-এর বিবর্তনের সাথে সামঞ্জস্যপূর্ণ রাখতে পারছে।
প্রকল্প দুটির মধ্যকার সম্পর্কটি বিশেষভাবে গুরুত্বপূর্ণ। D7VK-এর উৎপত্তি হয়েছিল DXVK-এর একটি ফর্ক হিসেবে, যা পুরোনো Direct3D API-গুলোর জন্য বিশেষায়িত ছিল এবং যেগুলো সাধারণ DXVK ব্যবহারে অন্তর্ভুক্ত ছিল না। অন্যদিকে, উভয়ই উইন্ডোজ থেকে আসা গ্রাফিক্স কলের গন্তব্য হিসেবে Vulkan ব্যবহার করে।
এই সম্পর্কের ফলে, DXVK-তে আসা কাঠামোগত উন্নতিগুলো D7VK-এর বিবর্তন অব্যাহত রাখার ভিত্তি হিসেবে কাজ করতে পারে, যার জন্য Vulkan-এর সাথে যোগাযোগের জন্য প্রয়োজনীয় সমস্ত পরিকাঠামো একেবারে গোড়া থেকে তৈরি করার প্রয়োজন হয় না।
ক্লাসিক গেমগুলিকে পুনরুজ্জীবিত করার জন্য ডিজাইন করা একটি প্রকল্প
লিনাক্স ইকোসিস্টেমের মধ্যে D7VK-এর একটি সুনির্দিষ্ট লক্ষ্য রয়েছে: Direct3D 7, 6, 5, এবং 3 ব্যবহারকারী উইন্ডোজ গেমগুলোকে Vulkan ব্যবহার করে চালানোর সুযোগ দেওয়া। এটি এটিকে DXVK থেকে আলাদা করে, যা মূলত Direct3D 9, 10, এবং 11-এর উপর দৃষ্টি নিবদ্ধ করে।
প্রকল্পটির গুরুত্ব তখন বেড়ে যায়, যখন এমন সব গেমের কথা আসে যেগুলো এমন গ্রাফিক্স প্রযুক্তির ওপর নির্ভর করে যা Wine সরাসরি একইভাবে প্রয়োগ করে না, অথবা যেগুলোকে Vulkan-এ আরও নির্ভুলভাবে অনুবাদ করলে সুবিধা পাওয়া যাবে।
D7VK-কে Wine বা Proton-এর সাথে একত্রিত করে, লিনাক্স ব্যবহারকারীরা পুরোনো উইন্ডোজ ইনস্টলেশনের সাহায্য না নিয়েই বিংশ শতাব্দীর শেষভাগ এবং একবিংশ শতাব্দীর শুরুর দিকের বিপুল পরিমাণ সফটওয়্যার পুনরুদ্ধার করতে পারেন।
যারা লিনাক্সে গেম খেলার জন্য Wine বা Proton ব্যবহার করেন এবং ক্লাসিক গেমগুলোকে পুনরুজ্জীবিত করতে আগ্রহী, তাদের জন্য D7VK 2.2 কম্প্যাটিবিলিটি ইনফ্রাস্ট্রাকচারের অন্যতম গুরুত্বপূর্ণ একটি অংশকে আরও শক্তিশালী করে। এবং যদিও এর অনেক উন্নতি ব্যবহারকারীর কাছে অদৃশ্য থাকতে পারে, প্রতিটি ফিক্স এই সম্ভাবনা বাড়িয়ে দেয় যে Direct3D 3, 5, 6, বা 7 যুগে হারিয়ে যাওয়া আরেকটি গেম আধুনিক লিনাক্স সিস্টেমে আবারও সঠিকভাবে কাজ করতে পারবে।