Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2.  
  3. /** enumeration of 3d consumers so some can maintain invariant state. */
  4. enum last_3d {
  5.     LAST_3D_OTHER,
  6.     LAST_3D_VIDEO,
  7.     LAST_3D_RENDER,
  8.     LAST_3D_ROTATION
  9. };
  10.  
  11.  
  12.  
  13. typedef struct intel_screen_private {
  14.     int cpp;
  15.  
  16. #define RENDER_BATCH                I915_EXEC_RENDER
  17. #define BLT_BATCH                   I915_EXEC_BLT
  18.  
  19.     unsigned int current_batch;
  20.  
  21.     dri_bufmgr *bufmgr;
  22.  
  23.     uint32_t batch_ptr[4096];
  24.     /** Byte offset in batch_ptr for the next dword to be emitted. */
  25.     unsigned int batch_used;
  26.     /** Position in batch_ptr at the start of the current BEGIN_BATCH */
  27.     unsigned int batch_emit_start;
  28.     /** Number of bytes to be emitted in the current BEGIN_BATCH. */
  29.     uint32_t batch_emitting;
  30.     dri_bo *batch_bo, *last_batch_bo[2];
  31.     /** Whether we're in a section of code that can't tolerate flushing */
  32.     Bool in_batch_atomic;
  33.     /** Ending batch_used that was verified by intel_start_batch_atomic() */
  34.     int batch_atomic_limit;
  35.     struct list batch_pixmaps;
  36.     drm_intel_bo *wa_scratch_bo;
  37.  
  38.     unsigned int tiling;
  39.  
  40. #define INTEL_TILING_FB     0x1
  41. #define INTEL_TILING_2D     0x2
  42. #define INTEL_TILING_3D     0x4
  43. #define INTEL_TILING_ALL   (~0)
  44.  
  45.     Bool has_relaxed_fencing;
  46.  
  47.     int Chipset;
  48.  
  49.     unsigned int BR[20];
  50.  
  51.     void (*vertex_flush) (struct intel_screen_private *intel);
  52.     void (*batch_flush) (struct intel_screen_private *intel);
  53.     void (*batch_commit_notify) (struct intel_screen_private *intel);
  54.  
  55.     Bool need_sync;
  56.  
  57.     int accel_pixmap_offset_alignment;
  58.     int accel_max_x;
  59.     int accel_max_y;
  60.     int max_bo_size;
  61.     int max_gtt_map_size;
  62.     int max_tiling_size;
  63.  
  64.     struct {
  65.         drm_intel_bo *gen4_vs_bo;
  66.         drm_intel_bo *gen4_sf_bo;
  67.         drm_intel_bo *gen4_wm_packed_bo;
  68.         drm_intel_bo *gen4_wm_planar_bo;
  69.         drm_intel_bo *gen4_cc_bo;
  70.         drm_intel_bo *gen4_cc_vp_bo;
  71.         drm_intel_bo *gen4_sampler_bo;
  72.         drm_intel_bo *gen4_sip_kernel_bo;
  73.         drm_intel_bo *wm_prog_packed_bo;
  74.         drm_intel_bo *wm_prog_planar_bo;
  75.         drm_intel_bo *gen6_blend_bo;
  76.         drm_intel_bo *gen6_depth_stencil_bo;
  77.     } video;
  78.  
  79.     /* Render accel state */
  80.     float scale_units[2][2];
  81.     /** Transform pointers for src/mask, or NULL if identity */
  82.     PictTransform *transform[2];
  83.  
  84.     PixmapPtr render_source, render_mask, render_dest;
  85.     PicturePtr render_source_picture, render_mask_picture, render_dest_picture;
  86.     Bool needs_3d_invariant;
  87.     Bool needs_render_state_emit;
  88.     Bool needs_render_vertex_emit;
  89.  
  90.     /* i830 render accel state */
  91.     uint32_t render_dest_format;
  92.     uint32_t cblend, ablend, s8_blendctl;
  93.  
  94.     /* i915 render accel state */
  95.     PixmapPtr texture[2];
  96.     uint32_t mapstate[6];
  97.     uint32_t samplerstate[6];
  98.  
  99.     struct {
  100.         int op;
  101.         uint32_t dst_format;
  102.     } i915_render_state;
  103.  
  104.     struct {
  105.         int num_sf_outputs;
  106.         int drawrect;
  107.         uint32_t blend;
  108.         dri_bo *samplers;
  109.         dri_bo *kernel;
  110.     } gen6_render_state;
  111.  
  112.     uint32_t prim_offset;
  113.     void (*prim_emit)(struct intel_screen_private *intel,
  114.               int srcX, int srcY,
  115.               int maskX, int maskY,
  116.               int dstX, int dstY,
  117.               int w, int h);
  118.     int floats_per_vertex;
  119.     int last_floats_per_vertex;
  120.     uint16_t vertex_offset;
  121.     uint16_t vertex_count;
  122.     uint16_t vertex_index;
  123.     uint16_t vertex_used;
  124.     uint32_t vertex_id;
  125.     float vertex_ptr[4*1024];
  126.     dri_bo *vertex_bo;
  127.  
  128.     uint8_t surface_data[16*1024];
  129.     uint16_t surface_used;
  130.     uint16_t surface_table;
  131.     uint32_t surface_reloc;
  132.     dri_bo *surface_bo;
  133.  
  134.     /* 965 render acceleration state */
  135.     struct gen4_render_state *gen4_render_state;
  136.  
  137.     Bool use_pageflipping;
  138.     Bool use_triple_buffer;
  139.     Bool force_fallback;
  140.     Bool has_kernel_flush;
  141.     Bool needs_flush;
  142.  
  143.     enum last_3d last_3d;
  144.  
  145.     /**
  146.      * User option to print acceleration fallback info to the server log.
  147.      */
  148.     Bool fallback_debug;
  149.     unsigned debug_flush;
  150.     Bool has_prime_vmap_flush;
  151. } intel_screen_private;
  152.  
  153.