Skip to content
Draft
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
16e981c
first spirv cache implementation
Fire-Cube Feb 25, 2025
c188b7c
better naming
Fire-Cube Feb 25, 2025
08cd231
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Feb 28, 2025
cbeaf46
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Apr 30, 2025
2aee032
temp push
Fire-Cube Apr 30, 2025
09f844a
initial codebase
Fire-Cube Apr 30, 2025
bde3873
more
Fire-Cube Apr 30, 2025
24f17f5
more
Fire-Cube May 1, 2025
b32ba29
fix filewriting
Fire-Cube May 1, 2025
3eb8000
some progress
Fire-Cube May 1, 2025
a500b98
more
Fire-Cube May 3, 2025
3e56133
now heroes give at least a bit of image
Fire-Cube May 3, 2025
b9b75cf
crashes fixed
Fire-Cube May 3, 2025
bcc65e7
remove include
Fire-Cube May 3, 2025
6c8a792
handle file eof when readBin
Fire-Cube May 3, 2025
019172f
im dumb
Fire-Cube May 3, 2025
2a34708
more
Fire-Cube May 3, 2025
3600a92
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube May 10, 2025
84ee3f9
more
Fire-Cube May 10, 2025
c04f04e
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Jun 8, 2025
cc911b3
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Jun 15, 2025
fa0505a
Merge branch 'shader_cache' of https://github.com/Fire-Cube/shadPS4 i…
Fire-Cube Jun 15, 2025
742b3ce
add CMakePresets.json
Fire-Cube Jun 18, 2025
dd0365f
Update REUSE.toml
Fire-Cube Jun 18, 2025
ddb11fe
fix vs
Fire-Cube Jun 19, 2025
4d48276
Merge branch 'shadps4-emu:main' into cmakepresets
Fire-Cube Jun 21, 2025
8a35cc9
impl
Fire-Cube Jun 21, 2025
e4f1914
adjust CMakeSettings.json
Fire-Cube Jun 21, 2025
bee3f10
add FindQt.cmake to reuse
Fire-Cube Jun 21, 2025
321ed8b
rename cmake file, add check before running cmake and add inheritatio…
Fire-Cube Jun 22, 2025
06cae18
add error check in cmake
Fire-Cube Jun 22, 2025
f9f75ef
Merge branch 'main' into shader_cache
Fire-Cube Jun 24, 2025
408bd35
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Jun 24, 2025
107c4ac
Merge branch 'autoqt' into shader_cache
Fire-Cube Jun 24, 2025
85b42b6
remove german comments
Fire-Cube Jun 24, 2025
469c8fc
many things
Fire-Cube Jun 24, 2025
1e71ac8
should fix linux build
Fire-Cube Jun 24, 2025
a4ae1de
Merge branch 'main' into shader_cache
Fire-Cube Jun 26, 2025
3346c5a
begin rewrite
Fire-Cube Jul 13, 2025
438e1cd
oops
Fire-Cube Jul 13, 2025
9195f59
Merge branch 'shadps4-emu:main' into shader_cache
Fire-Cube Jul 13, 2025
f9e199e
cleanup
Fire-Cube Jul 13, 2025
e418249
more
Fire-Cube Jul 14, 2025
292b287
samplers
Fire-Cube Jul 14, 2025
d4432c7
Merge remote-tracking branch 'origin/main' into shader_cache
Fire-Cube Jul 14, 2025
56e98b3
rebase
Fire-Cube Jul 14, 2025
1c8c009
Merge remote-tracking branch 'origin/main' into shader_cache
Fire-Cube Jul 15, 2025
b1db45a
fmask, refactoring, fixes and mac fix(?)
Fire-Cube Jul 15, 2025
4a3bbb3
forgot file
Fire-Cube Jul 15, 2025
0da10ee
clang + deserialize + flattened_udbuf + fs_interpolation
Fire-Cube Jul 15, 2025
da81833
new storage mechanism
Fire-Cube Jul 18, 2025
e522918
fixed minor bug
Fire-Cube Jul 19, 2025
f456df7
more cached values
Fire-Cube Jul 19, 2025
95a81a1
prevent readudbuf chrash
Fire-Cube Jul 19, 2025
c171657
Merge remote-tracking branch 'origin/main' into shader_cache
Fire-Cube Jul 19, 2025
99cad6e
cleanup
Fire-Cube Jul 19, 2025
4909818
rebase
Fire-Cube Aug 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,7 @@ set(COMMON src/common/logging/backend.cpp
src/common/arch.h
src/common/assert.cpp
src/common/assert.h
src/common/binary_helper.h
src/common/bit_array.h
src/common/bit_field.h
src/common/bounded_threadsafe_queue.h
Expand Down Expand Up @@ -924,6 +925,8 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp
src/video_core/buffer_cache/region_manager.h
src/video_core/renderer_vulkan/liverpool_to_vk.cpp
src/video_core/renderer_vulkan/liverpool_to_vk.h
src/video_core/renderer_vulkan/shader_cache.cpp
src/video_core/renderer_vulkan/shader_cache.h
src/video_core/renderer_vulkan/vk_common.cpp
src/video_core/renderer_vulkan/vk_common.h
src/video_core/renderer_vulkan/vk_compute_pipeline.cpp
Expand Down
21 changes: 21 additions & 0 deletions src/common/binary_helper.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#pragma once

#include <iostream>
#include <vector>
#include "common/logging/log.h"

using u32 = uint32_t;

template <typename T>
void writeBin(std::ostream& os, const T& v) {
LOG_INFO(Render_Recompiler, "BinaryHelper: Pos: {}", static_cast<int64_t>(os.tellp()));
os.write(reinterpret_cast<const char*>(&v), sizeof(T));
}

template <typename T>
void readBin(std::istream& is, T& v) {
if (is.eof()) {
LOG_WARNING(Render_Recompiler, "BinaryHelper: EOF");
}
is.read(reinterpret_cast<char*>(&v), sizeof(T));
}
9 changes: 3 additions & 6 deletions src/common/hash.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@

#include "common/types.h"

[[nodiscard]] inline u64 HashCombine(const u64 seed, const u64 hash) {
return seed ^ (hash + 0x9e3779b9 + (seed << 12) + (seed >> 4));
}

[[nodiscard]] inline u32 HashCombine(const u32 seed, const u32 hash) {
return seed ^ (hash + 0x9e3779b9 + (seed << 6) + (seed >> 2));
template <typename T, typename U>
T HashCombine(const T& seed, const U& value) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution. You can see how the 32 but and 64 bit versions of the hash are different (see the bit shifts).

I don't know if this affects the quality of the hash. You should check this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’ve now adjusted it so that it always shifts like the 64-bit version that shouldn’t really cause any issues.

return seed ^ (static_cast<T>(value) + 0x9e3779b9 + (seed << 6) + (seed >> 2));
}
5 changes: 5 additions & 0 deletions src/emulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,11 @@ void Emulator::Run(std::filesystem::path file, const std::vector<std::string> ar
}
VideoCore::SetOutputDir(mount_captures_dir, id);

const auto shader_cache_dir = Common::FS::GetUserPath(Common::FS::PathType::ShaderDir) / "cache";
if (!std::filesystem::exists(shader_cache_dir)) {
std::filesystem::create_directories(shader_cache_dir);
LOG_INFO(Loader, "Created shader cache directory: {}", shader_cache_dir.string());
}
// Initialize kernel and library facilities.
Libraries::InitHLELibs(&linker->GetHLESymbols());

Expand Down
Loading
Loading