rsx: Propagate shader kill flag and refactor texture flags processing a bit
This commit is contained in:
@@ -2052,7 +2052,7 @@ namespace rsx
|
|||||||
|
|
||||||
m_graphics_state.clear(rsx::pipeline_state::fragment_program_dirty);
|
m_graphics_state.clear(rsx::pipeline_state::fragment_program_dirty);
|
||||||
|
|
||||||
current_fragment_program.ctrl = m_ctx->register_state->shader_control() & (CELL_GCM_SHADER_CONTROL_32_BITS_EXPORTS | CELL_GCM_SHADER_CONTROL_DEPTH_EXPORT);
|
current_fragment_program.ctrl = m_ctx->register_state->shader_control() & (CELL_GCM_SHADER_CONTROL_32_BITS_EXPORTS | CELL_GCM_SHADER_CONTROL_DEPTH_EXPORT | RSX_SHADER_CONTROL_USES_KIL);
|
||||||
current_fragment_program.texcoord_control_mask = m_ctx->register_state->texcoord_control_mask();
|
current_fragment_program.texcoord_control_mask = m_ctx->register_state->texcoord_control_mask();
|
||||||
current_fragment_program.two_sided_lighting = m_ctx->register_state->two_side_light_en();
|
current_fragment_program.two_sided_lighting = m_ctx->register_state->two_side_light_en();
|
||||||
current_fragment_program.mrt_buffers_count = rsx::utility::get_mrt_buffers_count(m_ctx->register_state->surface_color_target());
|
current_fragment_program.mrt_buffers_count = rsx::utility::get_mrt_buffers_count(m_ctx->register_state->surface_color_target());
|
||||||
@@ -2116,8 +2116,11 @@ namespace rsx
|
|||||||
auto &tex = rsx::method_registers.fragment_textures[i];
|
auto &tex = rsx::method_registers.fragment_textures[i];
|
||||||
current_fp_texture_state.clear(i);
|
current_fp_texture_state.clear(i);
|
||||||
|
|
||||||
if (tex.enabled() && sampler_descriptors[i]->format_class != RSX_FORMAT_CLASS_UNDEFINED)
|
if (!tex.enabled() || sampler_descriptors[i]->format_class == RSX_FORMAT_CLASS_UNDEFINED)
|
||||||
{
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
std::memcpy(current_fragment_program.texture_params[i].scale, sampler_descriptors[i]->texcoord_xform.scale, 6 * sizeof(f32));
|
std::memcpy(current_fragment_program.texture_params[i].scale, sampler_descriptors[i]->texcoord_xform.scale, 6 * sizeof(f32));
|
||||||
current_fragment_program.texture_params[i].remap = tex.remap();
|
current_fragment_program.texture_params[i].remap = tex.remap();
|
||||||
|
|
||||||
@@ -2305,7 +2308,6 @@ namespace rsx
|
|||||||
|
|
||||||
current_fragment_program.texture_params[i].control = texture_control;
|
current_fragment_program.texture_params[i].control = texture_control;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Update texture configuration
|
// Update texture configuration
|
||||||
current_fragment_program.texture_state.import(current_fp_texture_state, current_fp_metadata.referenced_textures_mask);
|
current_fragment_program.texture_state.import(current_fp_texture_state, current_fp_metadata.referenced_textures_mask);
|
||||||
|
|||||||
Reference in New Issue
Block a user