#include "drm-uapi/drm.h"
#include "util/u_range.h"
+#define LAYOUT_CONVERT_THRESHOLD 8
+
struct panfrost_resource {
struct pipe_resource base;
struct {
/* Internal layout (tiled?) */
enum mali_texture_layout layout;
+ /* Whether the layout can be changed */
+ bool layout_constant;
+
/* Is transaciton elimination enabled? */
bool checksummed;
+ /* Used to decide when to convert to another layout */
+ uint16_t layout_updates;
+
enum pipe_format internal_format;
/* Cached min/max values for index buffers */
mali_ptr
panfrost_get_texture_address(
struct panfrost_resource *rsrc,
- unsigned level, unsigned face);
+ unsigned level, unsigned face, unsigned sample);
-void panfrost_resource_screen_init(struct panfrost_screen *screen);
+void panfrost_resource_screen_init(struct pipe_screen *screen);
void panfrost_resource_context_init(struct pipe_context *pctx);
void
panfrost_resource_hint_layout(
- struct panfrost_screen *screen,
+ struct panfrost_device *dev,
struct panfrost_resource *rsrc,
enum mali_texture_layout layout,
signed weight);