static DFBResult fbdevInitPool( CoreDFB *core, CoreSurfacePool *pool, void *pool_data, void *pool_local, void *system_data, CoreSurfacePoolDescription *ret_desc ) { DFBResult ret; FBDevPoolData *data = pool_data; FBDevPoolLocalData *local = pool_local; D_DEBUG_AT( FBDev_Surfaces, "%s()\n", __FUNCTION__ ); D_ASSERT( core != NULL ); D_MAGIC_ASSERT( pool, CoreSurfacePool ); D_ASSERT( data != NULL ); D_ASSERT( local != NULL ); D_ASSERT( ret_desc != NULL ); ret = dfb_surfacemanager_create( core, dfb_fbdev->shared->fix.smem_len, &data->manager ); if (ret) return ret; ret_desc->caps = CSPCAPS_NONE; ret_desc->access = CSAF_CPU_READ | CSAF_CPU_WRITE | CSAF_GPU_READ | CSAF_GPU_WRITE | CSAF_SHARED; ret_desc->types = CSTF_LAYER | CSTF_WINDOW | CSTF_CURSOR | CSTF_FONT | CSTF_SHARED | CSTF_EXTERNAL; ret_desc->priority = CSPP_DEFAULT; snprintf( ret_desc->name, DFB_SURFACE_POOL_DESC_NAME_LENGTH, "Frame Buffer Memory" ); local->core = core; D_MAGIC_SET( data, FBDevPoolData ); D_MAGIC_SET( local, FBDevPoolLocalData ); D_ASSERT( dfb_fbdev != NULL ); D_ASSERT( dfb_fbdev->shared != NULL ); dfb_fbdev->shared->manager = data->manager; return DFB_OK; }
static DFBResult devmemInitPool( CoreDFB *core, CoreSurfacePool *pool, void *pool_data, void *pool_local, void *system_data, CoreSurfacePoolDescription *ret_desc ) { DFBResult ret; DevMemPoolData *data = pool_data; DevMemPoolLocalData *local = pool_local; DevMemData *devmem = system_data; D_DEBUG_AT( DevMem_Surfaces, "%s()\n", __FUNCTION__ ); D_ASSERT( core != NULL ); D_MAGIC_ASSERT( pool, CoreSurfacePool ); D_ASSERT( data != NULL ); D_ASSERT( local != NULL ); D_ASSERT( devmem != NULL ); D_ASSERT( devmem->shared != NULL ); D_ASSERT( ret_desc != NULL ); ret = dfb_surfacemanager_create( core, dfb_config->video_length, &data->manager ); if (ret) return ret; ret_desc->caps = CSPCAPS_PHYSICAL | CSPCAPS_VIRTUAL; ret_desc->access[CSAID_CPU] = CSAF_READ | CSAF_WRITE | CSAF_SHARED; ret_desc->access[CSAID_GPU] = CSAF_READ | CSAF_WRITE | CSAF_SHARED; ret_desc->types = CSTF_LAYER | CSTF_WINDOW | CSTF_CURSOR | CSTF_FONT | CSTF_SHARED | CSTF_EXTERNAL; ret_desc->priority = CSPP_DEFAULT; ret_desc->size = dfb_config->video_length; /* For hardware layers */ ret_desc->access[CSAID_LAYER0] = CSAF_READ; ret_desc->access[CSAID_LAYER1] = CSAF_READ; ret_desc->access[CSAID_LAYER2] = CSAF_READ; ret_desc->access[CSAID_LAYER3] = CSAF_READ; ret_desc->access[CSAID_LAYER4] = CSAF_READ; ret_desc->access[CSAID_LAYER5] = CSAF_READ; ret_desc->access[CSAID_LAYER6] = CSAF_READ; ret_desc->access[CSAID_LAYER7] = CSAF_READ; ret_desc->access[CSAID_LAYER8] = CSAF_READ; ret_desc->access[CSAID_LAYER9] = CSAF_READ; ret_desc->access[CSAID_LAYER10] = CSAF_READ; ret_desc->access[CSAID_LAYER11] = CSAF_READ; ret_desc->access[CSAID_LAYER12] = CSAF_READ; ret_desc->access[CSAID_LAYER13] = CSAF_READ; ret_desc->access[CSAID_LAYER14] = CSAF_READ; ret_desc->access[CSAID_LAYER15] = CSAF_READ; snprintf( ret_desc->name, DFB_SURFACE_POOL_DESC_NAME_LENGTH, "/dev/mem" ); local->core = core; local->mem = devmem->mem; D_MAGIC_SET( data, DevMemPoolData ); D_MAGIC_SET( local, DevMemPoolLocalData ); devmem->shared->manager = data->manager; return DFB_OK; }
static DFBResult stmfbdevInitPool (CoreDFB *core, CoreSurfacePool *pool, void *pool_data, void *pool_local, void *system_data, CoreSurfacePoolDescription *ret_desc) { DFBResult ret; STMfbdevPoolData * const data = pool_data; STMfbdevPoolLocalData * const local = pool_local; STMfbdev * const stmfbdev = dfb_system_data (); unsigned int video_len; D_DEBUG_AT (STMfbdev_Surfaces, "%s()\n", __FUNCTION__); D_ASSERT (core != NULL); D_MAGIC_ASSERT (pool, CoreSurfacePool); D_ASSERT (data != NULL); D_ASSERT (local != NULL); D_ASSERT (ret_desc != NULL); (void) local; D_MAGIC_ASSERT (stmfbdev, STMfbdev); D_MAGIC_ASSERT (stmfbdev->shared, STMfbdevSharedData); D_MAGIC_SET (data, STMfbdevPoolData); snprintf (ret_desc->name, DFB_SURFACE_POOL_DESC_NAME_LENGTH, "STMfb Memory"); /* the gfxdriver might have reserved video memory - in which case we have to make sure that the reserved memory is not seen/used by the surface manager */ video_len = dfb_gfxcard_memory_length (); D_INFO ("BDisp/Surfaces: using %ukB of video memory (%d bytes reserved)!\n", video_len / 1024, stmfbdev->shared->fix.smem_len - video_len); ret = dfb_surfacemanager_create (core, video_len, &data->manager); if (ret) return ret; data->physical = stmfbdev->shared->fix.smem_start; ret_desc->caps = CSPCAPS_PHYSICAL | CSPCAPS_VIRTUAL; ret_desc->access[CSAID_CPU] = CSAF_READ | CSAF_WRITE | CSAF_SHARED; ret_desc->access[CSAID_GPU] = CSAF_READ | CSAF_WRITE | CSAF_SHARED; ret_desc->types = (0 | CSTF_LAYER | CSTF_WINDOW | CSTF_CURSOR | CSTF_FONT | CSTF_SHARED | CSTF_EXTERNAL ); ret_desc->priority = CSPP_DEFAULT; ret_desc->size = video_len; /* other accelerators */ ret_desc->access[CSAID_ACCEL0] = CSAF_READ | CSAF_WRITE; ret_desc->access[CSAID_ACCEL1] = CSAF_READ | CSAF_WRITE; ret_desc->access[CSAID_ACCEL2] = CSAF_READ | CSAF_WRITE; ret_desc->access[CSAID_ACCEL3] = CSAF_READ | CSAF_WRITE; ret_desc->access[CSAID_ACCEL4] = CSAF_READ | CSAF_WRITE; ret_desc->access[CSAID_ACCEL5] = CSAF_READ | CSAF_WRITE; /* For hardware layers */ ret_desc->access[CSAID_LAYER0] = CSAF_READ; ret_desc->access[CSAID_LAYER1] = CSAF_READ; ret_desc->access[CSAID_LAYER2] = CSAF_READ; ret_desc->access[CSAID_LAYER3] = CSAF_READ; ret_desc->access[CSAID_LAYER4] = CSAF_READ; ret_desc->access[CSAID_LAYER5] = CSAF_READ; ret_desc->access[CSAID_LAYER6] = CSAF_READ; ret_desc->access[CSAID_LAYER7] = CSAF_READ; ret_desc->access[CSAID_LAYER8] = CSAF_READ; ret_desc->access[CSAID_LAYER9] = CSAF_READ; ret_desc->access[CSAID_LAYER10] = CSAF_READ; ret_desc->access[CSAID_LAYER11] = CSAF_READ; ret_desc->access[CSAID_LAYER12] = CSAF_READ; ret_desc->access[CSAID_LAYER13] = CSAF_READ; ret_desc->access[CSAID_LAYER14] = CSAF_READ; ret_desc->access[CSAID_LAYER15] = CSAF_READ; ret = stmfbdevJoinPool (core, pool, pool_data, pool_local, system_data); if (ret) { stmfbdevDestroyPool (pool, pool_data, pool_local); return ret; } return DFB_OK; }