mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-20 22:39:03 +00:00
The maintenance of the conformance tests is moving to Github. This commit contains all the changes that have been done in Gitlab since the first public release of the conformance tests. Signed-off-by: Kevin Petit <kevin.petit@arm.com>
198 lines
4.3 KiB
C++
198 lines
4.3 KiB
C++
//
|
|
// Copyright (c) 2017 The Khronos Group Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
#ifndef __WRAPPERS_H
|
|
#define __WRAPPERS_H
|
|
|
|
#if defined(_WIN32)
|
|
#include <d3d9.h>
|
|
#if defined (__MINGW32__)
|
|
#include <rpcsal.h>
|
|
typedef unsigned char UINT8;
|
|
#define __out
|
|
#define __in
|
|
#define __inout
|
|
#define __out_bcount(size)
|
|
#define __out_bcount_opt(size)
|
|
#define __in_opt
|
|
#define __in_ecount(size)
|
|
#define __in_ecount_opt(size)
|
|
#define __out_opt
|
|
#define __out_ecount(size)
|
|
#define __out_ecount_opt(size)
|
|
#define __in_bcount_opt(size)
|
|
#define __inout_opt
|
|
#define __inout_bcount(size)
|
|
#define __in_bcount(size)
|
|
#define __deref_out
|
|
#endif
|
|
#include <dxvahd.h>
|
|
#include <tchar.h>
|
|
#endif
|
|
|
|
enum TDeviceStatus
|
|
{
|
|
DEVICE_NOTSUPPORTED,
|
|
DEVICE_PASS,
|
|
DEVICE_FAIL,
|
|
};
|
|
|
|
class CDeviceWrapper {
|
|
public:
|
|
enum TAccelerationType
|
|
{
|
|
ACCELERATION_HW,
|
|
ACCELERATION_SW,
|
|
};
|
|
|
|
CDeviceWrapper();
|
|
virtual ~CDeviceWrapper();
|
|
|
|
virtual bool AdapterNext() = 0;
|
|
virtual unsigned int AdapterIdx() const = 0;
|
|
virtual void *Device() const = 0;
|
|
virtual TDeviceStatus Status() const = 0;
|
|
virtual void *D3D() const = 0;
|
|
|
|
#if defined(_WIN32)
|
|
HWND WindowHandle() const;
|
|
#endif
|
|
int WindowWidth() const;
|
|
int WindowHeight() const;
|
|
void WindowInit();
|
|
|
|
|
|
static TAccelerationType AccelerationType();
|
|
static void AccelerationType(TAccelerationType accelerationTypeNew);
|
|
|
|
private:
|
|
static LPCTSTR WINDOW_TITLE;
|
|
static const int WINDOW_WIDTH;
|
|
static const int WINDOW_HEIGHT;
|
|
static TAccelerationType accelerationType;
|
|
|
|
#if defined(_WIN32)
|
|
HMODULE _hInstance;
|
|
HWND _hWnd;
|
|
#endif
|
|
|
|
void WindowDestroy();
|
|
};
|
|
|
|
class CSurfaceWrapper
|
|
{
|
|
public:
|
|
CSurfaceWrapper();
|
|
virtual ~CSurfaceWrapper();
|
|
};
|
|
|
|
#if defined(_WIN32)
|
|
//windows specific wrappers
|
|
class CD3D9Wrapper: public CDeviceWrapper {
|
|
public:
|
|
CD3D9Wrapper();
|
|
~CD3D9Wrapper();
|
|
|
|
virtual bool AdapterNext();
|
|
virtual unsigned int AdapterIdx() const;
|
|
virtual void *Device() const;
|
|
virtual TDeviceStatus Status() const;
|
|
virtual void *D3D() const;
|
|
|
|
private:
|
|
LPDIRECT3D9 _d3d9;
|
|
LPDIRECT3DDEVICE9 _d3dDevice;
|
|
D3DDISPLAYMODE _d3ddm;
|
|
D3DADAPTER_IDENTIFIER9 _adapter;
|
|
TDeviceStatus _status;
|
|
unsigned int _adapterIdx;
|
|
bool _adapterFound;
|
|
|
|
D3DFORMAT Format();
|
|
D3DADAPTER_IDENTIFIER9 Adapter();
|
|
int Init();
|
|
void Destroy();
|
|
};
|
|
|
|
class CD3D9ExWrapper: public CDeviceWrapper {
|
|
public:
|
|
CD3D9ExWrapper();
|
|
~CD3D9ExWrapper();
|
|
|
|
virtual bool AdapterNext();
|
|
virtual unsigned int AdapterIdx() const;
|
|
virtual void *Device() const;
|
|
virtual TDeviceStatus Status() const;
|
|
virtual void *D3D() const;
|
|
|
|
private:
|
|
LPDIRECT3D9EX _d3d9Ex;
|
|
LPDIRECT3DDEVICE9EX _d3dDeviceEx;
|
|
D3DDISPLAYMODEEX _d3ddmEx;
|
|
D3DADAPTER_IDENTIFIER9 _adapter;
|
|
TDeviceStatus _status;
|
|
unsigned int _adapterIdx;
|
|
bool _adapterFound;
|
|
|
|
D3DFORMAT Format();
|
|
D3DADAPTER_IDENTIFIER9 Adapter();
|
|
int Init();
|
|
void Destroy();
|
|
};
|
|
|
|
class CDXVAWrapper: public CDeviceWrapper {
|
|
public:
|
|
CDXVAWrapper();
|
|
~CDXVAWrapper();
|
|
|
|
virtual bool AdapterNext();
|
|
virtual unsigned int AdapterIdx() const;
|
|
virtual void *Device() const;
|
|
virtual TDeviceStatus Status() const;
|
|
virtual void *D3D() const;
|
|
const CD3D9ExWrapper &D3D9() const;
|
|
|
|
private:
|
|
CD3D9ExWrapper _d3d9;
|
|
IDXVAHD_Device *_dxvaDevice;
|
|
TDeviceStatus _status;
|
|
bool _adapterFound;
|
|
|
|
static const D3DFORMAT RENDER_TARGET_FORMAT;
|
|
static const D3DFORMAT VIDEO_FORMAT;
|
|
static const unsigned int VIDEO_FPS;
|
|
|
|
TDeviceStatus DXVAHDInit();
|
|
void DXVAHDDestroy();
|
|
};
|
|
|
|
class CD3D9SurfaceWrapper: public CSurfaceWrapper
|
|
{
|
|
public:
|
|
CD3D9SurfaceWrapper();
|
|
CD3D9SurfaceWrapper( IDirect3DSurface9* mem );
|
|
~CD3D9SurfaceWrapper();
|
|
|
|
operator IDirect3DSurface9*() { return mMem; }
|
|
IDirect3DSurface9* * operator&() { return &mMem; }
|
|
IDirect3DSurface9* operator->() const { return mMem; }
|
|
|
|
private:
|
|
IDirect3DSurface9* mMem;
|
|
};
|
|
#endif
|
|
|
|
#endif // __D3D_WRAPPERS
|