Initialize all extensions, almost always to 'disable', as once their features are incorporated into a core version, their features are supported through allowing that core version, not through a pseudo-enablement of the extension.
| 157 | // core version, not through a pseudo-enablement of the extension. |
| 158 | // |
| 159 | void TParseVersions::initializeExtensionBehavior() |
| 160 | { |
| 161 | typedef struct { |
| 162 | const char *const extensionName; |
| 163 | EShTargetLanguageVersion minSpvVersion; |
| 164 | } extensionData; |
| 165 | |
| 166 | const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4}, |
| 167 | {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}, |
| 168 | {E_GL_EXT_mesh_shader, EShTargetSpv_1_4}, |
| 169 | {E_GL_NV_cooperative_matrix2, EShTargetSpv_1_6} |
| 170 | }; |
| 171 | |
| 172 | for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) { |
| 173 | // Add only extensions which require > spv1.0 to save space in map |
| 174 | if (exts[ii].minSpvVersion > EShTargetSpv_1_0) { |
| 175 | extensionMinSpv[exts[ii].extensionName] = exts[ii].minSpvVersion; |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | extensionBehavior[E_GL_OES_texture_3D] = EBhDisable; |
| 180 | extensionBehavior[E_GL_OES_standard_derivatives] = EBhDisable; |
| 181 | extensionBehavior[E_GL_EXT_frag_depth] = EBhDisable; |
| 182 | extensionBehavior[E_GL_OES_EGL_image_external] = EBhDisable; |
| 183 | extensionBehavior[E_GL_OES_EGL_image_external_essl3] = EBhDisable; |
| 184 | extensionBehavior[E_GL_EXT_YUV_target] = EBhDisable; |
| 185 | extensionBehavior[E_GL_EXT_shader_texture_lod] = EBhDisable; |
| 186 | extensionBehavior[E_GL_EXT_shadow_samplers] = EBhDisable; |
| 187 | extensionBehavior[E_GL_ARB_texture_rectangle] = EBhDisable; |
| 188 | extensionBehavior[E_GL_3DL_array_objects] = EBhDisable; |
| 189 | extensionBehavior[E_GL_ARB_shading_language_420pack] = EBhDisable; |
| 190 | extensionBehavior[E_GL_ARB_texture_gather] = EBhDisable; |
| 191 | extensionBehavior[E_GL_ARB_gpu_shader5] = EBhDisable; |
| 192 | extensionBehavior[E_GL_ARB_separate_shader_objects] = EBhDisable; |
| 193 | extensionBehavior[E_GL_ARB_compute_shader] = EBhDisable; |
| 194 | extensionBehavior[E_GL_ARB_tessellation_shader] = EBhDisable; |
| 195 | extensionBehavior[E_GL_ARB_enhanced_layouts] = EBhDisable; |
| 196 | extensionBehavior[E_GL_ARB_texture_cube_map_array] = EBhDisable; |
| 197 | extensionBehavior[E_GL_ARB_texture_multisample] = EBhDisable; |
| 198 | extensionBehavior[E_GL_ARB_shader_texture_lod] = EBhDisable; |
| 199 | extensionBehavior[E_GL_ARB_explicit_attrib_location] = EBhDisable; |
| 200 | extensionBehavior[E_GL_ARB_explicit_uniform_location] = EBhDisable; |
| 201 | extensionBehavior[E_GL_ARB_shader_image_load_store] = EBhDisable; |
| 202 | extensionBehavior[E_GL_ARB_shader_atomic_counters] = EBhDisable; |
| 203 | extensionBehavior[E_GL_ARB_shader_atomic_counter_ops] = EBhDisable; |
| 204 | extensionBehavior[E_GL_ARB_shader_draw_parameters] = EBhDisable; |
| 205 | extensionBehavior[E_GL_ARB_shader_group_vote] = EBhDisable; |
| 206 | extensionBehavior[E_GL_ARB_derivative_control] = EBhDisable; |
| 207 | extensionBehavior[E_GL_ARB_shader_texture_image_samples] = EBhDisable; |
| 208 | extensionBehavior[E_GL_ARB_viewport_array] = EBhDisable; |
| 209 | extensionBehavior[E_GL_ARB_gpu_shader_int64] = EBhDisable; |
| 210 | extensionBehavior[E_GL_ARB_gpu_shader_fp64] = EBhDisable; |
| 211 | extensionBehavior[E_GL_ARB_shader_ballot] = EBhDisable; |
| 212 | extensionBehavior[E_GL_ARB_sparse_texture2] = EBhDisable; |
| 213 | extensionBehavior[E_GL_ARB_sparse_texture_clamp] = EBhDisable; |
| 214 | extensionBehavior[E_GL_ARB_shader_stencil_export] = EBhDisable; |
| 215 | // extensionBehavior[E_GL_ARB_cull_distance] = EBhDisable; // present for 4.5, but need extension control over block members |
| 216 | extensionBehavior[E_GL_ARB_post_depth_coverage] = EBhDisable; |
no test coverage detected