Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /**************************************************************************
  2.  
  3. Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
  4.                      VA Linux Systems Inc., Fremont, California.
  5.  
  6. All Rights Reserved.
  7.  
  8. Permission is hereby granted, free of charge, to any person obtaining
  9. a copy of this software and associated documentation files (the
  10. "Software"), to deal in the Software without restriction, including
  11. without limitation the rights to use, copy, modify, merge, publish,
  12. distribute, sublicense, and/or sell copies of the Software, and to
  13. permit persons to whom the Software is furnished to do so, subject to
  14. the following conditions:
  15.  
  16. The above copyright notice and this permission notice (including the
  17. next paragraph) shall be included in all copies or substantial
  18. portions of the Software.
  19.  
  20. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  21. EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  22. MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  23. IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
  24. LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  25. OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  26. WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  27.  
  28. **************************************************************************/
  29.  
  30. /*
  31.  * Authors:
  32.  *   Kevin E. Martin <martin@valinux.com>
  33.  *   Gareth Hughes <gareth@valinux.com>
  34.  */
  35.  
  36. #ifndef __RADEON_SCREEN_H__
  37. #define __RADEON_SCREEN_H__
  38.  
  39. /*
  40.  * IMPORTS: these headers contain all the DRI, X and kernel-related
  41.  * definitions that we need.
  42.  */
  43. #include <xf86drm.h>
  44. #include <radeon_drm.h>
  45. #include "dri_util.h"
  46. #include "radeon_chipset.h"
  47. #include "radeon_reg.h"
  48. #include "xmlconfig.h"
  49.  
  50.  
  51. typedef struct {
  52.    drm_handle_t handle;                 /* Handle to the DRM region */
  53.    drmSize size;                        /* Size of the DRM region */
  54.    drmAddress map;                      /* Mapping of the DRM region */
  55. } radeonRegionRec, *radeonRegionPtr;
  56.  
  57. typedef struct radeon_screen {
  58.    int chip_family;
  59.    int chip_flags;
  60.    int cpp;
  61.    int card_type;
  62.    int device_id; /* PCI ID */
  63.    int AGPMode;
  64.    unsigned int irq;                    /* IRQ number (0 means none) */
  65.  
  66.    unsigned int fbLocation;
  67.    unsigned int frontOffset;
  68.    unsigned int frontPitch;
  69.    unsigned int backOffset;
  70.    unsigned int backPitch;
  71.  
  72.    unsigned int depthOffset;
  73.    unsigned int depthPitch;
  74.  
  75.     /* Shared texture data */
  76.    int numTexHeaps;
  77.    int texOffset[RADEON_NR_TEX_HEAPS];
  78.    int texSize[RADEON_NR_TEX_HEAPS];
  79.    int logTexGranularity[RADEON_NR_TEX_HEAPS];
  80.  
  81.    radeonRegionRec mmio;
  82.    radeonRegionRec status;
  83.    radeonRegionRec gartTextures;
  84.  
  85.    drmBufMapPtr buffers;
  86.  
  87.    __volatile__ uint32_t *scratch;
  88.  
  89.    __DRIscreen *driScreen;
  90.    unsigned int gart_buffer_offset;     /* offset in card memory space */
  91.    unsigned int gart_texture_offset;    /* offset in card memory space */
  92.    unsigned int gart_base;
  93.  
  94.    GLboolean depthHasSurface;
  95.  
  96.    /* Configuration cache with default values for all contexts */
  97.    driOptionCache optionCache;
  98.  
  99.    int num_gb_pipes;
  100.    int num_z_pipes;
  101.    struct radeon_bo_manager *bom;
  102.  
  103. } radeonScreenRec, *radeonScreenPtr;
  104.  
  105. struct __DRIimageRec {
  106.    struct radeon_bo *bo;
  107.    GLenum internal_format;
  108.    uint32_t dri_format;
  109.    GLuint format;
  110.    GLenum data_type;
  111.    int width, height;  /* in pixels */
  112.    int pitch;          /* in pixels */
  113.    int cpp;
  114.    void *data;
  115. };
  116.  
  117. #ifdef RADEON_R200
  118. /* These defines are to ensure that r200_dri's symbols don't conflict with
  119.  * radeon's when linked together.
  120.  */
  121. #define get_radeon_buffer_object            r200_get_radeon_buffer_object
  122. #define radeonInitBufferObjectFuncs         r200_radeonInitBufferObjectFuncs
  123. #define radeonDestroyContext                r200_radeonDestroyContext
  124. #define radeonInitContext                   r200_radeonInitContext
  125. #define radeonMakeCurrent                   r200_radeonMakeCurrent
  126. #define radeon_prepare_render               r200_radeon_prepare_render
  127. #define radeonUnbindContext                 r200_radeonUnbindContext
  128. #define radeon_update_renderbuffers         r200_radeon_update_renderbuffers
  129. #define radeon_check_front_buffer_rendering r200_radeon_check_front_buffer_rendering
  130. #define radeonCountStateEmitSize            r200_radeonCountStateEmitSize
  131. #define radeon_draw_buffer                  r200_radeon_draw_buffer
  132. #define radeonDrawBuffer                    r200_radeonDrawBuffer
  133. #define radeonEmitState                     r200_radeonEmitState
  134. #define radeonFinish                        r200_radeonFinish
  135. #define radeonFlush                         r200_radeonFlush
  136. #define radeonGetAge                        r200_radeonGetAge
  137. #define radeonReadBuffer                    r200_radeonReadBuffer
  138. #define radeonScissor                       r200_radeonScissor
  139. #define radeonSetCliprects                  r200_radeonSetCliprects
  140. #define radeonUpdateScissor                 r200_radeonUpdateScissor
  141. #define radeonUserClear                     r200_radeonUserClear
  142. #define radeon_viewport                     r200_radeon_viewport
  143. #define radeon_window_moved                 r200_radeon_window_moved
  144. #define rcommonBeginBatch                   r200_rcommonBeginBatch
  145. #define rcommonDestroyCmdBuf                r200_rcommonDestroyCmdBuf
  146. #define rcommonEnsureCmdBufSpace            r200_rcommonEnsureCmdBufSpace
  147. #define rcommonFlushCmdBuf                  r200_rcommonFlushCmdBuf
  148. #define rcommonFlushCmdBufLocked            r200_rcommonFlushCmdBufLocked
  149. #define rcommonInitCmdBuf                   r200_rcommonInitCmdBuf
  150. #define radeonAllocDmaRegion                r200_radeonAllocDmaRegion
  151. #define radeonEmitVec12                     r200_radeonEmitVec12
  152. #define radeonEmitVec16                     r200_radeonEmitVec16
  153. #define radeonEmitVec4                      r200_radeonEmitVec4
  154. #define radeonEmitVec8                      r200_radeonEmitVec8
  155. #define radeonFreeDmaRegions                r200_radeonFreeDmaRegions
  156. #define radeon_init_dma                     r200_radeon_init_dma
  157. #define radeonRefillCurrentDmaRegion        r200_radeonRefillCurrentDmaRegion
  158. #define radeonReleaseArrays                 r200_radeonReleaseArrays
  159. #define radeonReleaseDmaRegions             r200_radeonReleaseDmaRegions
  160. #define radeonReturnDmaRegion               r200_radeonReturnDmaRegion
  161. #define rcommonAllocDmaLowVerts             r200_rcommonAllocDmaLowVerts
  162. #define rcommon_emit_vecfog                 r200_rcommon_emit_vecfog
  163. #define rcommon_emit_vector                 r200_rcommon_emit_vector
  164. #define rcommon_flush_last_swtcl_prim       r200_rcommon_flush_last_swtcl_prim
  165. #define _radeon_debug_add_indent            r200__radeon_debug_add_indent
  166. #define _radeon_debug_remove_indent         r200__radeon_debug_remove_indent
  167. #define radeon_init_debug                   r200_radeon_init_debug
  168. #define _radeon_print                       r200__radeon_print
  169. #define radeon_create_renderbuffer          r200_radeon_create_renderbuffer
  170. #define radeon_fbo_init                     r200_radeon_fbo_init
  171. #define radeon_renderbuffer_set_bo          r200_radeon_renderbuffer_set_bo
  172. #define radeonComputeFogBlendFactor         r200_radeonComputeFogBlendFactor
  173. #define radeonInitStaticFogData             r200_radeonInitStaticFogData
  174. #define get_base_teximage_offset            r200_get_base_teximage_offset
  175. #define get_texture_image_row_stride        r200_get_texture_image_row_stride
  176. #define get_texture_image_size              r200_get_texture_image_size
  177. #define radeon_miptree_create               r200_radeon_miptree_create
  178. #define radeon_miptree_image_offset         r200_radeon_miptree_image_offset
  179. #define radeon_miptree_matches_image        r200_radeon_miptree_matches_image
  180. #define radeon_miptree_reference            r200_radeon_miptree_reference
  181. #define radeon_miptree_unreference          r200_radeon_miptree_unreference
  182. #define radeon_try_alloc_miptree            r200_radeon_try_alloc_miptree
  183. #define radeon_validate_texture_miptree     r200_radeon_validate_texture_miptree
  184. #define radeonReadPixels                    r200_radeonReadPixels
  185. #define radeon_check_query_active           r200_radeon_check_query_active
  186. #define radeonEmitQueryEnd                  r200_radeonEmitQueryEnd
  187. #define radeon_emit_queryobj                r200_radeon_emit_queryobj
  188. #define radeonInitQueryObjFunctions         r200_radeonInitQueryObjFunctions
  189. #define radeonInitSpanFuncs                 r200_radeonInitSpanFuncs
  190. #define copy_rows                           r200_copy_rows
  191. #define radeonChooseTextureFormat           r200_radeonChooseTextureFormat
  192. #define radeonChooseTextureFormat_mesa      r200_radeonChooseTextureFormat_mesa
  193. #define radeonFreeTextureImageBuffer        r200_radeonFreeTextureImageBuffer
  194. #define radeon_image_target_texture_2d      r200_radeon_image_target_texture_2d
  195. #define radeon_init_common_texture_funcs    r200_radeon_init_common_texture_funcs
  196. #define radeonIsFormatRenderable            r200_radeonIsFormatRenderable
  197. #define radeonNewTextureImage               r200_radeonNewTextureImage
  198. #define _radeon_texformat_al88              r200__radeon_texformat_al88
  199. #define _radeon_texformat_argb1555          r200__radeon_texformat_argb1555
  200. #define _radeon_texformat_argb4444          r200__radeon_texformat_argb4444
  201. #define _radeon_texformat_argb8888          r200__radeon_texformat_argb8888
  202. #define _radeon_texformat_rgb565            r200__radeon_texformat_rgb565
  203. #define _radeon_texformat_rgba8888          r200__radeon_texformat_rgba8888
  204. #define radeonCopyTexSubImage               r200_radeonCopyTexSubImage
  205. #define get_tile_size                       r200_get_tile_size
  206. #define tile_image                          r200_tile_image
  207. #define untile_image                        r200_untile_image
  208. #define set_re_cntl_d3d                     r200_set_re_cntl_d3d
  209. #define radeonDestroyBuffer                 r200_radeonDestroyBuffer
  210. #define radeonVendorString                  r200_radeonVendorString
  211. #define radeonGetRendererString             r200_radeonGetRendererString
  212. #endif
  213.  
  214. extern void radeonDestroyBuffer(__DRIdrawable *driDrawPriv);
  215. const __DRIextension **__driDriverGetExtensions_radeon(void);
  216. const __DRIextension **__driDriverGetExtensions_r200(void);
  217.  
  218. #endif /* __RADEON_SCREEN_H__ */
  219.