WebGPU (Chrome 145) তে নতুন কী?

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

প্রকাশিত: ২৮ জানুয়ারী, ২০২৬

WGSL সাবগ্রুপ_ইউনিফর্মিটি এক্সটেনশন

WGSL ল্যাঙ্গুয়েজ এক্সটেনশন subgroup_uniformity সাবগ্রুপ স্তরে (ওয়ার্কগ্রুপের পরিবর্তে) সাবগ্রুপ এবং কোয়াড বিল্ট-ইন ফাংশনগুলির জন্য ইউনিফর্মটি বিশ্লেষণের সুযোগ পরিবর্তন করে। এই বৈশিষ্ট্যটি সাবগ্রুপ কার্যকারিতাকে আরও ক্ষেত্রে ইউনিফর্ম হিসাবে বিবেচনা করার অনুমতি দেয়, যা ডেভেলপারদের জন্য উন্নত মানের জীবনযাত্রার প্রতিনিধিত্ব করে এবং ইউনিফর্মটি পরীক্ষা সম্পূর্ণরূপে অক্ষম করার সম্ভাবনা কম করে। একটি বাস্তবিক অর্থ হল আরও মান সাবগ্রুপ-ইউনিফর্ম হিসাবে দেখা হবে, যেমন সম্প্রতি যোগ করা subgroup_id বিল্ট-ইন মান।

এই ভাষা এক্সটেনশনটি navigator.gpu.wgslLanguageFeatures ব্যবহার করে বৈশিষ্ট্য-শনাক্ত করা যেতে পারে। নিম্নলিখিত উদাহরণ এবং পাঠানোর উদ্দেশ্য দেখুন।

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
  throw new Error(`WGSL subgroup uniformity is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable s<ubgroups;
  
  @gro>up(0) @binding(0) varstorage, read_write non_uniform: i32;

  fn main() {
    if (non_uniform == 42) {
      _ = subgroupElect();
    }
  }`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.

কর্মীদের মধ্যে পরীক্ষামূলক সিঙ্ক্রোনাস বাফার ম্যাপিং

WebGPU এবং অ্যাপ্লিকেশন কোডের মধ্যে ঘর্ষণ কমানোর সম্ভাব্য উপায়গুলি অন্বেষণ করার জন্য, Chrome টিম কর্মীদের মধ্যে সিঙ্ক্রোনাস বাফার ম্যাপিং তদন্ত করছে। এই প্রচেষ্টার অংশ হিসাবে, GPUBuffer জন্য একটি নতুন পরীক্ষামূলক mapSync() পদ্ধতি প্রোটোটাইপ করা হয়েছে। কর্মীদের জন্য সীমাবদ্ধ এই পদ্ধতিটি mapAsync() এর মতোই কাজ করে।

এই বৈশিষ্ট্যটি পরীক্ষামূলক, এবং এটিকে মানসম্মত করার জন্য প্রস্তাব করা হবে কিনা তা নির্ধারণ করার জন্য আপনার প্রতিক্রিয়া গুরুত্বপূর্ণ। এটি ব্যবহার করে দেখতে, --enable-features=WebGPUMapSyncOnWorkers সুইচ ব্যবহার করে Chrome চালু করুন এবং এর উপযোগিতা এবং প্রভাব সম্পর্কে প্রতিক্রিয়া জানান। শুরু করতে নিম্নলিখিত স্নিপেটটি দেখুন।

// Create a GPU buffer.
const buffer = device.createBuffer({
  size: 42,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});

// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
  buffer.mapSync(GPUMapMode.READ);
} else {
  // Awaiting allows other code to run, which can cause application logic issues.
  await buffer.mapAsync(GPUMapMode.READ);
}

ভোরের আপডেট

wgpu::FeatureName::R8UnormStorage বৈশিষ্ট্যটি আর উপলব্ধ নেই। এটি wgpu::FeatureName::TextureFormatTier1 দ্বারা প্রতিস্থাপিত হয়েছে, যা এখন এটিকে প্রতিস্থাপন করে। সংখ্যা 472926167 দেখুন।

wgpu::FeatureName::Snorm16TextureFormats বৈশিষ্ট্যটি সরানো হয়েছে। Resolve ব্যতীত এর ক্ষমতাগুলি এখন মূলত wgpu::FeatureName::TextureFormatsTier1 দ্বারা আবদ্ধ। সংখ্যা 465347942 দেখুন।

Emdawnwebgpu ছাড়াও, রাতের বেলায় বাইনারি সংস্করণগুলি এখন GitHub-এ তৈরি করা হয়েছে এবং google/dawn সংস্করণগুলিতে পাওয়া যাচ্ছে। এগুলি সর্বোত্তম প্রচেষ্টার পরিষেবা হিসাবে সরবরাহ করা হয় এবং Google বা Dawn টিম দ্বারা স্বাক্ষরিত বা গ্যারান্টিযুক্ত নয়।

Emdawnwebgpu তে wgpu::ExternalTexture সাপোর্ট যোগ করা হয়েছে। মনে রাখবেন এটি শুধুমাত্র JavaScript কোড (যেমন, EM_ASM ) থেকে আমদানি করা যেতে পারে, কারণ HTMLVideoElement বা VideoFrame এর মতো জাভাস্ক্রিপ্ট অবজেক্টের প্রয়োজনীয়তার কারণে C/C++ তে নির্মাণ সম্ভব নয়। ইস্যু 462477379 এবং উদাহরণস্বরূপ কোডের জন্য SpotTests.cpp দেখুন।

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

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

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

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩