struct render_t * fb_create(struct fb_t * fb) { struct resource_t * res = (struct resource_t *)fb->priv; struct sandbox_fb_data_t * dat = (struct sandbox_fb_data_t *)res->data; struct sandbox_fb_surface_t * surface; struct render_t * render; surface = malloc(sizeof(struct sandbox_fb_surface_t)); if(!surface) return NULL; if(sandbox_sdl_fb_surface_create(dat->priv, surface) != 0) { free(surface); return NULL; } render = malloc(sizeof(struct render_t)); if(!render) { sandbox_sdl_fb_surface_destroy(dat->priv, surface); free(surface); return NULL; } render->width = surface->width; render->height = surface->height; render->pitch = surface->pitch; render->format = PIXEL_FORMAT_ARGB32; render->pixels = surface->pixels; render->pixlen = surface->height * surface->pitch; render->priv = surface; render->clear = sw_render_clear; render->snapshot = sw_render_snapshot; render->alloc_texture = sw_render_alloc_texture; render->alloc_texture_similar = sw_render_alloc_texture_similar; render->free_texture = sw_render_free_texture; render->fill_texture = sw_render_fill_texture; render->blit_texture = sw_render_blit_texture; sw_render_create_data(render); return render; }
struct render_t * fb_create(struct fb_t * fb) { struct resource_t * res = (struct resource_t *)fb->priv; struct realview_fb_data_t * dat = (struct realview_fb_data_t *)res->data; struct render_t * render; void * pixels; size_t pixlen; pixlen = dat->width * dat->height * dat->bytes_per_pixel; pixels = dma_zalloc(pixlen); if(!pixels) return NULL; render = malloc(sizeof(struct render_t)); if(!render) { free(pixels); return NULL; } render->width = dat->width; render->height = dat->height; render->pitch = (dat->width * dat->bytes_per_pixel + 0x3) & ~0x3; render->format = PIXEL_FORMAT_ARGB32; render->pixels = pixels; render->pixlen = pixlen; render->priv = NULL; render->clear = sw_render_clear; render->snapshot = sw_render_snapshot; render->alloc_texture = sw_render_alloc_texture; render->alloc_texture_similar = sw_render_alloc_texture_similar; render->free_texture = sw_render_free_texture; render->fill_texture = sw_render_fill_texture; render->blit_texture = sw_render_blit_texture; sw_render_create_data(render); return render; }
struct render_t * fb_create(struct fb_t * fb) { struct fb_bcm2837_pdata_t * pdat = (struct fb_bcm2837_pdata_t *)fb->priv; struct render_t * render; void * pixels; size_t pixlen; pixlen = pdat->width * pdat->height * (pdat->bpp / 8); pixels = memalign(4, pixlen); if(!pixels) return NULL; render = malloc(sizeof(struct render_t)); if(!render) { free(pixels); return NULL; } render->width = pdat->width; render->height = pdat->height; render->pitch = (pdat->width * (pdat->bpp / 8) + 0x3) & ~0x3; render->format = PIXEL_FORMAT_ARGB32; render->pixels = pixels; render->pixlen = pixlen; render->priv = NULL; render->clear = sw_render_clear; render->snapshot = sw_render_snapshot; render->alloc_texture = sw_render_alloc_texture; render->alloc_texture_similar = sw_render_alloc_texture_similar; render->free_texture = sw_render_free_texture; render->fill_texture = sw_render_fill_texture; render->blit_texture = sw_render_blit_texture; sw_render_create_data(render); return render; }