1 /*========================== begin_copyright_notice ============================
2
3 Copyright (C) 2017-2021 Intel Corporation
4
5 SPDX-License-Identifier: MIT
6
7 ============================= end_copyright_notice ===========================*/
8
9 #ifndef ContextTypes_h_INCLUDED
10 #define ContextTypes_h_INCLUDED
11
12 #if defined _USC_
13 # include "IGC/common/igc_debug.h"
14 # include "3d/common/iStdLib/types.h"
15 # include "API/ShaderTypes.h"
16 #else
17 # include "API/ShaderTypes.h"
18 #endif
19
20 #include "ErrorCode.h"
21
22 namespace GHAL3D
23 {
24
25 /*****************************************************************************\
26 ENUM: GHAL3D_CONTEXT_TYPE
27 \*****************************************************************************/
28 enum GHAL3D_CONTEXT_TYPE
29 {
30 GHAL3D_CONTEXT_IMMEDIATE,
31 GHAL3D_CONTEXT_DEFERRED,
32 NUM_GHAL3D_CONTEXT_TYPES
33 };
34
35 /*****************************************************************************\
36 ENUM: SHADER_TYPE
37 \*****************************************************************************/
38 #if !defined _USC_ && !defined OPENGL_IMOLA
39 enum SHADER_TYPE
40 {
41 VERTEX_SHADER,
42 GEOMETRY_SHADER,
43 PIXEL_SHADER,
44 HULL_SHADER,
45 DOMAIN_SHADER,
46 COMPUTE_SHADER,
47 NUM_SHADER_TYPES
48 };
49 #endif //!defined(_USC_)
50
51 #ifndef OPENGL_IMOLA
52 /*****************************************************************************\
53 STRUCT: RETVAL
54 \*****************************************************************************/
55 struct RETVAL
56 {
57 // External values
58 DWORD Success : 1; // Call was successful
59 DWORD Error : 1; // Invalid call
60 DWORD OutOfSystemMemory : 1; // System memory allocation failed
61 DWORD Busy : 1; // Compilation not done yet
62 DWORD _Unused : 28; // Reserved // For GCC 4.7 bug (do not allow to static initialize anonymous members)
63
64 RETVAL& operator = (const ErrorCode&);
65 operator ErrorCode(); // convertion operator to ErrorCode API type
66 };
67
68 static_assert(sizeof(RETVAL) == sizeof(ErrorCode));
69
70
71 inline RETVAL& RETVAL::operator = (const ErrorCode& errorCode)
72 {
73 Success = errorCode.Success;
74 Error = errorCode.Error;
75 OutOfSystemMemory = errorCode.OutOfSystemMemory;
76 Busy = errorCode.Busy;
77
78 return *this;
79 }
80
ErrorCode()81 inline RETVAL::operator ErrorCode()
82 {
83 return * reinterpret_cast<ErrorCode*>(this);
84 }
85
86 /*****************************************************************************\
87 CONST: g_cInitRetVal
88 \*****************************************************************************/
89 const RETVAL g_cInitRetVal =
90 {
91 true, // Success
92 false, // Error
93 false, // OutOfSystemMemory
94 false, // Busy
95 };
96
97 static_assert(sizeof(g_cInitRetVal) == sizeof(g_cInitErrorCode));
98
99 #endif
100
101 /*****************************************************************************\
102 TYPEDEF: HANDLE_TYPE
103 \*****************************************************************************/
104 struct HANDLE_TYPE
105 {
106 void* handle;
107
108 bool operator == ( const HANDLE_TYPE& rvalue ) const;
109 bool operator != ( const HANDLE_TYPE& rvalue ) const;
110 };
111
112 inline bool HANDLE_TYPE::operator == ( const HANDLE_TYPE& rvalue ) const
113 {
114 return handle == rvalue.handle;
115 };
116
117 inline bool HANDLE_TYPE::operator != ( const HANDLE_TYPE& rvalue ) const
118 {
119 return handle != rvalue.handle;
120 }
121
122 /*****************************************************************************\
123 TYPEDEF: STATE_HANDLE
124 \*****************************************************************************/
125 typedef HANDLE_TYPE STATE_HANDLE;
126
127 /*****************************************************************************\
128 CONST: DISABLE_HANDLE
129 \*****************************************************************************/
130 const HANDLE_TYPE DISABLE_HANDLE = { 0 };
131
132 } // namespace GHAL3D
133
134 #endif //ContextTypes_h_INCLUDED
135