blob: 5f0bf9923ffbc415c68092e0d92591805374e4ea [file] [log] [blame]
Andrey Tuganov1c43cb82017-03-08 13:59:01 -05001// Copyright (c) 2017 Google Inc.
2//
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
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
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.
14
15#include "extensions.h"
16
17#include <string>
18
19namespace libspirv {
20
21bool ParseSpvExtensionFromString(const std::string& str, Extension* extension) {
22 if (str == "SPV_KHR_shader_ballot") {
23 *extension = Extension::kSPV_KHR_shader_ballot;
24 } else if (str == "SPV_KHR_shader_draw_parameters") {
25 *extension = Extension::kSPV_KHR_shader_draw_parameters;
26 } else if (str == "SPV_KHR_subgroup_vote") {
27 *extension = Extension::kSPV_KHR_subgroup_vote;
28 } else if (str == "SPV_KHR_16bit_storage") {
29 *extension = Extension::kSPV_KHR_16bit_storage;
30 } else if (str == "SPV_KHR_device_group") {
31 *extension = Extension::kSPV_KHR_device_group;
32 } else if (str == "SPV_KHR_multiview") {
33 *extension = Extension::kSPV_KHR_multiview;
34 } else if (str == "SPV_NV_sample_mask_override_coverage") {
35 *extension = Extension::kSPV_NV_sample_mask_override_coverage;
36 } else if (str == "SPV_NV_geometry_shader_passthrough") {
37 *extension = Extension::kSPV_NV_geometry_shader_passthrough;
38 } else if (str == "SPV_NV_viewport_array2") {
39 *extension = Extension::kSPV_NV_viewport_array2;
40 } else if (str == "SPV_NV_stereo_view_rendering") {
41 *extension = Extension::kSPV_NV_stereo_view_rendering;
42 } else if (str == "SPV_NVX_multiview_per_view_attributes") {
43 *extension = Extension::kSPV_NVX_multiview_per_view_attributes;
44 } else {
45 return false;
46 }
47
48 return true;
49}
50
51} // namespace libspirv