baby-rabbit

Forum Replies Created

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • in reply to: Syphon Virtual Screen (again!) #6217
    baby-rabbit
    Participant

    The only similar osx project I’m aware of is http://code.google.com/p/ioproxyvideofamily/, but it looks like the same approach as ewproxyfb.

    in reply to: Syphon Virtual Screen (again!) #6198
    baby-rabbit
    Participant

    CGDisplayStream does indeed work very well, however on the virtual screen the performance is about the same as mapping the memory of the ewproxyframebuffer.

    Driver monitor says that on this display (and the virtual display only) that the driver is busy uploading bytes to the IOSurface when using CGDisplayStream.  Furthermore, probing the display with CGLQueryRendererInfo() shows that only the software renderer is available.

    So this is as Anome said earlier – the virtual display is not using the GPU directly – which  suggests that whatever API is used to access it to build IOSurfaces, is going to result in GPU/CPU bus traffic.

     

    in reply to: Syphon Virtual Screen (again!) #6184
    baby-rabbit
    Participant

    Andrea – try the following:

    CGDirectDisplayID display[32];
    uint32_t displayCount = 0;
    CGGetActiveDisplayList(32, display, &displayCount);
    for(int i = 0; i < displayCount; i++) {
    io_service_t service = CGDisplayIOServicePort(display[i]);
    CFStringRef nameRef = IORegistryEntryCreateCFProperty(service, CFSTR("CFBundleIdentifier"), kCFAllocatorDefault, 0);
    if(CFStringCompare(nameRef, CFSTR("info.ennowelbers.framebuffer"), 0)==0) {
    // success! - display[i] is the display using the proxy framebuffer
    }
    }

    in reply to: Syphon Virtual Screen (again!) #6179
    baby-rabbit
    Participant

    These new APIs of 10.8 are well hidden.

Viewing 4 posts - 1 through 4 (of 4 total)