/**********************************************************
- * Copyright 2009 VMware, Inc. All rights reserved.
+ * Copyright 2009-2015 VMware, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
#include "pipe/p_compiler.h"
#include "util/u_atomic.h"
#include "util/u_inlines.h"
+#include "os/os_thread.h"
+#include "pipebuffer/pb_buffer.h"
#define VMW_MAX_PRESENTS 3
/* FIXME: make this thread safe */
unsigned next_present_no;
uint32_t present_fences[VMW_MAX_PRESENTS];
+
+ mtx_t mutex;
+ struct svga_winsys_buffer *buf; /* Current backing guest buffer */
+ uint32_t mapcount; /* Number of mappers */
+ uint32_t map_mode; /* PIPE_TRANSFER_[READ|WRITE] */
+ void *data; /* Pointer to data if mapcount != 0*/
+ boolean shared; /* Shared surface. Never discard */
+ uint32_t size; /* Size of backing buffer */
+ boolean rebind; /* Surface needs a rebind after next unmap */
};
-static INLINE struct svga_winsys_surface *
+static inline struct svga_winsys_surface *
svga_winsys_surface(struct vmw_svga_winsys_surface *surf)
{
assert(!surf || surf->sid != SVGA3D_INVALID_ID);
}
-static INLINE struct vmw_svga_winsys_surface *
+static inline struct vmw_svga_winsys_surface *
vmw_svga_winsys_surface(struct svga_winsys_surface *surf)
{
return (struct vmw_svga_winsys_surface *)surf;
void
vmw_svga_winsys_surface_reference(struct vmw_svga_winsys_surface **pdst,
struct vmw_svga_winsys_surface *src);
-
+void *
+vmw_svga_winsys_surface_map(struct svga_winsys_context *swc,
+ struct svga_winsys_surface *srf,
+ unsigned flags, boolean *retry,
+ boolean *rebind);
+void
+vmw_svga_winsys_surface_unmap(struct svga_winsys_context *swc,
+ struct svga_winsys_surface *srf,
+ boolean *rebind);
#endif /* VMW_SURFACE_H_ */