Skip to content

Commit 4463278

Browse files
committed
Merge branch 'master' into more_fft_utils
2 parents fdb7904 + 987a5de commit 4463278

File tree

6 files changed

+198
-31
lines changed

6 files changed

+198
-31
lines changed

3rdparty/dxc/dxc

Submodule dxc updated 33 files

include/nbl/builtin/hlsl/spirv_intrinsics/core.hlsl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@ void memoryBarrier(uint32_t memoryScope, uint32_t memorySemantics);
200200

201201
// Add specializations if you need to emit a `ext_capability` (this means that the instruction needs to forward through an `impl::` struct and so on)
202202
template<typename T, typename U>
203-
[[vk::ext_capability(spv::CapabilityPhysicalStorageBufferAddresses)]]
204203
[[vk::ext_instruction(spv::OpBitcast)]]
205204
enable_if_t<is_spirv_type_v<T> && is_spirv_type_v<U>, T> bitcast(U);
206205

@@ -252,4 +251,4 @@ Matrix transpose(NBL_CONST_REF_ARG(Matrix) mat);
252251
}
253252
}
254253

255-
#endif
254+
#endif

include/nbl/system/IApplicationFramework.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,13 @@ class IApplicationFramework : public core::IReferenceCounted
6363
system::path nabla, dxc;
6464
} install, env, build, rel;
6565

66+
#if defined(NBL_CPACK_PACKAGE_NABLA_DLL_DIR_ABS_KEY) && defined(NBL_CPACK_PACKAGE_DXC_DLL_DIR_ABS_KEY)
6667
install.nabla = std::filesystem::absolute(system::path(_NABLA_INSTALL_DIR_) / NBL_CPACK_PACKAGE_NABLA_DLL_DIR_ABS_KEY);
6768
install.dxc = std::filesystem::absolute(system::path(_NABLA_INSTALL_DIR_) / NBL_CPACK_PACKAGE_DXC_DLL_DIR_ABS_KEY);
6869

6970
env.nabla = sdk / NBL_CPACK_PACKAGE_NABLA_DLL_DIR_ABS_KEY;
7071
env.dxc = sdk / NBL_CPACK_PACKAGE_DXC_DLL_DIR_ABS_KEY;
72+
#endif
7173

7274
#ifdef _NBL_SHARED_BUILD_
7375
build.nabla = _NABLA_OUTPUT_DIR_;

src/nbl/ext/TextRendering/TextRendering.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,11 @@ core::smart_refctd_ptr<ICPUImage> FontFace::generateGlyphMSDF(uint32_t baseMSDFP
109109
}
110110

111111
auto image = ICPUImage::create(std::move(imgParams));
112-
auto buffer = ICPUBuffer::create({ bufferSize });
112+
113+
ICPUBuffer::SCreationParams bparams;
114+
bparams.size = bufferSize;
115+
116+
auto buffer = ICPUBuffer::create(std::move(bparams));
113117
auto regions = core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<IImage::SBufferCopy>>(mipLevels);
114118

115119
size_t bufferOffset = 0ull;

tools/nsc/CMakeLists.txt

Lines changed: 188 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ find_program(SPIRV_DIS_EXE
6969
REQUIRED
7070
)
7171

72+
cmake_path(GET Vulkan_INCLUDE_DIR PARENT_PATH VULKAN_SDK_INSTALL_DIRECTORY)
73+
get_filename_component(VULKAN_SDK_VERSION "${VULKAN_SDK_INSTALL_DIRECTORY}" NAME)
74+
75+
if(NOT EXISTS "${VULKAN_SDK_INSTALL_DIRECTORY}")
76+
message(FATAL_ERROR "Internal error, VULKAN_SDK_INSTALL_DIRECTORY doesn't exist")
77+
endif()
78+
7279
find_program(CTEST_EXE
7380
NAMES ctest
7481
REQUIRED
@@ -100,12 +107,12 @@ set(NBL_BUILD_INFO_POSTPROCESS_COMMAND
100107
cmake_path(GET SPIRV_DIS_EXE PARENT_PATH VULKAN_SDK_BIN_DIRECTORY)
101108
cmake_path(NATIVE_PATH VULKAN_SDK_BIN_DIRECTORY NORMALIZE VULKAN_SDK_BIN_DIRECTORY)
102109
cmake_path(GET SPIRV_DIS_EXE FILENAME SPIRV_DIS_EXE)
103-
set(SPIRV_DIS_EXE "C:\\vulkan\\bin\\${SPIRV_DIS_EXE}")
104-
cmake_path(NATIVE_PATH SPIRV_DIS_EXE NORMALIZE SPIRV_DIS_EXE)
110+
set(CT_SPIRV_DIS_EXE "C:\\vulkan\\${VULKAN_SDK_VERSION}\\bin\\${SPIRV_DIS_EXE}")
111+
cmake_path(NATIVE_PATH CT_SPIRV_DIS_EXE NORMALIZE CT_SPIRV_DIS_EXE)
105112

106113
set(NBL_CE_GENERATE_CONFIG_COMMAND
107114
"${CMAKE_COMMAND}"
108-
"-DSPIRV_DIS_EXE=${SPIRV_DIS_EXE}"
115+
"-DSPIRV_DIS_EXE=${CT_SPIRV_DIS_EXE}"
109116
"-DNSC_RELEASE_BUILD_INFO=${NSC_RELEASE_BUILD_INFO}"
110117
"-DNSC_RELWITHDEBINFO_BUILD_INFO=${NSC_RELWITHDEBINFO_BUILD_INFO}"
111118
"-DNSC_DEBUG_BUILD_INFO=${NSC_DEBUG_BUILD_INFO}"
@@ -120,7 +127,8 @@ set(NBL_DOCKER_CE_COMPOSE_TARGET "${GODBOLT_BINARY_DIRECTORY}/compose.yml")
120127
include(InstallRequiredSystemLibraries)
121128

122129
string(REPLACE "v" "VC" TARGET_DCRT ${CMAKE_VS_PLATFORM_TOOLSET})
123-
set(DEBUG_CRT_DIRECTORY_SOURCE "${MSVC_REDIST_DIR}/debug_nonredist/x64/Microsoft.${TARGET_DCRT}.DebugCRT")
130+
set(DEBUG_CRT_RELATIVE debug_nonredist/x64/Microsoft.${TARGET_DCRT}.DebugCRT)
131+
set(DEBUG_CRT_DIRECTORY_SOURCE "${MSVC_REDIST_DIR}/${DEBUG_CRT_RELATIVE}")
124132
cmake_path(NATIVE_PATH MSVC_REDIST_DIR NORMALIZE NBL_REDIST_DIR)
125133

126134
if(NOT EXISTS "${DEBUG_CRT_DIRECTORY_SOURCE}")
@@ -136,42 +144,194 @@ find_file(UCRTBASED_DLL_PATH
136144
REQUIRED
137145
)
138146

139-
# TODO: nabla-devel-host-env-windows image
140-
# I will use it to cache vulkan spirv-dis with CRTs we
141-
# are configuring this cmake build with into docker layers
147+
# TODO: (***) ---> THIS GOES TO <NBL_ROOT_DIR>/docker to CMakeLists.txt file!
148+
149+
set(BASE_IMAGE mcr.microsoft.com/windows/servercore:ltsc2022-amd64) # NOTE: HARDCODED CURRENTLY
150+
151+
string(TOLOWER "dcr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME}/package/vulkan:latest" DOCKER_VULKAN_TAG)
152+
string(TOLOWER "dcr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME}/toolset/redist/${CMAKE_CXX_COMPILER_ID}/crt:latest" DOCKER_CRT_TAG)
153+
string(TOLOWER "dcr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME}/build/${CMAKE_CXX_COMPILER_ID}/devel-compiler-explorer-nsc:latest" DOCKER_DEVEL_TAG)
154+
155+
cmake_path(NATIVE_PATH MSVC_REDIST_DIR NORMALIZE TOOLSET_REDIST_PATH)
156+
get_filename_component(REDIST_CRT_TOOLSET_VERSION "${TOOLSET_REDIST_PATH}" NAME)
157+
158+
function(GEN_DOCKER_CONTENT _CTX_ _OUTPUT_DIRECTORY_ _EXTRA_DOCKERFILE_CONTENT_ _DOCKER_IGNORE_CONTENT_ _S_NAME_ _CT_NAME_ _IMAGE_NAME_ _WITH_BUILD_)
159+
160+
set(_OUTPUT_D_PATH_ "${_OUTPUT_DIRECTORY_}/Dockerfile")
161+
set(_OUTPUT_C_PATH_ "${_OUTPUT_DIRECTORY_}/compose.yml")
162+
163+
string(CONFIGURE "${_EXTRA_DOCKERFILE_CONTENT_}" _EXTRA_DOCKERFILE_CONTENT_EVAL_ @ONLY)
164+
string(CONFIGURE "${_DOCKER_IGNORE_CONTENT_}" _DOCKER_IGNORE_CONTENT_EVAL_ @ONLY)
165+
166+
string(APPEND DOCKER_CONTENT
167+
[=[
168+
# escape=`
169+
170+
ARG BASE_IMAGE=@BASE_IMAGE@
171+
FROM ${BASE_IMAGE}
172+
SHELL ["cmd", "/S", "/C"]
173+
@_EXTRA_DOCKERFILE_CONTENT_EVAL_@
174+
]=]
175+
)
176+
177+
string(CONFIGURE "${DOCKER_CONTENT}" DOCKER_CONTENT @ONLY)
178+
file(WRITE "${_OUTPUT_D_PATH_}" "${DOCKER_CONTENT}")
179+
180+
set(_CTX_TARGET_ "${_OUTPUT_DIRECTORY_}/.ctx")
181+
182+
if("${_CTX_}" STREQUAL "")
183+
184+
else()
185+
if(NOT EXISTS "${_CTX_}")
186+
message(FATAL_ERROR "Invalid source context directory doesn't exist! _CTX_: \"${_CTX_}\"")
187+
endif()
188+
189+
file(COPY "${_CTX_}" DESTINATION "${_CTX_TARGET_}")
190+
endif()
191+
192+
set(_OUTPUT_I_PATH_ "${_CTX_TARGET_}/.dockerignore")
142193

143194
string(APPEND COMPOSE_CONTENT
144195
[=[
145196
services:
146-
compiler-explorer-nsc:
197+
@_S_NAME_@:
198+
build:
199+
context: ./.ctx
200+
dockerfile: "@_OUTPUT_D_PATH_@"
201+
image: @_IMAGE_NAME_@
202+
container_name: @_CT_NAME_@
203+
networks:
204+
docker_default:
205+
206+
networks:
207+
docker_default:
208+
external: true
209+
]=]
210+
)
211+
212+
string(CONFIGURE "${COMPOSE_CONTENT}" COMPOSE_CONTENT @ONLY)
213+
file(WRITE "${_OUTPUT_C_PATH_}" "${COMPOSE_CONTENT}")
214+
file(WRITE "${_OUTPUT_I_PATH_}" "${_DOCKER_IGNORE_CONTENT_EVAL_}")
215+
216+
if(_WITH_BUILD_)
217+
execute_process(COMMAND "${DOCKER_EXE}" compose -f "${_OUTPUT_C_PATH_}" build)
218+
endif()
219+
endfunction()
220+
221+
# Vulkan
222+
set(OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docker/vulkan")
223+
set(CT_VULKAN_TARGET vulkan)
224+
GEN_DOCKER_CONTENT("${VULKAN_SDK_INSTALL_DIRECTORY}" "${OUTPUT_DIRECTORY}"
225+
[=[
226+
COPY ./ "@CT_VULKAN_TARGET@"
227+
228+
ENV VULKAN_SDK="C:/@CT_VULKAN_TARGET@"
229+
ENV VULKAN_SDK_VERSION="@VULKAN_SDK_VERSION@"
230+
LABEL VULKAN_SDK="C:/@CT_VULKAN_TARGET@"
231+
LABEL VULKAN_SDK_VERSION="@VULKAN_SDK_VERSION@"
232+
]=]
233+
[=[
234+
*
235+
!@VULKAN_SDK_VERSION@/Bin/*.dll
236+
!@VULKAN_SDK_VERSION@/Bin/*spirv*.exe
237+
]=]
238+
nabla-dev-env-vulkan
239+
nabla.dev.env.vulkan
240+
${DOCKER_VULKAN_TAG}
241+
ON
242+
)
243+
244+
# CRT
245+
set(OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docker/crt")
246+
set(CT_TOOLSET_REDIST_TARGET toolset_redist)
247+
make_directory("${OUTPUT_DIRECTORY}/.ctx")
248+
file(COPY "${UCRTBASED_DLL_PATH}" DESTINATION "${OUTPUT_DIRECTORY}/.ctx")
249+
GEN_DOCKER_CONTENT("${TOOLSET_REDIST_PATH}" "${OUTPUT_DIRECTORY}"
250+
[=[
251+
COPY ./ "/@CT_TOOLSET_REDIST_TARGET@"
252+
253+
ENV REDIST_CRT_TOOLSET_VERSION="@REDIST_CRT_TOOLSET_VERSION@"
254+
ENV TOOLSET_REDIST_PATH="C:/@CT_TOOLSET_REDIST_TARGET@"
255+
LABEL REDIST_CRT_TOOLSET_VERSION="@REDIST_CRT_TOOLSET_VERSION@"
256+
LABEL TOOLSET_REDIST_PATH="C:/@CT_TOOLSET_REDIST_TARGET@"
257+
]=]
258+
[=[
259+
*
260+
!ucrtbased.dll
261+
!@REDIST_CRT_TOOLSET_VERSION@/vc_redist.x64.exe
262+
!@REDIST_CRT_TOOLSET_VERSION@/@DEBUG_CRT_RELATIVE@/*.dll
263+
]=]
264+
nabla-dev-env-crt
265+
nabla.dev.env.crt
266+
${DOCKER_CRT_TAG}
267+
ON
268+
)
269+
270+
# Devel, combined
271+
set(BASE_IMAGE dcr.devsh.eu/compiler-explorer)
272+
273+
# NOTE to self: could be all done with single docker file & compose file but buildkit works bad with windows driver, yet need to wait for stuff to be implemented
274+
set(OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docker/devel")
275+
set(CT_REDIST_DIR "${CT_TOOLSET_REDIST_TARGET}/${REDIST_CRT_TOOLSET_VERSION}")
276+
set(CT_NONREDIST_CTR_DIR "${CT_REDIST_DIR}/${DEBUG_CRT_RELATIVE}")
277+
cmake_path(NATIVE_PATH CT_REDIST_DIR NORMALIZE CT_REDIST_DIR)
278+
cmake_path(NATIVE_PATH CT_NONREDIST_CTR_DIR NORMALIZE CT_NONREDIST_CTR_DIR)
279+
set(DEVEL_DOCKERFILE "${OUTPUT_DIRECTORY}/Dockerfile")
280+
281+
GEN_DOCKER_CONTENT("" "${OUTPUT_DIRECTORY}"
282+
[=[
283+
284+
COPY --from=@DOCKER_VULKAN_TAG@ /@CT_VULKAN_TARGET@ /@CT_VULKAN_TARGET@
285+
COPY --from=@DOCKER_CRT_TAG@ /@CT_TOOLSET_REDIST_TARGET@ /@CT_TOOLSET_REDIST_TARGET@
286+
287+
RUN .\@CT_REDIST_DIR@\vc_redist.x64.exe /quiet /install
288+
RUN xcopy .\@CT_NONREDIST_CTR_DIR@\*.dll %SystemRoot%\System32 /Y
289+
RUN xcopy .\@CT_TOOLSET_REDIST_TARGET@\ucrtbased.dll %SystemRoot%\System32 /Y
290+
291+
]=]
292+
[=[
293+
294+
]=]
295+
nabla-dev-env-nsc
296+
nabla.dev.env.nsc
297+
${DOCKER_DEVEL_TAG}
298+
OFF
299+
)
300+
301+
# <---(***)
302+
303+
set(NABLA_DEV_ENV_CT_NAME dev.nabla.env.${CMAKE_SYSTEM_NAME}.${CMAKE_CXX_COMPILER_ID}.base)
304+
string(TOLOWER "${NABLA_DEV_ENV_CT_NAME}" NABLA_DEV_ENV_CT_NAME)
305+
306+
set(COMPOSE_NSC_DEV_SERVICE compiler-explorer-nsc-dev)
307+
string(TOLOWER "dcr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME}/build/${CMAKE_CXX_COMPILER_ID}/compiler-explorer-nsc:latest" COMPOSE_NSC_DEV_IMAGE)
308+
309+
string(APPEND COMPOSE_CONTENT
310+
[=[
311+
services:
312+
@COMPOSE_NSC_DEV_SERVICE@:
313+
container_name: dev.ce.nsc.dev
147314
extends:
148315
file: @NBL_DOCKER_CE_COMPOSE_BASE@
149316
service: compiler-explorer
150-
container_name: dev.ce.nsc
317+
build:
318+
context: ./.ctx
319+
dockerfile: @DEVEL_DOCKERFILE@
320+
image: @COMPOSE_NSC_DEV_IMAGE@
151321
environment:
152322
NBL_INSTALL_DIRECTORY: "@NBL_INSTALL_DIRECTORY@"
153323
NBL_EXPLICIT_MODULE_LOAD_LOG: "ON"
154324
entrypoint:
155325
- "cmd"
156326
- "/c"
157327
- >
158-
C:\\redist\\vc_redist.x64.exe /quiet /install
159-
&& xcopy C:\\nsc\\install\\.nonredist\\*.dll %SystemRoot%\\System32 /Y
160-
&& copy C:\\nsc\\install\\hlsl.local.properties.cmake %GIT_GODBOLT_REPOSITORY_PATH%\\etc\\config\\hlsl.local.properties
328+
copy C:\\nsc\\install\\hlsl.local.properties.cmake %GIT_GODBOLT_REPOSITORY_PATH%\\etc\\config\\hlsl.local.properties
161329
&& npm --prefix %GIT_GODBOLT_REPOSITORY_PATH% run dev -- --language hlsl
162330
volumes:
163331
- type: bind
164332
source: .\install
165333
target: @NBL_DOCKER_CT_NSC_VOLUME_TARGET@
166334
read_only: true
167-
- type: bind
168-
source: @NBL_REDIST_DIR@
169-
target: C:\redist
170-
read_only: true
171-
- type: bind
172-
source: @VULKAN_SDK_BIN_DIRECTORY@
173-
target: C:\vulkan\bin
174-
read_only: true
175335
176336
networks:
177337
docker_default:
@@ -181,28 +341,30 @@ networks:
181341

182342
string(CONFIGURE "${COMPOSE_CONTENT}" COMPOSE_CONTENT @ONLY)
183343
file(WRITE "${NBL_DOCKER_CE_COMPOSE_TARGET}" "${COMPOSE_CONTENT}")
344+
make_directory("${GODBOLT_BINARY_DIRECTORY}/.ctx")
345+
346+
execute_process(COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_BASE}" build)
347+
execute_process(COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" build)
184348

185349
add_custom_target(run-compiler-explorer
186350
COMMAND "${CMAKE_COMMAND}" -E cmake_echo_color --blue "Performing Pre-Test..."
187351
COMMAND "${CTEST_EXE}" -C $<CONFIG> --stop-on-failure
188352
COMMAND ${NBL_BUILD_INFO_POSTPROCESS_COMMAND}
189-
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" stop compiler-explorer-nsc
353+
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" stop ${COMPOSE_NSC_DEV_SERVICE}
190354
COMMAND ${NBL_CE_GENERATE_CONFIG_COMMAND}
191355
COMMAND "${CMAKE_COMMAND}" -E cmake_echo_color --green "OK! Performing executables hot-swap..."
192-
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${DEBUG_CRT_DIRECTORY_SOURCE}" "${DEBUG_CRT_DIRECTORY_TARGET}"
193-
COMMAND "${CMAKE_COMMAND}" -E copy "${UCRTBASED_DLL_PATH}" "${DEBUG_CRT_DIRECTORY_TARGET}"
194356
COMMAND "${CMAKE_COMMAND}" -E copy_directory "${NBL_NSC_PREINSTALL_DIRECTORY}" "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE}"
195-
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" up --build -d compiler-explorer-nsc
357+
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" up -d ${COMPOSE_NSC_DEV_SERVICE}
196358
COMMAND "${CMAKE_COMMAND}" -E cmake_echo_color --blue "Checking health of Compiler Explorer service..."
197-
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" exec -T compiler-explorer-nsc cmd /c python ce_healthy_check.py --interval 10 --ticks 25
359+
COMMAND "${_Python3_EXECUTABLE}" "${NBL_ROOT_PATH}/docker/compiler-explorer/ce_healthy_check.py" --url http://localhost:80 --interval 10 --ticks 25
198360
COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --green "Compiler Explorer is running, type \"localhost\" in your browser!"
199361
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
200362
VERBATIM
201363
USES_TERMINAL
202364
)
203365

204366
add_custom_target(is-compiler-explorer-running
205-
COMMAND "${DOCKER_EXE}" compose -f "${NBL_DOCKER_CE_COMPOSE_TARGET}" exec -T compiler-explorer-nsc cmd /c python ce_healthy_check.py --ticks 1
367+
COMMAND "${_Python3_EXECUTABLE}" "${NBL_ROOT_PATH}/docker/compiler-explorer/ce_healthy_check.py" --url http://localhost:80 --ticks 1
206368
VERBATIM
207369
USES_TERMINAL
208370
)

tools/nsc/docker/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Currently only Windows platform with target *x86_64* architecture is supported.
1010

1111
### How To
1212

13-
Switch to windows containers, configure CMake (recommended Visual Studio generator) & build `run-compiler-explorer` target. After the build completes type `localhost` in your browser.
13+
Switch docker to windows containers, configure CMake with `NBL_ENABLE_DOCKER_INTEGRATION` option (recommended Visual Studio generator) & build `run-compiler-explorer` target. After the build completes type `localhost` in your browser.
1414

1515
![Containers for Windows](https://user-images.githubusercontent.com/65064509/152947300-affca592-35a7-4e4c-a7fc-2055ce1ba528.png)
1616

0 commit comments

Comments
 (0)