mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2026-04-27 21:01:37 +00:00
Integrate smol-v.
This commit is contained in:
parent
013bffa27e
commit
e0ea5db2af
4 changed files with 20 additions and 3 deletions
|
|
@ -79,6 +79,8 @@ set(SWA_UI_CXX_SOURCES
|
|||
"ui/window.cpp"
|
||||
)
|
||||
|
||||
set(SMOLV_SOURCE_DIR "${SWA_THIRDPARTY_ROOT}/ShaderRecomp/thirdparty/smol-v/source")
|
||||
|
||||
set(SWA_CXX_SOURCES
|
||||
"app.cpp"
|
||||
"main.cpp"
|
||||
|
|
@ -93,6 +95,8 @@ set(SWA_CXX_SOURCES
|
|||
${SWA_HID_CXX_SOURCES}
|
||||
${SWA_PATCHES_CXX_SOURCES}
|
||||
${SWA_UI_CXX_SOURCES}
|
||||
|
||||
"${SMOLV_SOURCE_DIR}/smolv.cpp"
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
|
|
@ -166,6 +170,7 @@ target_include_directories(UnleashedRecomp PRIVATE
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/api
|
||||
${SWA_THIRDPARTY_ROOT}/ddspp
|
||||
${Stb_INCLUDE_DIR}
|
||||
${SMOLV_SOURCE_DIR}
|
||||
)
|
||||
|
||||
target_precompile_headers(UnleashedRecomp PUBLIC ${SWA_PRECOMPILED_HEADERS})
|
||||
|
|
|
|||
|
|
@ -2499,9 +2499,20 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons
|
|||
assert(guestShader->shaderCacheEntry != nullptr);
|
||||
|
||||
if (g_vulkan)
|
||||
guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->spirvOffset, guestShader->shaderCacheEntry->spirvSize, "main", RenderShaderFormat::SPIRV);
|
||||
{
|
||||
auto compressedSpirvData = g_shaderCache.get() + guestShader->shaderCacheEntry->spirvOffset;
|
||||
|
||||
std::vector<uint8_t> decoded(smolv::GetDecodedBufferSize(compressedSpirvData, guestShader->shaderCacheEntry->spirvSize));
|
||||
bool result = smolv::Decode(compressedSpirvData, guestShader->shaderCacheEntry->spirvSize, decoded.data(), decoded.size());
|
||||
assert(result);
|
||||
|
||||
guestShader->shader = g_device->createShader(decoded.data(), decoded.size(), "main", RenderShaderFormat::SPIRV);
|
||||
}
|
||||
else
|
||||
guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->dxilOffset, guestShader->shaderCacheEntry->dxilSize, "main", RenderShaderFormat::DXIL);
|
||||
{
|
||||
guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->dxilOffset,
|
||||
guestShader->shaderCacheEntry->dxilSize, "main", RenderShaderFormat::DXIL);
|
||||
}
|
||||
}
|
||||
|
||||
return guestShader->shader.get();
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include <o1heap.h>
|
||||
#include <cstddef>
|
||||
#include <wrl/client.h>
|
||||
#include <smolv.h>
|
||||
|
||||
using Microsoft::WRL::ComPtr;
|
||||
|
||||
|
|
|
|||
2
thirdparty/ShaderRecomp
vendored
2
thirdparty/ShaderRecomp
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit bd9872894411060e8b72c8eada341406a350d21d
|
||||
Subproject commit 53cee767968f30656e23337b8c0919ad78c7fdfe
|
||||
Loading…
Add table
Reference in a new issue