> + if (!device || !camera)
> + return D3DRMERR_BADOBJECT;
> + if (!viewport)
> + return D3DRMERR_BADVALUE;
These checks are redundant, Init() does that as well.
> + ok(ref4 == frame_ref, "Expected ref4 == frame_ref, got frame_ref = %u, ref4 = %u.\n", frame_ref, ref4);
> +
> + device_ref = get_refcount((IUnknown *)device1);
> + frame_ref = get_refcount((IUnknown *)frame);
The get_refcount here seems redundant because you've just shown that it is back to where it used to be.