Commit f77cef3d authored by Thomas Hellstrom's avatar Thomas Hellstrom Committed by Dave Airlie

drm/vmwgfx: Update the user-space interface.

When time-based throttling is implemented, we need to bump minor.
When the old way of detecting scanout is removed, we need to bump major.
In the meantime, this change should not break existing user-space.
Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: default avatarJakob Bornecrantz <jakob@vmware.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent e28cab42
...@@ -39,10 +39,10 @@ ...@@ -39,10 +39,10 @@
#include "ttm/ttm_execbuf_util.h" #include "ttm/ttm_execbuf_util.h"
#include "ttm/ttm_module.h" #include "ttm/ttm_module.h"
#define VMWGFX_DRIVER_DATE "20090724" #define VMWGFX_DRIVER_DATE "20100118"
#define VMWGFX_DRIVER_MAJOR 0 #define VMWGFX_DRIVER_MAJOR 0
#define VMWGFX_DRIVER_MINOR 1 #define VMWGFX_DRIVER_MINOR 9
#define VMWGFX_DRIVER_PATCHLEVEL 2 #define VMWGFX_DRIVER_PATCHLEVEL 0
#define VMWGFX_FILE_PAGE_OFFSET 0x00100000 #define VMWGFX_FILE_PAGE_OFFSET 0x00100000
#define VMWGFX_FIFO_STATIC_SIZE (1024*1024) #define VMWGFX_FIFO_STATIC_SIZE (1024*1024)
#define VMWGFX_MAX_RELOCATIONS 2048 #define VMWGFX_MAX_RELOCATIONS 2048
......
...@@ -48,6 +48,12 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data, ...@@ -48,6 +48,12 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data,
case DRM_VMW_PARAM_FIFO_OFFSET: case DRM_VMW_PARAM_FIFO_OFFSET:
param->value = dev_priv->mmio_start; param->value = dev_priv->mmio_start;
break; break;
case DRM_VMW_PARAM_HW_CAPS:
param->value = dev_priv->capabilities;
break;
case DRM_VMW_PARAM_FIFO_CAPS:
param->value = dev_priv->fifo.capabilities;
break;
default: default:
DRM_ERROR("Illegal vmwgfx get param request: %d\n", DRM_ERROR("Illegal vmwgfx get param request: %d\n",
param->param); param->param);
......
...@@ -610,9 +610,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data, ...@@ -610,9 +610,10 @@ int vmw_surface_define_ioctl(struct drm_device *dev, void *data,
*/ */
srf->flags &= ~SVGA3D_SURFACE_HINT_SCANOUT; srf->flags &= ~SVGA3D_SURFACE_HINT_SCANOUT;
srf->scanout = true; srf->scanout = true;
} else { } else if (req->scanout)
srf->scanout = true;
else
srf->scanout = false; srf->scanout = false;
}
if (srf->scanout && if (srf->scanout &&
srf->num_sizes == 1 && srf->num_sizes == 1 &&
......
...@@ -68,7 +68,8 @@ ...@@ -68,7 +68,8 @@
#define DRM_VMW_PARAM_NUM_FREE_STREAMS 1 #define DRM_VMW_PARAM_NUM_FREE_STREAMS 1
#define DRM_VMW_PARAM_3D 2 #define DRM_VMW_PARAM_3D 2
#define DRM_VMW_PARAM_FIFO_OFFSET 3 #define DRM_VMW_PARAM_FIFO_OFFSET 3
#define DRM_VMW_PARAM_HW_CAPS 4
#define DRM_VMW_PARAM_FIFO_CAPS 5
/** /**
* struct drm_vmw_getparam_arg * struct drm_vmw_getparam_arg
...@@ -181,6 +182,8 @@ struct drm_vmw_context_arg { ...@@ -181,6 +182,8 @@ struct drm_vmw_context_arg {
* The size of the array should equal the total number of mipmap levels. * The size of the array should equal the total number of mipmap levels.
* @shareable: Boolean whether other clients (as identified by file descriptors) * @shareable: Boolean whether other clients (as identified by file descriptors)
* may reference this surface. * may reference this surface.
* @scanout: Boolean whether the surface is intended to be used as a
* scanout.
* *
* Input data to the DRM_VMW_CREATE_SURFACE Ioctl. * Input data to the DRM_VMW_CREATE_SURFACE Ioctl.
* Output data from the DRM_VMW_REF_SURFACE Ioctl. * Output data from the DRM_VMW_REF_SURFACE Ioctl.
...@@ -192,7 +195,7 @@ struct drm_vmw_surface_create_req { ...@@ -192,7 +195,7 @@ struct drm_vmw_surface_create_req {
uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES]; uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES];
uint64_t size_addr; uint64_t size_addr;
int32_t shareable; int32_t shareable;
uint32_t pad64; int32_t scanout;
}; };
/** /**
...@@ -295,6 +298,9 @@ union drm_vmw_surface_reference_arg { ...@@ -295,6 +298,9 @@ union drm_vmw_surface_reference_arg {
* *
* @commands: User-space address of a command buffer cast to an uint64_t. * @commands: User-space address of a command buffer cast to an uint64_t.
* @command-size: Size in bytes of the command buffer. * @command-size: Size in bytes of the command buffer.
* @throttle-us: Sleep until software is less than @throttle_us
* microseconds ahead of hardware. The driver may round this value
* to the nearest kernel tick.
* @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an
* uint64_t. * uint64_t.
* *
...@@ -304,7 +310,7 @@ union drm_vmw_surface_reference_arg { ...@@ -304,7 +310,7 @@ union drm_vmw_surface_reference_arg {
struct drm_vmw_execbuf_arg { struct drm_vmw_execbuf_arg {
uint64_t commands; uint64_t commands;
uint32_t command_size; uint32_t command_size;
uint32_t pad64; uint32_t throttle_us;
uint64_t fence_rep; uint64_t fence_rep;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment