Mesa (master): d3d1x: add template parameters to base class ctor calls for GCC 4.4

Luca Barbieri lb at kemper.freedesktop.org
Tue Sep 21 20:39:12 UTC 2010


Module: Mesa
Branch: master
Commit: b4b2091655676ec3b898d3ae7298192aa7f9147f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b4b2091655676ec3b898d3ae7298192aa7f9147f

Author: Luca Barbieri <luca at luca-barbieri.com>
Date:   Tue Sep 21 22:34:40 2010 +0200

d3d1x: add template parameters to base class ctor calls for GCC 4.4

GCC 4.5 is fine without them, but GCC 4.4 requires them.
Should fully fix the build on GCC 4.4

---

 .../state_trackers/d3d1x/dxgi/src/dxgi_native.cpp  |    6 ++--
 src/gallium/state_trackers/d3d1x/gd3d11/d3d11.cpp  |   22 ++++++++++---------
 .../state_trackers/d3d1x/gd3d11/d3d11_context.h    |    4 +-
 .../state_trackers/d3d1x/gd3d11/d3d11_objects.h    |    6 ++--
 4 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
index 69ddbc5..41c8f29 100644
--- a/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
+++ b/src/gallium/state_trackers/d3d1x/dxgi/src/dxgi_native.cpp
@@ -77,7 +77,7 @@ struct GalliumDXGIFactory : public GalliumDXGIObject<IDXGIFactory1, IUnknown>
 	void* resolver_cookie;
 
         GalliumDXGIFactory(const struct native_platform* platform, void* display, PFNHWNDRESOLVER resolver, void* resolver_cookie)
-        : GalliumDXGIObject((IUnknown*)NULL), platform(platform), display(display), resolver(resolver ? resolver : identity_resolver), resolver_cookie(resolver_cookie)
+        : GalliumDXGIObject<IDXGIFactory1, IUnknown>((IUnknown*)NULL), platform(platform), display(display), resolver(resolver ? resolver : identity_resolver), resolver_cookie(resolver_cookie)
         {}
 
         virtual HRESULT STDMETHODCALLTYPE EnumAdapters(
@@ -316,7 +316,7 @@ struct GalliumDXGIOutput : public GalliumDXGIObject<IDXGIOutput, GalliumDXGIAdap
 	DXGI_GAMMA_CONTROL* gamma;
 
 	GalliumDXGIOutput(GalliumDXGIAdapter* adapter, std::string name, const struct native_connector* connector = 0)
-	: GalliumDXGIObject(adapter), connector(connector)
+	: GalliumDXGIObject<IDXGIOutput, GalliumDXGIAdapter>(adapter), connector(connector)
 	{
 		memset(&desc, 0, sizeof(desc));
 		for(unsigned i = 0; i < std::min(name.size(), sizeof(desc.DeviceName) - 1); ++i)
@@ -818,7 +818,7 @@ struct GalliumDXGISwapChain : public GalliumDXGIObject<IDXGISwapChain, GalliumDX
 	bool formats_compatible;
 
 	GalliumDXGISwapChain(GalliumDXGIFactory* factory, IUnknown* p_device, const DXGI_SWAP_CHAIN_DESC& p_desc)
-	: GalliumDXGIObject(factory), desc(p_desc)
+	: GalliumDXGIObject<IDXGISwapChain, GalliumDXGIFactory>(factory), desc(p_desc)
 	{
 		HRESULT hr;
 
diff --git a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11.cpp b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11.cpp
index 69dfd40..46a3905 100644
--- a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11.cpp
+++ b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11.cpp
@@ -126,20 +126,22 @@ struct GalliumD3D11Caps
 	unsigned stages;
 };
 
-// used to avoid needing to have forward declarations of functions
-// this is called "screen" because in the D3D10 case it's only part of the device
-struct GalliumD3D11Screen
-	: public GalliumDXGIDevice<
-		GalliumMultiComObject<
+typedef GalliumDXGIDevice<
+	GalliumMultiComObject<
 #if API >= 11
-			GalliumPrivateDataComObject<ID3D11Device>,
+		GalliumPrivateDataComObject<ID3D11Device>,
 #else
-			GalliumPrivateDataComObject<ID3D10Device1>,
+		GalliumPrivateDataComObject<ID3D10Device1>,
 #endif
-			IGalliumDevice
-		>
+		IGalliumDevice
 	>
+> GalliumD3D11ScreenBase;
+
+// used to avoid needing to have forward declarations of functions
+// this is called "screen" because in the D3D10 case it's only part of the device
+struct GalliumD3D11Screen : public GalliumD3D11ScreenBase
 {
+
 	pipe_screen* screen;
 	pipe_context* immediate_pipe;
 	GalliumD3D11Caps screen_caps;
@@ -159,7 +161,7 @@ struct GalliumD3D11Screen
 
 
 	GalliumD3D11Screen(pipe_screen* screen, struct pipe_context* immediate_pipe, IDXGIAdapter* adapter)
-	: GalliumDXGIDevice(adapter), screen(screen), immediate_pipe(immediate_pipe)
+	: GalliumD3D11ScreenBase(adapter), screen(screen), immediate_pipe(immediate_pipe)
 	{
 	}
 
diff --git a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
index a8573cd..032cb0e 100644
--- a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
+++ b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_context.h
@@ -119,7 +119,7 @@ struct GalliumD3D10Device : public GalliumD3D10ScreenImpl<threadsafe>
 #define SYNCHRONIZED do {} while(0)
 
 	GalliumD3D11DeviceContext(GalliumD3D11Screen* device, pipe_context* pipe, bool owns_pipe, unsigned context_flags = 0)
-	: GalliumD3D11DeviceChild(device), pipe(pipe), owns_pipe(owns_pipe), context_flags(context_flags)
+	: GalliumD3D11DeviceChild<ID3D11DeviceContext>(device), pipe(pipe), owns_pipe(owns_pipe), context_flags(context_flags)
 	{
 		caps = device->screen_caps;
 		init_context();
@@ -1988,7 +1988,7 @@ struct GalliumD3D11ImmediateDeviceContext
 	: public GalliumD3D11DeviceContext<nonatomic_device_child_ptr_traits>
 {
 	GalliumD3D11ImmediateDeviceContext(GalliumD3D11Screen* device, pipe_context* pipe, unsigned context_flags = 0)
-	: GalliumD3D11DeviceContext(device, pipe, context_flags)
+	: GalliumD3D11DeviceContext<nonatomic_device_child_ptr_traits>(device, pipe, context_flags)
 	{
 		// not necessary, but tests that the API at least basically works
 		ClearState();
diff --git a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_objects.h b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_objects.h
index ad6b28f..b7542fd 100644
--- a/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_objects.h
+++ b/src/gallium/state_trackers/d3d1x/gd3d11/d3d11_objects.h
@@ -684,14 +684,14 @@ struct GalliumD3D11QueryOrPredicate : public GalliumD3D11Asynchronous<Base>
 struct GalliumD3D11Query : public GalliumD3D11QueryOrPredicate<ID3D11Query>
 {
 	GalliumD3D11Query(GalliumD3D11Screen* device, struct pipe_query* query, unsigned data_size, const D3D11_QUERY_DESC& desc)
-	: GalliumD3D11QueryOrPredicate(device, query, data_size, desc)
+	: GalliumD3D11QueryOrPredicate<ID3D11Query>(device, query, data_size, desc)
 	{}
 };
 
 struct GalliumD3D11Predicate : public GalliumD3D11QueryOrPredicate<ID3D11Predicate>
 {
 	GalliumD3D11Predicate(GalliumD3D11Screen* device, struct pipe_query* query, unsigned data_size, const D3D11_QUERY_DESC& desc)
-	: GalliumD3D11QueryOrPredicate(device, query, data_size, desc)
+	: GalliumD3D11QueryOrPredicate<ID3D11Predicate>(device, query, data_size, desc)
 	{}
 
 	~GalliumD3D11Predicate()
@@ -704,7 +704,7 @@ struct GalliumD3D11Counter : public GalliumD3D11Asynchronous<ID3D11Counter>
 {
 	D3D11_COUNTER_DESC desc;
 	GalliumD3D11Counter(GalliumD3D11Screen* device, struct pipe_query* query, unsigned data_size, const D3D11_COUNTER_DESC& desc)
-	: GalliumD3D11Asynchronous(device, query, data_size), desc(desc)
+	: GalliumD3D11Asynchronous<ID3D11Counter>(device, query, data_size), desc(desc)
 	{}
 
 	virtual void STDMETHODCALLTYPE GetDesc(




More information about the mesa-commit mailing list