diff options
author | Dave Airlie <airlied@linux.ie> | 2008-03-30 07:51:49 +1000 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2008-03-30 07:51:49 +1000 |
commit | 0c76be35194563f56e02fc1775d0fe29281e84d4 (patch) | |
tree | ce326ec271bb53323daf29f7098fb81ff6caae01 /drivers/char/drm/radeon_drm.h | |
parent | af8be4e4b316df36a00c1e52a9970c253783b57e (diff) | |
download | blackbird-op-linux-0c76be35194563f56e02fc1775d0fe29281e84d4.tar.gz blackbird-op-linux-0c76be35194563f56e02fc1775d0fe29281e84d4.zip |
drm/r300: fix bug in r300 userspace hardware wait emission
This interface was originally designed wrong, confusing bit-fields and
integers, major brown paper bag going back many years...
But userspace only ever used 4 values so fix the interface for new
users and fix the implementation to deal with the 4 values userspace
has ever emitted (0x1, 0x2, 0x3, 0x6).
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/char/drm/radeon_drm.h')
-rw-r--r-- | drivers/char/drm/radeon_drm.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/char/drm/radeon_drm.h b/drivers/char/drm/radeon_drm.h index 71e5b21fad2c..aab82e121e07 100644 --- a/drivers/char/drm/radeon_drm.h +++ b/drivers/char/drm/radeon_drm.h @@ -225,8 +225,20 @@ typedef union { #define R300_CMD_WAIT 7 # define R300_WAIT_2D 0x1 # define R300_WAIT_3D 0x2 +/* these two defines are DOING IT WRONG - however + * we have userspace which relies on using these. + * The wait interface is backwards compat new + * code should use the NEW_WAIT defines below + * THESE ARE NOT BIT FIELDS + */ # define R300_WAIT_2D_CLEAN 0x3 # define R300_WAIT_3D_CLEAN 0x4 + +# define R300_NEW_WAIT_2D_3D 0x3 +# define R300_NEW_WAIT_2D_2D_CLEAN 0x4 +# define R300_NEW_WAIT_3D_3D_CLEAN 0x6 +# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8 + #define R300_CMD_SCRATCH 8 typedef union { |