@@ -379,53 +379,69 @@ GraphicsAdapterInfo GetGraphicsAdapterInfo(WGPUAdapter wgpuAdapter, WGPUDevice w
379379
380380 auto CheckWebGPUFeature = [wgpuAdapter, wgpuDevice](WGPUFeatureName Feature) {
381381 return ((wgpuAdapter != nullptr && wgpuAdapterHasFeature (wgpuAdapter, Feature)) ||
382- (wgpuDevice != nullptr && wgpuDeviceHasFeature (wgpuDevice, Feature)));
382+ (wgpuDevice != nullptr && wgpuDeviceHasFeature (wgpuDevice, Feature))) ?
383+ DEVICE_FEATURE_STATE_ENABLED :
384+ DEVICE_FEATURE_STATE_DISABLED;
383385 };
384386
385387 // Enable features
386388 {
387- // TODO
388389 DeviceFeatures& Features{AdapterInfo.Features };
389- Features.SeparablePrograms = DEVICE_FEATURE_STATE_ENABLED;
390- Features.ShaderResourceQueries = DEVICE_FEATURE_STATE_ENABLED;
391- Features.ComputeShaders = DEVICE_FEATURE_STATE_ENABLED;
392- Features.OcclusionQueries = DEVICE_FEATURE_STATE_ENABLED;
393- Features.DepthBiasClamp = DEVICE_FEATURE_STATE_ENABLED;
394- Features.IndependentBlend = DEVICE_FEATURE_STATE_ENABLED;
395- Features.DualSourceBlend = DEVICE_FEATURE_STATE_ENABLED;
396- Features.MultiViewport = DEVICE_FEATURE_STATE_ENABLED;
397- Features.PixelUAVWritesAndAtomics = DEVICE_FEATURE_STATE_ENABLED;
398- Features.TextureUAVExtendedFormats = DEVICE_FEATURE_STATE_ENABLED;
399- Features.AsyncShaderCompilation = DEVICE_FEATURE_STATE_ENABLED;
400-
401- Features.WireframeFill = DEVICE_FEATURE_STATE_DISABLED;
402- Features.FormattedBuffers = DEVICE_FEATURE_STATE_DISABLED;
403- Features.ShaderResourceStaticArrays = DEVICE_FEATURE_STATE_DISABLED;
404- Features.ShaderResourceRuntimeArrays = DEVICE_FEATURE_STATE_DISABLED;
405-
406- if (CheckWebGPUFeature (WGPUFeatureName_DepthClipControl))
407- Features.DepthClamp = DEVICE_FEATURE_STATE_ENABLED;
408-
409- if (CheckWebGPUFeature (WGPUFeatureName_TimestampQuery))
410- Features.TimestampQueries = DEVICE_FEATURE_STATE_ENABLED;
411-
412- if (CheckWebGPUFeature (WGPUFeatureName_TextureCompressionBC))
413- Features.TextureCompressionBC = DEVICE_FEATURE_STATE_ENABLED;
414-
415- if (CheckWebGPUFeature (WGPUFeatureName_TextureCompressionETC2))
416- Features.TextureCompressionETC2 = DEVICE_FEATURE_STATE_ENABLED;
417-
418- if (CheckWebGPUFeature (WGPUFeatureName_ShaderF16))
419- Features.ShaderFloat16 = DEVICE_FEATURE_STATE_ENABLED;
420-
421- // WGPUFeatureName_ChromiumExperimentalTimestampQueryInsidePasses = 0x000003EE,
422- if (CheckWebGPUFeature (WGPUFeatureName_TimestampQuery) && CheckWebGPUFeature (static_cast <WGPUFeatureName>(0x000003EE )))
423- {
424- Features.TimestampQueries = DEVICE_FEATURE_STATE_ENABLED;
425- Features.DurationQueries = DEVICE_FEATURE_STATE_ENABLED;
426- }
390+ Features.SeparablePrograms = DEVICE_FEATURE_STATE_ENABLED;
391+ Features.ShaderResourceQueries = DEVICE_FEATURE_STATE_ENABLED;
392+ Features.WireframeFill = DEVICE_FEATURE_STATE_DISABLED;
393+ Features.MultithreadedResourceCreation = DEVICE_FEATURE_STATE_DISABLED;
394+ Features.ComputeShaders = DEVICE_FEATURE_STATE_ENABLED;
395+ Features.GeometryShaders = DEVICE_FEATURE_STATE_DISABLED;
396+ Features.Tessellation = DEVICE_FEATURE_STATE_DISABLED;
397+ Features.MeshShaders = DEVICE_FEATURE_STATE_DISABLED;
398+ Features.RayTracing = DEVICE_FEATURE_STATE_DISABLED;
399+ Features.BindlessResources = DEVICE_FEATURE_STATE_DISABLED;
400+ Features.OcclusionQueries = DEVICE_FEATURE_STATE_ENABLED;
401+ Features.BinaryOcclusionQueries = DEVICE_FEATURE_STATE_DISABLED;
402+ Features.PipelineStatisticsQueries = DEVICE_FEATURE_STATE_DISABLED;
403+ Features.DepthBiasClamp = DEVICE_FEATURE_STATE_ENABLED;
404+ Features.DepthClamp = CheckWebGPUFeature (WGPUFeatureName_DepthClipControl);
405+ Features.IndependentBlend = DEVICE_FEATURE_STATE_ENABLED;
406+ Features.DualSourceBlend = CheckWebGPUFeature (WGPUFeatureName_DualSourceBlending);
407+ Features.MultiViewport = DEVICE_FEATURE_STATE_DISABLED;
408+ Features.TextureCompressionBC = CheckWebGPUFeature (WGPUFeatureName_TextureCompressionBC);
409+ Features.TextureCompressionETC2 = CheckWebGPUFeature (WGPUFeatureName_TextureCompressionETC2);
410+ Features.VertexPipelineUAVWritesAndAtomics = DEVICE_FEATURE_STATE_ENABLED;
411+ Features.PixelUAVWritesAndAtomics = DEVICE_FEATURE_STATE_ENABLED;
412+ Features.TextureUAVExtendedFormats = DEVICE_FEATURE_STATE_ENABLED;
413+ Features.ShaderFloat16 = CheckWebGPUFeature (WGPUFeatureName_ShaderF16);
414+ Features.ResourceBuffer16BitAccess = DEVICE_FEATURE_STATE_DISABLED;
415+ Features.UniformBuffer16BitAccess = DEVICE_FEATURE_STATE_DISABLED;
416+ Features.ShaderInputOutput16 = DEVICE_FEATURE_STATE_DISABLED;
417+ Features.ShaderInt8 = DEVICE_FEATURE_STATE_DISABLED;
418+ Features.ResourceBuffer8BitAccess = DEVICE_FEATURE_STATE_DISABLED;
419+ Features.UniformBuffer8BitAccess = DEVICE_FEATURE_STATE_DISABLED;
420+ Features.ShaderResourceStaticArrays = DEVICE_FEATURE_STATE_DISABLED;
421+ Features.ShaderResourceRuntimeArrays = DEVICE_FEATURE_STATE_DISABLED;
422+ Features.WaveOp = DEVICE_FEATURE_STATE_DISABLED;
423+ Features.InstanceDataStepRate = DEVICE_FEATURE_STATE_DISABLED;
424+ Features.NativeFence = DEVICE_FEATURE_STATE_DISABLED;
425+ Features.TileShaders = DEVICE_FEATURE_STATE_DISABLED;
426+ Features.TransferQueueTimestampQueries = DEVICE_FEATURE_STATE_DISABLED;
427+ Features.VariableRateShading = DEVICE_FEATURE_STATE_DISABLED;
428+ Features.SparseResources = DEVICE_FEATURE_STATE_DISABLED;
429+ Features.SubpassFramebufferFetch = DEVICE_FEATURE_STATE_DISABLED;
430+ Features.TextureComponentSwizzle = DEVICE_FEATURE_STATE_DISABLED;
431+ Features.TextureSubresourceViews = DEVICE_FEATURE_STATE_ENABLED;
432+ Features.NativeMultiDraw = DEVICE_FEATURE_STATE_DISABLED;
433+ Features.AsyncShaderCompilation = DEVICE_FEATURE_STATE_ENABLED;
434+ Features.FormattedBuffers = DEVICE_FEATURE_STATE_DISABLED;
435+
436+ Features.TimestampQueries = CheckWebGPUFeature (WGPUFeatureName_TimestampQuery);
437+ #if PLATFORM_EMSCRIPTEN
438+ Features.DurationQueries = DEVICE_FEATURE_STATE_DISABLED;
439+ #else
440+ Features.DurationQueries = Features.TimestampQueries ?
441+ CheckWebGPUFeature (WGPUFeatureName_ChromiumExperimentalTimestampQueryInsidePasses) :
442+ DEVICE_FEATURE_STATE_DISABLED;
443+ #endif
427444 }
428-
429445 ASSERT_SIZEOF (DeviceFeatures, 47 , " Did you add a new feature to DeviceFeatures? Please handle its status here." );
430446
431447 WGPUSupportedLimits wgpuSupportedLimits{};
0 commit comments