X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fvc4%2Fvc4_simulator_validate.h;h=1352c9bafd242c6d450b51d6a82a9af839a3e1b5;hb=774a556b6dc0d49f9f29c438349a66e69062e6e4;hp=d6c2aec51c1d0eb925378ef1bd112d228540a13c;hpb=0b96a086cbb4bcf0a5aab1fee6d77c1e40295297;p=mesa.git diff --git a/src/gallium/drivers/vc4/vc4_simulator_validate.h b/src/gallium/drivers/vc4/vc4_simulator_validate.h index d6c2aec51c1..1352c9bafd2 100644 --- a/src/gallium/drivers/vc4/vc4_simulator_validate.h +++ b/src/gallium/drivers/vc4/vc4_simulator_validate.h @@ -34,7 +34,7 @@ #include "vc4_context.h" #include "vc4_qpu_defines.h" -struct exec_info; +struct vc4_exec_info; #define DRM_INFO(...) fprintf(stderr, __VA_ARGS__) #define DRM_ERROR(...) fprintf(stderr, __VA_ARGS__) @@ -43,9 +43,28 @@ struct exec_info; #define kfree(ptr) free(ptr) #define krealloc(ptr, size, args) realloc(ptr, size) #define roundup(x, y) align(x, y) +#define round_up(x, y) align(x, y) #define max(x, y) MAX2(x, y) -#define min(x, y) MiN2(x, y) +#define min(x, y) MIN2(x, y) #define BUG_ON(condition) assert(!(condition)) +#define BIT(bit) (1u << bit) + +/* Unsigned long-based bitmap interface in the linux kernel */ +#define BITMAP_WORDBITS (sizeof(unsigned long) * 8) +#define BITS_TO_LONGS(bits) (roundup(bits, BITMAP_WORDBITS) / \ + sizeof(unsigned long)) +static inline bool +test_bit(unsigned int bit, unsigned long *addr) +{ + return addr[bit / BITMAP_WORDBITS] & (1ul << (bit % BITMAP_WORDBITS)); +} + +static inline bool +set_bit(unsigned int bit, unsigned long *addr) +{ + return addr[bit / BITMAP_WORDBITS] |= (1ul << (bit % BITMAP_WORDBITS)); +} + static inline int copy_from_user(void *dst, void *src, size_t size) @@ -63,21 +82,33 @@ struct drm_device { uint32_t simulator_mem_next; }; -struct drm_gem_cma_object { - struct vc4_bo *bo; +struct drm_gem_object { + size_t size; + struct drm_device *dev; +}; - struct { - uint32_t size; - } base; +struct drm_gem_cma_object { + struct drm_gem_object base; uint32_t paddr; void *vaddr; }; +struct drm_vc4_bo { + struct drm_gem_cma_object base; + struct vc4_bo *bo; + struct vc4_validated_shader_info *validated_shader; + struct list_head unref_head; +}; + +static inline struct drm_vc4_bo *to_vc4_bo(struct drm_gem_object *obj) +{ + return (struct drm_vc4_bo *)obj; +} struct drm_gem_cma_object * drm_gem_cma_create(struct drm_device *dev, size_t size); int -vc4_cl_validate(struct drm_device *dev, struct exec_info *exec); +vc4_cl_validate(struct drm_device *dev, struct vc4_exec_info *exec); #endif /* VC4_SIMULATOR_VALIDATE_H */