Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. #define FALSE 0
  3. #define TRUE  1
  4.  
  5. #define DBG(x)
  6. //#define DBG(x) dbgprintf x
  7.  
  8. #define assert(x)
  9.  
  10.  
  11. #include "compiler.h"
  12. #include <linux/kernel.h>
  13.  
  14. struct pixman_box16
  15. {
  16.     int16_t x1, y1, x2, y2;
  17. };
  18.  
  19. typedef struct pixman_box16 BoxRec;
  20. typedef unsigned int CARD32;
  21.  
  22. #include "sna_render.h"
  23. #include "kgem.h"
  24.  
  25. #define PictOpClear             0
  26. #define PictOpSrc               1
  27. #define PictOpDst               2
  28. #define PictOpOver              3
  29. #define PictOpOverReverse       4
  30. #define PictOpIn                5
  31. #define PictOpInReverse         6
  32. #define PictOpOut               7
  33. #define PictOpOutReverse        8
  34. #define PictOpAtop              9
  35. #define PictOpAtopReverse       10
  36. #define PictOpXor               11
  37. #define PictOpAdd               12
  38. #define PictOpSaturate          13
  39. #define PictOpMaximum           13
  40.  
  41. struct sna {
  42.     unsigned flags;
  43. #define SNA_NO_THROTTLE         0x1
  44. #define SNA_NO_DELAYED_FLUSH    0x2
  45.  
  46. //    int timer[NUM_TIMERS];
  47.  
  48. //    uint16_t timer_active;
  49. //    uint16_t timer_ready;
  50.  
  51. //    int vblank_interval;
  52.  
  53. //    struct list deferred_free;
  54. //    struct list dirty_pixmaps;
  55. //    struct list active_pixmaps;
  56. //    struct list inactive_clock[2];
  57.  
  58.     unsigned int tiling;
  59. #define SNA_TILING_DISABLE  0x0
  60. #define SNA_TILING_FB       0x1
  61. #define SNA_TILING_2D       0x2
  62. #define SNA_TILING_3D       0x4
  63. #define SNA_TILING_ALL     (~0)
  64.  
  65.     int Chipset;
  66. //    EntityInfoPtr pEnt;
  67. //    struct pci_device *PciInfo;
  68. //    struct intel_chipset chipset;
  69.  
  70. //    PicturePtr clear;
  71.     struct {
  72.         uint32_t fill_bo;
  73.         uint32_t fill_pixel;
  74.         uint32_t fill_alu;
  75.     } blt_state;
  76.     union {
  77. //        struct gen2_render_state gen2;
  78. //        struct gen3_render_state gen3;
  79. //        struct gen4_render_state gen4;
  80. //        struct gen5_render_state gen5;
  81.         struct gen6_render_state gen6;
  82. //        struct gen7_render_state gen7;
  83.     } render_state;
  84.     uint32_t have_render;
  85.     uint32_t default_tiling;
  86.  
  87. //    Bool directRenderingOpen;
  88. //    char *deviceName;
  89.  
  90.     /* Broken-out options. */
  91. //    OptionInfoPtr Options;
  92.  
  93.     /* Driver phase/state information */
  94. //    Bool suspended;
  95.  
  96.     struct kgem kgem;
  97.     struct sna_render render;
  98. };
  99.  
  100. static inline int vertex_space(struct sna *sna)
  101. {
  102.     return sna->render.vertex_size - sna->render.vertex_used;
  103. }
  104.  
  105. static inline void vertex_emit(struct sna *sna, float v)
  106. {
  107.     assert(sna->render.vertex_used < sna->render.vertex_size);
  108.     sna->render.vertices[sna->render.vertex_used++] = v;
  109. }
  110.  
  111. static inline void vertex_emit_2s(struct sna *sna, int16_t x, int16_t y)
  112. {
  113.     int16_t *v = (int16_t *)&sna->render.vertices[sna->render.vertex_used++];
  114.     assert(sna->render.vertex_used <= sna->render.vertex_size);
  115.     v[0] = x;
  116.     v[1] = y;
  117. }
  118.  
  119. static inline void batch_emit(struct sna *sna, uint32_t dword)
  120. {
  121.     assert(sna->kgem.mode != KGEM_NONE);
  122.     assert(sna->kgem.nbatch + KGEM_BATCH_RESERVED < sna->kgem.surface);
  123.     sna->kgem.batch[sna->kgem.nbatch++] = dword;
  124. }
  125.  
  126.