mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-09 16:31:28 +12:00
Shaders decompiler: support non 2D textures
Do not validate programs with undefined textures uniforms Minor fix
This commit is contained in:
parent
d69a4173fa
commit
e296f81a37
5 changed files with 214 additions and 12 deletions
|
@ -747,7 +747,7 @@ namespace rsx
|
|||
|
||||
raw_program thread::get_raw_program() const
|
||||
{
|
||||
raw_program result;
|
||||
raw_program result{};
|
||||
|
||||
u32 fp_info = rsx::method_registers[NV4097_SET_SHADER_PROGRAM];
|
||||
|
||||
|
@ -755,7 +755,7 @@ namespace rsx
|
|||
result.state.output_attributes = rsx::method_registers[NV4097_SET_VERTEX_ATTRIB_OUTPUT_MASK];
|
||||
result.state.ctrl = rsx::method_registers[NV4097_SET_SHADER_CONTROL];
|
||||
result.state.divider_op = rsx::method_registers[NV4097_SET_FREQUENCY_DIVIDER_OPERATION];
|
||||
|
||||
|
||||
result.state.is_array = 0;
|
||||
result.state.is_int = 0;
|
||||
|
||||
|
@ -785,6 +785,27 @@ namespace rsx
|
|||
}
|
||||
}
|
||||
|
||||
for (u8 index = 0; index < rsx::limits::textures_count; ++index)
|
||||
{
|
||||
if (!textures[index].enabled())
|
||||
{
|
||||
result.state.textures[index] = rsx::texture_target::none;
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (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;
|
||||
}
|
||||
}
|
||||
|
||||
result.vertex_shader.ucode_ptr = transform_program;
|
||||
result.vertex_shader.offset = rsx::method_registers[NV4097_SET_TRANSFORM_PROGRAM_START];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue