#define ETNAVIV_DRMIF_H_
#include <xf86drm.h>
+#include <stdbool.h>
#include <stdint.h>
struct etna_bo;
struct etna_device *etna_device_ref(struct etna_device *dev);
void etna_device_del(struct etna_device *dev);
int etna_device_fd(struct etna_device *dev);
+bool etnaviv_device_softpin_capable(struct etna_device *dev);
/* gpu functions:
*/
uint32_t etna_bo_handle(struct etna_bo *bo);
int etna_bo_dmabuf(struct etna_bo *bo);
uint32_t etna_bo_size(struct etna_bo *bo);
+uint32_t etna_bo_gpu_va(struct etna_bo *bo);
void * etna_bo_map(struct etna_bo *bo);
int etna_bo_cpu_prep(struct etna_bo *bo, uint32_t op);
void etna_bo_cpu_fini(struct etna_bo *bo);
void *priv);
void etna_cmd_stream_del(struct etna_cmd_stream *stream);
uint32_t etna_cmd_stream_timestamp(struct etna_cmd_stream *stream);
-void etna_cmd_stream_flush(struct etna_cmd_stream *stream);
-void etna_cmd_stream_flush2(struct etna_cmd_stream *stream, int in_fence_fd,
+void etna_cmd_stream_flush(struct etna_cmd_stream *stream, int in_fence_fd,
int *out_fence_fd);
+void etna_cmd_stream_force_flush(struct etna_cmd_stream *stream);
static inline uint32_t etna_cmd_stream_avail(struct etna_cmd_stream *stream)
{
return stream->size - stream->offset - END_CLEARANCE;
}
+void etna_cmd_stream_realloc(struct etna_cmd_stream *stream, size_t n);
+
static inline void etna_cmd_stream_reserve(struct etna_cmd_stream *stream, size_t n)
{
if (etna_cmd_stream_avail(stream) < n)
- etna_cmd_stream_flush(stream);
+ etna_cmd_stream_realloc(stream, n);
}
static inline void etna_cmd_stream_emit(struct etna_cmd_stream *stream, uint32_t data)
};
void etna_cmd_stream_reloc(struct etna_cmd_stream *stream, const struct etna_reloc *r);
+void etna_cmd_stream_ref_bo(struct etna_cmd_stream *stream,
+ struct etna_bo *bo, uint32_t flags);
/* performance monitoring functions:
*/