Subversion Repositories Kolibri OS

Rev

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

  1. #ifndef XORG_EXA_H
  2. #define XORG_EXA_H
  3.  
  4. #include "xorg_tracker.h"
  5.  
  6. #include "pipe/p_state.h"
  7.  
  8. struct cso_context;
  9. struct xorg_shaders;
  10.  
  11. /* src + mask + dst */
  12. #define MAX_EXA_SAMPLERS 3
  13.  
  14. struct exa_context
  15. {
  16.    ExaDriverPtr pExa;
  17.    struct pipe_context *pipe;
  18.    struct pipe_screen *scrn;
  19.    struct xorg_renderer *renderer;
  20.  
  21.    struct pipe_sampler_view *bound_sampler_views[MAX_EXA_SAMPLERS];
  22.    int num_bound_samplers;
  23.  
  24.    float solid_color[4];
  25.    boolean has_solid_color;
  26.  
  27.    boolean accel;
  28.  
  29.    /* float[9] projective matrix bound to pictures */
  30.    struct {
  31.       float    src[9];
  32.       float   mask[9];
  33.       boolean has_src;
  34.       boolean has_mask;
  35.    } transform;
  36.  
  37.    struct {
  38.       struct exa_pixmap_priv *src;
  39.       struct exa_pixmap_priv *dst;
  40.       PixmapPtr tmp_pix;
  41.    } copy;
  42. };
  43.  
  44. struct exa_pixmap_priv
  45. {
  46.    int width, height;
  47.  
  48.    int flags;
  49.    int tex_flags;
  50.  
  51.    int picture_format;
  52.  
  53.    struct pipe_resource *tex;
  54.    struct pipe_resource *depth_stencil_tex;
  55.  
  56.    struct pipe_transfer *map_transfer;
  57.    unsigned map_count;
  58. };
  59.  
  60. #define XORG_FALLBACK(s, arg...)                              \
  61. do {                                                          \
  62.    if (ms->debug_fallback) {                                  \
  63.       xf86DrvMsg(pScrn->scrnIndex, X_INFO,                    \
  64.                  "%s fallback " s "\n", __FUNCTION__, ##arg); \
  65.    }                                                          \
  66.    return FALSE;                                              \
  67. } while(0)
  68.  
  69. struct pipe_surface *
  70. xorg_gpu_surface(struct pipe_context *pipe, struct exa_pixmap_priv *priv);
  71.  
  72. void xorg_exa_flush(struct exa_context *exa,
  73.                     struct pipe_fence_handle **fence);
  74. void xorg_exa_finish(struct exa_context *exa);
  75.  
  76. #endif
  77.