From: Marek Olšák <[email protected]>

the CIK tile mode definitions are moved out,
userspace doesn't use them
---
 include/drm/radeon_drm.h | 51 +++++++++++++++++++++++++++++++++++++++---------
 radeon/radeon_surface.c  |  8 ++++++++
 2 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
index cd31794..f09cc04 100644
--- a/include/drm/radeon_drm.h
+++ b/include/drm/radeon_drm.h
@@ -28,20 +28,24 @@
  *    Kevin E. Martin <[email protected]>
  *    Gareth Hughes <[email protected]>
  *    Keith Whitwell <[email protected]>
  */
 
 #ifndef __RADEON_DRM_H__
 #define __RADEON_DRM_H__
 
 #include "drm.h"
 
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
 /* WARNING: If you change any of these defines, make sure to change the
  * defines in the X server file (radeon_sarea.h)
  */
 #ifndef __RADEON_SAREA_DEFINES__
 #define __RADEON_SAREA_DEFINES__
 
 /* Old style state flags, required for sarea interface (1.1 and 1.2
  * clears) and 1.2 drm_vertex2 ioctl.
  */
 #define RADEON_UPLOAD_CONTEXT          0x00000001
@@ -504,20 +508,21 @@ typedef struct {
 #define DRM_RADEON_GEM_PWRITE          0x22
 #define DRM_RADEON_GEM_SET_DOMAIN      0x23
 #define DRM_RADEON_GEM_WAIT_IDLE       0x24
 #define DRM_RADEON_CS                  0x26
 #define DRM_RADEON_INFO                        0x27
 #define DRM_RADEON_GEM_SET_TILING      0x28
 #define DRM_RADEON_GEM_GET_TILING      0x29
 #define DRM_RADEON_GEM_BUSY            0x2a
 #define DRM_RADEON_GEM_VA              0x2b
 #define DRM_RADEON_GEM_OP              0x2c
+#define DRM_RADEON_GEM_USERPTR         0x2d
 
 #define DRM_IOCTL_RADEON_CP_INIT    DRM_IOW( DRM_COMMAND_BASE + 
DRM_RADEON_CP_INIT, drm_radeon_init_t)
 #define DRM_IOCTL_RADEON_CP_START   DRM_IO(  DRM_COMMAND_BASE + 
DRM_RADEON_CP_START)
 #define DRM_IOCTL_RADEON_CP_STOP    DRM_IOW( DRM_COMMAND_BASE + 
DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t)
 #define DRM_IOCTL_RADEON_CP_RESET   DRM_IO(  DRM_COMMAND_BASE + 
DRM_RADEON_CP_RESET)
 #define DRM_IOCTL_RADEON_CP_IDLE    DRM_IO(  DRM_COMMAND_BASE + 
DRM_RADEON_CP_IDLE)
 #define DRM_IOCTL_RADEON_RESET      DRM_IO(  DRM_COMMAND_BASE + 
DRM_RADEON_RESET)
 #define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + 
DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t)
 #define DRM_IOCTL_RADEON_SWAP       DRM_IO(  DRM_COMMAND_BASE + 
DRM_RADEON_SWAP)
 #define DRM_IOCTL_RADEON_CLEAR      DRM_IOW( DRM_COMMAND_BASE + 
DRM_RADEON_CLEAR, drm_radeon_clear_t)
@@ -547,20 +552,21 @@ typedef struct {
 #define DRM_IOCTL_RADEON_GEM_PWRITE    DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_PWRITE, struct drm_radeon_gem_pwrite)
 #define DRM_IOCTL_RADEON_GEM_SET_DOMAIN        DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_SET_DOMAIN, struct drm_radeon_gem_set_domain)
 #define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle)
 #define DRM_IOCTL_RADEON_CS            DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_CS, struct drm_radeon_cs)
 #define DRM_IOCTL_RADEON_INFO          DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_INFO, struct drm_radeon_info)
 #define DRM_IOCTL_RADEON_GEM_SET_TILING        DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling)
 #define DRM_IOCTL_RADEON_GEM_GET_TILING        DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling)
 #define DRM_IOCTL_RADEON_GEM_BUSY      DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_BUSY, struct drm_radeon_gem_busy)
 #define DRM_IOCTL_RADEON_GEM_VA                DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_VA, struct drm_radeon_gem_va)
 #define DRM_IOCTL_RADEON_GEM_OP                DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_OP, struct drm_radeon_gem_op)
+#define DRM_IOCTL_RADEON_GEM_USERPTR   DRM_IOWR(DRM_COMMAND_BASE + 
DRM_RADEON_GEM_USERPTR, struct drm_radeon_gem_userptr)
 
 typedef struct drm_radeon_init {
        enum {
                RADEON_INIT_CP = 0x01,
                RADEON_CLEANUP_CP = 0x02,
                RADEON_INIT_R200_CP = 0x03,
                RADEON_INIT_R300_CP = 0x04,
                RADEON_INIT_R600_CP = 0x05
        } func;
        unsigned long sarea_priv_offset;
@@ -789,30 +795,53 @@ typedef struct drm_radeon_surface_free {
 #define RADEON_GEM_DOMAIN_CPU          0x1
 #define RADEON_GEM_DOMAIN_GTT          0x2
 #define RADEON_GEM_DOMAIN_VRAM         0x4
 
 struct drm_radeon_gem_info {
        uint64_t        gart_size;
        uint64_t        vram_size;
        uint64_t        vram_visible;
 };
 
-#define RADEON_GEM_NO_BACKING_STORE 1
+#define RADEON_GEM_NO_BACKING_STORE    (1 << 0)
+#define RADEON_GEM_GTT_UC              (1 << 1)
+#define RADEON_GEM_GTT_WC              (1 << 2)
+/* BO is expected to be accessed by the CPU */
+#define RADEON_GEM_CPU_ACCESS          (1 << 3)
+/* CPU access is not expected to work for this BO */
+#define RADEON_GEM_NO_CPU_ACCESS       (1 << 4)
 
 struct drm_radeon_gem_create {
        uint64_t        size;
        uint64_t        alignment;
        uint32_t        handle;
        uint32_t        initial_domain;
        uint32_t        flags;
 };
 
+/*
+ * This is not a reliable API and you should expect it to fail for any
+ * number of reasons and have fallback path that do not use userptr to
+ * perform any operation.
+ */
+#define RADEON_GEM_USERPTR_READONLY    (1 << 0)
+#define RADEON_GEM_USERPTR_ANONONLY    (1 << 1)
+#define RADEON_GEM_USERPTR_VALIDATE    (1 << 2)
+#define RADEON_GEM_USERPTR_REGISTER    (1 << 3)
+
+struct drm_radeon_gem_userptr {
+       uint64_t                addr;
+       uint64_t                size;
+       uint32_t                flags;
+       uint32_t                handle;
+};
+
 #define RADEON_TILING_MACRO                            0x1
 #define RADEON_TILING_MICRO                            0x2
 #define RADEON_TILING_SWAP_16BIT                       0x4
 #define RADEON_TILING_R600_NO_SCANOUT                   
RADEON_TILING_SWAP_16BIT
 #define RADEON_TILING_SWAP_32BIT                       0x8
 /* this object requires a surface when mapped - i.e. front buffer */
 #define RADEON_TILING_SURFACE                          0x10
 #define RADEON_TILING_MICRO_SQUARE                     0x20
 #define RADEON_TILING_EG_BANKW_SHIFT                   8
 #define RADEON_TILING_EG_BANKW_MASK                    0xf
@@ -936,20 +965,21 @@ struct drm_radeon_gem_va {
 /* The third dword of RADEON_CHUNK_ID_FLAGS is a sint32 that sets the priority 
*/
 /* 0 = normal, + = higher priority, - = lower priority */
 
 struct drm_radeon_cs_chunk {
        uint32_t                chunk_id;
        uint32_t                length_dw;
        uint64_t                chunk_data;
 };
 
 /* drm_radeon_cs_reloc.flags */
+#define RADEON_RELOC_PRIO_MASK         (0xf << 0)
 
 struct drm_radeon_cs_reloc {
        uint32_t                handle;
        uint32_t                read_domains;
        uint32_t                write_domain;
        uint32_t                flags;
 };
 
 struct drm_radeon_cs {
        uint32_t                num_chunks;
@@ -1001,21 +1031,27 @@ struct drm_radeon_cs {
 #define RADEON_INFO_SI_BACKEND_ENABLED_MASK    0x19
 /* max engine clock - needed for OpenCL */
 #define RADEON_INFO_MAX_SCLK           0x1a
 /* version of VCE firmware */
 #define RADEON_INFO_VCE_FW_VERSION     0x1b
 /* version of VCE feedback */
 #define RADEON_INFO_VCE_FB_VERSION     0x1c
 #define RADEON_INFO_NUM_BYTES_MOVED    0x1d
 #define RADEON_INFO_VRAM_USAGE         0x1e
 #define RADEON_INFO_GTT_USAGE          0x1f
-
+#define RADEON_INFO_ACTIVE_CU_COUNT    0x20
+#define RADEON_INFO_CURRENT_GPU_TEMP   0x21
+#define RADEON_INFO_CURRENT_GPU_SCLK   0x22
+#define RADEON_INFO_CURRENT_GPU_MCLK   0x23
+#define RADEON_INFO_READ_REG           0x24
+#define RADEON_INFO_VA_UNMAP_WORKING   0x25
+#define RADEON_INFO_GPU_RESET_COUNTER  0x26
 
 struct drm_radeon_info {
        uint32_t                request;
        uint32_t                pad;
        uint64_t                value;
 };
 
 /* Those correspond to the tile index to use, this is to explicitly state
  * the API that is implicitly defined by the tile mode array.
  */
@@ -1027,20 +1063,17 @@ struct drm_radeon_info {
 #define SI_TILE_MODE_COLOR_2D_32BPP            16
 #define SI_TILE_MODE_COLOR_2D_64BPP            17
 #define SI_TILE_MODE_COLOR_2D_SCANOUT_16BPP    11
 #define SI_TILE_MODE_COLOR_2D_SCANOUT_32BPP    12
 #define SI_TILE_MODE_DEPTH_STENCIL_1D          4
 #define SI_TILE_MODE_DEPTH_STENCIL_2D          0
 #define SI_TILE_MODE_DEPTH_STENCIL_2D_2AA      3
 #define SI_TILE_MODE_DEPTH_STENCIL_2D_4AA      3
 #define SI_TILE_MODE_DEPTH_STENCIL_2D_8AA      2
 
-#define CIK_TILE_MODE_COLOR_2D                 14
-#define CIK_TILE_MODE_COLOR_2D_SCANOUT         10
-#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_64       0
-#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_128      1
-#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_256      2
-#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_512      3
-#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_ROW_SIZE 4
 #define CIK_TILE_MODE_DEPTH_STENCIL_1D         5
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index 1424660..16a8b00 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -35,20 +35,28 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
 #include "drm.h"
 #include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "radeon_drm.h"
 #include "radeon_surface.h"
 
+#define CIK_TILE_MODE_COLOR_2D                 14
+#define CIK_TILE_MODE_COLOR_2D_SCANOUT         10
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_64       0
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_128      1
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_256      2
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_512      3
+#define CIK_TILE_MODE_DEPTH_STENCIL_2D_TILESPLIT_ROW_SIZE 4
+
 #define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1))
 #define MAX2(A, B)              ((A) > (B) ? (A) : (B))
 #define MIN2(A, B)              ((A) < (B) ? (A) : (B))
 
 /* keep this private */
 enum radeon_family {
     CHIP_UNKNOWN,
     CHIP_R600,
     CHIP_RV610,
     CHIP_RV630,
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to