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

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

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

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

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

// 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() দ্বারা ফেরত দেওয়া হয়েছে

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

বিশেষ সঙ্গতি

GPUPipelineError() কনস্ট্রাক্টরের message আর্গুমেন্ট ঐচ্ছিক। ক্রোমিয়াম পরিবর্তন দেখুন:4613967

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

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

বিকাশকারীর অভিজ্ঞতা উন্নত করা

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

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

DevTools JavaScript কনসোলের স্ক্রিনশট যা বাফার যাচাইকরণ ত্রুটি বার্তা সমন্বিত করে।
DevTools JavaScript কনসোলে বাফার যাচাইকরণের ত্রুটির বার্তা।

ভোরের আপডেট

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

wgpu::ShaderModuleWGSLDescriptor অবচিত source বৈশিষ্ট্য code পক্ষে সরানো হয়েছে। দেখুন পরিবর্তন ভোর:130321

অনুপস্থিত wgpu::RenderBundle::SetLabel() পদ্ধতি প্রয়োগ করা হয়েছে। দেখুন পরিবর্তন ভোরঃ 134502

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

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

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

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

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

ক্রোম 125

ক্রোম 124

ক্রোম 123

ক্রোম 122

ক্রোম 121

ক্রোম 120

ক্রোম 119

ক্রোম 118

ক্রোম 117

ক্রোম 116

ক্রোম 115

ক্রোম 114

ক্রোম 113