@@ -27,51 +27,7 @@ namespace rsx
27
27
{
28
28
std::function<bool (u32 addr, bool is_writing)> g_access_violation_handler;
29
29
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
75
31
76
32
u32 get_address (u32 offset, u32 location)
77
33
{
@@ -1046,102 +1002,6 @@ namespace rsx
1046
1002
return result;
1047
1003
}
1048
1004
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
-
1145
1005
void thread::reset ()
1146
1006
{
1147
1007
rsx::method_registers.reset ();
0 commit comments