Lines Matching defs:sna
32 #include "sna.h"
114 sna_render_get_gradient(struct sna *sna,
117 struct sna_render *render = &sna->render;
188 bo = kgem_create_linear(&sna->kgem, width*4, 0);
195 kgem_bo_write(&sna->kgem, bo, pixman_image_get_data(image), 4*width);
221 kgem_bo_destroy(&sna->kgem, cache->bo);
228 sna_render_flush_solid(struct sna *sna)
230 struct sna_solid_cache *cache = &sna->render.solid_cache;
237 kgem_bo_write(&sna->kgem, cache->cache_bo,
243 sna_render_finish_solid(struct sna *sna, bool force)
245 struct sna_solid_cache *cache = &sna->render.solid_cache;
256 sna_render_flush_solid(sna);
262 kgem_bo_destroy(&sna->kgem, cache->bo[i]);
268 cache->cache_bo = kgem_create_linear(&sna->kgem, sizeof(cache->color), 0);
277 cache->bo[cache->last] = kgem_create_proxy(&sna->kgem, cache->cache_bo,
286 kgem_bo_destroy(&sna->kgem, old);
290 sna_render_get_solid(struct sna *sna, uint32_t color)
292 struct sna_solid_cache *cache = &sna->render.solid_cache;
298 return kgem_bo_reference(sna->render.alpha_cache.bo[color>>24]);
302 return kgem_bo_reference(sna->render.alpha_cache.bo[255+7]);
332 return kgem_bo_reference(sna->render.alpha_cache.bo[255+v]);
356 sna_render_finish_solid(sna, i == ARRAY_SIZE(cache->color));
365 cache->bo[i] = kgem_create_proxy(&sna->kgem, cache->cache_bo,
374 static bool sna_alpha_cache_init(struct sna *sna)
376 struct sna_alpha_cache *cache = &sna->render.alpha_cache;
382 cache->cache_bo = kgem_create_linear(&sna->kgem, sizeof(color), 0);
388 cache->bo[i] = kgem_create_proxy(&sna->kgem,
409 cache->bo[j] = kgem_create_proxy(&sna->kgem,
419 return kgem_bo_write(&sna->kgem, cache->cache_bo, color, sizeof(color));
422 static bool sna_solid_cache_init(struct sna *sna)
424 struct sna_solid_cache *cache = &sna->render.solid_cache;
429 kgem_create_linear(&sna->kgem, 4096, 0);
441 bool sna_gradients_create(struct sna *sna)
445 if (unlikely(sna->kgem.wedged))
448 if (!sna_alpha_cache_init(sna))
451 if (!sna_solid_cache_init(sna))
457 void sna_gradients_close(struct sna *sna)
464 if (sna->render.alpha_cache.bo[i]) {
465 kgem_bo_destroy(&sna->kgem, sna->render.alpha_cache.bo[i]);
466 sna->render.alpha_cache.bo[i] = NULL;
469 if (sna->render.alpha_cache.cache_bo) {
470 kgem_bo_destroy(&sna->kgem, sna->render.alpha_cache.cache_bo);
471 sna->render.alpha_cache.cache_bo = NULL;
474 if (sna->render.solid_cache.cache_bo)
475 kgem_bo_destroy(&sna->kgem, sna->render.solid_cache.cache_bo);
476 for (i = 0; i < sna->render.solid_cache.size; i++) {
477 if (sna->render.solid_cache.bo[i])
478 kgem_bo_destroy(&sna->kgem, sna->render.solid_cache.bo[i]);
480 sna->render.solid_cache.cache_bo = 0;
481 sna->render.solid_cache.size = 0;
482 sna->render.solid_cache.dirty = 0;
484 for (i = 0; i < sna->render.gradient_cache.size; i++) {
486 &sna->render.gradient_cache.cache[i];
489 kgem_bo_destroy(&sna->kgem, cache->bo);
495 sna->render.gradient_cache.size = 0;