On Wed, 11 Mar 2020 at 18:25 Henri Verbeet hverbeet@gmail.com wrote:
On Wed, 11 Mar 2020 at 16:25, Paul Gofman gofmanp@gmail.com wrote:
On 3/11/20 15:22, Henri Verbeet wrote:
On Tue, 10 Mar 2020 at 15:01, Paul Gofman gofmanp@gmail.com wrote:
@@ -2629,8 +2622,14 @@ HRESULT texture2d_blt(struct wined3d_texture
*dst_texture, unsigned int dst_sub_
dst_location = dst_texture->resource.map_binding; context = context_acquire(device, dst_texture,
dst_sub_resource_idx);
- scale = abs(src_box->right - src_box->left) !=
abs(dst_box->right - dst_box->left)
|| abs(src_box->bottom - src_box->top) !=
abs(dst_box->bottom - dst_box->top);
"scale" is already initialised earlier in the function. It's true that this variant would allow flips and mirrors whereas the variant earlier in the texture2d_blt() doesn't, but flipped/mirrored boxes aren't valid for texture2d_blt(). (In particular, wined3d_texture_blt() calls wined3d_texture_check_box_dimensions(); callers would use WINEDDBLTFX_MIRROR* to do flipped/mirrored blits.)
- src_location = (scale || convert || blit_op !=
WINED3D_BLIT_OP_COLOR_BLIT)
&& wined3d_texture_is_multisample_location(src_texture,
src_texture->resource.draw_binding) ?
WINED3D_LOCATION_RB_RESOLVED
: src_texture->resource.draw_binding;
is the "blit_op" check needed?
I think it is not strictly necessary as colour key or alpha test blits won't end up in FBO blitter anyway, but I thought it is less fragile and more clear to be explicit here. Should I remove that?
To the extent that it makes a difference for those blit types, I think using the resolved location makes sense there as well.
Yes, that what I was trying to do, and additionally resolve for special blits even if the size and format is the same, that’s what I put blit_op check for. Should I remove that? Anyway, it is probably a separate change.