svga: add a helper function to send ResolveCopy command
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
committed by
Brian Paul
parent
9a24b08a49
commit
2d39e6d0c8
@@ -685,9 +685,16 @@ SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
|
||||
/*Cap2 commands*/
|
||||
enum pipe_error
|
||||
SVGA3D_vgpu10_IntraSurfaceCopy(struct svga_winsys_context *swc,
|
||||
struct svga_winsys_surface *src,
|
||||
unsigned level, unsigned face,
|
||||
const SVGA3dCopyBox *box);
|
||||
struct svga_winsys_surface *src,
|
||||
unsigned level, unsigned face,
|
||||
const SVGA3dCopyBox *box);
|
||||
|
||||
enum pipe_error
|
||||
SVGA3D_vgpu10_ResolveCopy(struct svga_winsys_context *swc,
|
||||
unsigned dstSubResource,
|
||||
struct svga_winsys_surface *dst,
|
||||
unsigned srcSubResource,
|
||||
struct svga_winsys_surface *src,
|
||||
const SVGA3dSurfaceFormat copyFormat);
|
||||
|
||||
#endif /* __SVGA3D_H__ */
|
||||
|
||||
@@ -1375,9 +1375,9 @@ SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
|
||||
|
||||
enum pipe_error
|
||||
SVGA3D_vgpu10_IntraSurfaceCopy(struct svga_winsys_context *swc,
|
||||
struct svga_winsys_surface *surface,
|
||||
unsigned level, unsigned face,
|
||||
const SVGA3dCopyBox *box)
|
||||
struct svga_winsys_surface *surface,
|
||||
unsigned level, unsigned face,
|
||||
const SVGA3dCopyBox *box)
|
||||
{
|
||||
SVGA3dCmdIntraSurfaceCopy *cmd =
|
||||
SVGA3D_FIFOReserve(swc,
|
||||
@@ -1396,3 +1396,30 @@ SVGA3D_vgpu10_IntraSurfaceCopy(struct svga_winsys_context *swc,
|
||||
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
||||
enum pipe_error
|
||||
SVGA3D_vgpu10_ResolveCopy(struct svga_winsys_context *swc,
|
||||
unsigned dstSubResource,
|
||||
struct svga_winsys_surface *dst,
|
||||
unsigned srcSubResource,
|
||||
struct svga_winsys_surface *src,
|
||||
const SVGA3dSurfaceFormat copyFormat)
|
||||
{
|
||||
SVGA3dCmdDXResolveCopy *cmd =
|
||||
SVGA3D_FIFOReserve(swc,
|
||||
SVGA_3D_CMD_DX_RESOLVE_COPY,
|
||||
sizeof(SVGA3dCmdDXResolveCopy),
|
||||
2); /* two relocations */
|
||||
if (!cmd)
|
||||
return PIPE_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
cmd->dstSubResource = dstSubResource;
|
||||
swc->surface_relocation(swc, &cmd->dstSid, NULL, dst, SVGA_RELOC_WRITE);
|
||||
cmd->srcSubResource = srcSubResource;
|
||||
swc->surface_relocation(swc, &cmd->srcSid, NULL, src, SVGA_RELOC_READ);
|
||||
cmd->copyFormat = copyFormat;
|
||||
|
||||
swc->commit(swc);
|
||||
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user