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

François Beaufort
François Beaufort

WebCodecs ইন্টিগ্রেশন

HTMLVideoElement-এর মাধ্যমে importExternalTexture() থেকে অস্বচ্ছ "এক্সটার্নাল টেক্সচার" অবজেক্ট তৈরি করতে WebGPU একটি API প্রকাশ করে। আপনি এইসব অবজেক্ট ব্যবহার করে ভিডিও ফ্রেমের নমুনা দক্ষতার সাথে নিতে পারবেন, সম্ভাব্যভাবে সোর্স YUV কালার মডেল ডেটা থেকে সরাসরি ০-কপি উপায়ে।

তবে, প্রাথমিক WebGPU স্পেসিফিকেশন WebCodecs VideoFrame অবজেক্ট থেকে GPUExternalTexture অবজেক্ট তৈরি করার অনুমতি দেয়নি। যেসব উন্নত ভিডিও প্রসেসিং অ্যাপ আগে থেকেই WebCodecs ব্যবহার করে এবং ভিডিও প্রসেসিং পাইপলাইনে WebGPU ইন্টিগ্রেট করতে চায়, তাদের জন্য এই ক্ষমতা গুরুত্বপূর্ণ। WebCodecs ইন্টিগ্রেশন GPUExternalTexture ও copyExternalImageToTexture() কলের সোর্স হিসেবে VideoFrame ব্যবহার করার সুবিধা যোগ করে। নিচের উদাহরণ ও chromestatus এন্ট্রি দেখুন।

// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);

// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.

এটি নিয়ে এক্সপেরিমেন্ট করতে, WebCodecs-এর মাধ্যমে ভিডিও আপলোড করা এক্সপেরিমেন্টাল স্যাম্পেল দেখুন।

GPUAdapter-এর requestDevice() দ্বারা রিটার্ন করা হারানো ডিভাইস

GPUAdapter-এ requestDevice() পদ্ধতিটি যদি GPUDevice তৈরি করার জন্য আগেই ব্যবহার করা হয়ে থাকে বলে কাজ না করে, তাহলে এটি এখন GPUDevice দিয়ে পূরণ করে যা সঙ্গে সঙ্গে হারিয়ে গেছে বলে চিহ্নিত করা হয়, এর পরিবর্তে null দিয়ে প্রত্যাখ্যান করা একটি প্রমিস রিটার্ন করে। issue chromium:1234617 দেখুন।

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

// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;

importExternalTexture() কল করা হলে ভিডিও প্লেব্যাক স্মুথ রাখা

HTMLVideoElement সহ importExternalTexture() কল করা হলে, ভিডিওটি ভিউপোর্টে দেখা না গেলে, সংশ্লিষ্ট ভিডিও প্লেব্যাক আর থ্রটল করা হয় না। issue chromium:1425252 দেখুন।

স্পেসিফিকেশন মেনে চলা

GPUPipelineError() কনস্ট্রাক্টরে message আর্গুমেন্ট ঐচ্ছিক। change chromium:4613967 দেখুন।

WGSL সোর্সে code \0 থাকলে createShaderModule() কল করার সময় সমস্যা হয়। issue dawn:1345 দেখুন।

createSampler()-এর মাধ্যমে কোনও টেক্সচার স্যাম্পেল করার সময় ব্যবহৃত ডিফল্ট সর্বাধিক লেভেল অফ ডিটেল (lodMaxClamp) হল ৩২। change chromium:4608063 দেখুন।

ডেভেলপার অভিজ্ঞতা উন্নত করা

ডেভেলপাররা যখন কোনও কাজ করে না এমন প্ল্যাটফর্মে WebGPU ব্যবহার করেন, তখন তাদের মনে করিয়ে দেওয়ার জন্য DevTools জাভাস্ক্রিপ্ট কনসোলে একটি মেসেজ দেখানো হয়। change chromium:4589369 দেখুন।

getMappedRange() কাজ না করলে, ডেভেলপারদের কোয়েরিতে কমান্ড পাঠানোর জন্য বাধ্য না করেই, DevTools JavaScript কনসোলে বাফার যাচাইকরণ সংক্রান্ত সমস্যার মেসেজ সঙ্গে সঙ্গে দেখানো হয়। change chromium:4597950 দেখুন।

DevTools JavaScript কনসোলের স্ক্রিনশট যাতে বাফার যাচাইকরণ সংক্রান্ত সমস্যার মেসেজ দেখা যাচ্ছে।
DevTools জাভাস্ক্রিপ্ট কনসোলে বাফার ভ্যালিডেশন সংক্রান্ত সমস্যার মেসেজ।

ভোরের আপডেট

disallow_unsafe_apis ডিবাগ টগলের নাম পরিবর্তন করে allow_unsafe_apis করা হয়েছে এবং এটি ডিফল্ট হিসেবে বন্ধ করা হয়েছে। এই টগল API এন্ট্রি পয়েন্ট বা প্যারামিটার কম্বিনেশনে যাচাইকরণ সংক্রান্ত সমস্যাকে আড়াল করে যা এখনও নিরাপদ বলে বিবেচনা করা হয় না। এটি ডিবাগিংয়ের জন্য সহায়ক হতে পারে। issue dawn:1685 দেখুন।

code-এর জন্য wgpu::ShaderModuleWGSLDescriptor বন্ধ হয়ে যাওয়া source অ্যাট্রিবিউট সরিয়ে দেওয়া হয়েছে। change dawn:130321 দেখুন।

wgpu::RenderBundle::SetLabel() পদ্ধতি প্রয়োগ করা হয়েছে। change dawn:134502 দেখুন।

wgpu::RequestAdapterOptionsBackendType বিকল্প সহ অ্যাডাপ্টর পাওয়ার সময় অ্যাপ্লিকেশন নির্দিষ্ট কোনও ব্যাকএন্ডের জন্য অনুরোধ করতে পারে। নিচে একটি উদাহরণ ও issue dawn:1875 দেখুন।

wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;

wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

একটি নতুন SwapChain::GetCurrentTexture() পদ্ধতি যোগ করা হয়েছে যাতে সোয়াপচেন টেক্সচারের অতিরিক্ত ব্যবহার রয়েছে যাতে রিটার্ন wgpu::Texture কপিগুলিতে ব্যবহার করা যায়। নিচে একটি উদাহরণ দেখুন এবং issue dawn:1551 কমান্ড দিন।

wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();

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

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

WebGPU-তে নতুন কী কী আছে সিরিজে যা যা কভার করা হয়েছে তার একটি তালিকা।

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113