Skip to content

Commit dcd1d6d

Browse files
committed
Fixed some illogical reordering, added more tooltips
1 parent a3e19f6 commit dcd1d6d

File tree

3 files changed

+55
-22
lines changed

3 files changed

+55
-22
lines changed

source/frontend/assets/js/feature_table_constants.mjs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ export const TableFeaturesShortNames = {
2424
"D3D12_FEATURE_DATA_D3D12_OPTIONS16.GPUUploadHeapSupported": "GPU upload heaps",
2525
"D3D12_FEATURE_DATA_D3D12_OPTIONS12.EnhancedBarriersSupported": "Enhanced barriers",
2626
"D3D12_FEATURE_DATA_D3D12_OPTIONS6.VariableShadingRateTier": "Variable-rate shading",
27-
"D3D12_FEATURE_DATA_D3D12_OPTIONS6.ShadingRateImageTileSize": "Shading-rate image tile size",
2827
"D3D12_FEATURE_DATA_D3D12_OPTIONS6.AdditionalShadingRatesSupported": "Additional shading rates",
29-
"D3D12_FEATURE_DATA_D3D12_OPTIONS10.VariableRateShadingSumCombinerSupported": "VRS sum combiner",
28+
"D3D12_FEATURE_DATA_D3D12_OPTIONS6.ShadingRateImageTileSize": "Shading-rate image tile size",
3029
"D3D12_FEATURE_DATA_D3D12_OPTIONS6.PerPrimitiveShadingRateSupportedWithViewportIndexing": "Per-primitive shading rate with viewport indexing",
30+
"D3D12_FEATURE_DATA_D3D12_OPTIONS10.VariableRateShadingSumCombinerSupported": "VRS sum combiner",
3131
"D3D12_FEATURE_DATA_D3D12_OPTIONS10.MeshShaderPerPrimitiveShadingRateSupported": "Mesh shader per-primitive shading rate",
3232
"D3D12_FEATURE_DATA_D3D12_OPTIONS3.BarycentricsSupported": "Barycentrics",
33-
"R9G9B9E5_RTV_UAV": "R9G9B9E5 RTV/UAV support",
34-
"R9G9B9E5_Display": "R9G9B9E5 Display support",
33+
"Table_R9G9B9E5_RTV_UAV": "R9G9B9E5 RTV/UAV support",
34+
"Table_R9G9B9E5_Display": "R9G9B9E5 Display support",
3535
"D3D12_FEATURE_DATA_D3D12_OPTIONS9.WaveMMATier": "WaveMMA (wave_matrix)",
3636
"D3D12_FEATURE_DATA_D3D12_OPTIONS1.WaveLaneCountMin": "Wave lane count min",
3737
"D3D12_FEATURE_DATA_D3D12_OPTIONS1.WaveLaneCountMax": "Wave lane count max",
@@ -43,10 +43,10 @@ export const TableFeaturesShortNames = {
4343
"D3D12_FEATURE_DATA_D3D12_OPTIONS.ResourceHeapTier": "Resource heap",
4444
"D3D12_FEATURE_DATA_D3D12_OPTIONS.ResourceBindingTier": "Resource binding",
4545
"D3D12_FEATURE_DATA_D3D12_OPTIONS.TiledResourcesTier": "Tiled resources",
46-
"D3D12_FEATURE_DATA_D3D12_OPTIONS.MinPrecisionSupport": "Min-precision support",
47-
"D3D12_FEATURE_DATA_D3D12_OPTIONS4.Native16BitShaderOpsSupported": "Native 16-bit shader ops",
4846
// This is supposed to mean that tier 3 is only supported for SRVs, but unfortunately is always true when fully-featured tier 3 is reported, we fix that up later
4947
"D3D12_FEATURE_DATA_D3D12_OPTIONS5.SRVOnlyTiledResourceTier3": "SRV-only tiled resource tier 3",
48+
"D3D12_FEATURE_DATA_D3D12_OPTIONS.MinPrecisionSupport": "Min-precision support",
49+
"D3D12_FEATURE_DATA_D3D12_OPTIONS4.Native16BitShaderOpsSupported": "Native 16-bit shader ops",
5050
"D3D12_FEATURE_DATA_D3D12_OPTIONS.DoublePrecisionFloatShaderOps": "64-bit float shader ops",
5151
"D3D12_FEATURE_DATA_D3D12_OPTIONS1.Int64ShaderOps": "64-bit int shader ops",
5252
"D3D12_FEATURE_DATA_D3D12_OPTIONS9.AtomicInt64OnTypedResourceSupported": "64-bit int atomics on typed resource",
@@ -96,29 +96,27 @@ export const TableFeaturesShortNames = {
9696
"D3D12_FEATURE_DATA_D3D12_OPTIONS.CrossAdapterRowMajorTextureSupported": "Cross-adapter row-major textures",
9797

9898
// Features that are consistent across all GPUs of last 10 years
99+
"D3D12_FEATURE_DATA_CROSS_NODE.SharingTier": "Cross-node sharing",
100+
"D3D12_FEATURE_DATA_CROSS_NODE.AtomicShaderInstructions": "Cross-node atomics",
99101
"D3D12_FEATURE_DATA_D3D12_OPTIONS1.WaveOps": "Wave ops",
100-
"D3D12_FEATURE_DATA_ROOT_SIGNATURE.HighestVersion": "Root signature version",
101102
"D3D12_FEATURE_DATA_D3D12_OPTIONS.OutputMergerLogicOp": "Output merger logic ops",
102103
"D3D12_FEATURE_DATA_D3D12_OPTIONS3.CastingFullyTypedFormatSupported": "Casting fully typed formats",
103104
"D3D12_FEATURE_DATA_D3D12_OPTIONS.TypedUAVLoadAdditionalFormats": "Typed UAV loads for additional formats",
104105
"D3D12_FEATURE_DATA_D3D12_OPTIONS.VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation": "VP & RT array index without GS emulation",
105-
106106
"D3D12_FEATURE_DATA_D3D12_OPTIONS4.MSAA64KBAlignedTextureSupported": "64KB-aligned MSAA textures",
107107
"D3D12_FEATURE_DATA_D3D12_OPTIONS4.SharedResourceCompatibilityTier": "Shared resources compatibility",
108-
109108
"D3D12_FEATURE_DATA_D3D12_OPTIONS9.MeshShaderPipelineStatsSupported": "Mesh shader pipeline stats",
110-
"D3D12_FEATURE_DATA_CROSS_NODE.SharingTier": "Cross-node sharing",
111109

112110
// Features that seem to only be used for debugging
113111
"D3D12_FEATURE_DATA_EXISTING_HEAPS.Supported": "Heaps from existing memory",
114-
"D3D12_FEATURE_DATA_CROSS_NODE.AtomicShaderInstructions": "Cross-node atomics",
115112
"D3D12_FEATURE_DATA_D3D12_OPTIONS20.RecreateAtTier": "Recreate resource at pointer",
116113
"D3D12_FEATURE_DATA_D3D12_OPTIONS20.ComputeOnlyWriteWatchSupported": "Compute-only write watch",
117114
"D3D12_FEATURE_DATA_D3D12_OPTIONS19.ComputeOnlyCustomHeapSupported": "Compute-only custom heap",
118115

119116
// Things that literally can not be unsupported given new enough Agility SDK/OS
120117
"D3D12_FEATURE_DATA_D3D12_OPTIONS19.RasterizerDesc2Supported": "RASTERIZER_DESC2 supported",
121118
"D3D12_FEATURE_DATA_D3D12_OPTIONS18.RenderPassesValid" : "Render passes valid",
119+
"D3D12_FEATURE_DATA_ROOT_SIGNATURE.HighestVersion": "Root signature version",
122120
"D3D12_FEATURE_DATA_D3D12_OPTIONS1.ExpandedComputeResourceStates" : "Expanded compute resource states",
123121

124122
// Not in retail yet

source/frontend/assets/js/website_feature_table.mjs

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import * as Server from './server.mjs'
2-
import * as Properties from './properties.mjs'
1+
import ArchStats from './arch_stats.mjs'
32
import * as Constants from './constants.mjs'
43
import * as FeatureTableConstants from './feature_table_constants.mjs'
5-
import * as HTML from './html.mjs'
6-
import ArchStats from './arch_stats.mjs'
74
import Globals from './globals.mjs'
5+
import * as HTML from './html.mjs'
6+
import * as Properties from './properties.mjs'
7+
import * as Server from './server.mjs'
88

99
let Reports = [];
1010

@@ -704,7 +704,7 @@ function AddSpecialRowCell(featureRow, archName, featureName) {
704704
featureRow.appendChild(td);
705705
return true;
706706
}
707-
else if (featureName == "R9G9B9E5_RTV_UAV") {
707+
else if (featureName == "Table_R9G9B9E5_RTV_UAV") {
708708
let newestDriverReport = NewestDriverReportPerArch.get(archName);
709709
if (newestDriverReport.Formats == null) {
710710
AddCellReal("❓", featureRow);
@@ -722,7 +722,7 @@ function AddSpecialRowCell(featureRow, archName, featureName) {
722722
AddCellReal(rtvSupport ? FeatureTableConstants.TableTrueFalseMapping["1"] : FeatureTableConstants.TableTrueFalseMapping["0"], featureRow);
723723
return true;
724724
}
725-
else if (featureName == "R9G9B9E5_Display") {
725+
else if (featureName == "Table_R9G9B9E5_Display") {
726726
let newestDriverReport = NewestDriverReportPerArch.get(archName);
727727
if (newestDriverReport.Formats == null) {
728728
AddCellReal("❓", featureRow);
@@ -749,12 +749,34 @@ function AddSpecialRowCell(featureRow, archName, featureName) {
749749

750750
function OverrideCell(tableRow, archName, featureName, featureValue, newestDriverReport, newestReportContainer) {
751751
if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS16.GPUUploadHeapSupported") {
752+
if (archName == "WARP")
753+
{
754+
// WARP just supports it without any special conditions
755+
AddCellReal(FeatureTableConstants.TableTrueFalseMapping["1"], tableRow);
756+
return true;
757+
}
752758
for (let r of ReportsPerArch.get(archName)) {
759+
// If at least one report has GPUUploadHeapSupported == 1, this means that architecture supports it
753760
if (archName != "WARP" && r.D3D12_FEATURE_DATA_D3D12_OPTIONS16.GPUUploadHeapSupported) {
754-
AddCellReal("✅*", tableRow, "GPU Upload Heap support depends on BIOS settings and Windows version.\nSame GPU may report different values depending on the system.", "bottomright");
761+
AddCellReal(FeatureTableConstants.TableTrueFalseMapping["1"] + "*", tableRow, "GPU Upload Heap support depends on BIOS settings and Windows version.\nSame GPU may report different values depending on the system.", "bottomright");
755762
return true;
756763
}
757764
}
765+
// If no report has GPUUploadHeapSupported == 1, we assume that the architecture doesn't support it
766+
AddCellReal(FeatureTableConstants.TableTrueFalseMapping["0"], tableRow);
767+
return true;
768+
}
769+
else if ((featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS6.ShadingRateImageTileSize" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS6.AdditionalShadingRatesSupported" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS6.PerPrimitiveShadingRateSupportedWithViewportIndexing" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS10.VariableRateShadingSumCombinerSupported" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS10.MeshShaderPerPrimitiveShadingRateSupported") && newestDriverReport.D3D12_FEATURE_DATA_D3D12_OPTIONS6.VariableShadingRateTier == 0) {
770+
AddCellReal("N/A", tableRow, "VRS capabilities are only relevant if VRS is supported.");
771+
return true;
772+
}
773+
else if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS6.ShadingRateImageTileSize" && newestDriverReport.D3D12_FEATURE_DATA_D3D12_OPTIONS6.VariableShadingRateTier == 1) {
774+
AddCellReal("N/A", tableRow, "VRS Tier 2 is required for shading rate image support.");
775+
return true;
776+
}
777+
else if ((featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS6.PerPrimitiveShadingRateSupportedWithViewportIndexing" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS10.VariableRateShadingSumCombinerSupported" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS10.MeshShaderPerPrimitiveShadingRateSupported") && newestDriverReport.D3D12_FEATURE_DATA_D3D12_OPTIONS6.VariableShadingRateTier == 1) {
778+
AddCellReal("N/A", tableRow, "VRS Tier 2 is required for this capability.");
779+
return true;
758780
}
759781
// If our tiled resource tier is 3, the SRVOnlyTiledResourceTier3 flag does not apply, but is always true, which is misleading
760782
else if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS5.SRVOnlyTiledResourceTier3" && newestDriverReport.D3D12_FEATURE_DATA_D3D12_OPTIONS.TiledResourcesTier >= 3) {
@@ -769,10 +791,18 @@ function OverrideCell(tableRow, archName, featureName, featureValue, newestDrive
769791
AddCellReal("Tier 1.1 *", tableRow, "Within Turing architecture there are:\nRTX 20 series and Quadro RTX cards with hardware Tier 1.1 support\nGTX 16 series cards with >= 6GB of VRAM with software emulated Tier 1.0 support\nGTX 16 series cards with < 6GB of VRAM with no raytracing support at all");
770792
return true;
771793
}
794+
else if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS5.RaytracingTier" && archName == "X1") {
795+
AddCellReal("❌ *", tableRow, "X1 supports ray query in hardware,\nbut this capability is not exposed in D3D12,\nsince DXR Tier 1.0 requires callable shaders,\nwhich are unsupported on X1.", "bottomright");
796+
return true;
797+
}
772798
else if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS7.MeshShaderTier" && archName == "RDNA2") {
773799
AddCellReal(FeatureTableConstants.TableTrueFalseMapping["1"] + "*", tableRow, "RDNA2 iGPUs with 1 WGP don't have mesh shader support");
774800
return true;
775801
}
802+
else if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS12.MSPrimitivesPipelineStatisticIncludesCulledPrimitives" && newestDriverReport.D3D12_FEATURE_DATA_D3D12_OPTIONS7.MeshShaderTier == 0) {
803+
AddCellReal("N/A", tableRow, "It is only relevant if Mesh Shaders are supported.", "bottomright");
804+
return true;
805+
}
776806
return false;
777807
}
778808

@@ -795,11 +825,16 @@ function AddCell(featureRow, archName, featureName) {
795825

796826
function AddSpecialRow(featureRow, featureName) {
797827
if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS19.RasterizerDesc2Supported" || featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS18.RenderPassesValid") {
798-
AddCellReal("Always supported", featureRow, "Given new enough Agility SDK, it is always supported, independently of GPU or driver.", "topcenter", ArchToOutputCount());
828+
// I don't know why, but both D3D12_FEATURE_DATA_D3D12_OPTIONS18 and D3D12_FEATURE_DATA_D3D12_OPTIONS19 were added in the same SDK version
829+
AddCellReal("Always supported *", featureRow, "Starting with Agility SDK 1.610.0, it is always supported, independently of GPU or driver.", "topcenter", ArchToOutputCount());
830+
return true;
831+
}
832+
if (featureName == "D3D12_FEATURE_DATA_ROOT_SIGNATURE.HighestVersion") {
833+
AddCellReal("1.2 *", featureRow, "Starting with Agility SDK 1.610.0, root signature 1.2 is always supported, independently of GPU or driver.", "topcenter", ArchToOutputCount());
799834
return true;
800835
}
801836
if (featureName == "D3D12_FEATURE_DATA_D3D12_OPTIONS1.ExpandedComputeResourceStates") {
802-
AddCellReal("Always supported", featureRow, "Given new enough OS, it is always supported, independently of GPU or driver.", "topcenter", ArchToOutputCount());
837+
AddCellReal("Always supported *", featureRow, "Starting with Windows 10 version 1607, it is always supported, independently of GPU or driver.\nAll currently supported Windows versions are newer than Windows 10 version 1607.", "topcenter", ArchToOutputCount());
803838
return true;
804839
}
805840

@@ -831,7 +866,7 @@ function AddRow(tbody, featureName, featureShortName) {
831866
if (!featureName.startsWith("Table"))
832867
AddTooltipForTable(featureHeader, featureName, { alignOutsideVertical: true });
833868
else if (featureName == "TableMarketShare")
834-
AddTooltipForTable(featureHeader, "Market share in the Steam Hardware Survey among DirectX 12 System. This is an underestimate and may not be very accurate in general.", { alignOutsideVertical: true });
869+
AddTooltipForTable(featureHeader, "Market share in the Steam Hardware Survey among DirectX 12 Systems.\nThis is an underestimate and may not be very accurate in general.", { alignOutsideVertical: true });
835870

836871
featureRow.appendChild(featureHeader);
837872

source/website/feature_table.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)