/* When we are rendering to a texture, we need a differently tiled resource */
struct pipe_resource *texture;
+ /*
+ * If imported resources have an render/sampler incompatible tiling, we keep
+ * them as an external resource, which is blitted as needed.
+ */
+ struct pipe_resource *external;
enum etna_resource_status status;
static inline bool
etna_resource_needs_flush(struct etna_resource *res)
{
- return (int)(res->seqno - res->flush_seqno) > 0;
+ return res->ts_bo && ((int)(res->seqno - res->flush_seqno) > 0);
}
/* is the resource only used on the sampler? */
etna_resource_used(struct etna_context *ctx, struct pipe_resource *prsc,
enum etna_resource_status status);
-void
-etna_resource_wait(struct pipe_context *ctx, struct etna_resource *rsc);
-
static inline void
resource_read(struct etna_context *ctx, struct pipe_resource *prsc)
{
struct pipe_resource *
etna_resource_alloc(struct pipe_screen *pscreen, unsigned layout,
- const struct pipe_resource *templat);
+ uint64_t modifier, const struct pipe_resource *templat);
void
etna_resource_screen_init(struct pipe_screen *pscreen);