annotate libvo/vo_dga.c @ 36089:d4056035c260

Set file prior to adding to the URL list. An already existing URL list item won't be added, but the allocated url string will be freed (which thus can't be uiSetFile() nor be added to the playlist).
author ib
date Mon, 29 Apr 2013 12:10:03 +0000
parents b291f44d864a
children 5d3f93051de9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
1 /*
10021
a7ae63354098 Spring cleanup: removed the full yv12 support as it was broken anyway. The BGR/RGB native/non-native case needs some cleanup, too. Currently it works for me (tm)
alex
parents: 9274
diff changeset
2 * X11 DGA Interface
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
3 *
26400
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
4 * Copyright (C) 2001 Andreas Ackermann <acki@acki-netz.de>
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
5 * Sourceforge username: acki2
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
6 *
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
7 * This file is part of MPlayer.
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
8 *
26400
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
9 * MPlayer is free software; you can redistribute it and/or modify
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
10 * it under the terms of the GNU General Public License as published by
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
12 * (at your option) any later version.
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
13 *
26400
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
14 * MPlayer is distributed in the hope that it will be useful,
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
17 * GNU General Public License for more details.
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
18 *
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
19 * You should have received a copy of the GNU General Public License along
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
20 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
5af4096b9fec Replace "all rights reserved" statement with standard GPL license header.
diego
parents: 25220
diff changeset
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
22 */
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
23
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
24 #include <stdio.h>
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
25 #include <stdlib.h>
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
26 #include <string.h>
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4713
diff changeset
27 #include <errno.h>
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
28
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
29 #include "config.h"
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
30 #include "video_out.h"
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
31 #include "video_out_internal.h"
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
32 #include "aspect.h"
10021
a7ae63354098 Spring cleanup: removed the full yv12 support as it was broken anyway. The BGR/RGB native/non-native case needs some cleanup, too. Currently it works for me (tm)
alex
parents: 9274
diff changeset
33 #include "x11_common.h"
a7ae63354098 Spring cleanup: removed the full yv12 support as it was broken anyway. The BGR/RGB native/non-native case needs some cleanup, too. Currently it works for me (tm)
alex
parents: 9274
diff changeset
34 #include "fastmemcpy.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12582
diff changeset
35 #include "mp_msg.h"
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
36
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
37 #include <X11/Xlib.h>
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
38 #include <X11/extensions/xf86dga.h>
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
39
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
40 #ifdef CONFIG_XF86VM
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
41 #include <X11/extensions/xf86vmode.h>
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
42 #endif
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
43
25216
3aee342be929 Make vo info structs const
reimar
parents: 18976
diff changeset
44 static const vo_info_t info = {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
45 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
46 "DGA ( Direct Graphic Access V2.0 )",
533
ca59ef4ce54d driver info now depends on detected DGA version
arpi_esp
parents: 493
diff changeset
47 #else
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
48 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
49 "DGA ( Direct Graphic Access V1.0+XF86VidModeExt. )",
7499
dcb9f392eae4 cosmetics...
arpi
parents: 7498
diff changeset
50 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
51 "DGA ( Direct Graphic Access V1.0 )",
7499
dcb9f392eae4 cosmetics...
arpi
parents: 7498
diff changeset
52 #endif
533
ca59ef4ce54d driver info now depends on detected DGA version
arpi_esp
parents: 493
diff changeset
53 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
54 "dga",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
55 "Andreas Ackermann <acki@acki-netz.de>",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
56 ""
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
57 };
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
58
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
59 const LIBVO_EXTERN(dga)
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
60 //------------------------------------------------------------------
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
61 //#define BITSPP (vo_dga_modes[vo_dga_active_mode].vdm_bitspp)
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
62 //#define BYTESPP (vo_dga_modes[vo_dga_active_mode].vdm_bytespp)
1154
4bf4e057c82e - if DGA fails to report some valid modes, vo_dga now exits gracefully
acki2
parents: 1150
diff changeset
63 #define VO_DGA_INVALID_RES 100000
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
64 #define HW_MODE (vo_dga_modes[vo_dga_hw_mode])
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
65 #define SRC_MODE (vo_dga_modes[vo_dga_src_mode])
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
66 struct vd_modes
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
67 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
68 int vdm_mplayer_depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
69 int vdm_supported;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
70 int vdm_depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
71 int vdm_bitspp;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
72 int vdm_bytespp;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
73 int vdm_rmask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
74 int vdm_gmask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
75 int vdm_bmask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
76 int vdm_hw_mode;
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
77 };
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
78
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
79 //------------------------------------------------------------------
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
80
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
81 static struct vd_modes vo_dga_modes[] = {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
82 // these entries describe HW modes
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
83 // however, we use the same entries to tell mplayer what we support
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
84 // so the last two values describe, which HW mode to use and which conversion
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
85 // function to use for a mode that is not supported by HW
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
86
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
87 {0, 0, 0, 0, 0, 0, 0, 0, 0,},
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
88 {15, 0, 15, 16, 2, 0x7c00, 0x03e0, 0x001f, 2,},
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
89 {16, 0, 16, 16, 2, 0xf800, 0x07e0, 0x001f, 2,},
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
90 {24, 0, 24, 24, 3, 0xff0000, 0x00ff00, 0x0000ff, 4},
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
91 {32, 0, 24, 32, 4, 0x00ff0000, 0x0000ff00, 0x000000ff, 4}
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
92 };
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
93
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
94 static int vo_dga_mode_num =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
95 sizeof(vo_dga_modes) / sizeof(struct vd_modes);
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
96
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
97 // enable a HW mode (by description)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
98 static int vd_EnableMode(int depth, int bitspp,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
99 int rmask, int gmask, int bmask)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
100 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
101 int i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
102
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
103 for (i = 1; i < vo_dga_mode_num; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
104 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
105 if (vo_dga_modes[i].vdm_depth == depth &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
106 vo_dga_modes[i].vdm_bitspp == bitspp &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
107 vo_dga_modes[i].vdm_rmask == rmask &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
108 vo_dga_modes[i].vdm_gmask == gmask &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
109 vo_dga_modes[i].vdm_bmask == bmask)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
110 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
111 vo_dga_modes[i].vdm_supported = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
112 vo_dga_modes[i].vdm_hw_mode = i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
113 return i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
114 }
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
115 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
116 return 0;
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
117 }
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
118
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
119 static int vd_ModeEqual(int depth, int bitspp,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
120 int rmask, int gmask, int bmask, int index)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
121 {
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26400
diff changeset
122 return (vo_dga_modes[index].vdm_depth == depth &&
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
123 vo_dga_modes[index].vdm_bitspp == bitspp &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
124 vo_dga_modes[index].vdm_rmask == rmask &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
125 vo_dga_modes[index].vdm_gmask == gmask &&
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26400
diff changeset
126 vo_dga_modes[index].vdm_bmask == bmask) ? 1 : 0;
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
127 }
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
128
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
129
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
130 // enable a HW mode (mplayer_depth decides which)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
131 static int vd_ValidateMode(int mplayer_depth)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
132 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
133 int i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
134
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
135 if (mplayer_depth == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
136 return 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
137 for (i = 1; i < vo_dga_mode_num; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
138 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
139 if (vo_dga_modes[i].vdm_mplayer_depth == mplayer_depth)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
140 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
141 vo_dga_modes[i].vdm_supported = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
142 vo_dga_modes[i].vdm_hw_mode = i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
143 return i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
144 }
395
01768a027e7d - fixed bug with depth and mpg when current bpp of XServer was != 32
acki2
parents: 392
diff changeset
145 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
146 return 0;
395
01768a027e7d - fixed bug with depth and mpg when current bpp of XServer was != 32
acki2
parents: 392
diff changeset
147 }
01768a027e7d - fixed bug with depth and mpg when current bpp of XServer was != 32
acki2
parents: 392
diff changeset
148
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
149 // do we support this mode? (not important whether native or conversion)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
150 static int vd_ModeValid(int mplayer_depth)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
151 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
152 int i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
153
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
154 if (mplayer_depth == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
155 return 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
156 for (i = 1; i < vo_dga_mode_num; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
157 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
158 if (vo_dga_modes[i].vdm_mplayer_depth == mplayer_depth &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
159 vo_dga_modes[i].vdm_supported != 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
160 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
161 return i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
162 }
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
163 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
164 return 0;
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
165 }
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
166
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
167 static char *vd_GetModeString(int index)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
168 {
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
169
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
170 #define VO_DGA_MAX_STRING_LEN 100
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
171 static char stringbuf[VO_DGA_MAX_STRING_LEN];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
172
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
173 stringbuf[VO_DGA_MAX_STRING_LEN - 1] = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
174 snprintf(stringbuf, VO_DGA_MAX_STRING_LEN - 2,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
175 "depth=%d, bpp=%d, r=%06x, g=%06x, b=%06x, %s (-bpp %d)",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
176 vo_dga_modes[index].vdm_depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
177 vo_dga_modes[index].vdm_bitspp,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
178 vo_dga_modes[index].vdm_rmask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
179 vo_dga_modes[index].vdm_gmask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
180 vo_dga_modes[index].vdm_bmask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
181 vo_dga_modes[index].
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
182 vdm_supported ? "native" : "not supported",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
183 vo_dga_modes[index].vdm_mplayer_depth);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
184 return stringbuf;
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
185 }
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
186
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
187 //-----------------------------------------------------------------
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
188
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
189 #if defined(CONFIG_XF86VM) && !defined(CONFIG_DGA2)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
190 static XF86VidModeModeInfo **vo_dga_vidmodes = NULL;
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
191 #endif
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
192
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
193
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
194 static int vo_dga_src_format;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
195 static int vo_dga_width; // bytes per line in framebuffer
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
196 static int vo_dga_vp_width; // visible pixels per line in
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
197
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
198 // framebuffer
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
199 static int vo_dga_vp_height; // visible lines in framebuffer
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
200 static int vo_dga_is_running = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
201 static int vo_dga_src_width; // width of video in pixels
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
202 static int vo_dga_src_height; // height of video in pixels
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
203 static int vo_dga_src_offset = 0; // offset in src
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
204 static int vo_dga_vp_offset = 0; // offset in dest
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
205 static int vo_dga_bytes_per_line; // bytes per line to copy
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
206 static int vo_dga_vp_skip; // dto. for dest
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
207 static int vo_dga_lines; // num of lines to copy
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
208 static int vo_dga_hw_mode = 0; // index in mode list that is actually
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
209
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
210 // used by framebuffer
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
211 static int vo_dga_src_mode = 0; // index in mode list that is used by
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
212
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
213 // codec
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
214 static int vo_dga_XServer_mode = 0; // index in mode list for resolution
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
215
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
216 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
217 static XDGAMode *vo_modelines;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
218 static int vo_modecount;
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
219 #endif
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
220
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
221 #define MAX_NR_VIDEO_BUFFERS 3
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
222
7575
3a6d7933a6ad flickering fix, patch by Fredrik Noring <noring@nocrew.org>
arpi
parents: 7539
diff changeset
223 #define CURRENT_VIDEO_BUFFER \
3a6d7933a6ad flickering fix, patch by Fredrik Noring <noring@nocrew.org>
arpi
parents: 7539
diff changeset
224 (vo_dga_video_buffer[vo_dga_current_video_buffer])
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
225
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
226 static int vo_dga_nr_video_buffers; // Total number of frame buffers.
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
227 static int vo_dga_current_video_buffer; // Buffer available for rendering.
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
228
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
229 static struct video_buffer
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
230 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
231 int y;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
232 uint8_t *data;
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
233 } vo_dga_video_buffer[MAX_NR_VIDEO_BUFFERS];
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
234
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
235 /* saved src and dst dimensions for SwScaler */
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
236 static unsigned int scale_srcW = 0,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
237 scale_dstW = 0, scale_srcH = 0, scale_dstH = 0;
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
238
490
caf5ddb0d19a - query_format() now uses new return value concept
acki2
parents: 395
diff changeset
239 //---------------------------------------------------------
caf5ddb0d19a - query_format() now uses new return value concept
acki2
parents: 395
diff changeset
240
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
241 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
242 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
243 {
490
caf5ddb0d19a - query_format() now uses new return value concept
acki2
parents: 395
diff changeset
244
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
245 char *d;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
246 unsigned int offset;
14795
041a13490497 no effect in practice, but strides should always be signed
rfelker
parents: 13787
diff changeset
247 int buffer_stride;
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33305
diff changeset
248 int bpp = pixel_stride(vo_dga_src_format);
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33305
diff changeset
249 vo_draw_alpha_func draw = vo_get_draw_alpha(vo_dga_src_format);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
250
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
251 offset = vo_dga_width * y0 + x0;
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33305
diff changeset
252 buffer_stride = vo_dga_width * bpp;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
253 d = CURRENT_VIDEO_BUFFER.data + vo_dga_vp_offset;
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33305
diff changeset
254 d += bpp * offset;
490
caf5ddb0d19a - query_format() now uses new return value concept
acki2
parents: 395
diff changeset
255
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33305
diff changeset
256 if (draw) draw(w, h, src, srca, stride, d, buffer_stride);
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
257 }
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
258
490
caf5ddb0d19a - query_format() now uses new return value concept
acki2
parents: 395
diff changeset
259
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
260 //---------------------------------------------------------
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
261
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
262
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
263
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
264
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
265 // quick & dirty - for debugging only
10495
81e99e4c6640 10l & warning fixes
alex
parents: 10286
diff changeset
266 #if 0
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
267 static void fillblock(char *strt, int yoff, int lines, int val)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
268 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
269 char *i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
270
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
271 for (i = strt + yoff * vo_dga_width * HW_MODE.vdm_bytespp;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
272 i < strt + (lines + yoff) * vo_dga_width * HW_MODE.vdm_bytespp;)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
273 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
274 *i++ = val;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
275 }
720
8146b106816a - now chooses mode with highest ymax (enables doublebuffering in some cases
acki2
parents: 691
diff changeset
276 }
10495
81e99e4c6640 10l & warning fixes
alex
parents: 10286
diff changeset
277 #endif
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
278
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
279 //---------------------------------------------------------
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
280
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
281 static int draw_frame(uint8_t * src[])
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
282 {
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
283
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
284 int numlines = vo_dga_lines;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
285
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
286 char *s, *d;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
287
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
288 s = *src;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
289 d = CURRENT_VIDEO_BUFFER.data + vo_dga_vp_offset;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
290
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
291 mem2agpcpy_pic(d, s,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
292 vo_dga_bytes_per_line,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
293 numlines,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
294 vo_dga_bytes_per_line + vo_dga_vp_skip,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
295 vo_dga_bytes_per_line);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
296
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
297 // DBG-COde
720
8146b106816a - now chooses mode with highest ymax (enables doublebuffering in some cases
acki2
parents: 691
diff changeset
298
8146b106816a - now chooses mode with highest ymax (enables doublebuffering in some cases
acki2
parents: 691
diff changeset
299 #if 0
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
300 d = CURRENT_VIDEO_BUFFER.data + vo_dga_vp_offset;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
301 fillblock(d, 0, 10, 0x800000ff);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
302 fillblock(d, 10, 10, 0x8000ff00);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
303 fillblock(d, 20, 10, 0x80ff0000);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
304 fillblock(d, 30, 10, 0xff0000ff);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
305 fillblock(d, 40, 10, 0x800000ff);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
306 fillblock(d, 50, 10, 0x0f0000ff);
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
307 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
308 return 0;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
309 }
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
310
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
311 //---------------------------------------------------------
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
312
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 13
diff changeset
313 static void check_events(void)
1fc618eba830 added check_events() interface
arpi_esp
parents: 13
diff changeset
314 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
315 vo_x11_check_events(mDisplay);
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 13
diff changeset
316 }
1fc618eba830 added check_events() interface
arpi_esp
parents: 13
diff changeset
317
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
318 //---------------------------------------------------------
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
319
32467
fbe5c829c69b Move libvo/sub.[ch] from libvo to sub.
cigaes
parents: 29263
diff changeset
320 #include "sub/sub.h"
612
77e0094f0cce some warnings killed
szabii
parents: 533
diff changeset
321
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1336
diff changeset
322 static void draw_osd(void)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
323 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
324 vo_draw_text(vo_dga_src_width, vo_dga_src_height, draw_alpha);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
325 }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1336
diff changeset
326
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
327 static void switch_video_buffers(void)
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
328 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
329 vo_dga_current_video_buffer =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
330 (vo_dga_current_video_buffer + 1) % vo_dga_nr_video_buffers;
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
331 }
262
2c7c77d793df - added double buffering :-)
acki2
parents: 261
diff changeset
332
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
333 static void flip_page(void)
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
334 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
335 if (1 < vo_dga_nr_video_buffers)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
336 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
337 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
338 XDGASetViewport(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
339 0, CURRENT_VIDEO_BUFFER.y, XDGAFlipRetrace);
262
2c7c77d793df - added double buffering :-)
acki2
parents: 261
diff changeset
340 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
341 XF86DGASetViewPort(mDisplay, mScreen, 0, CURRENT_VIDEO_BUFFER.y);
262
2c7c77d793df - added double buffering :-)
acki2
parents: 261
diff changeset
342 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
343 switch_video_buffers();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
344 }
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
345 }
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
346
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
347 //---------------------------------------------------------
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
348
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
349 static int draw_slice(uint8_t * src[], int stride[],
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
350 int w, int h, int x, int y)
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
351 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
352 return 0;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
353 };
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
354
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
355 //---------------------------------------------------------
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
356
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
357 static int query_format(uint32_t format)
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
358 {
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
359
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
360 if ((format & IMGFMT_BGR_MASK) == IMGFMT_BGR &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
361 vd_ModeValid(format & 0xff))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
362 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
363 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
364 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
365
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
366 return 0;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
367 }
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
368
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
369 //---------------------------------------------------------
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
370
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
371 static void uninit(void)
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
372 {
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
373
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
374 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
375 XDGADevice *dgadevice;
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
376 #endif
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
377
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
378 if (!vo_config_count)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
379 return;
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
380
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
381 if (vo_dga_is_running)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
382 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
383 vo_dga_is_running = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
384 mp_msg(MSGT_VO, MSGL_V, "vo_dga: in uninit\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
385 if (vo_grabpointer)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
386 XUngrabPointer(mDisplay, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
387 XUngrabKeyboard(mDisplay, CurrentTime);
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
388 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
389 XDGACloseFramebuffer(mDisplay, mScreen);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
390 dgadevice = XDGASetMode(mDisplay, mScreen, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
391 if (dgadevice != NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
392 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
393 XFree(dgadevice);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
394 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
395 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
396 XF86DGADirectVideo(mDisplay, mScreen, 0);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
397 // first disable DirectVideo and then switch mode back!
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
398 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
399 if (vo_dga_vidmodes != NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
400 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
401 int screen;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
402
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
403 screen = XDefaultScreen(mDisplay);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
404 mp_msg(MSGT_VO, MSGL_V,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
405 "vo_dga: VidModeExt: Switching back..\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
406 // seems some graphics adaptors need this more than once ...
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
407 XF86VidModeSwitchToMode(mDisplay, screen, vo_dga_vidmodes[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
408 XF86VidModeSwitchToMode(mDisplay, screen, vo_dga_vidmodes[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
409 XF86VidModeSwitchToMode(mDisplay, screen, vo_dga_vidmodes[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
410 XF86VidModeSwitchToMode(mDisplay, screen, vo_dga_vidmodes[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
411 XFree(vo_dga_vidmodes);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
412 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
413 #endif
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
414 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
415 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
416 vo_x11_uninit();
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
417 }
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
418
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
419
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
420 //----------------------------------------------------------
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
421 // TODO: check for larger maxy value
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
422 // (useful for double buffering!!!)
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
423
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
424 static int check_res(int num, int x, int y, int bpp,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
425 int new_x, int new_y, int new_vbi, int new_maxy,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
426 int *old_x, int *old_y, int *old_vbi, int *old_maxy)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
427 {
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
428
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
429 mp_msg(MSGT_VO, MSGL_V,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
430 "vo_dga: (%3d) Trying %4d x %4d @ %3d Hz @ depth %2d ..", num,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
431 new_x, new_y, new_vbi, bpp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
432 mp_msg(MSGT_VO, MSGL_V, "(old: %dx%d@%d).", *old_x, *old_y, *old_vbi);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
433 if ((new_x >= x) && (new_y >= y) && (
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
434 // prefer a better resolution either in X or in Y
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
435 // as long as the other dimension is at least the same
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
436 //
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
437 // hmm ... MAYBE it would be more clever to focus on the
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
438 // x-resolution; I had 712x400 and 640x480 and the movie
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
439 // was 640x360; 640x480 would be the 'right thing' here
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
440 // but since 712x400 was queried first I got this one.
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
441 // I think there should be a cmd-line switch to let the
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
442 // user choose the mode he likes ... (acki2)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
443 (((new_x < *old_x) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
444 !(new_y > *old_y)) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
445 ((new_y < *old_y) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
446 !(new_x > *old_x)))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
447 // but if we get an identical resolution choose
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
448 // the one with the lower refreshrate (saves bandwidth !!!)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
449 // as long as it's above 50 Hz (acki2 on 30/3/2001)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
450 ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
451 (((new_x == *old_x) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
452 (new_y == *old_y) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
453 ((new_vbi >= *old_vbi
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
454 && *old_vbi < 50)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
455 || (*old_vbi >= 50
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
456 && new_vbi < *old_vbi
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
457 && new_vbi >= 50))) ||
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
458 // if everything is equal, then use the mode with the lower
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
459 // stride
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
460 ((new_x == *old_x) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
461 (new_y == *old_y) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
462 (new_vbi == *old_vbi) &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
463 (new_maxy > *old_maxy)))))
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
464 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
465 *old_x = new_x;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
466 *old_y = new_y;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
467 *old_maxy = new_maxy;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
468 *old_vbi = new_vbi;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
469 mp_msg(MSGT_VO, MSGL_V, ".ok!!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
470 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
471 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
472 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
473 mp_msg(MSGT_VO, MSGL_V, ".no\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
474 return 0;
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
475 }
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
476 }
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
477
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
478
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
479
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
480 //---------------------------------------------------------
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
481
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
482 static void init_video_buffers(uint8_t * buffer_base,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
483 int view_port_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
484 int bytes_per_scanline,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
485 int max_view_port_y,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
486 int use_multiple_buffers)
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
487 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
488 int bytes_per_buffer = view_port_height * bytes_per_scanline;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
489 int i;
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
490
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
491 if (use_multiple_buffers)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
492 vo_dga_nr_video_buffers = max_view_port_y / view_port_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
493 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
494 vo_dga_nr_video_buffers = 1;
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
495
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
496 if (vo_dga_nr_video_buffers > MAX_NR_VIDEO_BUFFERS)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
497 vo_dga_nr_video_buffers = MAX_NR_VIDEO_BUFFERS;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
498 if (vo_dga_nr_video_buffers <= 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
499 vo_dga_nr_video_buffers = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
500
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
501 vo_dga_current_video_buffer = 0;
9274
737c44487ebc 10l, avoid getting num_of_buffers=0
alex
parents: 8148
diff changeset
502
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
503 for (i = 0; i < vo_dga_nr_video_buffers; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
504 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
505 vo_dga_video_buffer[i].y = i * view_port_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
506 vo_dga_video_buffer[i].data = buffer_base + i * bytes_per_buffer;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
507
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
508 // Clear video buffer.
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
509 memset(vo_dga_video_buffer[i].data, 0, bytes_per_buffer);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
510 }
7498
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
511 }
2b4190fb8218 Attached patch improves the vertical retrace synchronisation (vsync)
arpi
parents: 7124
diff changeset
512
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
513 static int config(uint32_t width, uint32_t height,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
514 uint32_t d_width, uint32_t d_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
515 uint32_t flags, char *title, uint32_t format)
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
516 {
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
517
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
518 int x_off, y_off;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
519 int wanted_width, wanted_height;
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
520
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
521 static unsigned char *vo_dga_base;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
522 static int prev_width, prev_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
523
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
524 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
525 // needed to change DGA video mode
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
526 int mX = VO_DGA_INVALID_RES, mY = VO_DGA_INVALID_RES, mVBI =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
527 100000, mMaxY = 0, i, j = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
528 int dga_modenum;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
529 XDGAMode *modeline;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
530 XDGADevice *dgadevice;
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
531 #else
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
532 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
533 unsigned int vm_event, vm_error;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
534 unsigned int vm_ver, vm_rev;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
535 int i, j = 0, have_vm = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
536 int mX = VO_DGA_INVALID_RES, mY = VO_DGA_INVALID_RES, mVBI =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
537 100000, mMaxY = 0, dga_modenum;
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
538 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
539 int bank, ram;
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
540 #endif
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
541
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
542 vo_dga_src_format = format;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
543
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
544 wanted_width = d_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
545 wanted_height = d_height;
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
546
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
547 if (!wanted_height)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
548 wanted_height = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
549 if (!wanted_width)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
550 wanted_width = width;
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
551
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
552 if (!vo_dbpp)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
553 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
554 if ((format & IMGFMT_BGR_MASK) == IMGFMT_BGR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
555 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
556 vo_dga_src_mode = vd_ModeValid(format & 0xff);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
557 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
558 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
559 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
560 vo_dga_src_mode = vd_ModeValid(vo_dbpp);
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
561 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
562 vo_dga_hw_mode = SRC_MODE.vdm_hw_mode;
680
fbd9327b899b - now features 24->32 conversion (this is actually faster than letting the
acki2
parents: 677
diff changeset
563
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
564 if (!vo_dga_src_mode)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
565 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
566 mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: unsupported video format!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
567 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
568 }
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
569
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
570 vo_dga_vp_width = vo_screenwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
571 vo_dga_vp_height = vo_screenheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
572
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
573 mp_msg(MSGT_VO, MSGL_V, "vo_dga: XServer res: %dx%d\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
574 vo_dga_vp_width, vo_dga_vp_height);
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
575
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
576 // choose a suitable mode ...
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
577
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
578 #ifdef CONFIG_DGA2
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
579 // Code to change the video mode added by Michael Graffam
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
580 // mgraffam@idsi.net
3318
a3739b590cf2 do not crash if can't get modelines (dga2.0)
alex
parents: 2732
diff changeset
581
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
582 mp_msg(MSGT_VO, MSGL_V, "vo_dga: vo_modelines=%p, vo_modecount=%d\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
583 vo_modelines, vo_modecount);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
584
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
585 if (vo_modelines == NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
586 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
587 mp_msg(MSGT_VO, MSGL_ERR, "vo_dga: can't get modelines\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
588 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
589 }
3318
a3739b590cf2 do not crash if can't get modelines (dga2.0)
alex
parents: 2732
diff changeset
590
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
591 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
592 "vo_dga: DGA 2.0 available :-) Can switch resolution AND depth!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
593 for (i = 0; i < vo_modecount; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
594 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
595 if (vd_ModeEqual(vo_modelines[i].depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
596 vo_modelines[i].bitsPerPixel,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
597 vo_modelines[i].redMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
598 vo_modelines[i].greenMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
599 vo_modelines[i].blueMask, vo_dga_hw_mode))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
600 {
272
8ffe2f459851 - still more debug output to be able to fix 15/16 bpp problem
acki2
parents: 266
diff changeset
601
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
602 mp_msg(MSGT_VO, MSGL_V, "maxy: %4d, depth: %2d, %4dx%4d, ",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
603 vo_modelines[i].maxViewportY, vo_modelines[i].depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
604 vo_modelines[i].imageWidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
605 vo_modelines[i].imageHeight);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
606 if (check_res
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
607 (i, wanted_width, wanted_height, vo_modelines[i].depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
608 vo_modelines[i].viewportWidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
609 vo_modelines[i].viewportHeight,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
610 (unsigned) vo_modelines[i].verticalRefresh,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
611 vo_modelines[i].maxViewportY, &mX, &mY, &mVBI, &mMaxY))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
612 j = i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
613 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
614 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
615 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
616 "vo_dga: Selected hardware mode %4d x %4d @ %3d Hz @ depth %2d, bitspp %2d.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
617 mX, mY, mVBI, HW_MODE.vdm_depth, HW_MODE.vdm_bitspp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
618 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
619 "vo_dga: Video parameters by codec: %3d x %3d, depth %2d, bitspp %2d.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
620 width, height, SRC_MODE.vdm_depth, SRC_MODE.vdm_bitspp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
621 vo_dga_vp_width = mX;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
622 vo_dga_vp_height = mY;
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
623
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14795
diff changeset
624 if ((flags & VOFLAG_SWSCALE) || (flags & VOFLAG_FULLSCREEN))
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
625 { /* -zoom or -fs */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
626 scale_dstW = (d_width + 7) & ~7;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
627 scale_dstH = d_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
628 scale_srcW = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
629 scale_srcH = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
630 aspect_save_screenres(mX, mY);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
631 aspect_save_orig(scale_srcW, scale_srcH);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
632 aspect_save_prescale(scale_dstW, scale_dstH);
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14795
diff changeset
633 if (flags & VOFLAG_FULLSCREEN) /* -fs */
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
634 aspect(&scale_dstW, &scale_dstH, A_ZOOM);
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 14795
diff changeset
635 else if (flags & VOFLAG_SWSCALE) /* -fs */
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
636 aspect(&scale_dstW, &scale_dstH, A_NOZOOM);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
637 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
638 "vo_dga: Aspect corrected size for SwScaler: %4d x %4d.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
639 scale_dstW, scale_dstH);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
640 /* XXX this is a hack, but I'm lazy ;-) :: atmos */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
641 width = scale_dstW;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
642 height = scale_dstH;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
643 }
4060
974e028471a4 SwScaler support for vo_png by Kim Minh, SwScale w/aspecz for vo_dga by me
atmos4
parents: 3852
diff changeset
644
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
645 vo_dga_width = vo_modelines[j].bytesPerScanline / HW_MODE.vdm_bytespp;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
646 dga_modenum = vo_modelines[j].num;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
647 modeline = vo_modelines + j;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
648
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
649 #else
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
650
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
651 #ifdef CONFIG_XF86VM
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
652
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
653 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
654 "vo_dga: DGA 1.0 compatibility code: Using XF86VidMode for mode switching!\n");
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
655
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
656 if (XF86VidModeQueryExtension(mDisplay, &vm_event, &vm_error))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
657 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
658 XF86VidModeQueryVersion(mDisplay, &vm_ver, &vm_rev);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
659 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
660 "vo_dga: XF86VidMode Extension v%i.%i\n", vm_ver, vm_rev);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
661 have_vm = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
662 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
663 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
664 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
665 "vo_dga: XF86VidMode Extension not available.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
666 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
667
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
668 #define GET_VREFRESH(dotclk, x, y)( (((dotclk)/(x))*1000)/(y) )
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
669
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
670 if (have_vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
671 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
672 int modecount;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
673
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
674 XF86VidModeGetAllModeLines(mDisplay, mScreen, &modecount,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
675 &vo_dga_vidmodes);
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
676
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
677 if (vo_dga_vidmodes != NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
678 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
679 for (i = 0; i < modecount; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
680 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
681 if (check_res(i, wanted_width, wanted_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
682 vo_dga_modes[vo_dga_hw_mode].vdm_depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
683 vo_dga_vidmodes[i]->hdisplay,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
684 vo_dga_vidmodes[i]->vdisplay,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
685 GET_VREFRESH(vo_dga_vidmodes[i]->dotclock,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
686 vo_dga_vidmodes[i]->htotal,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
687 vo_dga_vidmodes[i]->vtotal),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
688 0, &mX, &mY, &mVBI, &mMaxY))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
689 j = i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
690 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
691
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
692 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
693 "vo_dga: Selected video mode %4d x %4d @ %3d Hz @ depth %2d, bitspp %2d, video %3d x %3d.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
694 mX, mY, mVBI,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
695 vo_dga_modes[vo_dga_hw_mode].vdm_depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
696 vo_dga_modes[vo_dga_hw_mode].vdm_bitspp, width, height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
697 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
698 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
699 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
700 "vo_dga: XF86VidMode returned no screens - using current resolution.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
701 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
702 dga_modenum = j;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
703 vo_dga_vp_width = mX;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
704 vo_dga_vp_height = mY;
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
705 }
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
706
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
707 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
708 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
709 "vo_dga: Only have DGA 1.0 extension and no XF86VidMode :-(\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
710 mp_msg(MSGT_VO, MSGL_INFO,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
711 " Thus, resolution switching is NOT possible.\n");
392
50214d6c1826 - completely rewrote depth switching
acki2
parents: 272
diff changeset
712
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
713 #endif
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
714 #endif
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
715
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
716 vo_dga_src_width = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
717 vo_dga_src_height = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
718
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
719 if (vo_dga_src_width > vo_dga_vp_width ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
720 vo_dga_src_height > vo_dga_vp_height)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
721 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
722 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
723 "vo_dga: Sorry, video larger than viewport is not yet supported!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
724 // ugly, do something nicer in the future ...
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
725 #ifndef CONFIG_DGA2
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
726 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
727 if (vo_dga_vidmodes)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
728 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
729 XFree(vo_dga_vidmodes);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
730 vo_dga_vidmodes = NULL;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
731 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
732 #endif
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
733 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
734 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
735 }
1154
4bf4e057c82e - if DGA fails to report some valid modes, vo_dga now exits gracefully
acki2
parents: 1150
diff changeset
736
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
737 if (vo_dga_vp_width == VO_DGA_INVALID_RES)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
738 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
739 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
740 "vo_dga: Something is wrong with your DGA. There doesn't seem to be a\n"
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
741 " single suitable mode!\n"
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
742 " Please file a bug report (see DOCS/HTML/en/bugreports.html)\n");
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
743 #ifndef CONFIG_DGA2
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
744 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
745 if (vo_dga_vidmodes)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
746 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
747 XFree(vo_dga_vidmodes);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
748 vo_dga_vidmodes = NULL;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
749 }
1154
4bf4e057c82e - if DGA fails to report some valid modes, vo_dga now exits gracefully
acki2
parents: 1150
diff changeset
750 #endif
4bf4e057c82e - if DGA fails to report some valid modes, vo_dga now exits gracefully
acki2
parents: 1150
diff changeset
751 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
752 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
753 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
754 // now let's start the DGA thing
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
755
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
756 if (!vo_config_count || width != prev_width || height != prev_height)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
757 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
758 #ifdef CONFIG_DGA2
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
759
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
760 if (!XDGAOpenFramebuffer(mDisplay, mScreen))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
761 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
762 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
763 "vo_dga: Framebuffer mapping failed!!!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
764 return 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
765 }
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
766
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
767 dgadevice = XDGASetMode(mDisplay, mScreen, dga_modenum);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
768 XDGASync(mDisplay, mScreen);
221
3daeae4a4aa6 Added support to vo_dga to change the video mode to the lowest resolution
mgraffam
parents: 31
diff changeset
769
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
770 vo_dga_base = dgadevice->data;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
771 XFree(dgadevice);
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
772
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
773 XDGASetViewport(mDisplay, mScreen, 0, 0, XDGAFlipRetrace);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
774
233
f62ccacbe1e5 Changes to configure to autodetect DGA 2.0 functionality, and to only use
mgraffam
parents: 221
diff changeset
775 #else
8067
482666d4c729 - cleanup
pontscho
parents: 8027
diff changeset
776
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
777 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
778 if (have_vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
779 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
780 XF86VidModeLockModeSwitch(mDisplay, mScreen, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
781 // Two calls are needed to switch modes on my ATI Rage 128. Why?
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
782 // for riva128 one call is enough!
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
783 XF86VidModeSwitchToMode(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
784 vo_dga_vidmodes[dga_modenum]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
785 XF86VidModeSwitchToMode(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
786 vo_dga_vidmodes[dga_modenum]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
787 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
788 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
789
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
790 XF86DGAGetViewPortSize(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
791 &vo_dga_vp_width, &vo_dga_vp_height);
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
792
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
793 XF86DGAGetVideo(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
794 (char **) &vo_dga_base, &vo_dga_width, &bank,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
795 &ram);
233
f62ccacbe1e5 Changes to configure to autodetect DGA 2.0 functionality, and to only use
mgraffam
parents: 221
diff changeset
796
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
797 XF86DGADirectVideo(mDisplay, mScreen,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
798 XF86DGADirectGraphics | XF86DGADirectMouse |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
799 XF86DGADirectKeyb);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
800
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
801 XF86DGASetViewPort(mDisplay, mScreen, 0, 0);
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
802
233
f62ccacbe1e5 Changes to configure to autodetect DGA 2.0 functionality, and to only use
mgraffam
parents: 221
diff changeset
803 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
804 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
805 // do some more checkings here ...
261
3b7e4bf7c7ed - 32/16 bit mode swtiching with DGA2.0
acki2
parents: 260
diff changeset
806
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
807 mp_msg(MSGT_VO, MSGL_V,
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 16301
diff changeset
808 "vo_dga: bytes/line: %d, screen res: %dx%d, depth: %d, base: %p, bpp: %d\n",
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
809 vo_dga_width, vo_dga_vp_width, vo_dga_vp_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
810 HW_MODE.vdm_bytespp, vo_dga_base, HW_MODE.vdm_bitspp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
811
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
812 x_off = (vo_dga_vp_width - vo_dga_src_width) >> 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
813 y_off = (vo_dga_vp_height - vo_dga_src_height) >> 1;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
814
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
815 vo_dga_bytes_per_line = vo_dga_src_width * HW_MODE.vdm_bytespp;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
816 vo_dga_lines = vo_dga_src_height;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
817
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
818 vo_dga_src_offset = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
819 vo_dga_vp_offset =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
820 (y_off * vo_dga_width + x_off) * HW_MODE.vdm_bytespp;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
821
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
822 vo_dga_vp_skip = (vo_dga_width - vo_dga_src_width) * HW_MODE.vdm_bytespp; // todo
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
823
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
824 mp_msg(MSGT_VO, MSGL_V, "vo_dga: vp_off=%d, vp_skip=%d, bpl=%d\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
825 vo_dga_vp_offset, vo_dga_vp_skip, vo_dga_bytes_per_line);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
826
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
827
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
828 XGrabKeyboard(mDisplay, DefaultRootWindow(mDisplay), True,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
829 GrabModeAsync, GrabModeAsync, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
830 if (vo_grabpointer)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
831 XGrabPointer(mDisplay, DefaultRootWindow(mDisplay), True,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
832 ButtonPressMask, GrabModeAsync, GrabModeAsync,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
833 None, None, CurrentTime);
262
2c7c77d793df - added double buffering :-)
acki2
parents: 261
diff changeset
834
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
835 if (!vo_config_count || width != prev_width || height != prev_height)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
836 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
837 init_video_buffers(vo_dga_base,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
838 vo_dga_vp_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
839 vo_dga_width * HW_MODE.vdm_bytespp,
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
840 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
841 modeline->maxViewportY,
7515
72dd0b05d562 DGA1 fix by Fredrik Noring <noring@nocrew.org>
arpi
parents: 7500
diff changeset
842 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
843 vo_dga_vp_height,
7515
72dd0b05d562 DGA1 fix by Fredrik Noring <noring@nocrew.org>
arpi
parents: 7500
diff changeset
844 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
845 vo_doublebuffering);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
846 prev_width = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
847 prev_height = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
848 }
263
78e8925fd6b4 - added VidMode changing support for DGA1.0 (used code from Michael Graffam (mgraffam@idsi.net))
acki2
parents: 262
diff changeset
849
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
850 mp_msg(MSGT_VO, MSGL_V, "vo_dga: Using %d frame buffer%s.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
851 vo_dga_nr_video_buffers,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
852 vo_dga_nr_video_buffers == 1 ? "" : "s");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
853
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
854 vo_dga_is_running = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
855 return 0;
13
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
856 }
36314c7bda8d initial version
arpi_esp
parents:
diff changeset
857
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
858 static int dga_depths_init = 0;
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
859
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
860 static int preinit(const char *arg)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
861 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
862 if (arg)
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4713
diff changeset
863 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
864 mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: Unknown subdevice: %s\n", arg);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
865 return ENOSYS;
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4713
diff changeset
866 }
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
867
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
868 if (!vo_init())
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
869 return -1; // Can't open X11
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
870
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
871 if (dga_depths_init == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
872 { // FIXME!?
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
873 int i;
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
874
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
875 vo_dga_XServer_mode = vd_ValidateMode(vo_depthonscreen);
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
876
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
877 if (vo_dga_XServer_mode == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
878 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
879 #ifndef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
880 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
881 "vo_dga: Your X-Server is not running in a ");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
882 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
883 "resolution supported by DGA driver!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
884 #endif
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
885 } //else{
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
886 // mp_msg(MSGT_VO, MSGL_V, "vo_dga: X running at: %s\n",
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
887 // vd_GetModeString(vo_dga_XServer_mode));
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
888 //}
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
889
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26755
diff changeset
890 #ifdef CONFIG_DGA2
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
891 vo_modelines = XDGAQueryModes(mDisplay, mScreen, &vo_modecount);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
892 if (vo_modelines)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
893 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
894 for (i = 0; i < vo_modecount; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
895 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
896 mp_msg(MSGT_VO, MSGL_V,
17366
934380353fd6 massive attack: mp_msg printf format fixes
rathann
parents: 16301
diff changeset
897 "vo_dga: (%03d) depth=%d, bpp=%d, r=%08lx, g=%08lx, b=%08lx, %d x %d\n",
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
898 i, vo_modelines[i].depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
899 vo_modelines[i].bitsPerPixel,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
900 vo_modelines[i].redMask, vo_modelines[i].greenMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
901 vo_modelines[i].blueMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
902 vo_modelines[i].viewportWidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
903 vo_modelines[i].viewportHeight);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
904 vd_EnableMode(vo_modelines[i].depth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
905 vo_modelines[i].bitsPerPixel,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
906 vo_modelines[i].redMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
907 vo_modelines[i].greenMask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
908 vo_modelines[i].blueMask);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
909 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
910 }
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
911 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
912 dga_depths_init = 1;
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
913
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
914 if (!vo_dga_modes[1].vdm_supported
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
915 && vo_dga_modes[2].vdm_supported)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
916 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
917 vo_dga_modes[1].vdm_supported = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
918 }
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
919
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
920 if (!vo_dga_modes[3].vdm_supported
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
921 && vo_dga_modes[4].vdm_supported)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
922 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
923 vo_dga_modes[3].vdm_supported = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
924 }
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
925
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
926 for (i = 1; i < vo_dga_mode_num; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
927 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
928 mp_msg(MSGT_VO, MSGL_INFO, "vo_dga: Mode: %s",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
929 vd_GetModeString(i));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
930 if (vo_dbpp && vo_dbpp != vo_dga_modes[i].vdm_mplayer_depth)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
931 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
932 vo_dga_modes[i].vdm_supported = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
933 mp_msg(MSGT_VO, MSGL_INFO, " ...disabled by -bpp %d",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
934 vo_dbpp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
935 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
936 mp_msg(MSGT_VO, MSGL_INFO, "\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
937 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
938 }
7930
a77aff3d7ac0 mode detection && vo_init() moved to preinit()
arpi
parents: 7652
diff changeset
939
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4713
diff changeset
940 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
941 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
942
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
943 static uint32_t get_image(mp_image_t * mpi)
8084
c524ca26ace1 arpi add direct render support
pontscho
parents: 8067
diff changeset
944 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
945 if (!IMGFMT_IS_BGR(mpi->imgfmt) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
946 (IMGFMT_BGR_DEPTH(mpi->imgfmt) !=
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
947 vo_dga_modes[vo_dga_hw_mode].vdm_mplayer_depth)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
948 || (mpi->type == MP_IMGTYPE_STATIC && vo_dga_nr_video_buffers > 1)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
949 || (mpi->type == MP_IMGTYPE_IP && vo_dga_nr_video_buffers < 2)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
950 || (mpi->type == MP_IMGTYPE_IPB))
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26400
diff changeset
951 return VO_FALSE;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
952
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
953 if ((mpi->flags & MP_IMGFLAG_ACCEPT_STRIDE) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
954 (mpi->flags & MP_IMGFLAG_ACCEPT_WIDTH &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
955 ((vo_dga_bytes_per_line + vo_dga_vp_skip) % (mpi->bpp / 8)) == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
956 || (mpi->width * (mpi->bpp / 8) ==
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
957 (vo_dga_bytes_per_line + vo_dga_vp_skip)))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
958 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
959
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
960 mpi->planes[0] = CURRENT_VIDEO_BUFFER.data + vo_dga_vp_offset;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
961 mpi->stride[0] = vo_dga_bytes_per_line + vo_dga_vp_skip;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
962 mpi->width =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
963 (vo_dga_bytes_per_line + vo_dga_vp_skip) / (mpi->bpp / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
964 mpi->flags |= MP_IMGFLAG_DIRECT;
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26400
diff changeset
965 return VO_TRUE;
8084
c524ca26ace1 arpi add direct render support
pontscho
parents: 8067
diff changeset
966 }
c524ca26ace1 arpi add direct render support
pontscho
parents: 8067
diff changeset
967
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26400
diff changeset
968 return VO_FALSE;
8084
c524ca26ace1 arpi add direct render support
pontscho
parents: 8067
diff changeset
969 }
c524ca26ace1 arpi add direct render support
pontscho
parents: 8067
diff changeset
970
33305
ddb45e9443ec Remove the variable arguments from the libvo control() functions.
iive
parents: 32467
diff changeset
971 static int control(uint32_t request, void *data)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
972 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
973 switch (request)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
974 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
975 case VOCTRL_GET_IMAGE:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
976 return get_image(data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
977 case VOCTRL_QUERY_FORMAT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
978 return query_format(*((uint32_t *) data));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
979 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11183
diff changeset
980 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
981 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4060
diff changeset
982
260
1742ea658d0b Source cleanup. Improved resolution selection (I think :-)).
acki2
parents: 233
diff changeset
983 //---------------------------------------------------------