#ifndef __NOUVEAU_SYNC_H__ #define __NOUVEAU_SYNC_H__ #include "nouveau_buffers.h" #define NV_NOTIFY_TIME_0 0x00000000 #define NV_NOTIFY_TIME_1 0x00000004 #define NV_NOTIFY_RETURN_VALUE 0x00000008 #define NV_NOTIFY_STATE 0x0000000C #define NV_NOTIFY_STATE_STATUS_MASK 0xFF000000 #define NV_NOTIFY_STATE_STATUS_SHIFT 24 #define NV_NOTIFY_STATE_STATUS_COMPLETED 0x00 #define NV_NOTIFY_STATE_STATUS_IN_PROCESS 0x01 #define NV_NOTIFY_STATE_ERROR_CODE_MASK 0x0000FFFF #define NV_NOTIFY_STATE_ERROR_CODE_SHIFT 0 /* Methods that (hopefully) all objects have */ #define NV_NOP 0x00000100 #define NV_NOTIFY 0x00000104 #define NV_NOTIFY_STYLE_WRITE_ONLY 0 typedef struct nouveau_notifier_t { GLuint handle; nouveau_mem *mem; } nouveau_notifier; extern nouveau_notifier *nouveau_notifier_new(GLcontext *, GLuint handle); extern void nouveau_notifier_destroy(GLcontext *, nouveau_notifier *); extern void nouveau_notifier_reset(nouveau_notifier *); extern GLboolean nouveau_notifier_wait_status(nouveau_notifier *r, GLuint status, GLuint timeout); extern void nouveau_notifier_wait_nop(GLcontext *ctx, nouveau_notifier *, GLuint subc); extern GLboolean nouveauSyncInitFuncs(GLcontext *ctx); #endif