rsx: Don't crash when invalid buffer is allocated for a shader
This commit is contained in:
@@ -385,7 +385,13 @@ public:
|
|||||||
|
|
||||||
void fill_fragment_constants_buffer(std::span<f32> dst_buffer, const fragment_program_type& fragment_program, const RSXFragmentProgram& rsx_prog, bool sanitize = false) const
|
void fill_fragment_constants_buffer(std::span<f32> dst_buffer, const fragment_program_type& fragment_program, const RSXFragmentProgram& rsx_prog, bool sanitize = false) const
|
||||||
{
|
{
|
||||||
ensure((dst_buffer.size_bytes() >= ::narrow<int>(fragment_program.FragmentConstantOffsetCache.size()) * 16u));
|
if (dst_buffer.size_bytes() < (fragment_program.FragmentConstantOffsetCache.size() * 16))
|
||||||
|
{
|
||||||
|
// This can happen if CELL alters the shader after it has been loaded by RSX.
|
||||||
|
rsx_log.error("Insufficient constants buffer size passed to fragment program! Corrupt shader?");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rsx::write_fragment_constants_to_buffer(dst_buffer, rsx_prog, fragment_program.FragmentConstantOffsetCache, sanitize);
|
rsx::write_fragment_constants_to_buffer(dst_buffer, rsx_prog, fragment_program.FragmentConstantOffsetCache, sanitize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user