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

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

ওয়েবকোডেক্স ইন্টিগ্রেশন

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

তবে, প্রাথমিক 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.

এটি ব্যবহার করার জন্য ভিডিও আপলোডিং উইথ ওয়েবকোডেক্স পরীক্ষামূলক নমুনাটি দেখুন।

GPUAdapter requestDevice() দ্বারা হারিয়ে যাওয়া ডিভাইসটি ফেরত পাঠানো হয়েছে

যদি GPUAdapterrequestDevice() পদ্ধতিটি ব্যর্থ হয় কারণ এটি ইতিমধ্যেই একটি GPUDevice তৈরি করতে ব্যবহৃত হয়েছে, তাহলে এটি এখন null দিয়ে প্রত্যাখ্যান করা প্রতিশ্রুতি ফেরত দেওয়ার পরিবর্তে, অবিলম্বে হারিয়ে যাওয়া হিসাবে চিহ্নিত একটি GPUDevice দিয়ে পূরণ করে। সমস্যা 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() কল করা হলে ভিডিও প্লেব্যাক মসৃণ রাখুন

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

স্পেক সম্মতি

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

WGSL সোর্স code contains \0 থাকলে createShaderModule() কল করার সময় একটি ত্রুটি দেখা দেয়। সমস্যাটি দেখুন dawn:1345

createSampler() দিয়ে টেক্সচারের নমুনা নেওয়ার সময় ব্যবহৃত ডিফল্ট সর্বোচ্চ স্তরের বিস্তারিত ( lodMaxClamp ) হল 32। change chromium:4608063 দেখুন।

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

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

যখন getMappedRange() ডেভেলপারদের কিউতে কমান্ড পাঠাতে বাধ্য না করে ব্যর্থ হয়, তখন DevTools JavaScript কনসোলে বাফার ভ্যালিডেশন ত্রুটির বার্তাগুলি তাৎক্ষণিকভাবে প্রদর্শিত হয়। change chromium:4597950 দেখুন।

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

ভোরের আপডেট

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

wgpu::ShaderModuleWGSLDescriptor এর অপ্রচলিত source অ্যাট্রিবিউটটি code পক্ষে সরানো হয়েছে। change dawn:130321 দেখুন।

অনুপস্থিত wgpu::RenderBundle::SetLabel() পদ্ধতিটি বাস্তবায়িত হয়েছে। change dawn:134502 দেখুন।

wgpu::RequestAdapterOptionsBackendType বিকল্প সহ একটি অ্যাডাপ্টার পাওয়ার সময় অ্যাপ্লিকেশনগুলি একটি নির্দিষ্ট ব্যাকএন্ডের অনুরোধ করতে পারে। নীচের একটি উদাহরণ দেখুন এবং 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 টেক্সচারের জন্য অতিরিক্ত ব্যবহারের সাথে একটি নতুন SwapChain::GetCurrentTexture() পদ্ধতি যোগ করা হয়েছে যাতে রিটার্ন wgpu::Texture কপিগুলিতে ব্যবহার করা যায়। নীচের একটি উদাহরণ দেখুন এবং dawn:1551 ইস্যু করুন

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

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

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

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

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩