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

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

রিড-ওনলি এবং রিড-রাইট স্টোরেজ টেক্সচার

স্টোরেজ টেক্সচার বাইন্ডিং টাইপ শেডারদের TEXTURE_BINDING ব্যবহার যোগ না করে স্টোরেজ টেক্সচার থেকে পড়তে এবং নির্দিষ্ট ফরম্যাটে মিশ্র পঠন এবং লেখা সম্পাদন করতে দেয়। যখন "readonly_and_readwrite_storage_textures" WGSL ল্যাঙ্গুয়েজ এক্সটেনশনটি navigator.gpu.wgslLanguageFeatures এ উপস্থিত থাকে, তখন আপনি এখন একটি বাইন্ড গ্রুপ লেআউট তৈরি করার সময় "read-write" বা "read-only" -এ GPUStorageTexture অ্যাক্সেস সেট করতে পারেন। পূর্বে এটি "write-only" সীমাবদ্ধ ছিল।

তারপর, আপনার ডাব্লুজিএসএল শেডার কোড স্টোরেজ টেক্সচারের জন্য read_write এবং read অ্যাক্সেস কোয়ালিফায়ার ব্যবহার করতে পারে, textureLoad() এবং textureStore() বিল্ট-ইন ফাংশনগুলি সেই অনুযায়ী আচরণ করে এবং টেক্সচার মেমরি অ্যাক্সেস সিঙ্ক্রোনাইজ করার জন্য একটি নতুন textureBarrier() বিল্ট-ইন ফাংশন উপলব্ধ। একটি ওয়ার্কগ্রুপ।

requires readonly_and_readwrite_storage_textures; সাথে অ-বহনযোগ্যতার সম্ভাব্যতার সংকেত দিতে একটি প্রয়োজন-নির্দেশ ব্যবহার করার পরামর্শ দেওয়া হয়; আপনার WGSL শেডার কোডের শীর্ষে। নিম্নলিখিত উদাহরণ দেখুন এবং ইস্য্যু ডন:1972

if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
  throw new Error("Read-only and read-write storage textures are not available");
}

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

const bindGroupLayout = device.createBindGroupLayout({
  entries: [{
    binding: 0,
    visibility: GPUShaderStage.COMPUTE,
    storageTexture: {
      access: "read-write", // <-- New!
      format: "r32uint",
    },
  }],
});

const shaderModule = device.createShaderModule({ code: `
  requires readonly_and_readwrite_storage_textures;

  @group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;

  @compute @workgroup_size(1, 1)
  fn main(@builtin(local_invocation_id) local_id: vec3u) {
    var data = textureLoad(tex, vec2i(local_id.xy));
    data.x *= 2;
    textureStore(tex, vec2i(local_id.xy), data);
  }`
});

// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.

সেবা কর্মী এবং শেয়ার্ড ওয়ার্কার্স সমর্থন

Chrome-এ WebGPU ওয়েব কর্মীদের সমর্থনকে পরবর্তী স্তরে নিয়ে যায়, এখন পরিষেবা কর্মী এবং ভাগ করা কর্মীদের উভয়ের জন্যই সমর্থন অফার করে৷ আপনি পটভূমি কাজ এবং অফলাইন ক্ষমতা উন্নত করতে পরিষেবা কর্মীদের ব্যবহার করতে পারেন, এবং স্ক্রিপ্ট জুড়ে দক্ষ সম্পদ ভাগাভাগির জন্য ভাগ করা কর্মীদের। ক্রোমিয়াম সংখ্যা দেখুন:41494731

একটি এক্সটেনশন পরিষেবা কর্মী কিভাবে WebGPU ব্যবহার করবেন তা দেখতে ক্রোম এক্সটেনশন নমুনা এবং WebLLM ক্রোম এক্সটেনশন দেখুন।

WebLLM ক্রোম এক্সটেনশনের স্ক্রিনশট।
ওয়েবএলএলএম ক্রোম এক্সটেনশন।

নতুন অ্যাডাপ্টারের তথ্য বৈশিষ্ট্য

যদি ব্যবহারকারী chrome://flags/#enable-webgpu-developer-features এ "WebGPU বিকাশকারী বৈশিষ্ট্যগুলি" পতাকা সক্ষম করে থাকে তবে নন-স্ট্যান্ডার্ড d3dShaderModel এবং vkDriverVersion অ্যাডাপ্টারের তথ্য বৈশিষ্ট্যগুলি এখন requestAdapterInfo() কল করার পরে উপলব্ধ। যখন সমর্থিত:

অ্যাডাপ্টারের তথ্যে vkDriverVersion সমন্বিত https://webgpureport.org-এর স্ক্রিনশট।
অ্যাডাপ্টারের তথ্য vkDriverVersion https://webgpureport.org এ দেখানো হয়েছে।

বাগ ফিক্স

layout: "auto" , তারপর প্রথম পাইপলাইনের সাথে একটি বাইন্ডগ্রুপ তৈরি করা এবং দ্বিতীয় পাইপলাইনে এটি ব্যবহার করা এখন একটি GPUValidationError উত্থাপন করে। এটি একটি বাস্তবায়ন বাগ ছিল যা এখন সঠিক পরীক্ষার মাধ্যমে সংশোধন করা হয়েছে। দেখুন ভোরের সংখ্যা: 2402

ভোরের আপডেট

Dawn API-এ, wgpuDeviceSetUncapturedErrorCallback এর সাথে সেট করা আনক্যাপচারড এরর কলব্যাক এখন GPU ডিভাইসটি হারিয়ে যাওয়ার পরে কল করা হয় না। এই ফিক্সটি জাভাস্ক্রিপ্ট এপিআই স্পেসিফিকেশন এবং ব্লিঙ্কের বাস্তবায়নের সাথে ডনকে সারিবদ্ধ করে। দেখুন ভোরের সংখ্যা: 2459

এটি শুধুমাত্র কিছু মূল হাইলাইট কভার করে। কমিটের সম্পূর্ণ তালিকা দেখুন।

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

ওয়েবজিপিইউ সিরিজে নতুন কী কভার করা হয়েছে তার একটি তালিকা।

ক্রোম 125

ক্রোম 124

ক্রোম 123

ক্রোম 122

ক্রোম 121

ক্রোম 120

ক্রোম 119

ক্রোম 118

ক্রোম 117

ক্রোম 116

ক্রোম 115

ক্রোম 114

ক্রোম 113