nvfx: support using blitter to copy depth/stencil resources, fix Heaven
We might want to copy them as color ones though. Also works around crash in Unigine Heaven due to failing to allocate a 64 MB temporary in GART for a CPU copy. Unigine Heaven now works on nv40, albeit with very heavy glitches (with the floating branch with render_hdr 0).
This commit is contained in:
parent
6dc71d6aa5
commit
9fc50968ad
|
@ -251,8 +251,15 @@ nvfx_resource_copy_region(struct pipe_context *pipe,
|
|||
ret = nv04_region_copy_2d(ctx, &dst, &src, w, h, dst_to_gpu, src_on_gpu);
|
||||
if(!ret)
|
||||
{}
|
||||
else if(ret > 0 && dstr->bind & PIPE_BIND_RENDER_TARGET && srcr->bind & PIPE_BIND_SAMPLER_VIEW)
|
||||
else if(ret > 0
|
||||
&& dstr->bind & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_DEPTH_STENCIL)
|
||||
&& srcr->bind & PIPE_BIND_SAMPLER_VIEW)
|
||||
{
|
||||
/* this currently works because we hack the bind flags on resource creation to be
|
||||
* the maximum set that the resource type actually supports
|
||||
*
|
||||
* TODO: perhaps support reinterpreting the formats
|
||||
*/
|
||||
struct blitter_context* blitter = nvfx_get_blitter(pipe, 1);
|
||||
util_blitter_copy_region(blitter, dstr, subdst, dstx, dsty, dstz, srcr, subsrc, srcx, srcy, srcz, w, h, TRUE);
|
||||
nvfx_put_blitter(pipe, blitter);
|
||||
|
|
Loading…
Reference in New Issue