MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Init

Method Init

Source/Engine/GraphicsDevice/WebGPU/GPUDeviceWebGPU.cpp:241–669  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

239}
240
241bool GPUDeviceWebGPU::Init()
242{
243 // Init device limits
244 Array<WGPUFeatureName, FixedAllocation<32>> features;
245#define CHECK_FEATURE(feature) if (wgpuAdapterHasFeature(Adapter->Adapter, feature)) features.Add(feature)
246 CHECK_FEATURE(WGPUFeatureName_CoreFeaturesAndLimits);
247 CHECK_FEATURE(WGPUFeatureName_DepthClipControl);
248 CHECK_FEATURE(WGPUFeatureName_Depth32FloatStencil8);
249 CHECK_FEATURE(WGPUFeatureName_TextureCompressionBC);
250 CHECK_FEATURE(WGPUFeatureName_TextureCompressionBCSliced3D);
251 CHECK_FEATURE(WGPUFeatureName_TextureCompressionETC2);
252 CHECK_FEATURE(WGPUFeatureName_TextureCompressionASTC);
253 CHECK_FEATURE(WGPUFeatureName_TextureCompressionASTCSliced3D);
254 CHECK_FEATURE(WGPUFeatureName_TimestampQuery);
255 CHECK_FEATURE(WGPUFeatureName_IndirectFirstInstance);
256 CHECK_FEATURE(WGPUFeatureName_RG11B10UfloatRenderable);
257 CHECK_FEATURE(WGPUFeatureName_BGRA8UnormStorage);
258 CHECK_FEATURE(WGPUFeatureName_Float32Filterable);
259 CHECK_FEATURE(WGPUFeatureName_Float32Blendable);
260 CHECK_FEATURE(WGPUFeatureName_ClipDistances);
261 CHECK_FEATURE(WGPUFeatureName_TextureFormatsTier1);
262 CHECK_FEATURE(WGPUFeatureName_TextureFormatsTier2);
263 CHECK_FEATURE(WGPUFeatureName_PrimitiveIndex);
264 CHECK_FEATURE(WGPUFeatureName_MultiDrawIndirect);
265#undef CHECK_FEATURE
266#if BUILD_DEBUG
267 LOG(Info, "WebGPU features:");
268#define LOG_FEATURE(feature) if (features.Contains(feature)) LOG(Info, " > {}", TEXT(#feature))
269 LOG_FEATURE(WGPUFeatureName_CoreFeaturesAndLimits);
270 LOG_FEATURE(WGPUFeatureName_DepthClipControl);
271 LOG_FEATURE(WGPUFeatureName_Depth32FloatStencil8);
272 LOG_FEATURE(WGPUFeatureName_TextureCompressionBC);
273 LOG_FEATURE(WGPUFeatureName_TextureCompressionBCSliced3D);
274 LOG_FEATURE(WGPUFeatureName_TextureCompressionETC2);
275 LOG_FEATURE(WGPUFeatureName_TextureCompressionASTC);
276 LOG_FEATURE(WGPUFeatureName_TextureCompressionASTCSliced3D);
277 LOG_FEATURE(WGPUFeatureName_TimestampQuery);
278 LOG_FEATURE(WGPUFeatureName_IndirectFirstInstance);
279 LOG_FEATURE(WGPUFeatureName_RG11B10UfloatRenderable);
280 LOG_FEATURE(WGPUFeatureName_BGRA8UnormStorage);
281 LOG_FEATURE(WGPUFeatureName_Float32Filterable);
282 LOG_FEATURE(WGPUFeatureName_Float32Blendable);
283 LOG_FEATURE(WGPUFeatureName_ClipDistances);
284 LOG_FEATURE(WGPUFeatureName_TextureFormatsTier1);
285 LOG_FEATURE(WGPUFeatureName_TextureFormatsTier2);
286 LOG_FEATURE(WGPUFeatureName_PrimitiveIndex);
287 LOG_FEATURE(WGPUFeatureName_MultiDrawIndirect);
288#undef LOG_FEATURE
289#endif
290 for (int32 i = 0; i < (int32)PixelFormat::MAX; i++)
291 FeaturesPerFormat[i] = FormatFeatures(MSAALevel::None, FormatSupport::None);
292 WGPULimits limits = WGPU_LIMITS_INIT;
293 if (wgpuAdapterGetLimits(Adapter->Adapter, &limits) == WGPUStatus_Success)
294 {
295 MinUniformBufferOffsetAlignment = limits.minUniformBufferOffsetAlignment;
296 TimestampQuery = features.Contains(WGPUFeatureName_TimestampQuery);
297 Limits.HasCompute =
298 limits.maxStorageBuffersPerShaderStage >= GPU_MAX_UA_BINDED &&

Callers 5

OnResidentMipsChangedMethod · 0.45
InitHandlesMethod · 0.45
FlushTimestampsMethod · 0.45
CreateGPUDeviceWebGPUFunction · 0.45
ResizeMethod · 0.45

Calls 10

FormatFeaturesFunction · 0.85
EnumHasAllFlagsFunction · 0.85
CallMethod · 0.80
FormatFunction · 0.50
NewFunction · 0.50
InitFunction · 0.50
ContainsMethod · 0.45
CountMethod · 0.45
GetMethod · 0.45
WaitMethod · 0.45

Tested by

no test coverage detected