Home | History | Annotate | Download | only in dvr
      1 #ifndef ANDROID_DVR_CONFIG_H
      2 #define ANDROID_DVR_CONFIG_H
      3 
      4 // This header is shared by VrCore and Android and must be kept in sync.
      5 
      6 #include <stdint.h>
      7 #include <sys/cdefs.h>
      8 
      9 __BEGIN_DECLS
     10 
     11 // This is a shared memory buffer for passing config data from VrCore to
     12 // libvrflinger in SurfaceFlinger.
     13 struct __attribute__((packed, aligned(16))) DvrConfig {
     14   // Offset before vsync to submit frames to hardware composer.
     15   int32_t frame_post_offset_ns{4000000};
     16 
     17   // If the number of pending fences goes over this count at the point when we
     18   // are about to submit a new frame to HWC, we will drop the frame. This
     19   // should be a signal that the display driver has begun queuing frames. Note
     20   // that with smart displays (with RAM), the fence is signaled earlier than
     21   // the next vsync, at the point when the DMA to the display completes.
     22   // Currently we use a smart display and the EDS timing coincides with zero
     23   // pending fences, so this is 0.
     24   int32_t allowed_pending_fence_count{0};
     25 
     26   // New fields should always be added to the end for backwards compat.
     27 
     28   // Reserved padding to 16 bytes.
     29   uint8_t pad[8];
     30 };
     31 
     32 __END_DECLS
     33 
     34 #endif  // ANDROID_DVR_CONFIG_H
     35