mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-01-03 12:50:21 +01:00
i915: Add skeleton for HWZ ioctl.
This commit is contained in:
parent
caf0c481a6
commit
a9abb4c337
3 changed files with 61 additions and 1 deletions
|
|
@ -711,6 +711,45 @@ static int i915_cmdbuffer(DRM_IOCTL_ARGS)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int i915_hwz_alloc(drm_device_t *dev, drm_i915_hwz_t *hwz)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i915_hwz_free(drm_device_t *dev, drm_i915_hwz_t *hwz)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i915_hwz_render(drm_device_t *dev, drm_i915_hwz_t *hwz)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int i915_hwz(DRM_IOCTL_ARGS)
|
||||
{
|
||||
DRM_DEVICE;
|
||||
drm_i915_hwz_t hwz;
|
||||
|
||||
DRM_COPY_FROM_USER_IOCTL(hwz, (drm_i915_hwz_t __user *) data,
|
||||
sizeof(hwz));
|
||||
|
||||
switch (hwz.op) {
|
||||
case DRM_I915_HWZ_RENDER:
|
||||
DRM_INFO("i915 hwz render\n"
|
||||
/*, batch.start, batch.used, batch.num_cliprects*/);
|
||||
LOCK_TEST_WITH_RETURN(dev, filp);
|
||||
return i915_hwz_render(dev, &hwz);
|
||||
case DRM_I915_HWZ_ALLOC:
|
||||
return i915_hwz_alloc(dev, &hwz);
|
||||
case DRM_I915_HWZ_FREE:
|
||||
return i915_hwz_free(dev, &hwz);
|
||||
default:
|
||||
DRM_ERROR("Invalid op 0x%x\n", hwz.op);
|
||||
return DRM_ERR(EINVAL);
|
||||
}
|
||||
}
|
||||
|
||||
static int i915_do_cleanup_pageflip(drm_device_t * dev)
|
||||
{
|
||||
drm_i915_private_t *dev_priv = dev->dev_private;
|
||||
|
|
@ -930,6 +969,7 @@ drm_ioctl_desc_t i915_ioctls[] = {
|
|||
[DRM_IOCTL_NR(DRM_I915_GET_VBLANK_PIPE)] = { i915_vblank_pipe_get, DRM_AUTH },
|
||||
[DRM_IOCTL_NR(DRM_I915_VBLANK_SWAP)] = {i915_vblank_swap, DRM_AUTH},
|
||||
[DRM_IOCTL_NR(DRM_I915_MMIO)] = {i915_mmio, DRM_AUTH},
|
||||
[DRM_IOCTL_NR(DRM_I915_HWZ)] = {i915_hwz, DRM_AUTH},
|
||||
};
|
||||
|
||||
int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ typedef struct _drm_i915_sarea {
|
|||
#define DRM_I915_GET_VBLANK_PIPE 0x0e
|
||||
#define DRM_I915_VBLANK_SWAP 0x0f
|
||||
#define DRM_I915_MMIO 0x10
|
||||
#define DRM_I915_HWZ 0x11
|
||||
|
||||
#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
|
||||
#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
|
||||
|
|
@ -176,6 +177,7 @@ typedef struct _drm_i915_sarea {
|
|||
#define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
|
||||
#define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t)
|
||||
#define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t)
|
||||
#define DRM_IOCTL_I915_HWZ DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_HWZ, drm_i915_hwz_t)
|
||||
|
||||
|
||||
/* Asynchronous page flipping:
|
||||
|
|
@ -314,4 +316,14 @@ typedef struct drm_i915_mmio {
|
|||
void __user *data;
|
||||
} drm_i915_mmio_t;
|
||||
|
||||
/* Hardware Zone Rendering Support:
|
||||
*/
|
||||
#define DRM_I915_HWZ_RENDER 1
|
||||
#define DRM_I915_HWZ_ALLOC 2
|
||||
#define DRM_I915_HWZ_FREE 3
|
||||
|
||||
typedef struct drm_i915_hwz {
|
||||
unsigned int op;
|
||||
} drm_i915_hwz_t;
|
||||
|
||||
#endif /* _I915_DRM_H_ */
|
||||
|
|
|
|||
|
|
@ -50,9 +50,10 @@
|
|||
* - Support vertical blank on secondary display pipe
|
||||
* 1.8: New ioctl for ARB_Occlusion_Query
|
||||
* 1.9: Usable page flipping and triple buffering
|
||||
* 1.10: Hardware Zone Rendering support
|
||||
*/
|
||||
#define DRIVER_MAJOR 1
|
||||
#define DRIVER_MINOR 9
|
||||
#define DRIVER_MINOR 10
|
||||
#define DRIVER_PATCHLEVEL 0
|
||||
|
||||
#if defined(__linux__)
|
||||
|
|
@ -298,6 +299,7 @@ extern int i915_wait_ring(drm_device_t * dev, int n, const char *caller);
|
|||
#define NOPID 0x2094
|
||||
#define LP_RING 0x2030
|
||||
#define HP_RING 0x2040
|
||||
#define HWB_RING 0x2400
|
||||
#define RING_TAIL 0x00
|
||||
#define TAIL_ADDR 0x001FFFF8
|
||||
#define RING_HEAD 0x04
|
||||
|
|
@ -316,6 +318,12 @@ extern int i915_wait_ring(drm_device_t * dev, int n, const char *caller);
|
|||
#define RING_VALID 0x00000001
|
||||
#define RING_INVALID 0x00000000
|
||||
|
||||
#define BINCTL 0x2420
|
||||
#define BINSCENE 0x2428
|
||||
#define BMP_BUFFER 0x2430
|
||||
#define BMP_GET 0x2438
|
||||
#define BMP_PUT 0x2440
|
||||
|
||||
#define GFX_OP_SCISSOR ((0x3<<29)|(0x1c<<24)|(0x10<<19))
|
||||
#define SC_UPDATE_SCISSOR (0x1<<1)
|
||||
#define SC_ENABLE_MASK (0x1<<0)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue