aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2014-01-30 05:13:43 -0500
committerThomas Hellstrom <thellstrom@vmware.com>2014-02-05 02:37:05 -0500
commit0ccbbae43c2dfe45ded1d7ed59b8fc7ac8214fb0 (patch)
treea935355a5982d0adfc68121e1410897ff3ac60f6 /drivers/gpu
parentcf5e3413337309050c05e13dcebe85b7194a21e5 (diff)
drm/vmwgfx: Fix SET_SHADER_CONST emulation on guest-backed devices
Emulate the SET_SHADER_CONST legacy command on guest-backed devices by issuing a SET_GB_SHADERCONSTS_INLINE command. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index dafa139c0ca7..9441825c7860 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -1529,6 +1529,39 @@ static int vmw_cmd_set_shader(struct vmw_private *dev_priv,
1529} 1529}
1530 1530
1531/** 1531/**
1532 * vmw_cmd_set_shader_const - Validate an SVGA_3D_CMD_SET_SHADER_CONST
1533 * command
1534 *
1535 * @dev_priv: Pointer to a device private struct.
1536 * @sw_context: The software context being used for this batch.
1537 * @header: Pointer to the command header in the command stream.
1538 */
1539static int vmw_cmd_set_shader_const(struct vmw_private *dev_priv,
1540 struct vmw_sw_context *sw_context,
1541 SVGA3dCmdHeader *header)
1542{
1543 struct vmw_set_shader_const_cmd {
1544 SVGA3dCmdHeader header;
1545 SVGA3dCmdSetShaderConst body;
1546 } *cmd;
1547 int ret;
1548
1549 cmd = container_of(header, struct vmw_set_shader_const_cmd,
1550 header);
1551
1552 ret = vmw_cmd_res_check(dev_priv, sw_context, vmw_res_context,
1553 user_context_converter, &cmd->body.cid,
1554 NULL);
1555 if (unlikely(ret != 0))
1556 return ret;
1557
1558 if (dev_priv->has_mob)
1559 header->id = SVGA_3D_CMD_SET_GB_SHADERCONSTS_INLINE;
1560
1561 return 0;
1562}
1563
1564/**
1532 * vmw_cmd_bind_gb_shader - Validate an SVGA_3D_CMD_BIND_GB_SHADER 1565 * vmw_cmd_bind_gb_shader - Validate an SVGA_3D_CMD_BIND_GB_SHADER
1533 * command 1566 * command
1534 * 1567 *
@@ -1642,8 +1675,8 @@ static const struct vmw_cmd_entry const vmw_cmd_entries[SVGA_3D_CMD_MAX] = {
1642 true, true, false), 1675 true, true, false),
1643 VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER, &vmw_cmd_set_shader, 1676 VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER, &vmw_cmd_set_shader,
1644 true, false, false), 1677 true, false, false),
1645 VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER_CONST, &vmw_cmd_cid_check, 1678 VMW_CMD_DEF(SVGA_3D_CMD_SET_SHADER_CONST, &vmw_cmd_set_shader_const,
1646 true, true, false), 1679 true, false, false),
1647 VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw, 1680 VMW_CMD_DEF(SVGA_3D_CMD_DRAW_PRIMITIVES, &vmw_cmd_draw,
1648 true, false, false), 1681 true, false, false),
1649 VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check, 1682 VMW_CMD_DEF(SVGA_3D_CMD_SETSCISSORRECT, &vmw_cmd_cid_check,