summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp b/3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp
index c9ac8fca389..4abf89293f7 100644
--- a/3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp
+++ b/3rdparty/bgfx/3rdparty/spirv-cross/spirv_cross_c.cpp
@@ -569,6 +569,30 @@ spvc_result spvc_compiler_options_set_uint(spvc_compiler_options options, spvc_c
case SPVC_COMPILER_OPTION_MSL_DYNAMIC_OFFSETS_BUFFER_INDEX:
options->msl.dynamic_offsets_buffer_index = value;
break;
+
+ case SPVC_COMPILER_OPTION_MSL_TEXTURE_1D_AS_2D:
+ options->msl.texture_1D_as_2D = value != 0;
+ break;
+
+ case SPVC_COMPILER_OPTION_MSL_ENABLE_BASE_INDEX_ZERO:
+ options->msl.enable_base_index_zero = value != 0;
+ break;
+
+ case SPVC_COMPILER_OPTION_MSL_IOS_FRAMEBUFFER_FETCH_SUBPASS:
+ options->msl.ios_use_framebuffer_fetch_subpasses = value != 0;
+ break;
+
+ case SPVC_COMPILER_OPTION_MSL_INVARIANT_FP_MATH:
+ options->msl.invariant_float_math = value != 0;
+ break;
+
+ case SPVC_COMPILER_OPTION_MSL_EMULATE_CUBEMAP_ARRAY:
+ options->msl.emulate_cube_array = value != 0;
+ break;
+
+ case SPVC_COMPILER_OPTION_MSL_ENABLE_DECORATION_BINDING:
+ options->msl.enable_decoration_binding = value != 0;
+ break;
#endif
default:
@@ -946,6 +970,26 @@ spvc_result spvc_compiler_msl_add_discrete_descriptor_set(spvc_compiler compiler
#endif
}
+spvc_result spvc_compiler_msl_set_argument_buffer_device_address_space(spvc_compiler compiler, unsigned desc_set, spvc_bool device_address)
+{
+#if SPIRV_CROSS_C_API_MSL
+ if (compiler->backend != SPVC_BACKEND_MSL)
+ {
+ compiler->context->report_error("MSL function used on a non-MSL backend.");
+ return SPVC_ERROR_INVALID_ARGUMENT;
+ }
+
+ auto &msl = *static_cast<CompilerMSL *>(compiler->compiler.get());
+ msl.set_argument_buffer_device_address_space(desc_set, bool(device_address));
+ return SPVC_SUCCESS;
+#else
+ (void)desc_set;
+ (void)device_address;
+ compiler->context->report_error("MSL function used on a non-MSL backend.");
+ return SPVC_ERROR_INVALID_ARGUMENT;
+#endif
+}
+
spvc_bool spvc_compiler_msl_is_vertex_attribute_used(spvc_compiler compiler, unsigned location)
{
#if SPIRV_CROSS_C_API_MSL
@@ -1619,6 +1663,11 @@ spvc_type spvc_compiler_get_type_handle(spvc_compiler compiler, spvc_type_id id)
SPVC_END_SAFE_SCOPE(compiler->context, nullptr)
}
+spvc_type_id spvc_type_get_base_type_id(spvc_type type)
+{
+ return type->self;
+}
+
static spvc_basetype convert_basetype(SPIRType::BaseType type)
{
// For now the enums match up.