Skip to content

Commit 8983be3

Browse files
authored
Implemented comparison and report sharing button (#50)
1 parent 9a412cc commit 8983be3

26 files changed

+796
-75
lines changed

source/GUI/html/default.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.

source/db-server/main.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,56 @@ api.get('/get_submission', (req, res) => {
120120
}
121121
})
122122

123+
const getTwoSubmissionsStatement = db.prepare("SELECT * FROM Submissions WHERE ID IN (?,?)")
124+
api.get('/get_two_submissions', (req, res) => {
125+
if (!req.query.IDs) {
126+
res.status(400)
127+
res.send('IDs is missing')
128+
return
129+
}
130+
131+
let ids = req.query.IDs.split(",").map(Number)
132+
if (ids.some(isNaN)) {
133+
res.status(400)
134+
res.send('IDs are not numbers')
135+
return
136+
}
137+
if (ids.length != 2) {
138+
res.status(400)
139+
res.send('Expected exactly 2 IDs')
140+
return
141+
}
142+
143+
let etag = req.query.ID > latestReportID ? "0" : databaseLastDeleteTime
144+
if (req.headers['if-none-match'] == etag) {
145+
res.status(304)
146+
res.send()
147+
return
148+
}
149+
150+
try {
151+
let rows = getTwoSubmissionsStatement.all([ids[0], ids[1]])
152+
rows = rows.map(database_common.unpackDatabaseObject)
153+
154+
let cacheLifetime = 300
155+
if (rows.length != 0) {
156+
cacheLifetime = 86400
157+
}
158+
159+
res.header("Cache-Control", "public, max-age=" + cacheLifetime)
160+
res.header("ETag", etag)
161+
res.send(JSON.stringify(rows))
162+
}
163+
catch (e) {
164+
console.log('DB Error')
165+
console.log(e)
166+
167+
res.status(500)
168+
res.send('DB Error')
169+
return
170+
}
171+
})
172+
123173
const getAllSubmissionsStatement = db.prepare("SELECT * FROM Submissions")
124174
api.get('/get_all_submissions', (req, res) => {
125175
let etag = databaseLastModificationTime

source/frontend/assets/css/report_table.css

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ tr {
3030
width: 100%;
3131
}
3232

33+
.hiddenCell {
34+
height: 0;
35+
padding: 0;
36+
margin: 0;
37+
}
38+
3339
tr:nth-of-type(odd) {
3440
background-color: #e6e5e5;
3541
}
@@ -122,6 +128,60 @@ button:disabled {
122128
vertical-align: sub;
123129
}
124130

131+
.ActionIcon {
132+
cursor: pointer;
133+
height: 1.1em;
134+
margin: 0.05em 0.15em;
135+
vertical-align: sub;
136+
transition: .5s ease-out;
137+
}
138+
139+
.ActionIcon:hover {
140+
filter: saturate(3);
141+
}
142+
143+
.ActionIconActivated {
144+
filter: hue-rotate(180deg) saturate(3);
145+
}
146+
147+
.ActionIconActivated:hover {
148+
filter: hue-rotate(180deg) saturate(5);
149+
}
150+
151+
.PopupMessage {
152+
position: absolute;
153+
154+
background-color: #ffffff;
155+
color: #000000;
156+
text-align: center;
157+
border-radius: 0.4em;
158+
border-color: #7f7f7f;
159+
border-style: solid;
160+
border-width: 0.1em;
161+
padding: 0.3em;
162+
margin: 0 0.2em;
163+
164+
animation: PopupFadeout 4s;
165+
animation-iteration-count: 1;
166+
opacity: 0;
167+
}
168+
169+
170+
@keyframes PopupFadeout {
171+
from {
172+
opacity: 1;
173+
}
174+
175+
60% {
176+
opacity: 1;
177+
}
178+
179+
to {
180+
opacity: 0;
181+
}
182+
}
183+
184+
125185
.FormatTable {
126186
width: auto;
127187
top: 0;
@@ -183,16 +243,39 @@ button:disabled {
183243
.clickableCell:hover {
184244
background-color: #4d4d4d;
185245
}
246+
186247
.tooltip .tooltiptext {
187248
background-color: #232323;
188249
color: #ffffff;
189250
border-color: #7f7f7f;
190251
}
191252

253+
.ActionIcon {
254+
filter: brightness(1.3);
255+
}
256+
257+
.ActionIcon:hover {
258+
filter: brightness(1.5) saturate(3);
259+
}
260+
261+
.ActionIconActivated {
262+
filter: brightness(1.3) hue-rotate(180deg) saturate(2);
263+
}
264+
265+
.ActionIconActivated:hover {
266+
filter: brightness(1.3) hue-rotate(180deg) saturate(3);
267+
}
268+
269+
.PopupMessage {
270+
background-color: #232323;
271+
color: #ffffff;
272+
border-color: #7f7f7f;
273+
}
274+
192275
.FormatTable tr:nth-of-type(1) td:nth-of-type(odd) {
193276
background-color: #262626;
194277
}
195-
278+
196279
.FormatTable tr:nth-of-type(1) td:nth-of-type(even) {
197280
background-color: #212121;
198281
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>D3d12infoDB Comparison</title>
7+
8+
<%- include('../favicon/favicon_header.html') %>
9+
</head>
10+
11+
<body>
12+
<%- include('header.html') %>
13+
<main>
14+
<div class="ReportTable">
15+
<div id="SearchBarPropertiesContainer"></div>
16+
<div id="ComparisonPropertyFilterContainer" class="FieldSetContainer"></div>
17+
<div id="TableContainer"></div>
18+
</div>
19+
</main>
20+
</body>
21+
22+
</html>
Lines changed: 1 addition & 0 deletions
Loading
Lines changed: 1 addition & 0 deletions
Loading

source/frontend/assets/js/constants.mjs

Lines changed: 167 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
export const WebsiteAddress = "https://d3d12infodb.boolka.dev"
2+
export const APIAddress = "https://d3d12infodbapi.boolka.dev"
3+
14
export const TrueFalseMapping =
25
{
36
"0": "false",
@@ -514,7 +517,7 @@ export const EnumMappings =
514517
"402": "AD102",
515518
"403": "AD103",
516519
"404": "AD104",
517-
520+
518521
"434": "GB202",
519522
},
520523
"NvPhysicalGpuHandle.NvAPI_GPU_QueryWorkstationFeatureSupport(NV_GPU_WORKSTATION_FEATURE_TYPE_NVIDIA_RTX_VR_READY)": NVAPI_Status,
@@ -768,6 +771,10 @@ export const ListHeader = [
768771
"Header.Using preview Agility SDK"
769772
]
770773

774+
export const ListHeaderSpecial = [
775+
"Action"
776+
]
777+
771778
export const FilterMultichoiceFields = [
772779
"DXGI_ADAPTER_DESC3.VendorId",
773780
"Header.Using preview Agility SDK"
@@ -1303,6 +1310,156 @@ const SubPropertiesOrder =
13031310
"NvAPI_D3D12_GetPhysicalDeviceCooperativeVectorProperties.transpose"
13041311
]
13051312

1313+
const VendorSpecificProperties = [
1314+
"SystemInfo.NvAPI_SYS_GetDriverAndBranchVersion.pDriverVersion",
1315+
"SystemInfo.AGSGPUInfo.driverVersion",
1316+
"Header.NvAPI compiled version",
1317+
"Header.NVAPI_SDK_VERSION",
1318+
"Header.NvAPI_GetInterfaceVersionString",
1319+
"Header.AMD_AGS_VERSION",
1320+
"Header.agsGetVersionNumber",
1321+
"Header.AMD device_info compiled version",
1322+
"Header.Intel GPU Detect compiled version",
1323+
"SystemInfo.NvAPI_SYS_GetDriverAndBranchVersion.szBuildBranchString",
1324+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.driverVersion",
1325+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.szBuildBranch",
1326+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.bIsDCHDriver",
1327+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.bIsNVIDIAStudioPackage",
1328+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.bIsNVIDIAGameReadyPackage",
1329+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.bIsNVIDIARTXProductionBranchPackage",
1330+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.bIsNVIDIARTXNewFeatureBranchPackage",
1331+
"SystemInfo.NvAPI_SYS_GetDisplayDriverInfo - NV_DISPLAY_DRIVER_INFO.szBuildBaseBranch",
1332+
"SystemInfo.AGSGPUInfo.radeonSoftwareVersion",
1333+
"NvPhysicalGpuHandle.adapterType",
1334+
"NvPhysicalGpuHandle.NvAPI_GPU_GetSystemType",
1335+
"NvPhysicalGpuHandle.NvAPI_GPU_GetFullName",
1336+
"NvPhysicalGpuHandle.NvAPI_GPU_GetPCIIdentifiers - pDeviceID",
1337+
"NvPhysicalGpuHandle.NvAPI_GPU_GetPCIIdentifiers - pSubSystemId",
1338+
"NvPhysicalGpuHandle.NvAPI_GPU_GetPCIIdentifiers - pRevisionId",
1339+
"NvPhysicalGpuHandle.NvAPI_GPU_GetPCIIdentifiers - pExtDeviceId",
1340+
"NvPhysicalGpuHandle.NvAPI_GPU_GetGPUType",
1341+
"NvPhysicalGpuHandle.NvAPI_GPU_GetBusType",
1342+
"NvPhysicalGpuHandle.NvAPI_GPU_GetVbiosRevision",
1343+
"NvPhysicalGpuHandle.NvAPI_GPU_GetVbiosOEMRevision",
1344+
"NvPhysicalGpuHandle.NvAPI_GPU_GetVbiosVersionString",
1345+
"NvPhysicalGpuHandle.NvAPI_GPU_GetPhysicalFrameBufferSize",
1346+
"NvPhysicalGpuHandle.NvAPI_GPU_GetVirtualFrameBufferSize",
1347+
"NvPhysicalGpuHandle.NvAPI_GPU_GetArchInfo - NV_GPU_ARCH_INFO::architecture_id",
1348+
"NvPhysicalGpuHandle.NvAPI_GPU_GetArchInfo - NV_GPU_ARCH_INFO::implementation_id",
1349+
"NvPhysicalGpuHandle.NvAPI_GPU_GetArchInfo - NV_GPU_ARCH_INFO::revision_id",
1350+
"NvPhysicalGpuHandle.NvAPI_GPU_GetVRReadyData - NV_GPU_VR_READY::isVRReady",
1351+
"NvPhysicalGpuHandle.NvAPI_GPU_QueryIlluminationSupport(NV_GPU_IA_LOGO_BRIGHTNESS)",
1352+
"NvPhysicalGpuHandle.NvAPI_GPU_QueryIlluminationSupport(NV_GPU_IA_SLI_BRIGHTNESS)",
1353+
"NvPhysicalGpuHandle.NvAPI_GPU_QueryWorkstationFeatureSupport(NV_GPU_WORKSTATION_FEATURE_TYPE_NVIDIA_RTX_VR_READY)",
1354+
"NvPhysicalGpuHandle.NvAPI_GPU_QueryWorkstationFeatureSupport(NV_GPU_WORKSTATION_FEATURE_TYPE_PROVIZ)",
1355+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::dedicatedVideoMemory",
1356+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::availableDedicatedVideoMemory",
1357+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::systemVideoMemory",
1358+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::sharedSystemMemory",
1359+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::curAvailableDedicatedVideoMemory",
1360+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::dedicatedVideoMemoryEvictionsSize",
1361+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::dedicatedVideoMemoryEvictionCount",
1362+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::dedicatedVideoMemoryPromotionsSize",
1363+
"NvPhysicalGpuHandle.NvAPI_GPU_GetMemoryInfoEx - NV_GPU_MEMORY_INFO_EX::dedicatedVideoMemoryPromotionCount",
1364+
"NvPhysicalGpuHandle.NvAPI_GPU_GetShaderSubPipeCount",
1365+
"NvPhysicalGpuHandle.NvAPI_GPU_GetGpuCoreCount",
1366+
"NvPhysicalGpuHandle.NvAPI_GPU_GetECCStatusInfo - NV_GPU_ECC_STATUS_INFO::isSupported",
1367+
"NvPhysicalGpuHandle.NvAPI_GPU_GetECCStatusInfo - NV_GPU_ECC_STATUS_INFO::configurationOptions",
1368+
"NvPhysicalGpuHandle.NvAPI_GPU_GetECCStatusInfo - NV_GPU_ECC_STATUS_INFO::isEnabled",
1369+
"NvPhysicalGpuHandle.NvAPI_GPU_GetRamBusWidth",
1370+
"NvPhysicalGpuHandle.NvAPI_GPU_GetGPUInfo - NV_GPU_INFO::bIsExternalGpu",
1371+
"NvPhysicalGpuHandle.NvAPI_GPU_GetGPUInfo - NV_GPU_INFO::rayTracingCores",
1372+
"NvPhysicalGpuHandle.NvAPI_GPU_GetGPUInfo - NV_GPU_INFO::tensorCores",
1373+
"AGSDeviceInfo.adapterString",
1374+
"AGSDeviceInfo.asicFamily",
1375+
"AGSDeviceInfo.isAPU",
1376+
"AGSDeviceInfo.isExternal",
1377+
"AGSDeviceInfo.vendorId",
1378+
"AGSDeviceInfo.deviceId",
1379+
"AGSDeviceInfo.revisionId",
1380+
"AGSDeviceInfo.numCUs",
1381+
"AGSDeviceInfo.numWGPs",
1382+
"AGSDeviceInfo.numROPs",
1383+
"AGSDeviceInfo.coreClock",
1384+
"AGSDeviceInfo.memoryClock",
1385+
"AGSDeviceInfo.memoryBandwidth",
1386+
"AGSDeviceInfo.teraFlops",
1387+
"AGSDeviceInfo.localMemoryInBytes",
1388+
"AGSDeviceInfo.sharedMemoryInBytes",
1389+
"AMD GDT_GfxCardInfo.asicType",
1390+
"AMD GDT_GfxCardInfo.generation",
1391+
"AMD GDT_GfxCardInfo.APU",
1392+
"AMD GDT_GfxCardInfo.CALName",
1393+
"AMD GDT_GfxCardInfo.MarketingName",
1394+
"AMD GDT_DeviceInfo.NumShaderEngines",
1395+
"AMD GDT_DeviceInfo.MaxWavePerSIMD",
1396+
"AMD GDT_DeviceInfo.ClocksPrim",
1397+
"AMD GDT_DeviceInfo.NumSQMaxCounters",
1398+
"AMD GDT_DeviceInfo.NumPrimPipes",
1399+
"AMD GDT_DeviceInfo.WaveSize",
1400+
"AMD GDT_DeviceInfo.NumSHPerSE",
1401+
"AMD GDT_DeviceInfo.NumCUPerSH",
1402+
"AMD GDT_DeviceInfo.NumSIMDPerCU",
1403+
"AGSDX12ReturnedParams::ExtensionsSupported.intrinsics16",
1404+
"AGSDX12ReturnedParams::ExtensionsSupported.intrinsics17",
1405+
"AGSDX12ReturnedParams::ExtensionsSupported.userMarkers",
1406+
"AGSDX12ReturnedParams::ExtensionsSupported.appRegistration",
1407+
"AGSDX12ReturnedParams::ExtensionsSupported.UAVBindSlot",
1408+
"AGSDX12ReturnedParams::ExtensionsSupported.intrinsics19",
1409+
"AGSDX12ReturnedParams::ExtensionsSupported.baseVertex",
1410+
"AGSDX12ReturnedParams::ExtensionsSupported.baseInstance",
1411+
"AGSDX12ReturnedParams::ExtensionsSupported.getWaveSize",
1412+
"AGSDX12ReturnedParams::ExtensionsSupported.floatConversion",
1413+
"AGSDX12ReturnedParams::ExtensionsSupported.readLaneAt",
1414+
"AGSDX12ReturnedParams::ExtensionsSupported.rayHitToken",
1415+
"AGSDX12ReturnedParams::ExtensionsSupported.shaderClock",
1416+
"Intel GPUDetect::GPUData.VendorId",
1417+
"Intel GPUDetect::GPUData.deviceID",
1418+
"Intel GPUDetect::GPUData.isUMAArchitecture",
1419+
"Intel GPUDetect::GPUData.videoMemory",
1420+
"Intel GPUDetect::GPUData.description",
1421+
"Intel GPUDetect::GPUData.extensionVersion",
1422+
"Intel GPUDetect::GPUData.intelExtensionAvailability",
1423+
"Intel GPUDetect::GPUData.dxDriverVersion",
1424+
"Intel GPUDetect::GPUData.driverInfo.driverReleaseRevision",
1425+
"Intel GPUDetect::GPUData.driverInfo.driverBuildNumber",
1426+
"Intel GPUDetect::GPUData.DefaultFidelityPreset",
1427+
"Intel GPUDetect::GPUData.GPUArchitecture",
1428+
"Intel GPUDetect::GPUData.GraphicsGeneration",
1429+
"Intel GPUDetect::GPUData.euCount",
1430+
"Intel GPUDetect::GPUData.packageTDP",
1431+
"Intel GPUDetect::GPUData.maxFillRate",
1432+
"Intel GPUDetect::GPUData.maxFrequency",
1433+
"Intel GPUDetect::GPUData.minFrequency",
1434+
"NvAPI_D3D12_QueryCpuVisibleVidmem.pTotalBytes",
1435+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_SHFL",
1436+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_SHFL_UP",
1437+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_SHFL_DOWN",
1438+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_SHFL_XOR",
1439+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_VOTE_ALL",
1440+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_VOTE_ANY",
1441+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_VOTE_BALLOT",
1442+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_GET_LANE_ID",
1443+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_FP16_ATOMIC",
1444+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_FP32_ATOMIC",
1445+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_UINT64_ATOMIC",
1446+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_GET_SHADING_RATE",
1447+
"NvAPI_D3D12_IsNvShaderExtnOpCodeSupported.NV_EXTN_OP_VPRS_EVAL_ATTRIB_AT_SAMPLE",
1448+
"NvAPI_D3D12_GetOptimalThreadCountForMesh.pThreadCount",
1449+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_THREAD_REORDERING",
1450+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_OPACITY_MICROMAP",
1451+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_DISPLACEMENT_MICROMAP",
1452+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_CLUSTER_OPERATIONS",
1453+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_PARTITIONED_TLAS",
1454+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_SPHERES",
1455+
"NvAPI_D3D12_GetRaytracingCaps.NVAPI_D3D12_RAYTRACING_CAPS_TYPE_LINEAR_SWEPT_SPHERES",
1456+
"NvAPI_D3D12_QueryWorkstationFeatureProperties.NV_D3D12_WORKSTATION_FEATURE_TYPE_PRESENT_BARRIER - supported",
1457+
"NvAPI_D3D12_QueryWorkstationFeatureProperties.NV_D3D12_WORKSTATION_FEATURE_TYPE_RDMA_BAR1_SUPPORT - supported",
1458+
"NvAPI_D3D12_QueryWorkstationFeatureProperties.NV_D3D12_WORKSTATION_FEATURE_TYPE_RDMA_BAR1_SUPPORT - rdmaHeapSize",
1459+
"NvAPI_D3D12_GetNeedsAppFPBlendClamping.pAppClampNeeded",
1460+
"NvAPI_D3D12_GetPhysicalDeviceCooperativeVectorProperties"
1461+
]
1462+
13061463
export const PropertiesFilterWhitelist = new Set([
13071464
"ID",
13081465
"DXGI_ADAPTER_DESC3.Description",
@@ -1317,5 +1474,14 @@ function MakeMap(order) {
13171474
return result;
13181475
}
13191476

1477+
function MakeSet(arr) {
1478+
let result = new Set()
1479+
for (let i = 0; i < arr.length; ++i) {
1480+
result.add(arr[i]);
1481+
}
1482+
return result;
1483+
}
1484+
13201485
export const PropertiesOrderMap = MakeMap(PropertiesOrder)
13211486
export const SubPropertiesOrderMap = MakeMap(SubPropertiesOrder)
1487+
export const VendorSpecificPropertiesSet = MakeSet(VendorSpecificProperties)

0 commit comments

Comments
 (0)