FB.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Platform.h>
  8. #include <stddef.h>
  9. #include <sys/cdefs.h>
  10. #include <sys/ioctl.h>
  11. __BEGIN_DECLS
  12. ALWAYS_INLINE int fb_get_size_in_bytes(int fd, size_t* out)
  13. {
  14. return ioctl(fd, FB_IOCTL_GET_SIZE_IN_BYTES, out);
  15. }
  16. ALWAYS_INLINE int fb_get_resolution(int fd, FBResolution* info)
  17. {
  18. return ioctl(fd, FB_IOCTL_GET_RESOLUTION, info);
  19. }
  20. ALWAYS_INLINE int fb_set_resolution(int fd, FBResolution* info)
  21. {
  22. return ioctl(fd, FB_IOCTL_SET_RESOLUTION, info);
  23. }
  24. ALWAYS_INLINE int fb_get_buffer_offset(int fd, int index, unsigned* offset)
  25. {
  26. FBBufferOffset fb_buffer_offset;
  27. fb_buffer_offset.buffer_index = index;
  28. int result = ioctl(fd, FB_IOCTL_GET_BUFFER_OFFSET, &fb_buffer_offset);
  29. if (result == 0)
  30. *offset = fb_buffer_offset.offset;
  31. return result;
  32. }
  33. ALWAYS_INLINE int fb_get_buffer(int fd, int* index)
  34. {
  35. return ioctl(fd, FB_IOCTL_GET_BUFFER, index);
  36. }
  37. ALWAYS_INLINE int fb_set_buffer(int fd, int index)
  38. {
  39. return ioctl(fd, FB_IOCTL_SET_BUFFER, index);
  40. }
  41. ALWAYS_INLINE int fb_flush_buffers(int fd, int index, FBRect const* rects, unsigned count)
  42. {
  43. FBFlushRects fb_flush_rects;
  44. fb_flush_rects.buffer_index = index;
  45. fb_flush_rects.count = count;
  46. fb_flush_rects.rects = rects;
  47. return ioctl(fd, FB_IOCTL_FLUSH_BUFFERS, &fb_flush_rects);
  48. }
  49. __END_DECLS