Merge pull request #2101 from travisfoo/master
add c wrapper for standalone ResourceLimits and remove that dependency from glslang_c_interface
This commit is contained in:
		
						commit
						6861ea4e10
					
				@ -1,5 +1,6 @@
 | 
				
			|||||||
add_library(glslang-default-resource-limits
 | 
					add_library(glslang-default-resource-limits
 | 
				
			||||||
            ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
 | 
					            ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
 | 
				
			||||||
 | 
					            ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
 | 
				
			||||||
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
 | 
					set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
 | 
				
			||||||
set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
 | 
					set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										51
									
								
								StandAlone/resource_limits_c.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								StandAlone/resource_limits_c.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					BSD 2-Clause License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2020, Travis Fort
 | 
				
			||||||
 | 
					All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					   list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
				
			||||||
 | 
					DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | 
				
			||||||
 | 
					FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
				
			||||||
 | 
					DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | 
				
			||||||
 | 
					SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | 
				
			||||||
 | 
					OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
				
			||||||
 | 
					OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "resource_limits_c.h"
 | 
				
			||||||
 | 
					#include "ResourceLimits.h"
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const glslang_resource_t* glslang_default_resource(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const char* glslang_default_resource_string()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    std::string cpp_str = glslang::GetDefaultTBuiltInResourceString();
 | 
				
			||||||
 | 
					    char* c_str = (char*)malloc(cpp_str.length() + 1);
 | 
				
			||||||
 | 
					    strcpy(c_str, cpp_str.c_str());
 | 
				
			||||||
 | 
					    return c_str;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void glslang_decode_resource_limits(glslang_resource_t* resources, char* config)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    glslang::DecodeResourceLimits(reinterpret_cast<TBuiltInResource*>(resources), config);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										54
									
								
								StandAlone/resource_limits_c.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								StandAlone/resource_limits_c.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					BSD 2-Clause License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2020, Travis Fort
 | 
				
			||||||
 | 
					All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					   list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
				
			||||||
 | 
					DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | 
				
			||||||
 | 
					FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
				
			||||||
 | 
					DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | 
				
			||||||
 | 
					SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | 
				
			||||||
 | 
					OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
				
			||||||
 | 
					OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					**/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
 | 
				
			||||||
 | 
					#define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "../glslang/Include/glslang_c_interface.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// These are the default resources for TBuiltInResources, used for both
 | 
				
			||||||
 | 
					//  - parsing this string for the case where the user didn't supply one,
 | 
				
			||||||
 | 
					//  - dumping out a template for user construction of a config file.
 | 
				
			||||||
 | 
					const glslang_resource_t* glslang_default_resource(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Returns the DefaultTBuiltInResource as a human-readable string.
 | 
				
			||||||
 | 
					// NOTE: User is responsible for freeing this string.
 | 
				
			||||||
 | 
					const char* glslang_default_resource_string();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Decodes the resource limits from |config| to |resources|.
 | 
				
			||||||
 | 
					void glslang_decode_resource_limits(glslang_resource_t* resources, char* config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_
 | 
				
			||||||
@ -167,11 +167,6 @@ int glslang_initialize_process() { return static_cast<int>(glslang::InitializePr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void glslang_finalize_process() { glslang::FinalizeProcess(); }
 | 
					void glslang_finalize_process() { glslang::FinalizeProcess(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const glslang_resource_t* glslang_default_resource(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return reinterpret_cast<const glslang_resource_t*>(&glslang::DefaultTBuiltInResource);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static EShLanguage c_shader_stage(glslang_stage_t stage)
 | 
					static EShLanguage c_shader_stage(glslang_stage_t stage)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    switch (stage) {
 | 
					    switch (stage) {
 | 
				
			||||||
 | 
				
			|||||||
@ -205,8 +205,6 @@ extern "C" {
 | 
				
			|||||||
int glslang_initialize_process();
 | 
					int glslang_initialize_process();
 | 
				
			||||||
void glslang_finalize_process();
 | 
					void glslang_finalize_process();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const glslang_resource_t* glslang_default_resource(void);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
 | 
					glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
 | 
				
			||||||
void glslang_shader_delete(glslang_shader_t* shader);
 | 
					void glslang_shader_delete(glslang_shader_t* shader);
 | 
				
			||||||
int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
 | 
					int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user