static void * _output_setup(int width, int height, int rotation, HWND window, int depth, int fullscreen) { Render_Engine *re; re = (Render_Engine *)calloc(1, sizeof(Render_Engine)); if (!re) return NULL; /* if we haven't initialized - init (automatic abort if already done) */ evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); if ((re->d3d = evas_direct3d_init(window, depth, fullscreen)) == 0) { free(re); return NULL; } re->width = width; re->height = height; return re; }
/* internal engine routines */ static void * _output_setup(int w, int h, int rot, int vt, int dev, int refresh) { Render_Engine *re; re = calloc(1, sizeof(Render_Engine)); if (!re) return NULL; /* if we haven't initialized - init (automatic abort if already done) */ evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); evas_fb_outbuf_fb_init(); /* get any stored performance metrics from device (xserver) */ re->ob = evas_fb_outbuf_fb_setup_fb(w, h, rot, OUTBUF_DEPTH_INHERIT, vt, dev, refresh); re->tb = evas_common_tilebuf_new(evas_fb_outbuf_fb_get_width(re->ob), evas_fb_outbuf_fb_get_height(re->ob)); /* no backbuf! */ evas_fb_outbuf_fb_set_have_backbuf(re->ob, 0); /* in preliminary tests 16x16 gave highest framerates */ evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); return re; }
static void * eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth) { Render_Engine *re; re = calloc(1, sizeof(Render_Engine)); if (!re) return NULL; re->win = eng_window_new(disp, draw, 0 /* FIXME: screen 0 assumption */, vis, cmap, depth, w, h); if (!re->win) { free(re); return NULL; } INF("CAIRO: cairo window setup done."); evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); return re; }
void evas_common_init(void) { evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); }
/* internal engine routines */ static void * _output_setup(int w, int h, void *dest_buffer, int dest_buffer_row_bytes, int depth_type, int use_color_key, int alpha_threshold, int color_key_r, int color_key_g, int color_key_b, void *(*new_update_region) (int x, int y, int w, int h, int *row_bytes), void (*free_update_region) (int x, int y, int w, int h, void *data), void *(*switch_buffer) (void *data, void *dest_buffer), void *switch_data ) { Render_Engine *re; re = calloc(1, sizeof(Render_Engine)); if (!re) return NULL; /* if we haven't initialized - init (automatic abort if already done) */ evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); evas_buffer_outbuf_buf_init(); { Outbuf_Depth dep; DATA32 color_key = 0; dep = OUTBUF_DEPTH_BGR_24BPP_888_888; if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_ARGB32) dep = OUTBUF_DEPTH_ARGB_32BPP_8888_8888; else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_RGB32) dep = OUTBUF_DEPTH_RGB_32BPP_888_8888; else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_BGRA32) dep = OUTBUF_DEPTH_BGRA_32BPP_8888_8888; else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_RGB24) dep = OUTBUF_DEPTH_RGB_24BPP_888_888; else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_BGR24) dep = OUTBUF_DEPTH_BGR_24BPP_888_888; R_VAL(&color_key) = color_key_r; G_VAL(&color_key) = color_key_g; B_VAL(&color_key) = color_key_b; A_VAL(&color_key) = 0; re->ob = evas_buffer_outbuf_buf_setup_fb(w, h, dep, dest_buffer, dest_buffer_row_bytes, use_color_key, color_key, alpha_threshold, new_update_region, free_update_region, switch_buffer, switch_data); } re->tb = evas_common_tilebuf_new(w, h); evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); eina_inarray_step_set(&re->previous_rects, sizeof (Eina_Inarray), sizeof (Eina_Rectangle), 8); return re; }
/* internal engine routines */ static void * _output_setup(int w, int h) { Render_Engine *re; int i; u16 width, height; DATA32 *image_data = NULL; int image_size; printf ("_output_setup called : %dx%d\n", w, h); re = calloc(1, sizeof(Render_Engine)); if (!re) return NULL; /* Allocate a 1Mb buffer, alligned to a 1Mb boundary * to be our shared IO memory with the RSX. */ re->host_addr = memalign (1024 * 1024, HOST_SIZE); if (re->host_addr == NULL) { free (re); return NULL; } re->context = initScreen (re->host_addr, HOST_SIZE); if (re->context == NULL) { free (re->host_addr); free (re); return NULL; } width = w; height = h; setResolution (re->context, &width, &height); re->currentBuffer = 0; re->width = width; re->height = height; for (i = 0; i < MAX_BUFFERS; i++) makeBuffer (&re->buffers[i], width, height, i); flipBuffer(re->context, MAX_BUFFERS - 1); /* if we haven't initialized - init (automatic abort if already done) */ evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); re->tb = evas_common_tilebuf_new(w, h); /* in preliminary tests 16x16 gave highest framerates */ evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); /* Allocate our memaligned backbuffer */ image_size = ((w * h * sizeof(u32)) + 0xfffff) & - 0x100000; image_data = memalign (1024 * 1024, image_size); re->rgba_image = (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(), w, h, image_data, 1, EVAS_COLORSPACE_ARGB8888); gcmMapMainMemory(image_data, image_size, &re->rgba_image_offset); return re; }
static void * _output_setup(int width, int height, int rot, HWND window, int depth, unsigned int borderless, unsigned int fullscreen, unsigned int region) { Render_Engine *re; re = calloc(1, sizeof(Render_Engine)); if (!re) return NULL; /* if we haven't initialized - init (automatic abort if already done) */ evas_common_cpu_init(); evas_common_blend_init(); evas_common_image_init(); evas_common_convert_init(); evas_common_scale_init(); evas_common_rectangle_init(); evas_common_polygon_init(); evas_common_line_init(); evas_common_font_init(); evas_common_draw_init(); evas_common_tilebuf_init(); evas_software_gdi_outbuf_init(); if (width <= 0) width = 1; if (height <= 0) height = 1; re->ob = evas_software_gdi_outbuf_setup(width, height, rot, OUTBUF_DEPTH_INHERIT, window, depth, borderless, fullscreen, region, 0, 0); if (!re->ob) { free(re); return NULL; } /* for updates return 1 big buffer, but only use portions of it, also cache it and keep it around until an idle_flush */ /* disable for now - i am hunting down why some expedite tests are slower, * as well as shaped stuff is broken and probable non-32bpp is broken as * convert funcs dont do the right thing * re->ob->onebuf = 1; */ re->tb = evas_common_tilebuf_new(width, height); if (!re->tb) { evas_software_gdi_outbuf_free(re->ob); free(re); return NULL; } /* in preliminary tests 16x16 gave highest framerates */ evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE); return re; }