summaryrefslogtreecommitdiff
path: root/src/gallium/winsys/drm/radeon/core/radeon_winsys.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/drm/radeon/core/radeon_winsys.h')
-rw-r--r--src/gallium/winsys/drm/radeon/core/radeon_winsys.h86
1 files changed, 57 insertions, 29 deletions
diff --git a/src/gallium/winsys/drm/radeon/core/radeon_winsys.h b/src/gallium/winsys/drm/radeon/core/radeon_winsys.h
index c8e725cff0..4901080ca7 100644
--- a/src/gallium/winsys/drm/radeon/core/radeon_winsys.h
+++ b/src/gallium/winsys/drm/radeon/core/radeon_winsys.h
@@ -30,17 +30,16 @@
#ifndef RADEON_WINSYS_H
#define RADEON_WINSYS_H
-#include "r300_winsys.h"
+#include "util/u_simple_screen.h"
-struct radeon_libdrm_winsys {
- /* Parent class. */
- struct r300_winsys_screen base;
-
- struct pb_manager *kman;
+struct radeon_winsys_priv;
- struct pb_manager *mman;
+struct radeon_winsys {
+ /* Parent class. */
+ struct pipe_winsys base;
- struct pb_manager *cman;
+ /* Winsys private */
+ struct radeon_winsys_priv* priv;
/* PCI ID */
uint32_t pci_id;
@@ -57,27 +56,56 @@ struct radeon_libdrm_winsys {
/* VRAM size. */
uint32_t vram_size;
- /* DRM FD */
- int fd;
-
- /* Radeon BO manager. */
- struct radeon_bo_manager *bom;
-
- /* Radeon CS manager. */
- struct radeon_cs_manager *csm;
-
- /* Current CS. */
- struct radeon_cs *cs;
-
- /* Flush CB */
- void (*flush_cb)(void *);
- void *flush_data;
+ /* Add a pipe_buffer to the list of buffer objects to validate. */
+ boolean (*add_buffer)(struct radeon_winsys* winsys,
+ struct pipe_buffer* pbuffer,
+ uint32_t rd,
+ uint32_t wd);
+
+ /* Revalidate all currently setup pipe_buffers.
+ * Returns TRUE if a flush is required. */
+ boolean (*validate)(struct radeon_winsys* winsys);
+
+ /* Check to see if there's room for commands. */
+ boolean (*check_cs)(struct radeon_winsys* winsys, int size);
+
+ /* Start a command emit. */
+ void (*begin_cs)(struct radeon_winsys* winsys,
+ int size,
+ const char* file,
+ const char* function,
+ int line);
+
+ /* Write a dword to the command buffer. */
+ void (*write_cs_dword)(struct radeon_winsys* winsys, uint32_t dword);
+
+ /* Write a relocated dword to the command buffer. */
+ void (*write_cs_reloc)(struct radeon_winsys* winsys,
+ struct pipe_buffer* bo,
+ uint32_t rd,
+ uint32_t wd,
+ uint32_t flags);
+
+ /* Finish a command emit. */
+ void (*end_cs)(struct radeon_winsys* winsys,
+ const char* file,
+ const char* function,
+ int line);
+
+ /* Flush the CS. */
+ void (*flush_cs)(struct radeon_winsys* winsys);
+
+ /* winsys flush - callback from winsys when flush required */
+ void (*set_flush_cb)(struct radeon_winsys *winsys,
+ void (*flush_cb)(void *), void *data);
+
+ void (*reset_bos)(struct radeon_winsys *winsys);
+
+ void (*buffer_set_tiling)(struct radeon_winsys* winsys,
+ struct pipe_buffer* buffer,
+ uint32_t pitch,
+ boolean microtiled,
+ boolean macrotiled);
};
-static INLINE struct radeon_libdrm_winsys *
-radeon_winsys_screen(struct r300_winsys_screen *base)
-{
- return (struct radeon_libdrm_winsys *)base;
-}
-
#endif