mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-19 08:00:36 +02:00
svga: Add SVGA3dCmdIntraSurfaceCopy command support in OpenGL driver
v2: changes as per Charmaine's comment Reviewed-by: Charmaine Lee <charmainel@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
bac94dfefa
commit
6b3627da08
3 changed files with 49 additions and 0 deletions
|
|
@ -682,4 +682,12 @@ SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
|
|||
unsigned dstSubResource,
|
||||
SVGA3dBox *dstBox);
|
||||
|
||||
/*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);
|
||||
|
||||
|
||||
#endif /* __SVGA3D_H__ */
|
||||
|
|
|
|||
|
|
@ -1372,3 +1372,27 @@ SVGA3D_vgpu10_TransferFromBuffer(struct svga_winsys_context *swc,
|
|||
swc->commit(swc);
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
||||
enum pipe_error
|
||||
SVGA3D_vgpu10_IntraSurfaceCopy(struct svga_winsys_context *swc,
|
||||
struct svga_winsys_surface *surface,
|
||||
unsigned level, unsigned face,
|
||||
const SVGA3dCopyBox *box)
|
||||
{
|
||||
SVGA3dCmdIntraSurfaceCopy *cmd =
|
||||
SVGA3D_FIFOReserve(swc,
|
||||
SVGA_3D_CMD_INTRA_SURFACE_COPY,
|
||||
sizeof(SVGA3dCmdIntraSurfaceCopy),
|
||||
1); /* one relocation */
|
||||
if (!cmd)
|
||||
return PIPE_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
swc->surface_relocation(swc, &cmd->surface.sid, NULL, surface, SVGA_RELOC_READ | SVGA_RELOC_WRITE);
|
||||
cmd->surface.face = face;
|
||||
cmd->surface.mipmap = level;
|
||||
cmd->box = *box;
|
||||
|
||||
swc->commit(swc);
|
||||
|
||||
return PIPE_OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2041,6 +2041,15 @@ SVGA3D_DUMP_HEADER(TransferFromBuffer)
|
|||
dump_SVGA3dBox(&cmd->destBox);
|
||||
}
|
||||
|
||||
static void
|
||||
dump_SVGA3dCmdIntraSurfaceCopy(const SVGA3dCmdIntraSurfaceCopy *cmd)
|
||||
{
|
||||
SVGA3D_DUMP_PARAMETER(surface.sid, u);
|
||||
SVGA3D_DUMP_PARAMETER(surface.face, u);
|
||||
SVGA3D_DUMP_PARAMETER(surface.mipmap, u);
|
||||
dump_SVGA3dCopyBox(&cmd->box);
|
||||
}
|
||||
|
||||
static void
|
||||
dump_SVGA3dCmdInvalidateGBSurface(const SVGA3dCmdInvalidateGBSurface *cmd)
|
||||
{
|
||||
|
|
@ -2559,6 +2568,14 @@ svga_dump_command(uint32_t cmd_id, const void *data, uint32_t size)
|
|||
body = (const uint8_t *)&cmd[1];
|
||||
}
|
||||
break;
|
||||
case SVGA_3D_CMD_INTRA_SURFACE_COPY:
|
||||
_debug_printf("\tSVGA_3D_CMD_INTRA_SURFACE_COPY\n");
|
||||
{
|
||||
const SVGA3dCmdIntraSurfaceCopy *cmd = (const SVGA3dCmdIntraSurfaceCopy *)body;
|
||||
dump_SVGA3dCmdIntraSurfaceCopy(cmd);
|
||||
body = (const uint8_t *)&cmd[1];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
_debug_printf("\t0x%08x\n", cmd_id);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue