Lines Matching refs:sna

31 #include "sna.h"
36 static inline bool is_uncached(struct sna *sna,
39 return bo->io || (bo->scanout && !sna->kgem.has_wt);
42 inline static bool can_switch_to_blt(struct sna *sna,
46 if (sna->kgem.ring != KGEM_RENDER)
52 if (!sna->kgem.has_semaphores)
61 if (sna->render_state.gt < 2)
64 return kgem_ring_is_idle(&sna->kgem, KGEM_BLT);
67 inline static bool can_switch_to_render(struct sna *sna,
70 if (sna->kgem.ring == KGEM_RENDER)
76 if (!sna->kgem.has_semaphores)
79 if (bo && !RQ_IS_BLT(bo->rq) && !is_uncached(sna, bo))
82 return !kgem_ring_is_idle(&sna->kgem, KGEM_RENDER);
93 static int prefer_blt_bo(struct sna *sna, struct kgem_bo *bo)
101 if (sna->flags & SNA_POWERSAVE)
104 return bo->tiling == I915_TILING_NONE || is_uncached(sna, bo);
107 inline static bool force_blt_ring(struct sna *sna)
109 if (sna->flags & SNA_POWERSAVE)
112 if (sna->kgem.mode == KGEM_RENDER)
115 if (sna->render_state.gt < 2)
121 inline static bool prefer_blt_ring(struct sna *sna,
128 assert(!force_blt_ring(sna));
131 return can_switch_to_blt(sna, bo, flags);
134 inline static bool prefer_render_ring(struct sna *sna,
137 if (sna->flags & SNA_POWERSAVE)
140 if (sna->render_state.gt < 2)
143 return can_switch_to_render(sna, bo);
147 prefer_blt_composite(struct sna *sna, struct sna_composite_op *tmp)
156 if (force_blt_ring(sna))
163 if (prefer_render_ring(sna, tmp->dst.bo))
166 if (!prefer_blt_ring(sna, tmp->dst.bo, 0))
169 return prefer_blt_bo(sna, tmp->dst.bo) || prefer_blt_bo(sna, tmp->src.bo);
172 static inline bool prefer_blt_fill(struct sna *sna,
182 if (force_blt_ring(sna))
189 if (prefer_render_ring(sna, bo))
192 if (!prefer_blt_ring(sna, bo, 0))
195 if (can_switch_to_blt(sna, bo, 0))
199 return prefer_blt_bo(sna, bo);