WebGPU (Chrome 140) এ নতুন কি আছে

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

প্রকাশিত: ২৭ আগস্ট, ২০২৫

ডিভাইস অ্যাডাপ্টার ব্যবহারের অনুরোধ করে।

WebGPU স্পেসিফিকেশন অনুযায়ী, একটি সফল ডিভাইস অনুরোধের পর একটি অ্যাডাপ্টারকে "ব্যবহৃত" (consumed) হিসেবে চিহ্নিত করা হয়। ফলস্বরূপ, একই অ্যাডাপ্টার ব্যবহার করে পরবর্তী যেকোনো requestDevice() কল এখন একটি প্রত্যাখ্যাত প্রমিজ (rejected promise) প্রদান করবে। পূর্বে, এই কলগুলো এমন একটি ডিভাইস ফেরত দিত যা তৈরির সময়ই হারিয়ে যেত। ইস্যু 415825174 দেখুন।

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

await adapter.requestDevice(); // Fails because adapter has been consumed.

যেখানে টেক্সচার ভিউ ব্যবহৃত হয়, সেখানে টেক্সচার ব্যবহারের সংক্ষিপ্ত রূপ।

এখন একটি GPUTexture-কে বাইন্ডিংয়ের জন্য শেডারে প্রকাশ করতে সরাসরি GPUBindingResource হিসেবে ব্যবহার করা যায়। উন্নততর ব্যবহারের সুবিধার জন্য এটিকে GPURenderPassColorAttachment view , GPURenderPassColorAttachment resolveTarget , এবং GPURenderPassDepthStencilAttachment view হিসেবেও ব্যবহার করা যায়। একটি ডিফল্ট ভিউ পাওয়ার জন্য GPUTextureView ব্যবহার করার চেয়ে এটি একটি সহজতর পদ্ধতি। ইস্যু 425906323 দেখুন।

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel 1D টেক্সচার সমর্থন করে

2D টেক্সচারের সাথে সামঞ্জস্য রাখতে এখন textureSampleLevel() ব্যবহার করে 1D টেক্সচার স্যাম্পল করা যাবে। এর ফলে আপনি একটি ভার্টেক্স শেডার থেকে 1D টেক্সচার স্যাম্পল করতে পারবেন, যা আগে শুধুমাত্র textureSample() ব্যবহার করে একটি ফ্র্যাগমেন্ট শেডার থেকে করা সম্ভব ছিল। ইস্যু 382514673 দেখুন।

bgra8unorm রিড-অনলি স্টোরেজ টেক্সচারের ব্যবহার অপ্রচলিত করুন

রিড-অনলি স্টোরেজ টেক্সচারের সাথে "bgra8unorm" ফরম্যাট ব্যবহার করা এখন অপ্রচলিত। WebGPU স্পেসিফিকেশন স্পষ্টভাবে এটি নিষিদ্ধ করেছে, এবং ক্রোমে এর পূর্ববর্তী অনুমোদনটি একটি বাগ ছিল, কারণ এই ফরম্যাটটি শুধুমাত্র লেখার অ্যাক্সেসের জন্য তৈরি এবং এটি পোর্টেবল নয়। ইস্যু 427681156 দেখুন।

GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি সরান

পূর্বঘোষণা অনুযায়ী, GPUAdapter-এর isFallbackAdapter অ্যাট্রিবিউটটি এখন সরিয়ে ফেলা হয়েছে। এর পরিবর্তে GPUAdapterInfo-এর isFallbackAdapter অ্যাট্রিবিউটটি আনা হয়েছে, যা Chrome 136-এ চালু করা হয়েছিল। সরিয়ে ফেলার উদ্দেশ্য দেখুন।

ভোরের আপডেট

wgpuInstanceGetWGSLLanguageFeatures() ফাংশনটি ইনস্ট্যান্স দ্বারা সমর্থিত WGSL ল্যাঙ্গুয়েজ ফিচারগুলোর একটি তালিকা পেতে ব্যবহৃত হয়। পূর্বে এটি একটি WGPUStatus ভ্যালু রিটার্ন করত। যেহেতু এটি ব্যর্থ হতে পারে না, তাই এটিকে কোনো ভ্যালু রিটার্ন না করার জন্য আপডেট করা হয়েছে। ইস্যু 429178774 দেখুন।

যদি সারফেসটির কোনো বর্তমান টেক্সচার না থাকে, তাহলে wgpuSurfacePresent() ফাংশনটি এখন একটি WGPUStatus এরর রিটার্ন করে। ইস্যু 425930323 দেখুন।

নতুন wgpu::InstanceFeatureName::MultipleDevicesPerAdapter ফিচারটি অ্যাডাপ্টারগুলোকে "কনজিউম" না হয়েই একাধিক ডিভাইস তৈরি করার সুযোগ দেয়। ইস্যু 415825174 দেখুন।

` dump_shaders_on_failure ডিভাইস টগলটি আপনাকে ডিবাগিংয়ের উদ্দেশ্যে শুধুমাত্র ব্যর্থতার ক্ষেত্রে শেডার ডাম্প করার সুযোগ দেয়। এটি শুধুমাত্র D3 ব্যাকএন্ডের জন্য প্রযোজ্য, যদিও ভবিষ্যতে অন্যান্য ব্যাকএন্ডেও এর সম্প্রসারণ সম্ভব। ইস্যু 429187478 দেখুন।

রেন্ডার পাস জমা দেওয়ার সময় ওভারহেড কমানোর জন্য, বিশেষ করে মোবাইল জিপিইউ-তে উন্নত পারফরম্যান্সের জন্য, ভলকান ব্যাকএন্ডে একাধিক পরিবর্তন আনা হয়েছে। উদাহরণস্বরূপ: VkFramebuffers ক্যাশ করা

এখানে কেবল কয়েকটি মূল বিষয় তুলে ধরা হয়েছে। কমিটগুলোর বিস্তারিত তালিকাটি দেখুন।

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

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

ক্রোম ১৪৭-১৪৮

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩