WebGPU-তে নতুন কী আছে (Chrome 126)

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

maxTextureArrayLayers সীমা বাড়ান

একটি 2D টেক্সচারের গভীরতা বা স্তর গণনার জন্য সর্বাধিক অনুমোদিত মান ডিফল্টরূপে 256। এখন সমর্থিত হলে maxTextureArrayLayers সীমা ব্যবহার করে 2048 পর্যন্ত অনুরোধ করা সম্ভব। নিম্নলিখিত উদাহরণটি দেখুন এবং 42241514 ইস্যু করুন

const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxTextureArrayLayers: 2048 }
});

Vulkan ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন

Vulkan ব্যাকএন্ডের জন্য GPUQueue-এর writeBuffer() পদ্ধতিতে কল করার সময় এখন একটি দ্রুত পথ উপলব্ধ। ডেটা এখন সরাসরি গন্তব্য বাফারে লেখা যেতে পারে, যার ফলে অতিরিক্ত কপি এবং সিঙ্ক্রোনাইজেশনের প্রয়োজন হয় না। এই অপ্টিমাইজেশন GPU-তে ডেটা আপলোড করার জন্য প্রয়োজনীয় মেমরি ট্র্যাফিক হ্রাস করে।

দ্রুত পথ অপ্টিমাইজেশনের জন্য বাফারের মেমরিটি হোস্ট দৃশ্যমান হওয়া প্রয়োজন এবং এতে কোনও মুলতুবি GPU অপারেশন ছাড়াই থাকা উচিত। সংখ্যা 42242084 দেখুন।

শেডার সংকলন সময়ের উন্নতি

Chrome টিম WebGPU শেডার ভাষার কম্পাইলার Tint এর দক্ষতা বৃদ্ধি করছে। Tint বর্তমানে মেশিন কোড তৈরি করার আগে একাধিকবার শেডার কোডের অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) পরিবর্তন করে, যা কিছু প্ল্যাটফর্মে রিসোর্স-ইনটেনসিভ প্রক্রিয়া। এটি অপ্টিমাইজ করার জন্য, একটি নতুন ইন্টারমিডিয়েট রিপ্রেজেন্টেশন (IR) চালু করা হচ্ছে, যার সাথে এটি ব্যবহার করে এমন পুনরায় ডিজাইন করা ব্যাকএন্ডও রয়েছে। এই পরিবর্তনের লক্ষ্য হল শেডার কম্পাইলেশনকে ত্বরান্বিত করা।

রেন্ডার পাইপলাইন তৈরিতে টিন্ট কম্পাইলার ব্যবহার করে WGSL কে SPIR-V তে রূপান্তর করা হয়, তারপর ড্রাইভার কম্পাইলার ব্যবহার করে ISA তে রূপান্তর করা হয়।
ChromeOS-এ রেন্ডার পাইপলাইন তৈরি।

এই উন্নতিগুলি, যা ইতিমধ্যেই অ্যান্ড্রয়েডে অ্যাক্সেসযোগ্য, ধীরে ধীরে Vulkan ব্যাকএন্ড সহ WebGPU সমর্থন করে এমন ChromeOS ডিভাইসগুলিতে সম্প্রসারিত হচ্ছে। সংখ্যা 42250751 দেখুন।

জমা দেওয়া কমান্ড বাফারগুলি অবশ্যই অনন্য হতে হবে

submit() পদ্ধতি ব্যবহার করে GPUQueue-তে জমা দেওয়া প্রতিটি GPUCommandBuffer অবশ্যই অনন্য হতে হবে, অন্যথায় একটি বৈধতা ত্রুটি তৈরি হবে। এটি একটি স্পেসিফিকেশন বাগ ছিল। সমস্যা 42241492 দেখুন।

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();

device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.

ভোরের আপডেট

C++ র‍্যাপার webgpu_cpp.h এখন শুধুমাত্র হেডার-এর জন্য, এর ব্যবহার সহজ করে এবং বিকল্প C++ র‍্যাপারগুলির সাথে সহজ ইন্টিগ্রেশন সক্ষম করে। সংখ্যা 40195122 দেখুন।

webgpu.h C API আর Swapchain অবজেক্টের ধারণা প্রকাশ করে না। এই পরিবর্তনটি JavaScript API এর সাথে ঘনিষ্ঠভাবে সামঞ্জস্যপূর্ণ করার জন্য। অভ্যন্তরীণ কনফিগারেশন এখন নতুন wgpu::Surface অবজেক্টের Configure() পদ্ধতির মাধ্যমে করা হয়, যা ভবিষ্যতে পরিবর্তনের বিষয়। WebGPU ডকুমেন্টেশন দিয়ে একটি অ্যাপ তৈরি করুন -এ একটি উদাহরণ দেখুন। সংখ্যা 42241264 দেখুন।

কমিটের সম্পূর্ণ তালিকাটি দেখুন।

WebGPU-তে নতুন কী আছে

" What's New in WebGPU" সিরিজে যা যা আলোচনা করা হয়েছে তার একটি তালিকা।

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩