Clone of mesa.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

virgl_screen.h 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * Copyright 2014, 2015 Red Hat.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and associated documentation files (the "Software"),
  6. * to deal in the Software without restriction, including without limitation
  7. * on the rights to use, copy, modify, merge, publish, distribute, sub
  8. * license, and/or sell copies of the Software, and to permit persons to whom
  9. * the Software is furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice (including the next
  12. * paragraph) shall be included in all copies or substantial portions of the
  13. * Software.
  14. *
  15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
  18. * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
  19. * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  20. * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  21. * USE OR OTHER DEALINGS IN THE SOFTWARE.
  22. */
  23. #ifndef VIRGL_H
  24. #define VIRGL_H
  25. #include "pipe/p_screen.h"
  26. #include "util/slab.h"
  27. #include "virgl_winsys.h"
  28. enum virgl_debug_flags {
  29. VIRGL_DEBUG_VERBOSE = 1 << 0,
  30. VIRGL_DEBUG_TGSI = 1 << 1,
  31. VIRGL_DEBUG_EMULATE_BGRA = 1 << 2,
  32. VIRGL_DEBUG_BGRA_DEST_SWIZZLE = 1 << 3,
  33. };
  34. extern int virgl_debug;
  35. struct virgl_screen {
  36. struct pipe_screen base;
  37. int refcnt;
  38. /* place for winsys to stash it's own stuff: */
  39. void *winsys_priv;
  40. struct virgl_winsys *vws;
  41. struct virgl_drm_caps caps;
  42. struct slab_parent_pool transfer_pool;
  43. uint32_t sub_ctx_id;
  44. bool tweak_gles_emulate_bgra;
  45. bool tweak_gles_apply_bgra_dest_swizzle;
  46. int32_t tweak_gles_tf3_value;
  47. };
  48. static inline struct virgl_screen *
  49. virgl_screen(struct pipe_screen *pipe)
  50. {
  51. return (struct virgl_screen *)pipe;
  52. }
  53. boolean
  54. virgl_has_readback_format(struct pipe_screen *screen, enum virgl_formats fmt);
  55. /* GL_ARB_map_buffer_alignment requires 64 as the minimum alignment value. In
  56. * addition to complying with the extension, a high enough alignment value is
  57. * expected by various external GL clients. For example, wined3d doesn't like
  58. * maps that don't have a 16 byte alignment.
  59. */
  60. #define VIRGL_MAP_BUFFER_ALIGNMENT 64
  61. #endif