diff --git a/rpcs3/Emu/RSX/Common/GLSLCommon.h b/rpcs3/Emu/RSX/Common/GLSLCommon.h index 0bd3e8fe14..604a4c2300 100644 --- a/rpcs3/Emu/RSX/Common/GLSLCommon.h +++ b/rpcs3/Emu/RSX/Common/GLSLCommon.h @@ -278,6 +278,8 @@ namespace glsl OS << "vec4 read_location(int location)\n"; OS << "{\n"; OS << " attribute_desc desc = fetch_desc(location);\n"; + OS << " //if attribute is disabled return 1 (makes all operations with it nop except add/sub - TODO)\n"; + OS << " if (desc.attribute_size == 0) return vec4(1.);\n"; OS << "\n"; OS << " int vertex_id = " << vertex_id_name << " - int(vertex_base_index);\n"; OS << " if (desc.frequency == 0)\n"; diff --git a/rpcs3/Emu/RSX/Common/texture_cache.h b/rpcs3/Emu/RSX/Common/texture_cache.h index 416c5ffcd2..4715c75194 100644 --- a/rpcs3/Emu/RSX/Common/texture_cache.h +++ b/rpcs3/Emu/RSX/Common/texture_cache.h @@ -1624,11 +1624,14 @@ namespace rsx } else { - if (src_subres.w != dst.clip_width || - src_subres.h != dst.clip_height) + if (!dst_is_render_target) { - const int dst_width = (int)(src_subres.w * scale_x); - const int dst_height = (int)(src_subres.h * scale_y); + u16 src_subres_w = src_subres.w; + u16 src_subres_h = src_subres.h; + get_rsx_dimensions(src_subres_w, src_subres_h, src_subres.surface); + + const int dst_width = (int)(src_subres_w * scale_x); + const int dst_height = (int)(src_subres_h * scale_y); dst_area.x2 = dst_area.x1 + dst_width; dst_area.y2 = dst_area.y1 + dst_height;