mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-04 14:08:37 +00:00
vulkan bringup on linux
cleanup: drop unused stuff
This commit is contained in:
parent
6cb7a17814
commit
860b76452f
21 changed files with 205 additions and 1613 deletions
|
|
@ -27,51 +27,7 @@ namespace rsx
|
|||
{
|
||||
std::function<bool(u32 addr, bool is_writing)> g_access_violation_handler;
|
||||
|
||||
void old_shaders_cache::shaders_cache::load(const std::string &path, shader_language lang)
|
||||
{
|
||||
const std::string lang_name(lang == shader_language::glsl ? "glsl" : "hlsl");
|
||||
|
||||
auto extract_hash = [](const std::string &string)
|
||||
{
|
||||
return std::stoull(string.substr(0, string.find('.')).c_str(), 0, 16);
|
||||
};
|
||||
|
||||
for (const auto& entry : fs::dir(path))
|
||||
{
|
||||
if (entry.name == "." || entry.name == "..")
|
||||
continue;
|
||||
|
||||
u64 hash;
|
||||
|
||||
try
|
||||
{
|
||||
hash = extract_hash(entry.name);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fmt::match(entry.name, "*.fs." + lang_name))
|
||||
{
|
||||
fs::file file{ path + entry.name };
|
||||
decompiled_fragment_shaders.insert(hash, { file.to_string() });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fmt::match(entry.name, "*.vs." + lang_name))
|
||||
{
|
||||
fs::file file{ path + entry.name };
|
||||
decompiled_vertex_shaders.insert(hash, { file.to_string() });
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void old_shaders_cache::shaders_cache::load(shader_language lang)
|
||||
{
|
||||
load(Emu.GetCachePath(), lang);
|
||||
}
|
||||
//TODO: Restore a working shaders cache
|
||||
|
||||
u32 get_address(u32 offset, u32 location)
|
||||
{
|
||||
|
|
@ -1046,102 +1002,6 @@ namespace rsx
|
|||
return result;
|
||||
}
|
||||
|
||||
raw_program thread::get_raw_program() const
|
||||
{
|
||||
raw_program result{};
|
||||
|
||||
u32 fp_info = rsx::method_registers.shader_program_address();
|
||||
|
||||
result.state.input_attributes = rsx::method_registers.vertex_attrib_input_mask();
|
||||
result.state.output_attributes = rsx::method_registers.vertex_attrib_output_mask();
|
||||
result.state.ctrl = rsx::method_registers.shader_control();
|
||||
result.state.divider_op = rsx::method_registers.frequency_divider_operation_mask();
|
||||
result.state.alpha_func = (u32)rsx::method_registers.alpha_func();
|
||||
result.state.fog_mode = (u32)rsx::method_registers.fog_equation();
|
||||
result.state.is_int = 0;
|
||||
|
||||
for (u8 index = 0; index < rsx::limits::vertex_count; ++index)
|
||||
{
|
||||
bool is_int = false;
|
||||
|
||||
if (rsx::method_registers.vertex_arrays_info[index].size() > 0)
|
||||
{
|
||||
is_int = is_int_type(rsx::method_registers.vertex_arrays_info[index].type());
|
||||
result.state.frequency[index] = rsx::method_registers.vertex_arrays_info[index].frequency();
|
||||
}
|
||||
else if (rsx::method_registers.register_vertex_info[index].size > 0)
|
||||
{
|
||||
is_int = is_int_type(rsx::method_registers.register_vertex_info[index].type);
|
||||
result.state.frequency[index] = rsx::method_registers.register_vertex_info[index].frequency;
|
||||
result.state.divider_op |= (1 << index);
|
||||
}
|
||||
else
|
||||
{
|
||||
result.state.frequency[index] = 0;
|
||||
}
|
||||
|
||||
if (is_int)
|
||||
{
|
||||
result.state.is_int |= 1 << index;
|
||||
}
|
||||
}
|
||||
|
||||
for (u8 index = 0; index < rsx::limits::fragment_textures_count; ++index)
|
||||
{
|
||||
if (!rsx::method_registers.fragment_textures[index].enabled())
|
||||
{
|
||||
result.state.textures_alpha_kill[index] = 0;
|
||||
result.state.textures_zfunc[index] = 0;
|
||||
result.state.textures[index] = rsx::texture_target::none;
|
||||
continue;
|
||||
}
|
||||
|
||||
result.state.textures_alpha_kill[index] = rsx::method_registers.fragment_textures[index].alpha_kill_enabled() ? 1 : 0;
|
||||
result.state.textures_zfunc[index] = rsx::method_registers.fragment_textures[index].zfunc();
|
||||
|
||||
switch (rsx::method_registers.fragment_textures[index].get_extended_texture_dimension())
|
||||
{
|
||||
case rsx::texture_dimension_extended::texture_dimension_1d: result.state.textures[index] = rsx::texture_target::_1; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_2d: result.state.textures[index] = rsx::texture_target::_2; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_3d: result.state.textures[index] = rsx::texture_target::_3; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_cubemap: result.state.textures[index] = rsx::texture_target::cube; break;
|
||||
|
||||
default:
|
||||
result.state.textures[index] = rsx::texture_target::none;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (u8 index = 0; index < rsx::limits::vertex_textures_count; ++index)
|
||||
{
|
||||
if (!rsx::method_registers.fragment_textures[index].enabled())
|
||||
{
|
||||
result.state.vertex_textures[index] = rsx::texture_target::none;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (rsx::method_registers.fragment_textures[index].get_extended_texture_dimension())
|
||||
{
|
||||
case rsx::texture_dimension_extended::texture_dimension_1d: result.state.vertex_textures[index] = rsx::texture_target::_1; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_2d: result.state.vertex_textures[index] = rsx::texture_target::_2; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_3d: result.state.vertex_textures[index] = rsx::texture_target::_3; break;
|
||||
case rsx::texture_dimension_extended::texture_dimension_cubemap: result.state.vertex_textures[index] = rsx::texture_target::cube; break;
|
||||
|
||||
default:
|
||||
result.state.vertex_textures[index] = rsx::texture_target::none;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
result.vertex_shader.ucode_ptr = rsx::method_registers.transform_program.data();
|
||||
result.vertex_shader.offset = rsx::method_registers.transform_program_start();
|
||||
|
||||
result.fragment_shader.ucode_ptr = vm::base(rsx::get_address(fp_info & ~0x3, (fp_info & 0x3) - 1));
|
||||
result.fragment_shader.offset = 0;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void thread::reset()
|
||||
{
|
||||
rsx::method_registers.reset();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue