Skip to content

Commit b42b704

Browse files
EngineFactoryWebGPU: set all feature states in GetGraphicsAdapterInfo
1 parent 34a2c85 commit b42b704

File tree

1 file changed

+57
-41
lines changed

1 file changed

+57
-41
lines changed

Graphics/GraphicsEngineWebGPU/src/EngineFactoryWebGPU.cpp

Lines changed: 57 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)