Hi Dennis, anyone

I am trying to create virtual surfaces for use by MPEG decoder.
If I keep the DLCAPS_SURFACE flag then I have the following issue:
(-) [Main Thread       4.868] (  504) IDirectFB:         
IDirectFB_GetDisplayLayer( 0x7bf6e8, 3 )
(-) [Main Thread       4.869] (  504) Core/Layers:       
dfb_layer_get_primary_context (Secondary Vid Layer [tmdlVss2], activate) <-
active: -1
(-) [Main Thread       4.869] (  504) Core/Layers:       
dfb_layer_create_context (Secondary Vid Layer [tmdlVss2])
(-) [Main Thread       4.869] (  504) Core/Layers:       
dfb_layer_context_init -> 0x7e5680
(-) [Main Thread       4.870] (  504) Core/WindowStack:  
dfb_windowstack_create( 0x7e5680 )
(-) [Main Thread       4.870] (  504) Core/WindowStack:     -> 0x7e58a0
(-) [Main Thread       4.870] (  504) Core/WindowStack:  
dfb_windowstack_resize( 0x7e58a0, 1280x720 )
(-) [Main Thread       4.870] (  504) Core/Layers:       
dfb_layer_activate_context (Secondary Vid Layer [tmdlVss2], 0x7e5680)
(-) [Main Thread       4.871] (  504) Core/Layers:       
dfb_layer_context_activate (0x7e5680)
(-) [Main Thread       4.871] (  504) Core/WindowStack:  
dfb_windowstack_repaint_all( 0x7e58a0 )
(-) [Main Thread       5.236] (  504) Core/Layers:       
dfb_layer_context_set_configuration (0x7e5680, 0x7e577c)
(-) [Main Thread       5.236] (  504) Core/Layers:       
dfb_layer_context_set_configuration (0x7e5680, 0x7e577c)
(-) [Main Thread       5.237] (  504) Core/Layers:       
dfb_layer_context_set_configuration (0x7e5680, 0x7e577c)
(-) [Main Thread       5.237] (  504) Core/Surface:      
dfb_surface_create( 0x7b9a18, 0x2bbd95dc, 0x2bbd95d8 )
(-) [Main Thread       5.238] (  504) Core/Surface:         -> 1280x720
(-) [Main Thread       5.238] (  504) Core/Surface:         -> UYVY
(-) [Main Thread       5.238] (  504) Core/Surface:         -> caps
0x00000004
(-) [Main Thread       5.238] (  504) Core/SurfBuffer:   
dfb_surface_buffer_new( UYVY )
(-) [Main Thread       5.239] (  504) Core/Layers:        realize_region(
0x7e5bd8 )
(-) [Main Thread       5.239] (  504) Core/Layers:          -> size      
1280x720
(-) [Main Thread       5.239] (  504) Core/Layers:          -> format    
UYVY
(-) [Main Thread       5.239] (  504) Core/Layers:          -> surf caps 
0x00000000
(-) [Main Thread       5.239] (  504) Core/Layers:          -> buffermode 1
(-) [Main Thread       5.239] (  504) Core/Layers:          -> options   
0x00000021
(-) [Main Thread       5.240] (  504) Core/Layers:          -> source    
0,0-1280x720
(-) [Main Thread       5.240] (  504) Core/Layers:          -> dest      
0,0-1280x720
(-) [Main Thread       5.240] (  504) Core/Layers:          -> opacity   
255
(-) [Main Thread       5.240] (  504) Core/Layers:          -> src_key   
000000 (index 0)
(-) [Main Thread       5.240] (  504) Core/Layers:          -> dst_key   
000000 (index 0)
(-) [Main Thread       5.240] (  504) Core/Layers:          -> state   
0x00000015
(-) [Main Thread       5.240] (  504) Core/Layers:          -> FROZEN!
(-) [Main Thread       5.241] (  504) Core/WindowStack:  
dfb_windowstack_resize( 0x7e58a0, 1280x720 )
(-) [Main Thread       5.241] (  504) Core/WindowStack:  
dfb_windowstack_repaint_all( 0x7e58a0 )
(-) [Main Thread       5.256] (  504) Core/SurfBuffer:   
dfb_surface_buffer_lock( 0x7e5fe0, 0x00000008, 0x7be238 )
(-) [Main Thread       5.256] (  504) Core/SurfBuffer:      -> CPU WRITE
(-) [Main Thread       5.256] (  504) Core/SurfBuffer:    allocate_buffer(
0x7e5fe0, 0x8 )
(-) [Main Thread       5.257] (  504) Core/SurfBuffer:     -> 1280x720 UYVY
- SHARED LAYER EXTERNAL
(-) [Main Thread       5.257] (  504) DevMem/Surfaces:    devmemTestConfig(
0x7e5fe0 )

The problem here is that it tries to create a 1280x720 UYVY surface on the
layer. 
If I allow CSAF_CPU_WRITE on my video_pool (which is required to allow the
surface to be allocated) It calls my code but it later tries to access the
data from somewhere. 
However I have set lock->pitch=0 and lock->addr=NULL.

If I remove the CSAF_CPU_WRITE flag then this problem goes away, however it
decides that my layer cannot be allocated by my video_pool so it allocates
the surface in devmem and then I lose all my memory to non-virtual video
surfaces.

Any ideas on how I can remove the need for a Window Stack or solve what is
accessing the lock->addr value?

Many thanks
Daniel Laird


-- 
View this message in context: 
http://www.nabble.com/Virtual-Video-Surfaces-Revisited.-tp19290639p19290639.html
Sent from the DirectFB Dev mailing list archive at Nabble.com.

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to