specs: Support DXGI 1.6.

Change-Id: I29dc2e984313d92711f38935112e22d16f2b8475
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/apitrace/+/2224548
Reviewed-by: Po-Hsien Wang <pwang@chromium.org>
Commit-Queue: Robert Tarasov <tutankhamen@chromium.org>
Tested-by: Robert Tarasov <tutankhamen@chromium.org>
diff --git a/dispatch/dxgiint.h b/dispatch/dxgiint.h
index a4f5ec4..064a0ac 100644
--- a/dispatch/dxgiint.h
+++ b/dispatch/dxgiint.h
@@ -30,7 +30,7 @@
 
 #include "winsdk_compat.h"
 
-#include <dxgi1_5.h>
+#include <dxgi1_6.h>
 
 
 DEFINE_GUID(IID_IDXGISwapChainDWM,0xF69F223B,0x45D3,0x4AA0,0x98,0xC8,0xC4,0x0C,0x2B,0x23,0x10,0x29);
diff --git a/specs/d3d11.py b/specs/d3d11.py
index 375932f..677aed8 100644
--- a/specs/d3d11.py
+++ b/specs/d3d11.py
@@ -1234,6 +1234,16 @@
     (BOOL, 'ExtendedNV12SharedTextureSupported'),
 ])
 
+D3D11_SHADER_CACHE_SUPPORT_FLAGS = FakeEnum(UINT, [
+    "D3D11_SHADER_CACHE_SUPPORT_NONE",
+    "D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE",
+    "D3D11_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE",
+])
+
+D3D11_FEATURE_DATA_SHADER_CACHE = Struct("D3D11_FEATURE_DATA_SHADER_CACHE", [
+    (D3D11_SHADER_CACHE_SUPPORT_FLAGS, 'SupportFlags'),
+])
+
 D3D11_FEATURE, D3D11_FEATURE_DATA = EnumPolymorphic("D3D11_FEATURE", "Feature", [
     ("D3D11_FEATURE_THREADING", Pointer(D3D11_FEATURE_DATA_THREADING)),
     ("D3D11_FEATURE_DOUBLES", Pointer(D3D11_FEATURE_DATA_DOUBLES)),
@@ -1253,6 +1263,7 @@
     ("D3D11_FEATURE_D3D11_OPTIONS3", Pointer(D3D11_FEATURE_DATA_D3D11_OPTIONS3)),
     ("D3D11_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT", Pointer(D3D11_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT)),
     ("D3D11_FEATURE_D3D11_OPTIONS4", Pointer(D3D11_FEATURE_DATA_D3D11_OPTIONS4)),
+    ("D3D11_FEATURE_SHADER_CACHE", Pointer(D3D11_FEATURE_DATA_SHADER_CACHE)),
 ], Blob(Void, "FeatureSupportDataSize"), False)
 
 D3D11_NUM_RTVS = FakeEnum(UINT, [
diff --git a/specs/dxgi.py b/specs/dxgi.py
index 2387ac3..f60b9a8 100644
--- a/specs/dxgi.py
+++ b/specs/dxgi.py
@@ -1071,3 +1071,71 @@
     IDXGIDevice4,
     IDXGIFactory5,
 ])
+
+
+#
+# DXGI 1.6
+#
+
+DXGI_ADAPTER_FLAG3 = Enum('DXGI_ADAPTER_FLAG3', [
+    'DXGI_ADAPTER_FLAG3_NONE',
+    'DXGI_ADAPTER_FLAG3_REMOTE',
+    'DXGI_ADAPTER_FLAG3_SOFTWARE',
+    'DXGI_ADAPTER_FLAG3_ACG_COMPATIBLE',
+    'DXGI_ADAPTER_FLAG3_FORCE_DWORD',
+])
+
+DXGI_ADAPTER_DESC3 = Struct('DXGI_ADAPTER_DESC3', [
+    (WString, 'Description'),
+    (UINT, 'VendorId'),
+    (UINT, 'DeviceId'),
+    (UINT, 'SubSysId'),
+    (UINT, 'Revision'),
+    (SIZE_T, 'DedicatedVideoMemory'),
+    (SIZE_T, 'DedicatedSystemMemory'),
+    (SIZE_T, 'SharedSystemMemory'),
+    (LUID, 'AdapterLuid'),
+    (DXGI_ADAPTER_FLAG3, 'Flags'),
+    (DXGI_GRAPHICS_PREEMPTION_GRANULARITY, 'GraphicsPreemptionGranularity'),
+    (DXGI_COMPUTE_PREEMPTION_GRANULARITY, 'ComputePreemptionGranularity'),
+])
+
+DXGI_OUTPUT_DESC1 = Struct('DXGI_OUTPUT_DESC1', [
+    (WString, 'DeviceName'),
+    (RECT, 'DesktopCoordinates'),
+    (BOOL, 'AttachedToDesktop'),
+    (DXGI_MODE_ROTATION, 'Rotation'),
+    (HMONITOR, 'Monitor'),
+    (UINT, 'BitsPerColor'),
+    (DXGI_COLOR_SPACE_TYPE, 'ColorSpace'),
+    (Array(FLOAT, 2), 'RedPrimary'),
+    (Array(FLOAT, 2), 'GreenPrimary'),
+    (Array(FLOAT, 2), 'BluePrimary'),
+    (Array(FLOAT, 2), 'WhitePoint'),
+    (FLOAT, 'MinLuminance'),
+    (FLOAT, 'MaxLuminance'),
+    (FLOAT, 'MaxFullFrameLuminance'),
+])
+
+DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS = Flags(UINT, [
+    'DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_FULLSCREEN',
+    'DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_WINDOWED',
+    'DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAG_CURSOR_STRETCHED',
+])
+
+IDXGIAdapter4 = Interface('IDXGIAdapter4', IDXGIAdapter3)
+IDXGIOutput6 = Interface('IDXGIOutput6', IDXGIOutput5)
+
+IDXGIAdapter4.methods += [
+    StdMethod(HRESULT, 'GetDesc3', [Out(Pointer(DXGI_ADAPTER_DESC3), 'pDesc')], sideeffects=False),
+]
+
+IDXGIOutput6.methods += [
+    StdMethod(HRESULT, 'GetDesc1', [Out(Pointer(DXGI_OUTPUT_DESC1), 'pDesc')], sideeffects=False),
+    StdMethod(HRESULT, 'CheckHardwareCompositionSupport', [Out(Pointer(DXGI_HARDWARE_COMPOSITION_SUPPORT_FLAGS), 'pFlags')], sideeffects=False),
+]
+
+dxgi.addInterfaces([
+    IDXGIAdapter4,
+    IDXGIOutput6,
+])