Skip to content

Commit

Permalink
v1.16 release: OpenCL support, removing global selector palette code …
Browse files Browse the repository at this point in the history
…(it was unused/dead code), ETC1S encoding optimizations, -parallel command line option
  • Loading branch information
richgel999 committed Jan 28, 2022
1 parent 5d23f64 commit deeb5ac
Show file tree
Hide file tree
Showing 46 changed files with 13,916 additions and 6,198 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
bin/
build/

# VS project and working files
Expand Down
21 changes: 5 additions & 16 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,11 @@ Files: *
Copyright: 2019-2021 Binomial LLC
License: Apache-2.0

Files: encoder/apg_bmp.*
Copyright: 2019 Anton Gerdelan
License: Apache-2.0

Files: encoder/basisu_astc_decomp.*
Copyright: 2016 The Android Open Source Project
License: Apache-2.0

Files: encoder/cppspmd_sse.h
Copyright: Copyright 2016 Nicolas Guillemot
License: Apache-2.0

Files: encoder/lodepng.*
Copyright: 2005-2019 Lode Vandevenne
License: Zlib

Files: zstd/*
Copyright: 2016-present, Facebook, Inc.
License: BSD

Files: OpenCL/*
Copyright: Copyright (c) 2008-2020 The Khronos Group Inc.
License: Apache-2.0

62 changes: 55 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,38 @@
project(basisu)

cmake_minimum_required(VERSION 3.0)
option(BUILD_X64 "build 64-bit" TRUE)
option(STATIC "static linking" FALSE)
option(SSE "SSE 4.1 support" FALSE)

# For MSVC builds default to SSE enabled, and determine if it's a 64-bit (-A x64) vs. 32-bit (-A Win32) build.
if (MSVC)
option(SSE "SSE 4.1 support" TRUE)
if ( CMAKE_GENERATOR_PLATFORM STREQUAL Win32 )
set(BUILD_X64 0)
else()
set(BUILD_X64 1)
endif()
else()
option(SSE "SSE 4.1 support" FALSE)
option(BUILD_X64 "build 64-bit" TRUE)
endif()

option(ZSTD "ZSTD support for KTX2 transcoding/encoding" TRUE)
option(OPENCL "OpenCL support in encoder" FALSE)

message("Initial BUILD_X64=${BUILD_X64}")
message("Initial CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
message("Initial SSE=${SSE}")
message("Initial ZSTD=${ZSTD}")
message("Initial OPENCL=${OPENCL}")

if (NOT MSVC)
# With MSVC builds we use the Khronos lib/include files in the project's "OpenCL" directory, to completely avoid requiring fiddly to install vendor SDK's.
# Otherwise we use the system's (if any).
find_package( OpenCL )
message(STATUS "OpenCL found: ${OPENCL_FOUND}")
message(STATUS "OpenCL includes: ${OpenCL_INCLUDE_DIRS}")
message(STATUS "OpenCL libraries: ${OpenCL_LIBRARIES}")
endif()

if( NOT CMAKE_BUILD_TYPE )
set( CMAKE_BUILD_TYPE Release )
Expand Down Expand Up @@ -101,19 +124,17 @@ set(BASISU_SRC_LIST ${COMMON_SRC_LIST}
encoder/basisu_enc.cpp
encoder/basisu_etc.cpp
encoder/basisu_frontend.cpp
encoder/basisu_global_selector_palette_helpers.cpp
encoder/basisu_gpu_texture.cpp
encoder/basisu_pvrtc1_4.cpp
encoder/basisu_resampler.cpp
encoder/basisu_resample_filters.cpp
encoder/basisu_ssim.cpp
encoder/basisu_astc_decomp.cpp
encoder/basisu_uastc_enc.cpp
encoder/basisu_bc7enc.cpp
encoder/lodepng.cpp
encoder/apg_bmp.c
encoder/jpgd.cpp
encoder/basisu_kernels_sse.cpp
encoder/basisu_opencl.cpp
encoder/pvpngreader.cpp
transcoder/basisu_transcoder.cpp
)

Expand All @@ -138,7 +159,34 @@ else()
endif()

if (NOT MSVC)
target_link_libraries(basisu m pthread)
# For Non-Windows builds, let cmake try and find the system OpenCL headers/libs for us.
if (OPENCL_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")

target_include_directories( basisu PRIVATE ${OpenCL_INCLUDE_DIRS} )
set(BASISU_EXTRA_LIBS ${OpenCL_LIBRARIES})
endif()

else()
# For Windows builds, we use our local copies of the OpenCL import lib and Khronos headers.
if (OPENCL)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")

target_include_directories( basisu PRIVATE "OpenCL" )

if ( BUILD_X64 )
target_link_libraries( basisu PRIVATE "OpenCL/lib/OpenCL64" )
else()
target_link_libraries( basisu PRIVATE "OpenCL/lib/OpenCL" )
endif()

endif()
endif()

if (NOT MSVC)
target_link_libraries(basisu m pthread ${BASISU_EXTRA_LIBS})
endif()

if (NOT EMSCRIPTEN)
Expand Down
49 changes: 26 additions & 23 deletions basisu.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,26 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
Expand Down Expand Up @@ -87,27 +87,30 @@
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<OpenMPSupport>true</OpenMPSupport>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1</PreprocessorDefinitions>
<AdditionalIncludeDirectories>OpenCL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1</PreprocessorDefinitions>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>OpenCL\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>opencl.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>ispc_texcomp</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>OpenCL</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<OpenMPSupport>true</OpenMPSupport>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;</PreprocessorDefinitions>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>OpenCL\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>opencl64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
Expand All @@ -117,9 +120,8 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<OpenMPSupport>true</OpenMPSupport>
<AdditionalIncludeDirectories>
</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1</PreprocessorDefinitions>
<AdditionalIncludeDirectories>OpenCL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1</PreprocessorDefinitions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
Expand All @@ -131,6 +133,8 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>OpenCL\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>opencl.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
Expand All @@ -139,8 +143,8 @@
<Optimization>Full</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>ispc_texcomp</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;</PreprocessorDefinitions>
<AdditionalIncludeDirectories>OpenCL</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1</PreprocessorDefinitions>
<BufferSecurityCheck>false</BufferSecurityCheck>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
Expand All @@ -153,41 +157,41 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>OpenCL\lib</AdditionalLibraryDirectories>
<AdditionalDependencies>opencl64.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="encoder\apg_bmp.c" />
<ClCompile Include="encoder\basisu_astc_decomp.cpp" />
<ClCompile Include="encoder\basisu_backend.cpp" />
<ClCompile Include="encoder\basisu_basis_file.cpp" />
<ClCompile Include="encoder\basisu_bc7enc.cpp" />
<ClCompile Include="encoder\basisu_comp.cpp" />
<ClCompile Include="encoder\basisu_enc.cpp" />
<ClCompile Include="encoder\basisu_etc.cpp" />
<ClCompile Include="encoder\basisu_frontend.cpp" />
<ClCompile Include="encoder\basisu_global_selector_palette_helpers.cpp" />
<ClCompile Include="encoder\basisu_gpu_texture.cpp" />
<ClCompile Include="encoder\basisu_kernels_sse.cpp" />
<ClCompile Include="encoder\basisu_opencl.cpp" />
<ClCompile Include="encoder\basisu_pvrtc1_4.cpp" />
<ClCompile Include="encoder\basisu_resampler.cpp" />
<ClCompile Include="encoder\basisu_resample_filters.cpp" />
<ClCompile Include="encoder\basisu_ssim.cpp" />
<ClCompile Include="encoder\basisu_uastc_enc.cpp" />
<ClCompile Include="encoder\jpgd.cpp" />
<ClCompile Include="encoder\lodepng.cpp" />
<ClCompile Include="encoder\pvpngreader.cpp" />
<ClCompile Include="zstd\zstd.c" />
<ClInclude Include="encoder\basisu_ocl_kernels.h" />
<ClInclude Include="encoder\basisu_opencl.h" />
<ClInclude Include="encoder\pvpngreader.h" />
<ClInclude Include="transcoder\basisu_containers_impl.h" />
<ClCompile Include="transcoder\basisu_transcoder.cpp" />
<ClInclude Include="encoder\apg_bmp.h" />
<ClInclude Include="encoder\basisu_astc_decomp.h" />
<ClInclude Include="encoder\basisu_backend.h" />
<ClInclude Include="encoder\basisu_basis_file.h" />
<ClInclude Include="encoder\basisu_bc7enc.h" />
<ClInclude Include="encoder\basisu_comp.h" />
<ClInclude Include="encoder\basisu_enc.h" />
<ClInclude Include="encoder\basisu_etc.h" />
<ClInclude Include="encoder\basisu_frontend.h" />
<ClInclude Include="encoder\basisu_global_selector_palette_helpers.h" />
<ClInclude Include="encoder\basisu_gpu_texture.h" />
<ClInclude Include="encoder\basisu_kernels_declares.h" />
<ClInclude Include="encoder\basisu_kernels_imp.h" />
Expand All @@ -203,19 +207,18 @@
<ClInclude Include="encoder\cppspmd_sse.h" />
<ClInclude Include="encoder\cppspmd_type_aliases.h" />
<ClInclude Include="encoder\jpgd.h" />
<ClInclude Include="encoder\lodepng.h" />
<ClInclude Include="transcoder\basisu.h" />
<ClInclude Include="transcoder\basisu_containers.h" />
<ClInclude Include="transcoder\basisu_file_headers.h" />
<ClInclude Include="transcoder\basisu_transcoder.h" />
<ClInclude Include="transcoder\basisu_transcoder_internal.h" />
<ClInclude Include="transcoder\basisu_global_selector_palette.h" />
<ClInclude Include="transcoder\basisu_transcoder_uastc.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="basisu_tool.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="bin\ocl_kernels.cl" />
<None Include="transcoder\basisu_transcoder_tables_astc.inc" />
<None Include="transcoder\basisu_transcoder_tables_astc_0_255.inc" />
<None Include="transcoder\basisu_transcoder_tables_atc_55.inc" />
Expand Down
Loading

0 comments on commit deeb5ac

Please sign in to comment.