1 // Copyright (c) 2015-2016 The Khronos Group Inc.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 #include "source/table.h"
19 spv_context
spvContextCreate(spv_target_env env
) {
21 case SPV_ENV_UNIVERSAL_1_0
:
22 case SPV_ENV_VULKAN_1_0
:
23 case SPV_ENV_UNIVERSAL_1_1
:
24 case SPV_ENV_OPENCL_1_2
:
25 case SPV_ENV_OPENCL_EMBEDDED_1_2
:
26 case SPV_ENV_OPENCL_2_0
:
27 case SPV_ENV_OPENCL_EMBEDDED_2_0
:
28 case SPV_ENV_OPENCL_2_1
:
29 case SPV_ENV_OPENCL_EMBEDDED_2_1
:
30 case SPV_ENV_OPENCL_2_2
:
31 case SPV_ENV_OPENCL_EMBEDDED_2_2
:
32 case SPV_ENV_OPENGL_4_0
:
33 case SPV_ENV_OPENGL_4_1
:
34 case SPV_ENV_OPENGL_4_2
:
35 case SPV_ENV_OPENGL_4_3
:
36 case SPV_ENV_OPENGL_4_5
:
37 case SPV_ENV_UNIVERSAL_1_2
:
38 case SPV_ENV_UNIVERSAL_1_3
:
39 case SPV_ENV_VULKAN_1_1
:
40 case SPV_ENV_VULKAN_1_1_SPIRV_1_4
:
41 case SPV_ENV_UNIVERSAL_1_4
:
42 case SPV_ENV_UNIVERSAL_1_5
:
43 case SPV_ENV_VULKAN_1_2
:
44 case SPV_ENV_UNIVERSAL_1_6
:
45 case SPV_ENV_VULKAN_1_3
:
51 spv_opcode_table opcode_table
;
52 spv_operand_table operand_table
;
53 spv_ext_inst_table ext_inst_table
;
55 spvOpcodeTableGet(&opcode_table
, env
);
56 spvOperandTableGet(&operand_table
, env
);
57 spvExtInstTableGet(&ext_inst_table
, env
);
59 return new spv_context_t
{env
, opcode_table
, operand_table
, ext_inst_table
,
60 nullptr /* a null default consumer */};
63 void spvContextDestroy(spv_context context
) { delete context
; }
65 void spvtools::SetContextMessageConsumer(spv_context context
,
66 spvtools::MessageConsumer consumer
) {
67 context
->consumer
= std::move(consumer
);