#include "freedreno_util.h"
#include "freedreno/fdl/freedreno_layout.h"
+enum fd_lrz_direction {
+ FD_LRZ_UNKNOWN,
+ /* Depth func less/less-than: */
+ FD_LRZ_LESS,
+ /* Depth func greater/greater-than: */
+ FD_LRZ_GREATER,
+};
+
struct fd_resource {
struct pipe_resource base;
struct fd_bo *bo;
* fdl_layout
*/
bool lrz_valid : 1;
+ enum fd_lrz_direction lrz_direction : 2;
uint16_t lrz_width; // for lrz clear, does this differ from lrz_pitch?
uint16_t lrz_height;
uint16_t lrz_pitch;
struct fd_bo *lrz;
};
+struct fd_memory_object {
+ struct pipe_memory_object b;
+ struct fd_bo *bo;
+};
+
static inline struct fd_resource *
fd_resource(struct pipe_resource *ptex)
{
return (const struct fd_resource *)ptex;
}
+static inline struct fd_memory_object *
+fd_memory_object (struct pipe_memory_object *pmemobj)
+{
+ return (struct fd_memory_object *)pmemobj;
+}
+
static inline bool
pending(struct fd_resource *rsc, bool write)
{
return fdl_layer_stride(&rsc->layout, level);
}
+/* get pitch (in bytes) for specified mipmap level */
+static inline uint32_t
+fd_resource_pitch(struct fd_resource *rsc, unsigned level)
+{
+ if (is_a2xx(fd_screen(rsc->base.screen)))
+ return fdl2_pitch(&rsc->layout, level);
+
+ return fdl_pitch(&rsc->layout, level);
+}
+
/* get offset for specified mipmap level and texture/array layer */
static inline uint32_t
fd_resource_offset(struct fd_resource *rsc, unsigned level, unsigned layer)
uint32_t fd_setup_slices(struct fd_resource *rsc);
void fd_resource_resize(struct pipe_resource *prsc, uint32_t sz);
void fd_resource_uncompress(struct fd_context *ctx, struct fd_resource *rsc);
+void fd_resource_dump(struct fd_resource *rsc, const char *name);
bool fd_render_condition_check(struct pipe_context *pctx);