Rev 3769 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3769 | Rev 4251 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | /************************************************************************** |
|
Line -... | Line 2... | ||
- | 2 | ||
- | 3 | Copyright 2001 VA Linux Systems Inc., Fremont, California. |
|
- | 4 | Copyright © 2002 by David Dawes |
|
- | 5 | ||
- | 6 | All Rights Reserved. |
|
- | 7 | ||
- | 8 | Permission is hereby granted, free of charge, to any person obtaining a |
|
- | 9 | copy of this software and associated documentation files (the "Software"), |
|
- | 10 | to deal in the Software without restriction, including without limitation |
|
- | 11 | on the rights to use, copy, modify, merge, publish, distribute, sub |
|
- | 12 | license, and/or sell copies of the Software, and to permit persons to whom |
|
- | 13 | the Software is furnished to do so, subject to the following conditions: |
|
- | 14 | ||
- | 15 | The above copyright notice and this permission notice (including the next |
|
- | 16 | paragraph) shall be included in all copies or substantial portions of the |
|
- | 17 | Software. |
|
- | 18 | ||
- | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
- | 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
- | 21 | FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
|
- | 22 | THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, |
|
- | 23 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
|
- | 24 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE |
|
- | 25 | USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
- | 26 | ||
- | 27 | **************************************************************************/ |
|
- | 28 | ||
- | 29 | /* |
|
- | 30 | * Authors: Jeff Hartmann |
|
- | 31 | * Abraham van der Merwe |
|
- | 32 | * David Dawes |
|
- | 33 | * Alan Hourihane |
|
- | 34 | */ |
|
- | 35 | ||
- | 36 | #ifdef HAVE_CONFIG_H |
|
- | 37 | #include "config.h" |
|
Line 1... | Line 38... | ||
1 | #include |
38 | #endif |
2 | #include |
39 | |
3 | #include |
40 | #include |
4 | #include |
41 | #include |
- | 42 | #include |
|
Line -... | Line 43... | ||
- | 43 | #include |
|
5 | 44 | #include "i915_pciids.h" |
|
- | 45 | ||
Line 6... | Line 46... | ||
6 | #include "sna.h" |
46 | #include "compiler.h" |
Line 7... | Line 47... | ||
7 | 47 | #include "sna.h" |
|
8 | #define to_surface(x) (surface_t*)((x)->handle) |
48 | #include "intel_driver.h" |
Line 44... | Line 84... | ||
44 | uint32_t kgem_surface_size(struct kgem *kgem,bool relaxed_fencing, |
84 | int kgem_init_fb(struct kgem *kgem, struct sna_fb *fb); |
45 | unsigned flags, uint32_t width, uint32_t height, |
85 | int kgem_update_fb(struct kgem *kgem, struct sna_fb *fb); |
46 | uint32_t bpp, uint32_t tiling, uint32_t *pitch); |
86 | uint32_t kgem_surface_size(struct kgem *kgem,bool relaxed_fencing, |
47 | 87 | unsigned flags, uint32_t width, uint32_t height, |
|
48 | void kgem_close_batches(struct kgem *kgem); |
88 | uint32_t bpp, uint32_t tiling, uint32_t *pitch); |
- | 89 | struct kgem_bo *kgem_bo_from_handle(struct kgem *kgem, int handle, |
|
- | 90 | int pitch, int height); |
|
Line 49... | Line 91... | ||
49 | void sna_bo_destroy(struct kgem *kgem, struct kgem_bo *bo); |
91 | |
50 | 92 | void kgem_close_batches(struct kgem *kgem); |
|
Line 51... | Line 93... | ||
51 | const struct intel_device_info * |
93 | void sna_bo_destroy(struct kgem *kgem, struct kgem_bo *bo); |
52 | intel_detect_chipset(struct pci_device *pci); |
94 | |
Line 53... | Line -... | ||
53 | - | ||
54 | //struct kgem_bo *create_bo(bitmap_t *bitmap); |
- | |
55 | 95 | const struct intel_device_info * |
|
Line 56... | Line 96... | ||
56 | static bool sna_solid_cache_init(struct sna *sna); |
96 | intel_detect_chipset(struct pci_device *pci); |
Line 57... | Line 97... | ||
57 | 97 | ||
Line 64... | Line 104... | ||
64 | (void)sna; |
104 | static void no_render_reset(struct sna *sna) |
65 | } |
105 | { |
66 | 106 | (void)sna; |
|
67 | void no_render_init(struct sna *sna) |
107 | } |
Line -... | Line 108... | ||
- | 108 | ||
- | 109 | static void no_render_flush(struct sna *sna) |
|
- | 110 | { |
|
- | 111 | (void)sna; |
|
- | 112 | } |
|
- | 113 | ||
- | 114 | static void |
|
- | 115 | no_render_context_switch(struct kgem *kgem, |
|
- | 116 | int new_mode) |
|
- | 117 | { |
|
- | 118 | if (!kgem->nbatch) |
|
- | 119 | return; |
|
- | 120 | ||
- | 121 | if (kgem_ring_is_idle(kgem, kgem->ring)) { |
|
- | 122 | DBG(("%s: GPU idle, flushing\n", __FUNCTION__)); |
|
- | 123 | _kgem_submit(kgem); |
|
- | 124 | } |
|
- | 125 | ||
- | 126 | (void)new_mode; |
|
- | 127 | } |
|
- | 128 | ||
- | 129 | static void |
|
- | 130 | no_render_retire(struct kgem *kgem) |
|
- | 131 | { |
|
- | 132 | (void)kgem; |
|
- | 133 | } |
|
- | 134 | ||
- | 135 | static void |
|
- | 136 | no_render_expire(struct kgem *kgem) |
|
- | 137 | { |
|
- | 138 | (void)kgem; |
|
- | 139 | } |
|
- | 140 | ||
68 | { |
141 | static void |
- | 142 | no_render_fini(struct sna *sna) |
|
- | 143 | { |
|
- | 144 | (void)sna; |
|
- | 145 | } |
|
- | 146 | ||
69 | struct sna_render *render = &sna->render; |
147 | const char *no_render_init(struct sna *sna) |
70 | 148 | { |
|
Line 71... | Line 149... | ||
71 | memset (render,0, sizeof (*render)); |
149 | struct sna_render *render = &sna->render; |
Line 72... | Line 150... | ||
72 | 150 | ||
Line 73... | Line 151... | ||
73 | render->prefer_gpu = PREFER_GPU_BLT; |
151 | memset (render,0, sizeof (*render)); |
74 | 152 | ||
Line 75... | Line -... | ||
75 | render->vertices = render->vertex_data; |
- | |
76 | render->vertex_size = ARRAY_SIZE(render->vertex_data); |
- | |
77 | - | ||
78 | // render->composite = no_render_composite; |
- | |
79 | - | ||
80 | // render->copy_boxes = no_render_copy_boxes; |
- | |
81 | // render->copy = no_render_copy; |
- | |
82 | - | ||
83 | // render->fill_boxes = no_render_fill_boxes; |
- | |
84 | // render->fill = no_render_fill; |
- | |
85 | // render->fill_one = no_render_fill_one; |
153 | render->prefer_gpu = PREFER_GPU_BLT; |
86 | // render->clear = no_render_clear; |
154 | |
87 | 155 | render->vertices = render->vertex_data; |
|
Line 88... | Line 156... | ||
88 | render->reset = no_render_reset; |
156 | render->vertex_size = ARRAY_SIZE(render->vertex_data); |
89 | // render->flush = no_render_flush; |
157 | |
- | 158 | render->reset = no_render_reset; |
|
Line 90... | Line 159... | ||
90 | // render->fini = no_render_fini; |
159 | render->flush = no_render_flush; |
91 | 160 | render->fini = no_render_fini; |
|
Line 92... | Line 161... | ||
92 | // sna->kgem.context_switch = no_render_context_switch; |
161 | |
- | 162 | sna->kgem.context_switch = no_render_context_switch; |
|
93 | // sna->kgem.retire = no_render_retire; |
163 | sna->kgem.retire = no_render_retire; |
Line 94... | Line 164... | ||
94 | 164 | sna->kgem.expire = no_render_expire; |
|
95 | if (sna->kgem.gen >= 60) |
165 | |
96 | sna->kgem.ring = KGEM_RENDER; |
166 | sna->kgem.mode = KGEM_RENDER; |
Line 109... | Line 179... | ||
109 | { |
179 | |
110 | const char *backend; |
180 | int sna_accel_init(struct sna *sna) |
111 | 181 | { |
|
Line 112... | Line -... | ||
112 | // list_init(&sna->deferred_free); |
- | |
113 | // list_init(&sna->dirty_pixmaps); |
- | |
114 | // list_init(&sna->active_pixmaps); |
- | |
115 | // list_init(&sna->inactive_clock[0]); |
- | |
116 | // list_init(&sna->inactive_clock[1]); |
- | |
117 | - | ||
118 | // sna_accel_install_timers(sna); |
- | |
119 | - | ||
120 | - | ||
121 | backend = "no"; |
- | |
122 | no_render_init(sna); |
182 | const char *backend; |
123 | - | ||
124 | if (sna->info->gen >= 0100) { |
183 | |
- | 184 | backend = no_render_init(sna); |
|
125 | } else if (sna->info->gen >= 070) { |
185 | if (sna->info->gen >= 0100) |
126 | if (gen7_render_init(sna)) |
186 | (void)backend; |
127 | backend = "IvyBridge"; |
- | |
128 | } else if (sna->info->gen >= 060) { |
187 | else if (sna->info->gen >= 070) |
129 | if (gen6_render_init(sna)) |
188 | backend = gen7_render_init(sna, backend); |
130 | backend = "SandyBridge"; |
- | |
131 | } else if (sna->info->gen >= 050) { |
189 | else if (sna->info->gen >= 060) |
132 | if (gen5_render_init(sna)) |
190 | backend = gen6_render_init(sna, backend); |
133 | backend = "Ironlake"; |
- | |
134 | } else if (sna->info->gen >= 040) { |
191 | else if (sna->info->gen >= 050) |
135 | if (gen4_render_init(sna)) |
192 | backend = gen5_render_init(sna, backend); |
136 | backend = "Broadwater/Crestline"; |
- | |
137 | } else if (sna->info->gen >= 030) { |
193 | else if (sna->info->gen >= 040) |
138 | if (gen3_render_init(sna)) |
194 | backend = gen4_render_init(sna, backend); |
139 | backend = "gen3"; |
- | |
140 | } |
- | |
Line 141... | Line 195... | ||
141 | 195 | else if (sna->info->gen >= 030) |
|
142 | DBG(("%s(backend=%s, prefer_gpu=%x)\n", |
196 | backend = gen3_render_init(sna, backend); |
Line 143... | Line 197... | ||
143 | __FUNCTION__, backend, sna->render.prefer_gpu)); |
197 | |
Line 144... | Line -... | ||
144 | - | ||
145 | kgem_reset(&sna->kgem); |
- | |
146 | - | ||
147 | // if (!sna_solid_cache_init(sna)) |
198 | DBG(("%s(backend=%s, prefer_gpu=%x)\n", |
Line 148... | Line -... | ||
148 | // return false; |
- | |
149 | 199 | __FUNCTION__, backend, sna->render.prefer_gpu)); |
|
150 | sna_device = sna; |
200 | |
Line 151... | Line 201... | ||
151 | 201 | kgem_reset(&sna->kgem); |
|
152 | 202 | ||
Line 184... | Line 234... | ||
184 | 234 | if (sna == NULL) |
|
185 | memset(sna, 0, sizeof(*sna)); |
235 | goto err1; |
Line 186... | Line 236... | ||
186 | 236 | ||
Line 187... | Line 237... | ||
187 | sna->PciInfo = &device; |
237 | memset(sna, 0, sizeof(*sna)); |
Line -... | Line 238... | ||
- | 238 | ||
188 | 239 | sna->cpu_features = sna_cpu_detect(); |
|
- | 240 | ||
Line 189... | Line 241... | ||
189 | sna->info = intel_detect_chipset(sna->PciInfo); |
241 | sna->PciInfo = &device; |
Line 190... | Line -... | ||
190 | - | ||
191 | kgem_init(&sna->kgem, service, sna->PciInfo, sna->info->gen); |
- | |
192 | - | ||
193 | /* |
- | |
194 | if (!xf86ReturnOptValBool(sna->Options, |
- | |
195 | OPTION_RELAXED_FENCING, |
- | |
196 | sna->kgem.has_relaxed_fencing)) { |
- | |
197 | xf86DrvMsg(scrn->scrnIndex, |
- | |
198 | sna->kgem.has_relaxed_fencing ? X_CONFIG : X_PROBED, |
- | |
199 | "Disabling use of relaxed fencing\n"); |
- | |
200 | sna->kgem.has_relaxed_fencing = 0; |
- | |
201 | } |
- | |
202 | if (!xf86ReturnOptValBool(sna->Options, |
- | |
203 | OPTION_VMAP, |
- | |
204 | sna->kgem.has_vmap)) { |
- | |
205 | xf86DrvMsg(scrn->scrnIndex, |
- | |
206 | sna->kgem.has_vmap ? X_CONFIG : X_PROBED, |
- | |
207 | "Disabling use of vmap\n"); |
- | |
Line 208... | Line 242... | ||
208 | sna->kgem.has_vmap = 0; |
242 | sna->info = intel_detect_chipset(sna->PciInfo); |
209 | } |
243 | sna->scrn = service; |
Line 210... | Line 244... | ||
210 | */ |
244 | |
211 | 245 | kgem_init(&sna->kgem, service, sna->PciInfo, sna->info->gen); |
|
Line 212... | Line 246... | ||
212 | /* Disable tiling by default */ |
246 | |
Line 488... | Line 522... | ||
488 | return -1; |
522 | free(sf); |
489 | }; |
523 | err_1: |
490 | 524 | return -1; |
|
491 | int sna_destroy_bitmap(bitmap_t *bitmap) |
525 | }; |
Line -... | Line 526... | ||
- | 526 | ||
- | 527 | int sna_bitmap_from_handle(bitmap_t *bitmap, uint32_t handle) |
|
- | 528 | { |
|
- | 529 | surface_t *sf; |
|
- | 530 | struct kgem_bo *bo; |
|
- | 531 | ||
- | 532 | sf = malloc(sizeof(*sf)); |
|
- | 533 | if(sf == NULL) |
|
- | 534 | goto err_1; |
|
- | 535 | ||
- | 536 | __lock_acquire_recursive(__sna_lock); |
|
- | 537 | ||
- | 538 | bo = kgem_bo_from_handle(&sna_device->kgem, handle, bitmap->pitch, bitmap->height); |
|
- | 539 | ||
- | 540 | __lock_release_recursive(__sna_lock); |
|
- | 541 | ||
- | 542 | sf->width = bitmap->width; |
|
- | 543 | sf->height = bitmap->height; |
|
- | 544 | sf->data = NULL; |
|
- | 545 | sf->pitch = bo->pitch; |
|
- | 546 | sf->bo = bo; |
|
- | 547 | sf->bo_size = PAGE_SIZE * bo->size.pages.count; |
|
- | 548 | sf->flags = bitmap->flags; |
|
- | 549 | ||
- | 550 | bitmap->handle = (uint32_t)sf; |
|
- | 551 | ||
- | 552 | return 0; |
|
- | 553 | ||
- | 554 | err_2: |
|
- | 555 | __lock_release_recursive(__sna_lock); |
|
- | 556 | free(sf); |
|
- | 557 | err_1: |
|
- | 558 | return -1; |
|
- | 559 | }; |
|
- | 560 | ||
- | 561 | void sna_set_bo_handle(bitmap_t *bitmap, int handle) |
|
- | 562 | { |
|
- | 563 | surface_t *sf = to_surface(bitmap); |
|
- | 564 | struct kgem_bo *bo = sf->bo; |
|
- | 565 | bo->handle = handle; |
|
- | 566 | } |
|
492 | { |
567 | |
493 | surface_t *sf = to_surface(bitmap); |
568 | int sna_destroy_bitmap(bitmap_t *bitmap) |
494 | 569 | { |
|
Line 495... | Line 570... | ||
495 | __lock_acquire_recursive(__sna_lock); |
570 | surface_t *sf = to_surface(bitmap); |
Line 684... | Line 759... | ||
684 | 759 | return -1; |
|
685 | VG_CLEAR(update); |
760 | } |
Line 686... | Line 761... | ||
686 | update.handle = mask_bo->handle; |
761 | |
687 | update.bo_map = (__u32)MAP(mask_bo->map); |
762 | VG_CLEAR(update); |
688 | drmIoctl(sna_device->kgem.fd, SRV_MASK_UPDATE, &update); |
763 | update.handle = mask_bo->handle; |
689 | mask_bo->pitch = update.bo_pitch; |
764 | update.bo_map = (int)kgem_bo_map__cpu(&sna_device->kgem, mask_bo); |
690 | 765 | drmIoctl(sna_device->kgem.fd, SRV_MASK_UPDATE, &update); |
|
Line 691... | Line 766... | ||
691 | memset(&src, 0, sizeof(src)); |
766 | mask_bo->pitch = update.bo_pitch; |
692 | memset(&dst, 0, sizeof(dst)); |
767 | |
Line 754... | Line -... | ||
754 | - | ||
755 | - | ||
756 | 829 | ||
757 | 830 | ||
758 | 831 | ||
Line 759... | Line 832... | ||
759 | static const struct intel_device_info intel_generic_info = { |
832 | |
Line 805... | Line 878... | ||
805 | 878 | { 0x8086, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0x3 << 16, 0xff << 16, (intptr_t)(i) } |
|
Line 806... | Line 879... | ||
806 | static const struct pci_id_match intel_device_match[] = { |
879 | |
Line -... | Line 880... | ||
- | 880 | ||
- | 881 | static const struct pci_id_match intel_device_match[] = { |
|
- | 882 | ||
- | 883 | INTEL_I915G_IDS(&intel_i915_info), |
|
Line 807... | Line -... | ||
807 | - | ||
808 | - | ||
809 | INTEL_DEVICE_MATCH (PCI_CHIP_I915_G, &intel_i915_info ), |
- | |
810 | INTEL_DEVICE_MATCH (PCI_CHIP_E7221_G, &intel_i915_info ), |
- | |
811 | INTEL_DEVICE_MATCH (PCI_CHIP_I915_GM, &intel_i915_info ), |
- | |
812 | INTEL_DEVICE_MATCH (PCI_CHIP_I945_G, &intel_i945_info ), |
- | |
813 | INTEL_DEVICE_MATCH (PCI_CHIP_I945_GM, &intel_i945_info ), |
- | |
814 | INTEL_DEVICE_MATCH (PCI_CHIP_I945_GME, &intel_i945_info ), |
- | |
815 | - | ||
816 | INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_M, &intel_g33_info ), |
884 | INTEL_I915GM_IDS(&intel_i915_info), |
817 | INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_G, &intel_g33_info ), |
- | |
818 | INTEL_DEVICE_MATCH (PCI_CHIP_G33_G, &intel_g33_info ), |
- | |
819 | INTEL_DEVICE_MATCH (PCI_CHIP_Q33_G, &intel_g33_info ), |
- | |
820 | /* Another marketing win: Q35 is another g33 device not a gen4 part |
- | |
821 | * like its G35 brethren. |
885 | INTEL_I945G_IDS(&intel_i945_info), |
Line 822... | Line -... | ||
822 | */ |
- | |
823 | INTEL_DEVICE_MATCH (PCI_CHIP_Q35_G, &intel_g33_info ), |
886 | INTEL_I945GM_IDS(&intel_i945_info), |
824 | 887 | ||
825 | INTEL_DEVICE_MATCH (PCI_CHIP_I965_G, &intel_i965_info ), |
- | |
826 | INTEL_DEVICE_MATCH (PCI_CHIP_G35_G, &intel_i965_info ), |
- | |
827 | INTEL_DEVICE_MATCH (PCI_CHIP_I965_Q, &intel_i965_info ), |
- | |
828 | INTEL_DEVICE_MATCH (PCI_CHIP_I946_GZ, &intel_i965_info ), |
- | |
829 | INTEL_DEVICE_MATCH (PCI_CHIP_I965_GM, &intel_i965_info ), |
- | |
830 | INTEL_DEVICE_MATCH (PCI_CHIP_I965_GME, &intel_i965_info ), |
- | |
831 | - | ||
832 | INTEL_DEVICE_MATCH (PCI_CHIP_GM45_GM, &intel_g4x_info ), |
- | |
833 | INTEL_DEVICE_MATCH (PCI_CHIP_G45_E_G, &intel_g4x_info ), |
- | |
834 | INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, &intel_g4x_info ), |
- | |
835 | INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, &intel_g4x_info ), |
- | |
836 | INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, &intel_g4x_info ), |
- | |
837 | INTEL_DEVICE_MATCH (PCI_CHIP_B43_G, &intel_g4x_info ), |
- | |
838 | INTEL_DEVICE_MATCH (PCI_CHIP_B43_G1, &intel_g4x_info ), |
- | |
839 | - | ||
840 | INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_D_G, &intel_ironlake_info ), |
- | |
841 | INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_M_G, &intel_ironlake_info ), |
- | |
842 | - | ||
843 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT1, &intel_sandybridge_info ), |
- | |
844 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2, &intel_sandybridge_info ), |
- | |
845 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2_PLUS, &intel_sandybridge_info ), |
- | |
846 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT1, &intel_sandybridge_info ), |
- | |
847 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2, &intel_sandybridge_info ), |
- | |
848 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, &intel_sandybridge_info ), |
- | |
849 | INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_S_GT, &intel_sandybridge_info ), |
- | |
850 | - | ||
851 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_M_GT1, &intel_ivybridge_info ), |
- | |
852 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_M_GT2, &intel_ivybridge_info ), |
- | |
853 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_D_GT1, &intel_ivybridge_info ), |
- | |
854 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_D_GT2, &intel_ivybridge_info ), |
- | |
855 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_S_GT1, &intel_ivybridge_info ), |
- | |
856 | INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_S_GT2, &intel_ivybridge_info ), |
- | |
857 | - | ||
858 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_D_GT1, &intel_haswell_info ), |
- | |
859 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_D_GT2, &intel_haswell_info ), |
- | |
860 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_D_GT2_PLUS, &intel_haswell_info ), |
- | |
861 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_M_GT1, &intel_haswell_info ), |
- | |
862 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_M_GT2, &intel_haswell_info ), |
- | |
863 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_M_GT2_PLUS, &intel_haswell_info ), |
- | |
864 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_S_GT1, &intel_haswell_info ), |
- | |
865 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_S_GT2, &intel_haswell_info ), |
- | |
866 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_S_GT2_PLUS, &intel_haswell_info ), |
- | |
867 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_D_GT1, &intel_haswell_info ), |
- | |
868 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_D_GT2, &intel_haswell_info ), |
- | |
869 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_D_GT2_PLUS, &intel_haswell_info ), |
- | |
870 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_M_GT1, &intel_haswell_info ), |
- | |
871 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_M_GT2, &intel_haswell_info ), |
- | |
872 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_M_GT2_PLUS, &intel_haswell_info ), |
- | |
873 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_S_GT1, &intel_haswell_info ), |
- | |
874 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_S_GT2, &intel_haswell_info ), |
- | |
875 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_SDV_S_GT2_PLUS, &intel_haswell_info ), |
- | |
876 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_D_GT1, &intel_haswell_info ), |
- | |
877 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_D_GT2, &intel_haswell_info ), |
- | |
878 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_D_GT2_PLUS, &intel_haswell_info ), |
- | |
879 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_M_GT1, &intel_haswell_info ), |
- | |
880 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_M_GT2, &intel_haswell_info ), |
- | |
881 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_M_GT2_PLUS, &intel_haswell_info ), |
- | |
882 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_S_GT1, &intel_haswell_info ), |
- | |
883 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_S_GT2, &intel_haswell_info ), |
- | |
884 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_ULT_S_GT2_PLUS, &intel_haswell_info ), |
- | |
885 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_D_GT1, &intel_haswell_info ), |
- | |
886 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_D_GT2, &intel_haswell_info ), |
- | |
887 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_D_GT2_PLUS, &intel_haswell_info ), |
- | |
888 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_M_GT1, &intel_haswell_info ), |
- | |
889 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_M_GT2, &intel_haswell_info ), |
- | |
890 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_M_GT2_PLUS, &intel_haswell_info ), |
- | |
891 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_S_GT1, &intel_haswell_info ), |
- | |
892 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_S_GT2, &intel_haswell_info ), |
- | |
893 | INTEL_DEVICE_MATCH (PCI_CHIP_HASWELL_CRW_S_GT2_PLUS, &intel_haswell_info ), |
- | |
894 | - | ||
895 | INTEL_DEVICE_MATCH (PCI_CHIP_VALLEYVIEW_PO, &intel_valleyview_info ), |
- | |
Line -... | Line 888... | ||
- | 888 | INTEL_G33_IDS(&intel_g33_info), |
|
- | 889 | INTEL_PINEVIEW_IDS(&intel_g33_info), |
|
- | 890 | ||
- | 891 | INTEL_I965G_IDS(&intel_i965_info), |
|
- | 892 | INTEL_I965GM_IDS(&intel_i965_info), |
|
- | 893 | ||
- | 894 | INTEL_G45_IDS(&intel_g4x_info), |
|
- | 895 | INTEL_GM45_IDS(&intel_g4x_info), |
|
- | 896 | ||
- | 897 | INTEL_IRONLAKE_D_IDS(&intel_ironlake_info), |
|
- | 898 | INTEL_IRONLAKE_M_IDS(&intel_ironlake_info), |
|
- | 899 | ||
- | 900 | INTEL_SNB_D_IDS(&intel_sandybridge_info), |
|
- | 901 | INTEL_SNB_M_IDS(&intel_sandybridge_info), |
|
- | 902 | ||
- | 903 | INTEL_IVB_D_IDS(&intel_ivybridge_info), |
|
- | 904 | INTEL_IVB_M_IDS(&intel_ivybridge_info), |
|
- | 905 | ||
896 | INTEL_DEVICE_MATCH (PCI_CHIP_VALLEYVIEW_1, &intel_valleyview_info ), |
906 | INTEL_HSW_D_IDS(&intel_haswell_info), |
Line 897... | Line 907... | ||
897 | INTEL_DEVICE_MATCH (PCI_CHIP_VALLEYVIEW_2, &intel_valleyview_info ), |
907 | INTEL_HSW_M_IDS(&intel_haswell_info), |
898 | INTEL_DEVICE_MATCH (PCI_CHIP_VALLEYVIEW_3, &intel_valleyview_info ), |
908 | |
Line 899... | Line 909... | ||
899 | 909 | INTEL_VLV_D_IDS(&intel_valleyview_info), |
|
Line 946... | Line 956... | ||
946 | 956 | scrn->chipset = name; |
|
947 | } |
957 | #endif |
Line 948... | Line 958... | ||
948 | 958 | ||
Line -... | Line 959... | ||
- | 959 | } |
|
- | 960 | ||
- | 961 | int intel_get_device_id(int fd) |
|
- | 962 | { |
|
- | 963 | struct drm_i915_getparam gp; |
|
- | 964 | int devid = 0; |
|
- | 965 | ||
- | 966 | memset(&gp, 0, sizeof(gp)); |
|
- | 967 | gp.param = I915_PARAM_CHIPSET_ID; |
|
- | 968 | gp.value = &devid; |
|
- | 969 | ||
- | 970 | if (drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp)) |
|
- | 971 | return 0; |
|
- | 972 | ||
Line 949... | Line 973... | ||
949 | 973 | return devid; |
|
950 | int drmIoctl(int fd, unsigned long request, void *arg) |
974 | } |
951 | { |
975 |