From: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Mon, 11 Mar 2013 19:56:30 +0000 (-0400)
Subject: Add some missing DXGI and D3D11.1 api
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=cd3f69ef1a354e16f2bffdf29206f41f7dff95b7;p=apitrace

Add some missing DXGI and D3D11.1 api

Signed-off-by: José Fonseca <jfonseca@vmware.com>
---

diff --git a/retrace/CMakeLists.txt b/retrace/CMakeLists.txt
index 225ca45..57d5d12 100644
--- a/retrace/CMakeLists.txt
+++ b/retrace/CMakeLists.txt
@@ -231,6 +231,7 @@ if (WIN32)
                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgi1_2.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py
diff --git a/specs/d3d11_1.py b/specs/d3d11_1.py
index 5681191..d163d8f 100644
--- a/specs/d3d11_1.py
+++ b/specs/d3d11_1.py
@@ -30,6 +30,8 @@ from winapi import *
 from d3d11sdklayers import *
 from d3d11 import *
 
+import dxgi1_2
+
 D3D_FEATURE_LEVEL.values += [
     "D3D_FEATURE_LEVEL_11_1",
 ]
@@ -134,6 +136,7 @@ ID3D11DeviceContext1.methods += [
     StdMethod(Void, "UpdateSubresource1", [(ObjPointer(ID3D11Resource), "pDstResource"), (UINT, "DstSubresource"), (Pointer(Const(D3D11_BOX)), "pDstBox"), (Blob(Const(Void), "_calcSubresourceSize(pDstResource, DstSubresource, pDstBox, SrcRowPitch, SrcDepthPitch)"), "pSrcData"), (UINT, "SrcRowPitch"), (UINT, "SrcDepthPitch"), (D3D11_COPY_FLAGS, "CopyFlags")]),
     StdMethod(Void, "DiscardResource", [(ObjPointer(ID3D11Resource), "pResource")]),
     StdMethod(Void, "DiscardView", [(ObjPointer(ID3D11View), "pResourceView")]),
+    StdMethod(Void, "DiscardView1", [(ObjPointer(ID3D11View), "pResourceView"), (Array(Const(D3D11_RECT), "NumRects"), "pRect"), (UINT, "NumRects")]),
     StdMethod(Void, "VSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "HSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
     StdMethod(Void, "DSSetConstantBuffers1", [(UINT, "StartSlot"), (UINT, "NumBuffers"), (Array(Const(ObjPointer(ID3D11Buffer)), "NumBuffers"), "ppConstantBuffers"), (Array(Const(UINT), "NumBuffers"), "pFirstConstant"), (Array(Const(UINT), "NumBuffers"), "pNumConstants")]),
@@ -151,12 +154,6 @@ ID3D11DeviceContext1.methods += [
 ]
 
 
-DXGI_SHARED_RESOURCE_FLAG = Flags(DWORD, [
-    "DXGI_SHARED_RESOURCE_READ",
-    "DXGI_SHARED_RESOURCE_WRITE",
-])
-
-
 ID3D11Device1.methods += [
     StdMethod(Void, "GetImmediateContext1", [Out(Pointer(ObjPointer(ID3D11DeviceContext1)), "ppImmediateContext")]),
     StdMethod(HRESULT, "CreateDeferredContext1", [(UINT, "ContextFlags"), Out(Pointer(ObjPointer(ID3D11DeviceContext1)), "ppDeferredContext")]),
diff --git a/specs/dxgi.py b/specs/dxgi.py
index ca05368..b114bf5 100644
--- a/specs/dxgi.py
+++ b/specs/dxgi.py
@@ -155,6 +155,12 @@ IDXGIResource.methods += [
     StdMethod(HRESULT, "GetEvictionPriority", [Out(Pointer(DXGI_RESOURCE_PRIORITY), "pEvictionPriority")], sideeffects=False),
 ]
 
+DXGI_SHARED_RESOURCE_FLAG = Flags(DWORD, [
+    "DXGI_SHARED_RESOURCE_READ",
+    "DXGI_SHARED_RESOURCE_WRITE",
+])
+
+
 IDXGIKeyedMutex.methods += [
     StdMethod(HRESULT, "AcquireSync", [(UINT64, "Key"), (DWORD, "dwMilliseconds")]),
     StdMethod(HRESULT, "ReleaseSync", [(UINT64, "Key")]),
diff --git a/specs/dxgi1_2.py b/specs/dxgi1_2.py
new file mode 100644
index 0000000..0e4d58d
--- /dev/null
+++ b/specs/dxgi1_2.py
@@ -0,0 +1,52 @@
+##########################################################################
+#
+# Copyright 2013 Jeff Muizelaar
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+##########################################################################/
+
+
+from dxgi import *
+
+
+IDXGIResource1 = Interface("IDXGIResource1", IDXGIResource)
+IDXGISurface2 = Interface("IDXGISurface2", IDXGISurface1)
+
+
+DXGI_SHARED_RESOURCE_FLAG = Flags(DWORD, [
+    "DXGI_SHARED_RESOURCE_READ",
+    "DXGI_SHARED_RESOURCE_WRITE",
+])
+
+
+IDXGIResource1.methods += [
+    StdMethod(HRESULT, "CreateSharedHandle", [(Pointer(Const(SECURITY_ATTRIBUTES)), "pAttributes"), (DXGI_SHARED_RESOURCE_FLAG, "dwAccess"), (LPCWSTR, "lpName"), Out(Pointer(HANDLE), "pHandle")]),
+    StdMethod(HRESULT, "CreateSubresourceSurface", [(UINT, "index"), Out(Pointer(ObjPointer(IDXGISurface2)), "ppSurface")]),
+]
+
+
+IDXGISurface2.methods += [
+    StdMethod(HRESULT, "GetResource", [(REFIID, "riid"), Out(Pointer(ObjPointer(Void)), "ppParentResource"), Out(Pointer(UINT), "pSubresourceIndex")]),
+]
+
+dxgi.addInterfaces([
+    IDXGIResource1,
+])
diff --git a/specs/winapi.py b/specs/winapi.py
index 4436c6d..be50155 100644
--- a/specs/winapi.py
+++ b/specs/winapi.py
@@ -178,6 +178,11 @@ LOGFONTW = Struct("LOGFONTW", [
     (WString, "lfFaceName"),
 ])
 
+SECURITY_ATTRIBUTES = Struct("SECURITY_ATTRIBUTES", [
+    (DWORD, "nLength"),
+    (LPVOID, "lpSecurityDescriptor"),
+    (BOOL, "bInheritHandle"),
+])
 
 # http://msdn.microsoft.com/en-us/library/ff485842.aspx
 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx
diff --git a/wrappers/CMakeLists.txt b/wrappers/CMakeLists.txt
index 6c33ead..6b76e58 100644
--- a/wrappers/CMakeLists.txt
+++ b/wrappers/CMakeLists.txt
@@ -174,6 +174,7 @@ if (WIN32)
                 ${CMAKE_SOURCE_DIR}/specs/d3d10misc.py
                 ${CMAKE_SOURCE_DIR}/specs/d3d10sdklayers.py
                 ${CMAKE_SOURCE_DIR}/specs/d3dcommon.py
+                ${CMAKE_SOURCE_DIR}/specs/dxgi1_2.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgi.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgitype.py
                 ${CMAKE_SOURCE_DIR}/specs/dxgiformat.py