diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_drv.h')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 213 |
1 files changed, 186 insertions, 27 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h index 20890ad8408b..554e7fa33082 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | |||
@@ -40,9 +40,9 @@ | |||
40 | #include <drm/ttm/ttm_module.h> | 40 | #include <drm/ttm/ttm_module.h> |
41 | #include "vmwgfx_fence.h" | 41 | #include "vmwgfx_fence.h" |
42 | 42 | ||
43 | #define VMWGFX_DRIVER_DATE "20120209" | 43 | #define VMWGFX_DRIVER_DATE "20121114" |
44 | #define VMWGFX_DRIVER_MAJOR 2 | 44 | #define VMWGFX_DRIVER_MAJOR 2 |
45 | #define VMWGFX_DRIVER_MINOR 4 | 45 | #define VMWGFX_DRIVER_MINOR 5 |
46 | #define VMWGFX_DRIVER_PATCHLEVEL 0 | 46 | #define VMWGFX_DRIVER_PATCHLEVEL 0 |
47 | #define VMWGFX_FILE_PAGE_OFFSET 0x00100000 | 47 | #define VMWGFX_FILE_PAGE_OFFSET 0x00100000 |
48 | #define VMWGFX_FIFO_STATIC_SIZE (1024*1024) | 48 | #define VMWGFX_FIFO_STATIC_SIZE (1024*1024) |
@@ -50,14 +50,30 @@ | |||
50 | #define VMWGFX_MAX_VALIDATIONS 2048 | 50 | #define VMWGFX_MAX_VALIDATIONS 2048 |
51 | #define VMWGFX_MAX_DISPLAYS 16 | 51 | #define VMWGFX_MAX_DISPLAYS 16 |
52 | #define VMWGFX_CMD_BOUNCE_INIT_SIZE 32768 | 52 | #define VMWGFX_CMD_BOUNCE_INIT_SIZE 32768 |
53 | #define VMWGFX_ENABLE_SCREEN_TARGET_OTABLE 0 | ||
54 | |||
55 | /* | ||
56 | * Perhaps we should have sysfs entries for these. | ||
57 | */ | ||
58 | #define VMWGFX_NUM_GB_CONTEXT 256 | ||
59 | #define VMWGFX_NUM_GB_SHADER 20000 | ||
60 | #define VMWGFX_NUM_GB_SURFACE 32768 | ||
61 | #define VMWGFX_NUM_GB_SCREEN_TARGET VMWGFX_MAX_DISPLAYS | ||
62 | #define VMWGFX_NUM_MOB (VMWGFX_NUM_GB_CONTEXT +\ | ||
63 | VMWGFX_NUM_GB_SHADER +\ | ||
64 | VMWGFX_NUM_GB_SURFACE +\ | ||
65 | VMWGFX_NUM_GB_SCREEN_TARGET) | ||
53 | 66 | ||
54 | #define VMW_PL_GMR TTM_PL_PRIV0 | 67 | #define VMW_PL_GMR TTM_PL_PRIV0 |
55 | #define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0 | 68 | #define VMW_PL_FLAG_GMR TTM_PL_FLAG_PRIV0 |
69 | #define VMW_PL_MOB TTM_PL_PRIV1 | ||
70 | #define VMW_PL_FLAG_MOB TTM_PL_FLAG_PRIV1 | ||
56 | 71 | ||
57 | #define VMW_RES_CONTEXT ttm_driver_type0 | 72 | #define VMW_RES_CONTEXT ttm_driver_type0 |
58 | #define VMW_RES_SURFACE ttm_driver_type1 | 73 | #define VMW_RES_SURFACE ttm_driver_type1 |
59 | #define VMW_RES_STREAM ttm_driver_type2 | 74 | #define VMW_RES_STREAM ttm_driver_type2 |
60 | #define VMW_RES_FENCE ttm_driver_type3 | 75 | #define VMW_RES_FENCE ttm_driver_type3 |
76 | #define VMW_RES_SHADER ttm_driver_type4 | ||
61 | 77 | ||
62 | struct vmw_fpriv { | 78 | struct vmw_fpriv { |
63 | struct drm_master *locked_master; | 79 | struct drm_master *locked_master; |
@@ -82,6 +98,7 @@ struct vmw_dma_buffer { | |||
82 | struct vmw_validate_buffer { | 98 | struct vmw_validate_buffer { |
83 | struct ttm_validate_buffer base; | 99 | struct ttm_validate_buffer base; |
84 | struct drm_hash_item hash; | 100 | struct drm_hash_item hash; |
101 | bool validate_as_mob; | ||
85 | }; | 102 | }; |
86 | 103 | ||
87 | struct vmw_res_func; | 104 | struct vmw_res_func; |
@@ -98,6 +115,7 @@ struct vmw_resource { | |||
98 | const struct vmw_res_func *func; | 115 | const struct vmw_res_func *func; |
99 | struct list_head lru_head; /* Protected by the resource lock */ | 116 | struct list_head lru_head; /* Protected by the resource lock */ |
100 | struct list_head mob_head; /* Protected by @backup reserved */ | 117 | struct list_head mob_head; /* Protected by @backup reserved */ |
118 | struct list_head binding_head; /* Protected by binding_mutex */ | ||
101 | void (*res_free) (struct vmw_resource *res); | 119 | void (*res_free) (struct vmw_resource *res); |
102 | void (*hw_destroy) (struct vmw_resource *res); | 120 | void (*hw_destroy) (struct vmw_resource *res); |
103 | }; | 121 | }; |
@@ -106,6 +124,7 @@ enum vmw_res_type { | |||
106 | vmw_res_context, | 124 | vmw_res_context, |
107 | vmw_res_surface, | 125 | vmw_res_surface, |
108 | vmw_res_stream, | 126 | vmw_res_stream, |
127 | vmw_res_shader, | ||
109 | vmw_res_max | 128 | vmw_res_max |
110 | }; | 129 | }; |
111 | 130 | ||
@@ -154,6 +173,7 @@ struct vmw_fifo_state { | |||
154 | }; | 173 | }; |
155 | 174 | ||
156 | struct vmw_relocation { | 175 | struct vmw_relocation { |
176 | SVGAMobId *mob_loc; | ||
157 | SVGAGuestPtr *location; | 177 | SVGAGuestPtr *location; |
158 | uint32_t index; | 178 | uint32_t index; |
159 | }; | 179 | }; |
@@ -229,6 +249,71 @@ struct vmw_piter { | |||
229 | struct page *(*page)(struct vmw_piter *); | 249 | struct page *(*page)(struct vmw_piter *); |
230 | }; | 250 | }; |
231 | 251 | ||
252 | /* | ||
253 | * enum vmw_ctx_binding_type - abstract resource to context binding types | ||
254 | */ | ||
255 | enum vmw_ctx_binding_type { | ||
256 | vmw_ctx_binding_shader, | ||
257 | vmw_ctx_binding_rt, | ||
258 | vmw_ctx_binding_tex, | ||
259 | vmw_ctx_binding_max | ||
260 | }; | ||
261 | |||
262 | /** | ||
263 | * struct vmw_ctx_bindinfo - structure representing a single context binding | ||
264 | * | ||
265 | * @ctx: Pointer to the context structure. NULL means the binding is not | ||
266 | * active. | ||
267 | * @res: Non ref-counted pointer to the bound resource. | ||
268 | * @bt: The binding type. | ||
269 | * @i1: Union of information needed to unbind. | ||
270 | */ | ||
271 | struct vmw_ctx_bindinfo { | ||
272 | struct vmw_resource *ctx; | ||
273 | struct vmw_resource *res; | ||
274 | enum vmw_ctx_binding_type bt; | ||
275 | union { | ||
276 | SVGA3dShaderType shader_type; | ||
277 | SVGA3dRenderTargetType rt_type; | ||
278 | uint32 texture_stage; | ||
279 | } i1; | ||
280 | }; | ||
281 | |||
282 | /** | ||
283 | * struct vmw_ctx_binding - structure representing a single context binding | ||
284 | * - suitable for tracking in a context | ||
285 | * | ||
286 | * @ctx_list: List head for context. | ||
287 | * @res_list: List head for bound resource. | ||
288 | * @bi: Binding info | ||
289 | */ | ||
290 | struct vmw_ctx_binding { | ||
291 | struct list_head ctx_list; | ||
292 | struct list_head res_list; | ||
293 | struct vmw_ctx_bindinfo bi; | ||
294 | }; | ||
295 | |||
296 | |||
297 | /** | ||
298 | * struct vmw_ctx_binding_state - context binding state | ||
299 | * | ||
300 | * @list: linked list of individual bindings. | ||
301 | * @render_targets: Render target bindings. | ||
302 | * @texture_units: Texture units/samplers bindings. | ||
303 | * @shaders: Shader bindings. | ||
304 | * | ||
305 | * Note that this structure also provides storage space for the individual | ||
306 | * struct vmw_ctx_binding objects, so that no dynamic allocation is needed | ||
307 | * for individual bindings. | ||
308 | * | ||
309 | */ | ||
310 | struct vmw_ctx_binding_state { | ||
311 | struct list_head list; | ||
312 | struct vmw_ctx_binding render_targets[SVGA3D_RT_MAX]; | ||
313 | struct vmw_ctx_binding texture_units[SVGA3D_NUM_TEXTURE_UNITS]; | ||
314 | struct vmw_ctx_binding shaders[SVGA3D_SHADERTYPE_MAX]; | ||
315 | }; | ||
316 | |||
232 | struct vmw_sw_context{ | 317 | struct vmw_sw_context{ |
233 | struct drm_open_hash res_ht; | 318 | struct drm_open_hash res_ht; |
234 | bool res_ht_initialized; | 319 | bool res_ht_initialized; |
@@ -250,6 +335,7 @@ struct vmw_sw_context{ | |||
250 | struct vmw_resource *last_query_ctx; | 335 | struct vmw_resource *last_query_ctx; |
251 | bool needs_post_query_barrier; | 336 | bool needs_post_query_barrier; |
252 | struct vmw_resource *error_resource; | 337 | struct vmw_resource *error_resource; |
338 | struct vmw_ctx_binding_state staged_bindings; | ||
253 | }; | 339 | }; |
254 | 340 | ||
255 | struct vmw_legacy_display; | 341 | struct vmw_legacy_display; |
@@ -281,6 +367,7 @@ struct vmw_private { | |||
281 | unsigned int io_start; | 367 | unsigned int io_start; |
282 | uint32_t vram_start; | 368 | uint32_t vram_start; |
283 | uint32_t vram_size; | 369 | uint32_t vram_size; |
370 | uint32_t prim_bb_mem; | ||
284 | uint32_t mmio_start; | 371 | uint32_t mmio_start; |
285 | uint32_t mmio_size; | 372 | uint32_t mmio_size; |
286 | uint32_t fb_max_width; | 373 | uint32_t fb_max_width; |
@@ -290,11 +377,12 @@ struct vmw_private { | |||
290 | __le32 __iomem *mmio_virt; | 377 | __le32 __iomem *mmio_virt; |
291 | int mmio_mtrr; | 378 | int mmio_mtrr; |
292 | uint32_t capabilities; | 379 | uint32_t capabilities; |
293 | uint32_t max_gmr_descriptors; | ||
294 | uint32_t max_gmr_ids; | 380 | uint32_t max_gmr_ids; |
295 | uint32_t max_gmr_pages; | 381 | uint32_t max_gmr_pages; |
382 | uint32_t max_mob_pages; | ||
296 | uint32_t memory_size; | 383 | uint32_t memory_size; |
297 | bool has_gmr; | 384 | bool has_gmr; |
385 | bool has_mob; | ||
298 | struct mutex hw_mutex; | 386 | struct mutex hw_mutex; |
299 | 387 | ||
300 | /* | 388 | /* |
@@ -370,6 +458,7 @@ struct vmw_private { | |||
370 | 458 | ||
371 | struct vmw_sw_context ctx; | 459 | struct vmw_sw_context ctx; |
372 | struct mutex cmdbuf_mutex; | 460 | struct mutex cmdbuf_mutex; |
461 | struct mutex binding_mutex; | ||
373 | 462 | ||
374 | /** | 463 | /** |
375 | * Operating mode. | 464 | * Operating mode. |
@@ -415,6 +504,12 @@ struct vmw_private { | |||
415 | * DMA mapping stuff. | 504 | * DMA mapping stuff. |
416 | */ | 505 | */ |
417 | enum vmw_dma_map_mode map_mode; | 506 | enum vmw_dma_map_mode map_mode; |
507 | |||
508 | /* | ||
509 | * Guest Backed stuff | ||
510 | */ | ||
511 | struct ttm_buffer_object *otable_bo; | ||
512 | struct vmw_otable *otables; | ||
418 | }; | 513 | }; |
419 | 514 | ||
420 | static inline struct vmw_surface *vmw_res_to_srf(struct vmw_resource *res) | 515 | static inline struct vmw_surface *vmw_res_to_srf(struct vmw_resource *res) |
@@ -471,23 +566,12 @@ extern void vmw_gmr_unbind(struct vmw_private *dev_priv, int gmr_id); | |||
471 | * Resource utilities - vmwgfx_resource.c | 566 | * Resource utilities - vmwgfx_resource.c |
472 | */ | 567 | */ |
473 | struct vmw_user_resource_conv; | 568 | struct vmw_user_resource_conv; |
474 | extern const struct vmw_user_resource_conv *user_surface_converter; | ||
475 | extern const struct vmw_user_resource_conv *user_context_converter; | ||
476 | 569 | ||
477 | extern struct vmw_resource *vmw_context_alloc(struct vmw_private *dev_priv); | ||
478 | extern void vmw_resource_unreference(struct vmw_resource **p_res); | 570 | extern void vmw_resource_unreference(struct vmw_resource **p_res); |
479 | extern struct vmw_resource *vmw_resource_reference(struct vmw_resource *res); | 571 | extern struct vmw_resource *vmw_resource_reference(struct vmw_resource *res); |
480 | extern int vmw_resource_validate(struct vmw_resource *res); | 572 | extern int vmw_resource_validate(struct vmw_resource *res); |
481 | extern int vmw_resource_reserve(struct vmw_resource *res, bool no_backup); | 573 | extern int vmw_resource_reserve(struct vmw_resource *res, bool no_backup); |
482 | extern bool vmw_resource_needs_backup(const struct vmw_resource *res); | 574 | extern bool vmw_resource_needs_backup(const struct vmw_resource *res); |
483 | extern int vmw_context_destroy_ioctl(struct drm_device *dev, void *data, | ||
484 | struct drm_file *file_priv); | ||
485 | extern int vmw_context_define_ioctl(struct drm_device *dev, void *data, | ||
486 | struct drm_file *file_priv); | ||
487 | extern int vmw_context_check(struct vmw_private *dev_priv, | ||
488 | struct ttm_object_file *tfile, | ||
489 | int id, | ||
490 | struct vmw_resource **p_res); | ||
491 | extern int vmw_user_lookup_handle(struct vmw_private *dev_priv, | 575 | extern int vmw_user_lookup_handle(struct vmw_private *dev_priv, |
492 | struct ttm_object_file *tfile, | 576 | struct ttm_object_file *tfile, |
493 | uint32_t handle, | 577 | uint32_t handle, |
@@ -499,18 +583,6 @@ extern int vmw_user_resource_lookup_handle( | |||
499 | uint32_t handle, | 583 | uint32_t handle, |
500 | const struct vmw_user_resource_conv *converter, | 584 | const struct vmw_user_resource_conv *converter, |
501 | struct vmw_resource **p_res); | 585 | struct vmw_resource **p_res); |
502 | extern void vmw_surface_res_free(struct vmw_resource *res); | ||
503 | extern int vmw_surface_destroy_ioctl(struct drm_device *dev, void *data, | ||
504 | struct drm_file *file_priv); | ||
505 | extern int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | ||
506 | struct drm_file *file_priv); | ||
507 | extern int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, | ||
508 | struct drm_file *file_priv); | ||
509 | extern int vmw_surface_check(struct vmw_private *dev_priv, | ||
510 | struct ttm_object_file *tfile, | ||
511 | uint32_t handle, int *id); | ||
512 | extern int vmw_surface_validate(struct vmw_private *dev_priv, | ||
513 | struct vmw_surface *srf); | ||
514 | extern void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo); | 586 | extern void vmw_dmabuf_bo_free(struct ttm_buffer_object *bo); |
515 | extern int vmw_dmabuf_init(struct vmw_private *dev_priv, | 587 | extern int vmw_dmabuf_init(struct vmw_private *dev_priv, |
516 | struct vmw_dma_buffer *vmw_bo, | 588 | struct vmw_dma_buffer *vmw_bo, |
@@ -519,10 +591,21 @@ extern int vmw_dmabuf_init(struct vmw_private *dev_priv, | |||
519 | void (*bo_free) (struct ttm_buffer_object *bo)); | 591 | void (*bo_free) (struct ttm_buffer_object *bo)); |
520 | extern int vmw_user_dmabuf_verify_access(struct ttm_buffer_object *bo, | 592 | extern int vmw_user_dmabuf_verify_access(struct ttm_buffer_object *bo, |
521 | struct ttm_object_file *tfile); | 593 | struct ttm_object_file *tfile); |
594 | extern int vmw_user_dmabuf_alloc(struct vmw_private *dev_priv, | ||
595 | struct ttm_object_file *tfile, | ||
596 | uint32_t size, | ||
597 | bool shareable, | ||
598 | uint32_t *handle, | ||
599 | struct vmw_dma_buffer **p_dma_buf); | ||
600 | extern int vmw_user_dmabuf_reference(struct ttm_object_file *tfile, | ||
601 | struct vmw_dma_buffer *dma_buf, | ||
602 | uint32_t *handle); | ||
522 | extern int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, | 603 | extern int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, |
523 | struct drm_file *file_priv); | 604 | struct drm_file *file_priv); |
524 | extern int vmw_dmabuf_unref_ioctl(struct drm_device *dev, void *data, | 605 | extern int vmw_dmabuf_unref_ioctl(struct drm_device *dev, void *data, |
525 | struct drm_file *file_priv); | 606 | struct drm_file *file_priv); |
607 | extern int vmw_user_dmabuf_synccpu_ioctl(struct drm_device *dev, void *data, | ||
608 | struct drm_file *file_priv); | ||
526 | extern uint32_t vmw_dmabuf_validate_node(struct ttm_buffer_object *bo, | 609 | extern uint32_t vmw_dmabuf_validate_node(struct ttm_buffer_object *bo, |
527 | uint32_t cur_validate_node); | 610 | uint32_t cur_validate_node); |
528 | extern void vmw_dmabuf_validate_clear(struct ttm_buffer_object *bo); | 611 | extern void vmw_dmabuf_validate_clear(struct ttm_buffer_object *bo); |
@@ -622,10 +705,16 @@ extern struct ttm_placement vmw_vram_sys_placement; | |||
622 | extern struct ttm_placement vmw_vram_gmr_placement; | 705 | extern struct ttm_placement vmw_vram_gmr_placement; |
623 | extern struct ttm_placement vmw_vram_gmr_ne_placement; | 706 | extern struct ttm_placement vmw_vram_gmr_ne_placement; |
624 | extern struct ttm_placement vmw_sys_placement; | 707 | extern struct ttm_placement vmw_sys_placement; |
708 | extern struct ttm_placement vmw_sys_ne_placement; | ||
625 | extern struct ttm_placement vmw_evictable_placement; | 709 | extern struct ttm_placement vmw_evictable_placement; |
626 | extern struct ttm_placement vmw_srf_placement; | 710 | extern struct ttm_placement vmw_srf_placement; |
711 | extern struct ttm_placement vmw_mob_placement; | ||
627 | extern struct ttm_bo_driver vmw_bo_driver; | 712 | extern struct ttm_bo_driver vmw_bo_driver; |
628 | extern int vmw_dma_quiescent(struct drm_device *dev); | 713 | extern int vmw_dma_quiescent(struct drm_device *dev); |
714 | extern int vmw_bo_map_dma(struct ttm_buffer_object *bo); | ||
715 | extern void vmw_bo_unmap_dma(struct ttm_buffer_object *bo); | ||
716 | extern const struct vmw_sg_table * | ||
717 | vmw_bo_sg_table(struct ttm_buffer_object *bo); | ||
629 | extern void vmw_piter_start(struct vmw_piter *viter, | 718 | extern void vmw_piter_start(struct vmw_piter *viter, |
630 | const struct vmw_sg_table *vsgt, | 719 | const struct vmw_sg_table *vsgt, |
631 | unsigned long p_offs); | 720 | unsigned long p_offs); |
@@ -701,7 +790,7 @@ extern void vmw_execbuf_copy_fence_user(struct vmw_private *dev_priv, | |||
701 | * IRQs and wating - vmwgfx_irq.c | 790 | * IRQs and wating - vmwgfx_irq.c |
702 | */ | 791 | */ |
703 | 792 | ||
704 | extern irqreturn_t vmw_irq_handler(DRM_IRQ_ARGS); | 793 | extern irqreturn_t vmw_irq_handler(int irq, void *arg); |
705 | extern int vmw_wait_seqno(struct vmw_private *dev_priv, bool lazy, | 794 | extern int vmw_wait_seqno(struct vmw_private *dev_priv, bool lazy, |
706 | uint32_t seqno, bool interruptible, | 795 | uint32_t seqno, bool interruptible, |
707 | unsigned long timeout); | 796 | unsigned long timeout); |
@@ -832,6 +921,76 @@ extern int vmw_prime_handle_to_fd(struct drm_device *dev, | |||
832 | uint32_t handle, uint32_t flags, | 921 | uint32_t handle, uint32_t flags, |
833 | int *prime_fd); | 922 | int *prime_fd); |
834 | 923 | ||
924 | /* | ||
925 | * MemoryOBject management - vmwgfx_mob.c | ||
926 | */ | ||
927 | struct vmw_mob; | ||
928 | extern int vmw_mob_bind(struct vmw_private *dev_priv, struct vmw_mob *mob, | ||
929 | const struct vmw_sg_table *vsgt, | ||
930 | unsigned long num_data_pages, int32_t mob_id); | ||
931 | extern void vmw_mob_unbind(struct vmw_private *dev_priv, | ||
932 | struct vmw_mob *mob); | ||
933 | extern void vmw_mob_destroy(struct vmw_mob *mob); | ||
934 | extern struct vmw_mob *vmw_mob_create(unsigned long data_pages); | ||
935 | extern int vmw_otables_setup(struct vmw_private *dev_priv); | ||
936 | extern void vmw_otables_takedown(struct vmw_private *dev_priv); | ||
937 | |||
938 | /* | ||
939 | * Context management - vmwgfx_context.c | ||
940 | */ | ||
941 | |||
942 | extern const struct vmw_user_resource_conv *user_context_converter; | ||
943 | |||
944 | extern struct vmw_resource *vmw_context_alloc(struct vmw_private *dev_priv); | ||
945 | |||
946 | extern int vmw_context_check(struct vmw_private *dev_priv, | ||
947 | struct ttm_object_file *tfile, | ||
948 | int id, | ||
949 | struct vmw_resource **p_res); | ||
950 | extern int vmw_context_define_ioctl(struct drm_device *dev, void *data, | ||
951 | struct drm_file *file_priv); | ||
952 | extern int vmw_context_destroy_ioctl(struct drm_device *dev, void *data, | ||
953 | struct drm_file *file_priv); | ||
954 | extern int vmw_context_binding_add(struct vmw_ctx_binding_state *cbs, | ||
955 | const struct vmw_ctx_bindinfo *ci); | ||
956 | extern void | ||
957 | vmw_context_binding_state_transfer(struct vmw_resource *res, | ||
958 | struct vmw_ctx_binding_state *cbs); | ||
959 | extern void vmw_context_binding_res_list_kill(struct list_head *head); | ||
960 | |||
961 | /* | ||
962 | * Surface management - vmwgfx_surface.c | ||
963 | */ | ||
964 | |||
965 | extern const struct vmw_user_resource_conv *user_surface_converter; | ||
966 | |||
967 | extern void vmw_surface_res_free(struct vmw_resource *res); | ||
968 | extern int vmw_surface_destroy_ioctl(struct drm_device *dev, void *data, | ||
969 | struct drm_file *file_priv); | ||
970 | extern int vmw_surface_define_ioctl(struct drm_device *dev, void *data, | ||
971 | struct drm_file *file_priv); | ||
972 | extern int vmw_surface_reference_ioctl(struct drm_device *dev, void *data, | ||
973 | struct drm_file *file_priv); | ||
974 | extern int vmw_gb_surface_define_ioctl(struct drm_device *dev, void *data, | ||
975 | struct drm_file *file_priv); | ||
976 | extern int vmw_gb_surface_reference_ioctl(struct drm_device *dev, void *data, | ||
977 | struct drm_file *file_priv); | ||
978 | extern int vmw_surface_check(struct vmw_private *dev_priv, | ||
979 | struct ttm_object_file *tfile, | ||
980 | uint32_t handle, int *id); | ||
981 | extern int vmw_surface_validate(struct vmw_private *dev_priv, | ||
982 | struct vmw_surface *srf); | ||
983 | |||
984 | /* | ||
985 | * Shader management - vmwgfx_shader.c | ||
986 | */ | ||
987 | |||
988 | extern const struct vmw_user_resource_conv *user_shader_converter; | ||
989 | |||
990 | extern int vmw_shader_define_ioctl(struct drm_device *dev, void *data, | ||
991 | struct drm_file *file_priv); | ||
992 | extern int vmw_shader_destroy_ioctl(struct drm_device *dev, void *data, | ||
993 | struct drm_file *file_priv); | ||
835 | 994 | ||
836 | /** | 995 | /** |
837 | * Inline helper functions | 996 | * Inline helper functions |