Esempio n. 1
0
 public BufferObject(Device dev, uint _width, uint _height, SurfaceFormat format, SurfaceFlags flags)
 {
     handle = gbm_bo_create(dev.Handle, _width, _height, format, flags);
     if (handle == null)
     {
         throw new NotSupportedException("[GBM] BO creation failed.");
     }
 }
Esempio n. 2
0
 protected virtual void Dispose(bool disposing)
 {
     if (handle != null)
     {
         gbm_bo_destroy(handle);
     }
     handle = null;
 }
Esempio n. 3
0
        public gbm_bo *Lock()
        {
            gbm_bo *bo = gbm_surface_lock_front_buffer(handle);

            if (bo == null)
            {
                throw new Exception("[GBM]: Failed to lock front buffer.");
            }
            return(bo);
        }
Esempio n. 4
0
        private void Lock(Action <BufferObject, uint> action)
        {
            unsafe
            {
                var lastBo = this.boHandle;
                this.boHandle = gbm_surface_lock_front_buffer(this.surfaceHandle);

                if (this.boHandle == null)
                {
                    throw new Exception("[GBM]: Failed to lock front buffer.");
                }

                var bo = new BufferObject(this.boHandle);
                action?.Invoke(bo, bo.GetFb(this.Device));
                if (lastBo is not null)
                {
                    this.Release(lastBo);
                }
            }
        }
Esempio n. 5
0
 internal static extern ulong gbm_bo_get_modifier(gbm_bo *bo);
Esempio n. 6
0
 static extern void gbm_surface_release_buffer(gbm_surface *surface, gbm_bo *bo);
Esempio n. 7
0
 internal static extern int gbm_bo_get_plane_count(gbm_bo *bo);
Esempio n. 8
0
 internal static extern nint gbm_bo_map(gbm_bo *bo, uint x, uint y, uint width, uint height, TransferFlags flags, ref uint stride, out nint data);
Esempio n. 9
0
 internal static extern void gbm_bo_set_user_data(gbm_bo *bo, nint data, DestroyUserDataCallback callback);
Esempio n. 10
0
 internal static extern gbm_device *gbm_bo_get_device(gbm_bo *bo);
Esempio n. 11
0
 internal static extern int gbm_bo_write(gbm_bo *bo, nint buf, nint count);
Esempio n. 12
0
 internal static extern void gbm_bo_destroy(gbm_bo *bo);
Esempio n. 13
0
 public void Release(gbm_bo *bo)
 {
     gbm_surface_release_buffer(handle, bo);
 }
Esempio n. 14
0
 static extern void gbm_surface_release_buffer(IntPtr surface, gbm_bo *buffer);
Esempio n. 15
0
 internal static extern int gbm_bo_write(gbm_bo *bo, IntPtr buf, IntPtr count);
Esempio n. 16
0
 internal static extern uint gbm_bo_get_stride_for_plane(gbm_bo *bo, int plane);
Esempio n. 17
0
 internal static extern uint gbm_bo_get_offset(gbm_bo *bo, int plane);
Esempio n. 18
0
 internal static extern gbm_bo_handle gbm_bo_get_handle_for_plane(gbm_bo *bo, int plane);
Esempio n. 19
0
 internal static extern nint gbm_bo_get_user_data(gbm_bo *bo);
Esempio n. 20
0
 internal static extern gbm_bo_handle gbm_bo_get_handle(gbm_bo *bo);
Esempio n. 21
0
 internal static extern void gbm_bo_unmap(gbm_bo *bo, nint data);
Esempio n. 22
0
 internal static extern uint gbm_bo_get_height(gbm_bo *bo);
Esempio n. 23
0
 public BufferObject(gbm_bo *handle)
 {
     this.handle = handle;
 }
Esempio n. 24
0
 internal static extern uint gbm_bo_get_width(gbm_bo *bo);
Esempio n. 25
0
 private void Release(gbm_bo *bo)
 {
     gbm_surface_release_buffer(surfaceHandle, bo);
 }
Esempio n. 26
0
 internal static extern uint gbm_bo_get_stride(gbm_bo *bo);
Esempio n. 27
0
 internal static extern SurfaceFormat gbm_bo_get_format(gbm_bo *bo);
Esempio n. 28
0
 public BufferObject(gbm_bo *_handle)
 {
     handle = _handle;
 }