GCC 4.5 is fine without them, but GCC 4.4 requires them.
Should fully fix the build on GCC 4.4
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(
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)
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;
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;
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)
{
}
#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();
: 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();
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()
{
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(