Lines Matching refs:screen
70 { "screen", DEBUG_SCREEN, NULL },
104 llvmpipe_get_vendor(struct pipe_screen *screen)
111 llvmpipe_get_name(struct pipe_screen *screen)
113 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
119 llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
202 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
214 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
259 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
366 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
370 return u_pipe_screen_get_param_defaults(screen, param);
375 llvmpipe_get_shader_param(struct pipe_screen *screen,
379 struct llvmpipe_screen *lscreen = llvmpipe_screen(screen);
434 llvmpipe_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
638 llvmpipe_finalize_nir(struct pipe_screen *screen,
647 llvmpipe_get_compiler_options(struct pipe_screen *screen,
668 struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
669 struct sw_winsys *winsys = screen->winsys;
831 struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
832 struct sw_winsys *winsys = screen->winsys;
847 struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
848 struct sw_winsys *winsys = screen->winsys;
850 if (screen->cs_tpool)
851 lp_cs_tpool_destroy(screen->cs_tpool);
853 if (screen->rast)
854 lp_rast_destroy(screen->rast);
856 lp_jit_screen_cleanup(screen);
859 printf("disk shader cache: hits = %u, misses = %u\n", screen->num_disk_shader_cache_hits,
860 screen->num_disk_shader_cache_misses);
861 disk_cache_destroy(screen->disk_shader_cache);
867 mtx_destroy(&screen->rast_mutex);
868 mtx_destroy(&screen->cs_mutex);
869 FREE(screen);
879 llvmpipe_fence_reference(struct pipe_screen *screen,
894 llvmpipe_fence_finish(struct pipe_screen *screen,
930 static void lp_disk_cache_create(struct llvmpipe_screen *screen)
947 screen->disk_shader_cache = disk_cache_create("llvmpipe", cache_id, 0);
952 struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
954 return screen->disk_shader_cache;
957 void lp_disk_cache_find_shader(struct llvmpipe_screen *screen,
963 if (!screen->disk_shader_cache)
965 disk_cache_compute_key(screen->disk_shader_cache, ir_sha1_cache_key, 20, sha1);
968 uint8_t *buffer = disk_cache_get(screen->disk_shader_cache, sha1, &binary_size);
971 p_atomic_inc(&screen->num_disk_shader_cache_misses);
976 p_atomic_inc(&screen->num_disk_shader_cache_hits);
979 void lp_disk_cache_insert_shader(struct llvmpipe_screen *screen,
985 if (!screen->disk_shader_cache || !cache->data_size || cache->dont_cache)
987 disk_cache_compute_key(screen->disk_shader_cache, ir_sha1_cache_key, 20, sha1);
988 disk_cache_put(screen->disk_shader_cache, sha1, cache->data, cache->data_size, NULL);
992 llvmpipe_screen_late_init(struct llvmpipe_screen *screen)
995 mtx_lock(&screen->late_mutex);
997 if (screen->late_init_done)
1000 screen->rast = lp_rast_create(screen->num_threads);
1001 if (!screen->rast) {
1006 screen->cs_tpool = lp_cs_tpool_create(screen->num_threads);
1007 if (!screen->cs_tpool) {
1008 lp_rast_destroy(screen->rast);
1013 lp_disk_cache_create(screen);
1014 screen->late_init_done = true;
1016 mtx_unlock(&screen->late_mutex);
1027 struct llvmpipe_screen *screen;
1037 screen = CALLOC_STRUCT(llvmpipe_screen);
1038 if (!screen)
1041 if (!lp_jit_screen_init(screen)) {
1042 FREE(screen);
1046 screen->winsys = winsys;
1048 screen->base.destroy = llvmpipe_destroy_screen;
1050 screen->base.get_name = llvmpipe_get_name;
1051 screen->base.get_vendor = llvmpipe_get_vendor;
1052 screen->base.get_device_vendor = llvmpipe_get_vendor; // TODO should be the CPU vendor
1053 screen->base.get_param = llvmpipe_get_param;
1054 screen->base.get_shader_param = llvmpipe_get_shader_param;
1055 screen->base.get_compute_param = llvmpipe_get_compute_param;
1056 screen->base.get_paramf = llvmpipe_get_paramf;
1057 screen->base.get_compiler_options = llvmpipe_get_compiler_options;
1058 screen->base.is_format_supported = llvmpipe_is_format_supported;
1060 screen->base.context_create = llvmpipe_create_context;
1061 screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
1062 screen->base.fence_reference = llvmpipe_fence_reference;
1063 screen->base.fence_finish = llvmpipe_fence_finish;
1065 screen->base.get_timestamp = llvmpipe_get_timestamp;
1067 screen->base.get_driver_uuid = llvmpipe_get_driver_uuid;
1068 screen->base.get_device_uuid = llvmpipe_get_device_uuid;
1070 screen->base.finalize_nir = llvmpipe_finalize_nir;
1072 screen->base.get_disk_shader_cache = lp_get_disk_shader_cache;
1073 llvmpipe_init_screen_resource_funcs(&screen->base);
1075 screen->allow_cl = !!getenv("LP_CL");
1076 screen->use_tgsi = (LP_DEBUG & DEBUG_TGSI_IR);
1077 screen->num_threads = util_get_cpu_caps()->nr_cpus > 1 ? util_get_cpu_caps()->nr_cpus : 0;
1079 screen->num_threads = MIN2(screen->num_threads, 2);
1081 screen->num_threads = debug_get_num_option("LP_NUM_THREADS", screen->num_threads);
1082 screen->num_threads = MIN2(screen->num_threads, LP_MAX_THREADS);
1086 snprintf(screen->renderer_string, sizeof(screen->renderer_string), "llvmpipe (LLVM " MESA_LLVM_VERSION_STRING ", %u bits)", lp_native_vector_width );
1088 list_inithead(&screen->ctx_list);
1089 (void) mtx_init(&screen->ctx_mutex, mtx_plain);
1090 (void) mtx_init(&screen->cs_mutex, mtx_plain);
1091 (void) mtx_init(&screen->rast_mutex, mtx_plain);
1093 (void) mtx_init(&screen->late_mutex, mtx_plain);
1095 return &screen->base;