Compare commits
No commits in common. "c8" and "c10s" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/glslang-07a55839eed550d84ef62e0c7f503e0d67692708.tar.gz
|
||||
/glslang-*.tar.gz
|
||||
|
@ -1 +0,0 @@
|
||||
a62e7be79f6d0be94c90922f839c2f01020ba9a5 SOURCES/glslang-07a55839eed550d84ef62e0c7f503e0d67692708.tar.gz
|
200
0001-pkg-config-compatibility.patch
Normal file
200
0001-pkg-config-compatibility.patch
Normal file
@ -0,0 +1,200 @@
|
||||
diff -up glslang-sdk-1.3.275.0/CMakeLists.txt.dma glslang-sdk-1.3.275.0/CMakeLists.txt
|
||||
--- glslang-sdk-1.3.275.0/CMakeLists.txt.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/CMakeLists.txt 2023-09-05 13:21:45.113297799 +1000
|
||||
@@ -106,6 +106,13 @@ endif()
|
||||
|
||||
option(ENABLE_PCH "Enables Precompiled header" ON)
|
||||
|
||||
+# using pkg-config to configure include paths and link libraries
|
||||
+include(FindPkgConfig)
|
||||
+pkg_check_modules(SPIRV_TOOLS REQUIRED SPIRV-Tools>=2019.2.1)
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared>=2019.2.1)
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(ENABLE_HLSL)
|
||||
add_compile_definitions(ENABLE_HLSL)
|
||||
endif()
|
||||
@@ -264,27 +271,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External)
|
||||
add_subdirectory(External)
|
||||
endif()
|
||||
|
||||
-option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt. This is unsupported if the commit isn't the one in known_good.json")
|
||||
-if(NOT TARGET SPIRV-Tools-opt)
|
||||
- if(ALLOW_EXTERNAL_SPIRV_TOOLS)
|
||||
- # Look for external SPIR-V Tools build, if not building in-tree
|
||||
- message(STATUS "Trying to find local SPIR-V tools")
|
||||
- find_package(SPIRV-Tools-opt)
|
||||
- if(NOT TARGET SPIRV-Tools-opt)
|
||||
- if(ENABLE_OPT)
|
||||
- message(WARNING "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.")
|
||||
- endif()
|
||||
- set(ENABLE_OPT OFF)
|
||||
- endif()
|
||||
- else()
|
||||
- if(ENABLE_OPT)
|
||||
- message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, "
|
||||
- "set the ALLOW_EXTERNAL_SPIRV_TOOLS option to use a local install of SPIRV-Tools, or set ENABLE_OPT=0.")
|
||||
- endif()
|
||||
- endif()
|
||||
-endif()
|
||||
-
|
||||
-if(ENABLE_OPT)
|
||||
+if(${SPIRV_TOOLS_FOUND} EQUAL 1)
|
||||
message(STATUS "optimizer enabled")
|
||||
add_definitions(-DENABLE_OPT=1)
|
||||
else()
|
||||
@@ -349,9 +336,6 @@ if (GLSLANG_ENABLE_INSTALL)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[
|
||||
@PACKAGE_INIT@
|
||||
include(CMakeFindDependencyMacro)
|
||||
- if(@ENABLE_OPT@)
|
||||
- find_dependency(SPIRV-Tools-opt)
|
||||
- endif()
|
||||
@INSTALL_CONFIG_UNIX@
|
||||
include("@PACKAGE_PATH_EXPORT_TARGETS@")
|
||||
]=])
|
||||
diff -up glslang-sdk-1.3.275.0/External/CMakeLists.txt.dma glslang-sdk-1.3.275.0/External/CMakeLists.txt
|
||||
--- glslang-sdk-1.3.275.0/External/CMakeLists.txt.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/External/CMakeLists.txt 2023-09-05 13:21:45.113297799 +1000
|
||||
@@ -68,10 +68,4 @@ if(GLSLANG_TESTS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
|
||||
- if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
|
||||
- set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
|
||||
- add_subdirectory(spirv-tools)
|
||||
- endif()
|
||||
-endif()
|
||||
|
||||
|
||||
diff -up glslang-sdk-1.3.275.0/glslang/CMakeLists.txt.dma glslang-sdk-1.3.275.0/glslang/CMakeLists.txt
|
||||
--- glslang-sdk-1.3.275.0/glslang/CMakeLists.txt.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/glslang/CMakeLists.txt 2023-09-05 13:21:45.114297825 +1000
|
||||
@@ -232,6 +232,8 @@ if(GLSLANG_ENABLE_INSTALL)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
install(TARGETS MachineIndependent EXPORT glslang-targets)
|
||||
install(TARGETS GenericCodeGen EXPORT glslang-targets)
|
||||
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
|
||||
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
endif()
|
||||
|
||||
set(PUBLIC_HEADERS
|
||||
|
||||
diff -up glslang-sdk-1.3.275.0/glslang/glslang.pc.cmake.in.dma glslang-sdk-1.3.275.0/glslang/glslang.pc.cmake.in
|
||||
--- glslang-sdk-1.3.275.0/glslang/glslang.pc.cmake.in.dma 2023-09-05 13:21:45.115297852 +1000
|
||||
+++ glslang-sdk-1.3.275.0/glslang/glslang.pc.cmake.in 2023-09-05 13:21:45.115297852 +1000
|
||||
@@ -0,0 +1,11 @@
|
||||
+ prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
+
|
||||
+ Name: @PROJECT_NAME@
|
||||
+ Description: OpenGL and OpenGL ES shader front end and validator
|
||||
+ Requires:
|
||||
+ Version: @VERSION@
|
||||
+ Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper
|
||||
+ Cflags: -I${includedir}
|
||||
\ No newline at end of file
|
||||
diff -up glslang-sdk-1.3.275.0/SPIRV/CMakeLists.txt.dma glslang-sdk-1.3.275.0/SPIRV/CMakeLists.txt
|
||||
--- glslang-sdk-1.3.275.0/SPIRV/CMakeLists.txt.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/SPIRV/CMakeLists.txt 2023-09-05 13:21:45.116297879 +1000
|
||||
@@ -89,6 +89,10 @@ target_include_directories(SPIRV PUBLIC
|
||||
|
||||
glslang_add_build_info_dependency(SPIRV)
|
||||
|
||||
+
|
||||
+set(SPIRV_NAME spirv)
|
||||
+set(SPIRV_VERSION 1.5.5)
|
||||
+
|
||||
if (ENABLE_SPVREMAPPER)
|
||||
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||
set_target_properties(SPVRemapper PROPERTIES
|
||||
@@ -105,10 +109,17 @@ if(WIN32 AND BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
|
||||
+target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_CFLAGS_OTHER})
|
||||
+target_link_libraries(SPIRV ${SPIRV_TOOLS_LIBRARIES})
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
||||
+ target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_CFLAGS_OTHER})
|
||||
+ target_link_libraries(SPIRV ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(ENABLE_OPT)
|
||||
- target_link_libraries(SPIRV PRIVATE MachineIndependent PUBLIC SPIRV-Tools-opt)
|
||||
- target_include_directories(SPIRV PUBLIC
|
||||
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>)
|
||||
+ target_link_libraries(SPIRV glslang)
|
||||
else()
|
||||
target_link_libraries(SPIRV PRIVATE MachineIndependent)
|
||||
endif()
|
||||
@@ -125,5 +125,9 @@ if(GLSLANG_ENABLE_INSTALL)
|
||||
|
||||
install(TARGETS SPIRV EXPORT glslang-targets)
|
||||
|
||||
+ # spirv.pc Configuration
|
||||
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/spirv.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc @ONLY)
|
||||
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
+
|
||||
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
|
||||
endif()
|
||||
diff -up glslang-sdk-1.3.275.0/SPIRV/spirv.pc.cmake.in.dma glslang-sdk-1.3.275.0/SPIRV/spirv.pc.cmake.in
|
||||
--- glslang-sdk-1.3.275.0/SPIRV/spirv.pc.cmake.in.dma 2023-09-05 13:21:45.116297879 +1000
|
||||
+++ glslang-sdk-1.3.275.0/SPIRV/spirv.pc.cmake.in 2023-09-05 13:21:45.116297879 +1000
|
||||
@@ -0,0 +1,11 @@
|
||||
+ prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
+
|
||||
+ Name: @SPIRV_NAME@
|
||||
+ Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan
|
||||
+ Requires:
|
||||
+ Version: @SPIRV_VERSION@
|
||||
+ Libs: -L${libdir} -lSPIRV
|
||||
+ Cflags: -I${includedir}
|
||||
\ No newline at end of file
|
||||
diff -up glslang-sdk-1.3.275.0/SPIRV/SpvTools.cpp.dma glslang-sdk-1.3.275.0/SPIRV/SpvTools.cpp
|
||||
--- glslang-sdk-1.3.275.0/SPIRV/SpvTools.cpp.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/SPIRV/SpvTools.cpp 2023-09-05 13:21:45.117297906 +1000
|
||||
@@ -43,7 +43,7 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "SpvTools.h"
|
||||
-#include "spirv-tools/optimizer.hpp"
|
||||
+#include <spirv-tools/optimizer.hpp>
|
||||
|
||||
namespace glslang {
|
||||
|
||||
diff -up glslang-sdk-1.3.275.0/StandAlone/CMakeLists.txt.dma glslang-sdk-1.3.275.0/StandAlone/CMakeLists.txt
|
||||
--- glslang-sdk-1.3.275.0/StandAlone/CMakeLists.txt.dma 2023-08-09 04:49:36.000000000 +1000
|
||||
+++ glslang-sdk-1.3.275.0/StandAlone/CMakeLists.txt 2023-09-05 13:22:23.806333232 +1000
|
||||
@@ -63,6 +63,14 @@ set(LIBRARIES
|
||||
SPIRV
|
||||
glslang-default-resource-limits)
|
||||
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
||||
+ target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
||||
+else()
|
||||
+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES})
|
||||
+ target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(WIN32)
|
||||
set(LIBRARIES ${LIBRARIES} psapi)
|
||||
elseif(UNIX)
|
||||
@@ -72,8 +80,6 @@ elseif(UNIX)
|
||||
endif()
|
||||
|
||||
target_link_libraries(glslang-standalone ${LIBRARIES})
|
||||
-target_include_directories(glslang-standalone PUBLIC
|
||||
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>)
|
||||
|
||||
if(ENABLE_SPVREMAPPER)
|
||||
set(REMAPPER_SOURCES spirv-remap.cpp)
|
@ -1,190 +0,0 @@
|
||||
diff -up ./CMakeLists.txt.dma ./CMakeLists.txt
|
||||
--- ./CMakeLists.txt.dma 2020-01-28 05:35:25.000000000 +1000
|
||||
+++ ./CMakeLists.txt 2020-01-29 10:29:25.199187348 +1000
|
||||
@@ -69,6 +69,13 @@ endmacro(glslang_pch)
|
||||
|
||||
project(glslang)
|
||||
|
||||
+# using pkg-config to configure include paths and link libraries
|
||||
+include(FindPkgConfig)
|
||||
+pkg_check_modules(SPIRV_TOOLS REQUIRED SPIRV-Tools>=2019.2.1)
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared>=2019.2.1)
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(ENABLE_CTEST)
|
||||
include(CTest)
|
||||
endif()
|
||||
@@ -166,11 +173,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMA
|
||||
add_subdirectory(External)
|
||||
endif()
|
||||
|
||||
-if(NOT TARGET SPIRV-Tools-opt)
|
||||
- set(ENABLE_OPT OFF)
|
||||
-endif()
|
||||
-
|
||||
-if(ENABLE_OPT)
|
||||
+if(${SPIRV_TOOLS_FOUND} EQUAL 1)
|
||||
message(STATUS "optimizer enabled")
|
||||
add_definitions(-DENABLE_OPT=1)
|
||||
else()
|
||||
diff -up ./External/CMakeLists.txt.dma ./External/CMakeLists.txt
|
||||
--- ./External/CMakeLists.txt.dma 2020-01-28 05:35:25.000000000 +1000
|
||||
+++ ./External/CMakeLists.txt 2020-01-29 10:29:25.199187348 +1000
|
||||
@@ -35,10 +35,3 @@ if(BUILD_TESTING)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt)
|
||||
- if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools)
|
||||
- set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests")
|
||||
- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools)
|
||||
- endif()
|
||||
-endif()
|
||||
-
|
||||
diff -up ./glslang/CMakeLists.txt.dma ./glslang/CMakeLists.txt
|
||||
--- ./glslang/CMakeLists.txt.dma 2020-01-28 05:35:25.000000000 +1000
|
||||
+++ ./glslang/CMakeLists.txt 2020-01-29 10:29:25.199187348 +1000
|
||||
@@ -79,6 +79,7 @@ set(HEADERS
|
||||
MachineIndependent/preprocessor/PpContext.h
|
||||
MachineIndependent/preprocessor/PpTokens.h)
|
||||
|
||||
+set(VERSION 7.11.3113)
|
||||
glslang_pch(SOURCES MachineIndependent/pch.cpp)
|
||||
|
||||
add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})
|
||||
@@ -115,7 +116,9 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
install(TARGETS glslang EXPORT glslangTargets
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
- install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY)
|
||||
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
+ install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
endif(ENABLE_GLSLANG_INSTALL)
|
||||
|
||||
if(ENABLE_GLSLANG_INSTALL)
|
||||
diff -up ./glslang/glslang.pc.cmake.in.dma ./glslang/glslang.pc.cmake.in
|
||||
--- ./glslang/glslang.pc.cmake.in.dma 2020-01-29 10:29:25.199187348 +1000
|
||||
+++ ./glslang/glslang.pc.cmake.in 2020-01-29 10:29:25.199187348 +1000
|
||||
@@ -0,0 +1,11 @@
|
||||
+ prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
+
|
||||
+ Name: @PROJECT_NAME@
|
||||
+ Description: OpenGL and OpenGL ES shader front end and validator
|
||||
+ Requires:
|
||||
+ Version: @VERSION@
|
||||
+ Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper
|
||||
+ Cflags: -I${includedir}
|
||||
\ No newline at end of file
|
||||
diff -up ./SPIRV/CMakeLists.txt.dma ./SPIRV/CMakeLists.txt
|
||||
--- ./SPIRV/CMakeLists.txt.dma 2020-01-28 05:35:25.000000000 +1000
|
||||
+++ ./SPIRV/CMakeLists.txt 2020-01-29 10:29:25.200187375 +1000
|
||||
@@ -40,6 +40,10 @@ target_include_directories(SPIRV PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||
|
||||
+
|
||||
+set(SPIRV_NAME spirv)
|
||||
+set(SPIRV_VERSION 1.3)
|
||||
+
|
||||
if (ENABLE_SPVREMAPPER)
|
||||
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
|
||||
set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
|
||||
@@ -53,15 +57,21 @@ if(WIN32 AND BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
|
||||
+target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_CFLAGS_OTHER})
|
||||
+target_link_libraries(SPIRV ${SPIRV_TOOLS_LIBRARIES})
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
||||
+ target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_CFLAGS_OTHER})
|
||||
+ target_link_libraries(SPIRV ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(ENABLE_OPT)
|
||||
target_include_directories(SPIRV
|
||||
PRIVATE ${spirv-tools_SOURCE_DIR}/include
|
||||
PRIVATE ${spirv-tools_SOURCE_DIR}/source
|
||||
)
|
||||
- target_link_libraries(SPIRV glslang SPIRV-Tools-opt)
|
||||
- target_include_directories(SPIRV PUBLIC
|
||||
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
||||
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
||||
+ target_link_libraries(SPIRV glslang)
|
||||
else()
|
||||
target_link_libraries(SPIRV glslang)
|
||||
endif(ENABLE_OPT)
|
||||
@@ -97,6 +107,9 @@ if(ENABLE_GLSLANG_INSTALL)
|
||||
|
||||
install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
|
||||
+ # spirv.pc Configuration
|
||||
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/spirv.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc @ONLY)
|
||||
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
|
||||
install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
|
||||
endif(ENABLE_GLSLANG_INSTALL)
|
||||
diff -up ./SPIRV/spirv.pc.cmake.in.dma ./SPIRV/spirv.pc.cmake.in
|
||||
--- ./SPIRV/spirv.pc.cmake.in.dma 2020-01-29 10:29:25.200187375 +1000
|
||||
+++ ./SPIRV/spirv.pc.cmake.in 2020-01-29 10:29:25.200187375 +1000
|
||||
@@ -0,0 +1,11 @@
|
||||
+ prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
|
||||
+ libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
+
|
||||
+ Name: @SPIRV_NAME@
|
||||
+ Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan
|
||||
+ Requires:
|
||||
+ Version: @SPIRV_VERSION@
|
||||
+ Libs: -L${libdir} -lSPIRV
|
||||
+ Cflags: -I${includedir}
|
||||
\ No newline at end of file
|
||||
diff -up ./SPIRV/SpvTools.cpp.dma ./SPIRV/SpvTools.cpp
|
||||
--- ./SPIRV/SpvTools.cpp.dma 2020-01-28 05:35:25.000000000 +1000
|
||||
+++ ./SPIRV/SpvTools.cpp 2020-01-29 10:29:25.200187375 +1000
|
||||
@@ -43,8 +43,8 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "SpvTools.h"
|
||||
-#include "spirv-tools/optimizer.hpp"
|
||||
-#include "spirv-tools/libspirv.h"
|
||||
+#include <spirv-tools/optimizer.hpp>
|
||||
+#include <spirv-tools/libspirv.h>
|
||||
|
||||
namespace glslang {
|
||||
|
||||
diff -up ./StandAlone/CMakeLists.txt.dma ./StandAlone/CMakeLists.txt
|
||||
--- ./StandAlone/CMakeLists.txt.dma 2020-01-29 10:29:09.052755158 +1000
|
||||
+++ ./StandAlone/CMakeLists.txt 2020-01-29 10:29:25.201187402 +1000
|
||||
@@ -23,6 +23,14 @@ if(ENABLE_SPVREMAPPER)
|
||||
set(LIBRARIES ${LIBRARIES} SPVRemapper)
|
||||
endif()
|
||||
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES})
|
||||
+ target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS})
|
||||
+else()
|
||||
+ set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES})
|
||||
+ target_include_directories(glslangValidator PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS})
|
||||
+endif(BUILD_SHARED_LIBS)
|
||||
+
|
||||
if(WIN32)
|
||||
set(LIBRARIES ${LIBRARIES} psapi)
|
||||
elseif(UNIX)
|
||||
@@ -32,9 +40,6 @@ elseif(UNIX)
|
||||
endif(WIN32)
|
||||
|
||||
target_link_libraries(glslangValidator ${LIBRARIES})
|
||||
-target_include_directories(glslangValidator PUBLIC
|
||||
- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>
|
||||
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
|
||||
|
||||
if(ENABLE_SPVREMAPPER)
|
||||
set(REMAPPER_SOURCES spirv-remap.cpp)
|
@ -1,9 +0,0 @@
|
||||
--- a/StandAlone/CMakeLists.txt
|
||||
+++ b/StandAlone/CMakeLists.txt
|
||||
@@ -1,4 +1,4 @@
|
||||
-add_library(glslang-default-resource-limits
|
||||
+add_library(glslang-default-resource-limits STATIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp)
|
||||
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
|
||||
set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
|
||||
|
@ -1,141 +0,0 @@
|
||||
%global commit 07a55839eed550d84ef62e0c7f503e0d67692708
|
||||
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||
%global commit_date 20200128
|
||||
%global gitrel .%{commit_date}.git%{shortcommit}
|
||||
|
||||
Name: glslang
|
||||
Version: 8.13.3559
|
||||
Release: 1%{?gitrel}%{?dist}
|
||||
Summary: OpenGL and OpenGL ES shader front end and validator
|
||||
|
||||
License: BSD and GPLv3+ and ASL 2.0
|
||||
URL: https://github.com/KhronosGroup
|
||||
Source0: %url/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
|
||||
Patch1: glslang-default-resource-limits_staticlib.patch
|
||||
# Patch to build against system spirv-tools
|
||||
#Patch3: https://patch-diff.githubusercontent.com/raw/KhronosGroup/glslang/pull/1722.patch#/0001-pkg-config-compatibility.patch
|
||||
Patch3: 0001-pkg-config-compatibility.patch
|
||||
|
||||
BuildRequires: cmake3
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: python3
|
||||
BuildRequires: spirv-tools-devel
|
||||
|
||||
%description
|
||||
%{name} is the official reference compiler front end for the OpenGL
|
||||
ES and OpenGL shading languages. It implements a strict
|
||||
interpretation of the specifications for these languages.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
%{name} is the official reference compiler front end for the OpenGL
|
||||
ES and OpenGL shading languages. It implements a strict
|
||||
interpretation of the specifications for these languages.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{commit}
|
||||
# Fix rpmlint warning on debuginfo
|
||||
find . -name '*.h' -or -name '*.cpp' -or -name '*.hpp'| xargs chmod a-x
|
||||
|
||||
%build
|
||||
%__mkdir_p build
|
||||
pushd build
|
||||
%cmake3 -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_INSTALL_LIBDIR=%{_libdir} \
|
||||
-DCMAKE_SKIP_RPATH:BOOL=yes \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-GNinja ..
|
||||
%{ninja_build}
|
||||
popd
|
||||
|
||||
%install
|
||||
%{ninja_install} -C build
|
||||
|
||||
# we don't want them in here
|
||||
rm -rf %{buildroot}%{_includedir}/SPIRV
|
||||
|
||||
# Install libglslang-default-resource-limits.a
|
||||
install -pm 0644 build/StandAlone/libglslang-default-resource-limits.a %{buildroot}%{_libdir}/
|
||||
|
||||
%ifnarch s390x ppc64
|
||||
%check
|
||||
pushd Test
|
||||
./runtests localResults ../build/StandAlone/glslangValidator ../build/StandAlone/spirv-remap
|
||||
popd
|
||||
%endif
|
||||
|
||||
%files
|
||||
%doc README.md README-spirv-remap.txt
|
||||
%{_bindir}/glslangValidator
|
||||
%{_bindir}/spirv-remap
|
||||
|
||||
%files devel
|
||||
%{_includedir}/glslang/
|
||||
%{_libdir}/libHLSL.a
|
||||
%{_libdir}/libOGLCompiler.a
|
||||
%{_libdir}/libOSDependent.a
|
||||
%{_libdir}/libSPIRV.a
|
||||
%{_libdir}/libSPVRemapper.a
|
||||
%{_libdir}/libglslang.a
|
||||
%{_libdir}/libglslang-default-resource-limits.a
|
||||
%{_libdir}/pkgconfig/glslang.pc
|
||||
%{_libdir}/pkgconfig/spirv.pc
|
||||
%{_libdir}/cmake/*
|
||||
|
||||
%changelog
|
||||
* Wed Jan 29 2020 Dave Airlie <airlied@redhat.com> - 8.13.3559-1
|
||||
- Update glslang for 8.2.0 for vulkan 1.2
|
||||
|
||||
* Sat Dec 07 2019 Dave Airlie <airlied@redhat.com> - 7.13.3496-2
|
||||
- Update for 8.2.0
|
||||
|
||||
* Tue Nov 12 2019 Dave Airlie <airlied@redhat.com> - 7.13.3496-1
|
||||
- Update to latest snapshot
|
||||
|
||||
* Thu Aug 15 2019 Dave Airlie <airlied@redhat.com> - 7.11.3214-4
|
||||
- Fix coverity scans (Kamil Dudka)
|
||||
|
||||
* Sat Aug 03 2019 Dave Airlie <airlied@redhat.com> - 7.11.3214-3
|
||||
- Latest upstream snapshot for validation layers build
|
||||
- Add patch to build against system spirv-tools
|
||||
|
||||
* Tue Feb 12 2019 Dave Airlie <airlied@redhat.com> - 3.1-0.11.20190329.gite0d59bb
|
||||
- Update for vulkan 1.1.92.0
|
||||
- Update for vulkan 1.1.101.0
|
||||
|
||||
* Tue Aug 07 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.10.20180727.gite99a268
|
||||
- Update for vulkan 1.1.82.0
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1-0.9.20180416.git3bb4c48
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Mon Apr 23 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.8.20180416.git3bb4c48
|
||||
- Update for vulkan 1.1.73.0
|
||||
|
||||
* Wed Mar 07 2018 Adam Williamson <awilliam@redhat.com> - 3.1-0.7.20180205.git2651cca
|
||||
- Rebuild to fix GCC 8 mis-compilation
|
||||
See https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
|
||||
|
||||
* Fri Feb 09 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.6.20180205.git2651cca
|
||||
- Update for vulkan 1.0.68.0
|
||||
|
||||
* Fri Feb 09 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.5.20171028.git715c353
|
||||
- Use ninja to build
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1-0.4.20171028.git715c353
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Wed Jan 03 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.3.20171028.git715c353
|
||||
- Exclude s390x and ppc64 from check section
|
||||
|
||||
* Wed Jan 03 2018 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.2.20171028.git715c353
|
||||
- Add check section to run tests
|
||||
- Split binaries into main package
|
||||
|
||||
* Thu Jul 13 2017 Leigh Scott <leigh123linux@googlemail.com> - 3.1-0.1.20171028.git715c353
|
||||
- First build
|
||||
|
29
fix-conversion-to-int8.patch
Normal file
29
fix-conversion-to-int8.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From f1fa8afa25c99a550b3d80c516b7cfa3ac725de5 Mon Sep 17 00:00:00 2001
|
||||
From: Marius Hillenbrand <mhillen@linux.ibm.com>
|
||||
Date: Wed, 10 Nov 2021 18:10:58 +0100
|
||||
Subject: [PATCH] TIntermediate::promoteConstantUnion(): fix conversion to int8
|
||||
|
||||
The signedness of type char is implementation-defined in C++. The
|
||||
conversion to (signed) int8 currently uses a cast to char, which is
|
||||
undefined for negative values when the type char is implemented as
|
||||
unsigned. Thus, fix to cast to "signed char", which has the intended
|
||||
semantic on all implementations.
|
||||
|
||||
Fixes #2807
|
||||
---
|
||||
glslang/MachineIndependent/Intermediate.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
|
||||
index 1283f4493..6aea5b3d7 100644
|
||||
--- a/glslang/MachineIndependent/Intermediate.cpp
|
||||
+++ b/glslang/MachineIndependent/Intermediate.cpp
|
||||
@@ -3902,7 +3902,7 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
|
||||
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
|
||||
case EbtFloat: PROMOTE(setDConst, double, Get); break; \
|
||||
case EbtDouble: PROMOTE(setDConst, double, Get); break; \
|
||||
- case EbtInt8: PROMOTE(setI8Const, char, Get); break; \
|
||||
+ case EbtInt8: PROMOTE(setI8Const, signed char, Get); break; \
|
||||
case EbtInt16: PROMOTE(setI16Const, short, Get); break; \
|
||||
case EbtInt: PROMOTE(setIConst, int, Get); break; \
|
||||
case EbtInt64: PROMOTE(setI64Const, long long, Get); break; \
|
@ -0,0 +1,189 @@
|
||||
From 78ce7e567fce86d611353c5a9194833a54a6fbe0 Mon Sep 17 00:00:00 2001
|
||||
From: Marius Hillenbrand <mhillen@linux.ibm.com>
|
||||
Date: Tue, 19 Oct 2021 18:09:52 +0200
|
||||
Subject: [PATCH] Fix encoding/decoding of string literals for big-endian
|
||||
systems
|
||||
|
||||
Per SPIR-V spec, a string literal's UTF-8 octets are encoded packed into
|
||||
words with little-endian convention. Explicitly perform that encoding
|
||||
instead of assuming that the host system is little-endian.
|
||||
|
||||
Note that this change requires corresponding fixes in SPIRV-Tools.
|
||||
|
||||
Fixes #202
|
||||
---
|
||||
SPIRV/SPVRemapper.cpp | 18 +++++++++++------
|
||||
SPIRV/disassemble.cpp | 47 ++++++++++++++++++++++++++++---------------
|
||||
SPIRV/spvIR.h | 22 +++++++++-----------
|
||||
3 files changed, 52 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
|
||||
index 56d6d5d4a..fdfbeb90c 100644
|
||||
--- a/SPIRV/SPVRemapper.cpp
|
||||
+++ b/SPIRV/SPVRemapper.cpp
|
||||
@@ -297,15 +297,21 @@ namespace spv {
|
||||
std::string spirvbin_t::literalString(unsigned word) const
|
||||
{
|
||||
std::string literal;
|
||||
+ const spirword_t * pos = spv.data() + word;
|
||||
|
||||
literal.reserve(16);
|
||||
|
||||
- const char* bytes = reinterpret_cast<const char*>(spv.data() + word);
|
||||
-
|
||||
- while (bytes && *bytes)
|
||||
- literal += *bytes++;
|
||||
-
|
||||
- return literal;
|
||||
+ do {
|
||||
+ spirword_t word = *pos;
|
||||
+ for (int i = 0; i < 4; i++) {
|
||||
+ char c = word & 0xff;
|
||||
+ if (c == '\0')
|
||||
+ return literal;
|
||||
+ literal += c;
|
||||
+ word >>= 8;
|
||||
+ }
|
||||
+ pos++;
|
||||
+ } while (true);
|
||||
}
|
||||
|
||||
void spirvbin_t::applyMap()
|
||||
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
|
||||
index 73c988c5b..74dd60540 100644
|
||||
--- a/SPIRV/disassemble.cpp
|
||||
+++ b/SPIRV/disassemble.cpp
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <stack>
|
||||
#include <sstream>
|
||||
#include <cstring>
|
||||
+#include <utility>
|
||||
|
||||
#include "disassemble.h"
|
||||
#include "doc.h"
|
||||
@@ -100,6 +101,7 @@ class SpirvStream {
|
||||
void outputMask(OperandClass operandClass, unsigned mask);
|
||||
void disassembleImmediates(int numOperands);
|
||||
void disassembleIds(int numOperands);
|
||||
+ std::pair<int, std::string> decodeString();
|
||||
int disassembleString();
|
||||
void disassembleInstruction(Id resultId, Id typeId, Op opCode, int numOperands);
|
||||
|
||||
@@ -290,31 +292,44 @@ void SpirvStream::disassembleIds(int numOperands)
|
||||
}
|
||||
}
|
||||
|
||||
-// return the number of operands consumed by the string
|
||||
-int SpirvStream::disassembleString()
|
||||
+// decode string from words at current position (non-consuming)
|
||||
+std::pair<int, std::string> SpirvStream::decodeString()
|
||||
{
|
||||
- int startWord = word;
|
||||
-
|
||||
- out << " \"";
|
||||
-
|
||||
- const char* wordString;
|
||||
+ std::string res;
|
||||
+ int wordPos = word;
|
||||
+ char c;
|
||||
bool done = false;
|
||||
+
|
||||
do {
|
||||
- unsigned int content = stream[word];
|
||||
- wordString = (const char*)&content;
|
||||
+ unsigned int content = stream[wordPos];
|
||||
for (int charCount = 0; charCount < 4; ++charCount) {
|
||||
- if (*wordString == 0) {
|
||||
+ c = content & 0xff;
|
||||
+ content >>= 8;
|
||||
+ if (c == '\0') {
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
- out << *(wordString++);
|
||||
+ res += c;
|
||||
}
|
||||
- ++word;
|
||||
- } while (! done);
|
||||
+ ++wordPos;
|
||||
+ } while(! done);
|
||||
+
|
||||
+ return std::make_pair(wordPos - word, res);
|
||||
+}
|
||||
+
|
||||
+// return the number of operands consumed by the string
|
||||
+int SpirvStream::disassembleString()
|
||||
+{
|
||||
+ out << " \"";
|
||||
|
||||
+ std::pair<int, std::string> decoderes = decodeString();
|
||||
+
|
||||
+ out << decoderes.second;
|
||||
out << "\"";
|
||||
|
||||
- return word - startWord;
|
||||
+ word += decoderes.first;
|
||||
+
|
||||
+ return decoderes.first;
|
||||
}
|
||||
|
||||
void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, int numOperands)
|
||||
@@ -331,7 +346,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
nextNestedControl = 0;
|
||||
}
|
||||
} else if (opCode == OpExtInstImport) {
|
||||
- idDescriptor[resultId] = (const char*)(&stream[word]);
|
||||
+ idDescriptor[resultId] = decodeString().second;
|
||||
}
|
||||
else {
|
||||
if (resultId != 0 && idDescriptor[resultId].size() == 0) {
|
||||
@@ -428,7 +443,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
|
||||
--numOperands;
|
||||
// Get names for printing "(XXX)" for readability, *after* this id
|
||||
if (opCode == OpName)
|
||||
- idDescriptor[stream[word - 1]] = (const char*)(&stream[word]);
|
||||
+ idDescriptor[stream[word - 1]] = decodeString().second;
|
||||
break;
|
||||
case OperandVariableIds:
|
||||
disassembleIds(numOperands);
|
||||
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
|
||||
index 486e80d00..5249a5ba7 100644
|
||||
--- a/SPIRV/spvIR.h
|
||||
+++ b/SPIRV/spvIR.h
|
||||
@@ -111,27 +111,23 @@ class Instruction {
|
||||
|
||||
void addStringOperand(const char* str)
|
||||
{
|
||||
- unsigned int word;
|
||||
- char* wordString = (char*)&word;
|
||||
- char* wordPtr = wordString;
|
||||
- int charCount = 0;
|
||||
+ unsigned int word = 0;
|
||||
+ unsigned int shiftAmount = 0;
|
||||
char c;
|
||||
+
|
||||
do {
|
||||
c = *(str++);
|
||||
- *(wordPtr++) = c;
|
||||
- ++charCount;
|
||||
- if (charCount == 4) {
|
||||
+ word |= ((unsigned int)c) << shiftAmount;
|
||||
+ shiftAmount += 8;
|
||||
+ if (shiftAmount == 32) {
|
||||
addImmediateOperand(word);
|
||||
- wordPtr = wordString;
|
||||
- charCount = 0;
|
||||
+ word = 0;
|
||||
+ shiftAmount = 0;
|
||||
}
|
||||
} while (c != 0);
|
||||
|
||||
// deal with partial last word
|
||||
- if (charCount > 0) {
|
||||
- // pad with 0s
|
||||
- for (; charCount < 4; ++charCount)
|
||||
- *(wordPtr++) = 0;
|
||||
+ if (shiftAmount > 0) {
|
||||
addImmediateOperand(word);
|
||||
}
|
||||
}
|
6
gating.yaml
Normal file
6
gating.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-10
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}
|
76
glslang.spec
Normal file
76
glslang.spec
Normal file
@ -0,0 +1,76 @@
|
||||
%global sdkver 1.3.283.0
|
||||
|
||||
Name: glslang
|
||||
Version: 14.2.0
|
||||
Release: %autorelease
|
||||
Summary: OpenGL and OpenGL ES shader front end and validator
|
||||
|
||||
License: BSD-2-Clause AND BSD-3-Clause AND GPL-3.0-or-later AND Apache-2.0
|
||||
URL: https://github.com/KhronosGroup/%{name}
|
||||
Source0: %url/archive/vulkan-sdk-%{sdkver}.tar.gz#/%{name}-sdk-%{sdkver}.tar.gz
|
||||
# Patch to build against system spirv-tools (rebased locally)
|
||||
#Patch3: https://patch-diff.githubusercontent.com/raw/KhronosGroup/glslang/pull/1722.patch#/0001-pkg-config-compatibility.patch
|
||||
Patch3: 0001-pkg-config-compatibility.patch
|
||||
|
||||
BuildRequires: cmake3
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: ninja-build
|
||||
BuildRequires: spirv-tools-devel
|
||||
|
||||
%description
|
||||
%{name} is the official reference compiler front end for the OpenGL
|
||||
ES and OpenGL shading languages. It implements a strict
|
||||
interpretation of the specifications for these languages.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
%{name} is the official reference compiler front end for the OpenGL
|
||||
ES and OpenGL shading languages. It implements a strict
|
||||
interpretation of the specifications for these languages.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-vulkan-sdk-%{sdkver}
|
||||
# Fix rpmlint warning on debuginfo
|
||||
find . -name '*.h' -or -name '*.cpp' -or -name '*.hpp'| xargs chmod a-x
|
||||
|
||||
%build
|
||||
%cmake3 -DBUILD_SHARED_LIBS=OFF
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
%{cmake_install}
|
||||
|
||||
# we don't want them in here
|
||||
rm -rf %{buildroot}%{_includedir}/SPIRV
|
||||
|
||||
%ifnarch s390x ppc64
|
||||
%check
|
||||
pushd Test
|
||||
./runtests localResults ../%{_vpath_builddir}/StandAlone/glslangValidator ../%{_vpath_builddir}/StandAlone/spirv-remap
|
||||
popd
|
||||
%endif
|
||||
|
||||
%files
|
||||
%doc README.md README-spirv-remap.txt
|
||||
%{_bindir}/glslang
|
||||
%{_bindir}/glslangValidator
|
||||
%{_bindir}/spirv-remap
|
||||
|
||||
%files devel
|
||||
%{_includedir}/glslang/
|
||||
%{_libdir}/libOSDependent.a
|
||||
%{_libdir}/libSPIRV.a
|
||||
%{_libdir}/libSPVRemapper.a
|
||||
%{_libdir}/libglslang.a
|
||||
%{_libdir}/libGenericCodeGen.a
|
||||
%{_libdir}/libMachineIndependent.a
|
||||
%{_libdir}/libglslang-default-resource-limits.a
|
||||
%{_libdir}/pkgconfig/glslang.pc
|
||||
%{_libdir}/pkgconfig/spirv.pc
|
||||
%{_libdir}/cmake/*
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
||||
SHA512 (glslang-sdk-1.3.283.0.tar.gz) = 297fb9c91d17c80d0f6a9812a2c785179ad58ebff2d12d5c57f7d4d2c37bab96a31656f430b97914c39d0c23e21f96718fd13437233a40d80bd4e001579facda
|
@ -0,0 +1,172 @@
|
||||
From 0eda343970e04e7c9447d264271b1c4cfdc923f4 Mon Sep 17 00:00:00 2001
|
||||
From: Marius Hillenbrand <mhillen@linux.ibm.com>
|
||||
Date: Tue, 9 Nov 2021 16:31:22 +0100
|
||||
Subject: [PATCH] Use intermOut.cpp's IsNan and IsInfinity for parse-time
|
||||
constant folding (updated)
|
||||
|
||||
There were two implementations of isInf() and isNan(), in Constant.cpp
|
||||
and in intermOut.cpp. The former only works on little-endian systems,
|
||||
the latter is a wrapper for library functions and works regardless of
|
||||
endianness. Move the second version into Common.h and adopt it in both
|
||||
places. Thereby avoid the duplication and fix for big-endian systems.
|
||||
|
||||
A previous commit with the same intent and purpose had missed a required
|
||||
header for builds on Windows.
|
||||
|
||||
On s390x, this fixes the test case
|
||||
Glsl/CompileToAstTest.FromFile/constFold_frag.
|
||||
|
||||
Fixes #2802
|
||||
---
|
||||
glslang/Include/Common.h | 33 ++++++++++++++++++++++++
|
||||
glslang/MachineIndependent/Constant.cpp | 33 ++----------------------
|
||||
glslang/MachineIndependent/intermOut.cpp | 31 ----------------------
|
||||
3 files changed, 35 insertions(+), 62 deletions(-)
|
||||
|
||||
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
|
||||
index e7b5e072b..9042a1aa2 100644
|
||||
--- a/glslang/Include/Common.h
|
||||
+++ b/glslang/Include/Common.h
|
||||
@@ -39,6 +39,11 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
+#ifdef _MSC_VER
|
||||
+#include <cfloat>
|
||||
+#else
|
||||
+#include <cmath>
|
||||
+#endif
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <list>
|
||||
@@ -302,6 +307,34 @@ template <class T> int IntLog2(T n)
|
||||
return result;
|
||||
}
|
||||
|
||||
+inline bool IsInfinity(double x) {
|
||||
+#ifdef _MSC_VER
|
||||
+ switch (_fpclass(x)) {
|
||||
+ case _FPCLASS_NINF:
|
||||
+ case _FPCLASS_PINF:
|
||||
+ return true;
|
||||
+ default:
|
||||
+ return false;
|
||||
+ }
|
||||
+#else
|
||||
+ return std::isinf(x);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+inline bool IsNan(double x) {
|
||||
+#ifdef _MSC_VER
|
||||
+ switch (_fpclass(x)) {
|
||||
+ case _FPCLASS_SNAN:
|
||||
+ case _FPCLASS_QNAN:
|
||||
+ return true;
|
||||
+ default:
|
||||
+ return false;
|
||||
+ }
|
||||
+#else
|
||||
+ return std::isnan(x);
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
} // end namespace glslang
|
||||
|
||||
#endif // _COMMON_INCLUDED_
|
||||
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
|
||||
index 7f5d4c4f2..5fc61dbb7 100644
|
||||
--- a/glslang/MachineIndependent/Constant.cpp
|
||||
+++ b/glslang/MachineIndependent/Constant.cpp
|
||||
@@ -46,35 +46,6 @@ namespace {
|
||||
|
||||
using namespace glslang;
|
||||
|
||||
-typedef union {
|
||||
- double d;
|
||||
- int i[2];
|
||||
-} DoubleIntUnion;
|
||||
-
|
||||
-// Some helper functions
|
||||
-
|
||||
-bool isNan(double x)
|
||||
-{
|
||||
- DoubleIntUnion u;
|
||||
- // tough to find a platform independent library function, do it directly
|
||||
- u.d = x;
|
||||
- int bitPatternL = u.i[0];
|
||||
- int bitPatternH = u.i[1];
|
||||
- return (bitPatternH & 0x7ff80000) == 0x7ff80000 &&
|
||||
- ((bitPatternH & 0xFFFFF) != 0 || bitPatternL != 0);
|
||||
-}
|
||||
-
|
||||
-bool isInf(double x)
|
||||
-{
|
||||
- DoubleIntUnion u;
|
||||
- // tough to find a platform independent library function, do it directly
|
||||
- u.d = x;
|
||||
- int bitPatternL = u.i[0];
|
||||
- int bitPatternH = u.i[1];
|
||||
- return (bitPatternH & 0x7ff00000) == 0x7ff00000 &&
|
||||
- (bitPatternH & 0xFFFFF) == 0 && bitPatternL == 0;
|
||||
-}
|
||||
-
|
||||
const double pi = 3.1415926535897932384626433832795;
|
||||
|
||||
} // end anonymous namespace
|
||||
@@ -663,12 +634,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
|
||||
|
||||
case EOpIsNan:
|
||||
{
|
||||
- newConstArray[i].setBConst(isNan(unionArray[i].getDConst()));
|
||||
+ newConstArray[i].setBConst(IsNan(unionArray[i].getDConst()));
|
||||
break;
|
||||
}
|
||||
case EOpIsInf:
|
||||
{
|
||||
- newConstArray[i].setBConst(isInf(unionArray[i].getDConst()));
|
||||
+ newConstArray[i].setBConst(IsInfinity(unionArray[i].getDConst()));
|
||||
break;
|
||||
}
|
||||
|
||||
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
|
||||
index a0fade16c..d8a3aab5d 100644
|
||||
--- a/glslang/MachineIndependent/intermOut.cpp
|
||||
+++ b/glslang/MachineIndependent/intermOut.cpp
|
||||
@@ -48,37 +48,6 @@
|
||||
#endif
|
||||
#include <cstdint>
|
||||
|
||||
-namespace {
|
||||
-
|
||||
-bool IsInfinity(double x) {
|
||||
-#ifdef _MSC_VER
|
||||
- switch (_fpclass(x)) {
|
||||
- case _FPCLASS_NINF:
|
||||
- case _FPCLASS_PINF:
|
||||
- return true;
|
||||
- default:
|
||||
- return false;
|
||||
- }
|
||||
-#else
|
||||
- return std::isinf(x);
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
-bool IsNan(double x) {
|
||||
-#ifdef _MSC_VER
|
||||
- switch (_fpclass(x)) {
|
||||
- case _FPCLASS_SNAN:
|
||||
- case _FPCLASS_QNAN:
|
||||
- return true;
|
||||
- default:
|
||||
- return false;
|
||||
- }
|
||||
-#else
|
||||
- return std::isnan(x);
|
||||
-#endif
|
||||
-}
|
||||
-
|
||||
-}
|
||||
|
||||
namespace glslang {
|
Loading…
Reference in New Issue
Block a user