Skip to content

Commit 860b764

Browse files
committed
vulkan bringup on linux
cleanup: drop unused stuff
1 parent 6cb7a17 commit 860b764

21 files changed

+205
-1613
lines changed

CMakeLists.txt

-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin")
4646
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin")
4747
add_subdirectory( Vulkan )
4848
add_subdirectory( rpcs3 )
49-
add_subdirectory( rsx_program_decompiler )
5049

5150
include_directories(3rdparty/hidapi/hidapi)
5251
if(APPLE)

rpcs3/CMakeLists.txt

+24-18
Original file line numberDiff line numberDiff line change
@@ -155,16 +155,13 @@ ${LLVM_INCLUDE_DIRS}
155155
"${RPCS3_SRC_DIR}/../Utilities/yaml-cpp/include"
156156
"${RPCS3_SRC_DIR}/../asmjit/src/asmjit"
157157
"${RPCS3_SRC_DIR}/../3rdparty/GSL/include"
158-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/rsx_decompiler"
159-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/shader_code"
160158
"${RPCS3_SRC_DIR}/../Vulkan/Vulkan-LoaderAndValidationLayers/include"
161159
"${RPCS3_SRC_DIR}/../Vulkan/glslang/glslang/Public"
160+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/"
162161
"${RPCS3_SRC_DIR}/../3rdparty/hidapi/hidapi"
163162
# Includes 3rdparty stuff that isn't included yet
164163
"${RPCS3_SRC_DIR}/../3rdparty/GL"
165164
"${RPCS3_SRC_DIR}/../3rdparty/stblib"
166-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/rsx_decompiler"
167-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/shader_code"
168165
"${RPCS3_SRC_DIR}/../3rdparty/cereal/include"
169166
)
170167
if(WIN32)
@@ -217,20 +214,33 @@ GLOB_RECURSE
217214
RPCS3_SRC
218215
"${RPCS3_SRC_DIR}/*.cpp"
219216
"${RPCS3_SRC_DIR}/../Utilities/*.cpp"
220-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/rsx_decompiler/*.cpp"
221-
"${RPCS3_SRC_DIR}/../rsx_program_decompiler/shader_code/*.cpp"
222217
"${RPCS3_SRC_DIR}/../asmjit/src/asmjit/*.cpp"
218+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/glslang/GenericCodeGen/*.cpp"
219+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/glslang/MachineIndependent/*.cpp"
220+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/glslang/OSDependent/Unix/*.cpp"
221+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/OGLCompilersDLL/*.cpp"
222+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/hlsl/*.cpp"
223+
"${RPCS3_SRC_DIR}/../Vulkan/glslang/SPIRV/*.cpp"
223224
)
224225

225-
if(NOT WIN32)
226-
set (EXCLUDE_DIR "/RSX/VK/")
227-
foreach (TMP_PATH ${RPCS3_SRC})
228-
string (FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND)
229-
if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1)
226+
#File exclusion section
227+
228+
#Ignore vulkan if not on windows or linux
229+
if(NOT WIN32 AND NOT "${CMAKE_SYSTEM}" MATCHES "Linux")
230+
set (EXCLUDE_FILES "/RSX/VK/")
231+
endif()
232+
233+
#Do not compile the Qt moc files, they are compiled when generating automoc
234+
set (EXCLUDE_FILES ${EXLUDE_FILES} "moc_")
235+
236+
foreach (TMP_PATH ${RPCS3_SRC})
237+
foreach (EXCLUDE_PATH ${EXCLUDE_FILES})
238+
string (FIND ${TMP_PATH} ${EXCLUDE_PATH} EXCLUDE_FILE_FOUND)
239+
if (NOT ${EXCLUDE_FILE_FOUND} EQUAL -1)
230240
list (REMOVE_ITEM RPCS3_SRC ${TMP_PATH})
231241
endif ()
232-
endforeach(TMP_PATH)
233-
endif()
242+
endforeach(EXCLUDE_PATH)
243+
endforeach(TMP_PATH)
234244

235245
# The Gui folder contains wxWidgets stuff, which we no longer want.
236246
foreach (TMP_PATH ${RPCS3_SRC})
@@ -261,10 +271,8 @@ if(WIN32)
261271
endif()
262272
target_link_libraries(rpcs3 avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib png16_static ${OPENAL_LIBRARY} ${ADDITIONAL_LIBS})
263273
else()
264-
265274
target_link_libraries(rpcs3 ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES} hidapi-hidraw udev)
266-
target_link_libraries(rpcs3 -ldl -latomic -lpthread ${ZLIB_LIBRARIES} ${ADDITIONAL_LIBS})
267-
275+
target_link_libraries(rpcs3 -ldl -latomic -lpthread -lvulkan ${ZLIB_LIBRARIES} ${ADDITIONAL_LIBS})
268276
if (USE_SYSTEM_FFMPEG)
269277
link_libraries(${FFMPEG_LIBRARY_DIR})
270278
target_link_libraries(rpcs3 libavformat.so libavcodec.so libavutil.so libswresample.so libswscale.so)
@@ -281,8 +289,6 @@ if(LLVM_FOUND)
281289
target_link_libraries(rpcs3 ${LLVM_LIBS})
282290
endif()
283291

284-
target_link_libraries(rpcs3 rsx_decompiler shader_code)
285-
286292
set_target_properties(rpcs3 PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${RPCS3_SRC_DIR}/stdafx.h")
287293
cotire(rpcs3)
288294

rpcs3/Emu/RSX/GL/GLGSRender.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ namespace
2424

2525
GLGSRender::GLGSRender() : GSRender()
2626
{
27-
shaders_cache.load(rsx::old_shaders_cache::shader_language::glsl);
27+
//TODO
28+
//shaders_cache.load(rsx::old_shaders_cache::shader_language::glsl);
2829
}
2930

3031
u32 GLGSRender::enable(u32 condition, u32 cap)

rpcs3/Emu/RSX/RSXThread.cpp

+1-141
Original file line numberDiff line numberDiff line change
@@ -27,51 +27,7 @@ namespace rsx
2727
{
2828
std::function<bool(u32 addr, bool is_writing)> g_access_violation_handler;
2929

30-
void old_shaders_cache::shaders_cache::load(const std::string &path, shader_language lang)
31-
{
32-
const std::string lang_name(lang == shader_language::glsl ? "glsl" : "hlsl");
33-
34-
auto extract_hash = [](const std::string &string)
35-
{
36-
return std::stoull(string.substr(0, string.find('.')).c_str(), 0, 16);
37-
};
38-
39-
for (const auto& entry : fs::dir(path))
40-
{
41-
if (entry.name == "." || entry.name == "..")
42-
continue;
43-
44-
u64 hash;
45-
46-
try
47-
{
48-
hash = extract_hash(entry.name);
49-
}
50-
catch (...)
51-
{
52-
continue;
53-
}
54-
55-
if (fmt::match(entry.name, "*.fs." + lang_name))
56-
{
57-
fs::file file{ path + entry.name };
58-
decompiled_fragment_shaders.insert(hash, { file.to_string() });
59-
continue;
60-
}
61-
62-
if (fmt::match(entry.name, "*.vs." + lang_name))
63-
{
64-
fs::file file{ path + entry.name };
65-
decompiled_vertex_shaders.insert(hash, { file.to_string() });
66-
continue;
67-
}
68-
}
69-
}
70-
71-
void old_shaders_cache::shaders_cache::load(shader_language lang)
72-
{
73-
load(Emu.GetCachePath(), lang);
74-
}
30+
//TODO: Restore a working shaders cache
7531

7632
u32 get_address(u32 offset, u32 location)
7733
{
@@ -1046,102 +1002,6 @@ namespace rsx
10461002
return result;
10471003
}
10481004

1049-
raw_program thread::get_raw_program() const
1050-
{
1051-
raw_program result{};
1052-
1053-
u32 fp_info = rsx::method_registers.shader_program_address();
1054-
1055-
result.state.input_attributes = rsx::method_registers.vertex_attrib_input_mask();
1056-
result.state.output_attributes = rsx::method_registers.vertex_attrib_output_mask();
1057-
result.state.ctrl = rsx::method_registers.shader_control();
1058-
result.state.divider_op = rsx::method_registers.frequency_divider_operation_mask();
1059-
result.state.alpha_func = (u32)rsx::method_registers.alpha_func();
1060-
result.state.fog_mode = (u32)rsx::method_registers.fog_equation();
1061-
result.state.is_int = 0;
1062-
1063-
for (u8 index = 0; index < rsx::limits::vertex_count; ++index)
1064-
{
1065-
bool is_int = false;
1066-
1067-
if (rsx::method_registers.vertex_arrays_info[index].size() > 0)
1068-
{
1069-
is_int = is_int_type(rsx::method_registers.vertex_arrays_info[index].type());
1070-
result.state.frequency[index] = rsx::method_registers.vertex_arrays_info[index].frequency();
1071-
}
1072-
else if (rsx::method_registers.register_vertex_info[index].size > 0)
1073-
{
1074-
is_int = is_int_type(rsx::method_registers.register_vertex_info[index].type);
1075-
result.state.frequency[index] = rsx::method_registers.register_vertex_info[index].frequency;
1076-
result.state.divider_op |= (1 << index);
1077-
}
1078-
else
1079-
{
1080-
result.state.frequency[index] = 0;
1081-
}
1082-
1083-
if (is_int)
1084-
{
1085-
result.state.is_int |= 1 << index;
1086-
}
1087-
}
1088-
1089-
for (u8 index = 0; index < rsx::limits::fragment_textures_count; ++index)
1090-
{
1091-
if (!rsx::method_registers.fragment_textures[index].enabled())
1092-
{
1093-
result.state.textures_alpha_kill[index] = 0;
1094-
result.state.textures_zfunc[index] = 0;
1095-
result.state.textures[index] = rsx::texture_target::none;
1096-
continue;
1097-
}
1098-
1099-
result.state.textures_alpha_kill[index] = rsx::method_registers.fragment_textures[index].alpha_kill_enabled() ? 1 : 0;
1100-
result.state.textures_zfunc[index] = rsx::method_registers.fragment_textures[index].zfunc();
1101-
1102-
switch (rsx::method_registers.fragment_textures[index].get_extended_texture_dimension())
1103-
{
1104-
case rsx::texture_dimension_extended::texture_dimension_1d: result.state.textures[index] = rsx::texture_target::_1; break;
1105-
case rsx::texture_dimension_extended::texture_dimension_2d: result.state.textures[index] = rsx::texture_target::_2; break;
1106-
case rsx::texture_dimension_extended::texture_dimension_3d: result.state.textures[index] = rsx::texture_target::_3; break;
1107-
case rsx::texture_dimension_extended::texture_dimension_cubemap: result.state.textures[index] = rsx::texture_target::cube; break;
1108-
1109-
default:
1110-
result.state.textures[index] = rsx::texture_target::none;
1111-
break;
1112-
}
1113-
}
1114-
1115-
for (u8 index = 0; index < rsx::limits::vertex_textures_count; ++index)
1116-
{
1117-
if (!rsx::method_registers.fragment_textures[index].enabled())
1118-
{
1119-
result.state.vertex_textures[index] = rsx::texture_target::none;
1120-
continue;
1121-
}
1122-
1123-
switch (rsx::method_registers.fragment_textures[index].get_extended_texture_dimension())
1124-
{
1125-
case rsx::texture_dimension_extended::texture_dimension_1d: result.state.vertex_textures[index] = rsx::texture_target::_1; break;
1126-
case rsx::texture_dimension_extended::texture_dimension_2d: result.state.vertex_textures[index] = rsx::texture_target::_2; break;
1127-
case rsx::texture_dimension_extended::texture_dimension_3d: result.state.vertex_textures[index] = rsx::texture_target::_3; break;
1128-
case rsx::texture_dimension_extended::texture_dimension_cubemap: result.state.vertex_textures[index] = rsx::texture_target::cube; break;
1129-
1130-
default:
1131-
result.state.vertex_textures[index] = rsx::texture_target::none;
1132-
break;
1133-
}
1134-
}
1135-
1136-
result.vertex_shader.ucode_ptr = rsx::method_registers.transform_program.data();
1137-
result.vertex_shader.offset = rsx::method_registers.transform_program_start();
1138-
1139-
result.fragment_shader.ucode_ptr = vm::base(rsx::get_address(fp_info & ~0x3, (fp_info & 0x3) - 1));
1140-
result.fragment_shader.offset = 0;
1141-
1142-
return result;
1143-
}
1144-
11451005
void thread::reset()
11461006
{
11471007
rsx::method_registers.reset();

rpcs3/Emu/RSX/RSXThread.h

-64
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,6 @@ extern u64 get_system_time();
2626
extern bool user_asked_for_frame_capture;
2727
extern rsx::frame_capture_data frame_debug;
2828

29-
namespace rsx
30-
{
31-
namespace old_shaders_cache
32-
{
33-
enum class shader_language
34-
{
35-
glsl,
36-
hlsl,
37-
};
38-
}
39-
}
40-
4129
namespace rsx
4230
{
4331
namespace limits
@@ -54,54 +42,6 @@ namespace rsx
5442
};
5543
}
5644

57-
namespace old_shaders_cache
58-
{
59-
struct decompiled_shader
60-
{
61-
std::string code;
62-
};
63-
64-
struct finalized_shader
65-
{
66-
u64 ucode_hash;
67-
std::string code;
68-
};
69-
70-
template<typename Type, typename KeyType = u64, typename Hasher = std::hash<KeyType>>
71-
struct cache
72-
{
73-
private:
74-
std::unordered_map<KeyType, Type, Hasher> m_entries;
75-
76-
public:
77-
const Type* find(u64 key) const
78-
{
79-
auto found = m_entries.find(key);
80-
81-
if (found == m_entries.end())
82-
return nullptr;
83-
84-
return &found->second;
85-
}
86-
87-
void insert(KeyType key, const Type &shader)
88-
{
89-
m_entries.insert({ key, shader });
90-
}
91-
};
92-
93-
struct shaders_cache
94-
{
95-
cache<decompiled_shader> decompiled_fragment_shaders;
96-
cache<decompiled_shader> decompiled_vertex_shaders;
97-
cache<finalized_shader> finailized_fragment_shaders;
98-
cache<finalized_shader> finailized_vertex_shaders;
99-
100-
void load(const std::string &path, shader_language lang);
101-
void load(shader_language lang);
102-
};
103-
}
104-
10545
u32 get_vertex_type_size_on_host(vertex_base_type type, u32 size);
10646

10747
u32 get_address(u32 offset, u32 location);
@@ -172,9 +112,6 @@ namespace rsx
172112
std::vector<u32> element_push_buffer;
173113

174114
public:
175-
old_shaders_cache::shaders_cache shaders_cache;
176-
rsx::programs_cache programs_cache;
177-
178115
CellGcmControl* ctrl = nullptr;
179116

180117
Timer timer_sync;
@@ -356,7 +293,6 @@ namespace rsx
356293

357294
virtual bool scaled_image_from_memory(blit_src_info& src_info, blit_dst_info& dst_info, bool interpolate){ return false; }
358295

359-
struct raw_program get_raw_program() const;
360296
public:
361297
void reset();
362298
void init(const u32 ioAddress, const u32 ioSize, const u32 ctrlAddress, const u32 localAddress);

0 commit comments

Comments
 (0)