import NVIDIA-FreeBSD-x86-180.29
[nvidia.git] / doc / html / appendix-k.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta name="generator" content=
5 "HTML Tidy for FreeBSD (vers 1 September 2005), see www.w3.org">
6 <meta http-equiv="Content-Type" content=
7 "text/html; charset=us-ascii">
8 <title>Appendix&nbsp;K.&nbsp;VDPAU Support</title>
9 <meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
10 <link rel="start" href="index.html" title=
11 "NVIDIA Accelerated FreeBSD Graphics Driver README and Installation Guide">
12 <link rel="up" href="part-02.html" title=
13 "Part&nbsp;II.&nbsp;Appendices">
14 <link rel="prev" href="appendix-j.html" title=
15 "Appendix&nbsp;J.&nbsp;XvMC Support">
16 <link rel="next" href="appendix-k-section-02.html" title=
17 "Performance Levels">
18 </head>
19 <body>
20 <div class="navheader">
21 <table width="100%" summary="Navigation header">
22 <tr>
23 <th colspan="3" align="center">Appendix&nbsp;K.&nbsp;VDPAU
24 Support</th>
25 </tr>
26 <tr>
27 <td width="20%" align="left"><a accesskey="p" href=
28 "appendix-j.html">Prev</a>&nbsp;</td>
29 <th width="60%" align="center">Part&nbsp;II.&nbsp;Appendices</th>
30 <td width="20%" align="right">&nbsp;<a accesskey="n" href=
31 "appendix-k-section-02.html">Next</a></td>
32 </tr>
33 </table>
34 <hr></div>
35 <div class="appendix" lang="en">
36 <div class="titlepage">
37 <div>
38 <div>
39 <h2 class="title"><a name="vdpausupport" id=
40 "vdpausupport"></a>Appendix&nbsp;K.&nbsp;VDPAU Support</h2>
41 </div>
42 </div>
43 </div>
44 <div class="toc">
45 <p><b>Table of Contents</b></p>
46 <dl>
47 <dt><span class="section"><a href=
48 "appendix-k.html#id2652593">Implementation Limits</a></span></dt>
49 <dd>
50 <dl>
51 <dt><span class="section"><a href=
52 "appendix-k.html#id2652600">VdpVideoSurface</a></span></dt>
53 <dt><span class="section"><a href=
54 "appendix-k.html#id2652625">VdpBitmapSurface</a></span></dt>
55 <dt><span class="section"><a href=
56 "appendix-k.html#id2652939">VdpOutputSurface</a></span></dt>
57 <dt><span class="section"><a href=
58 "appendix-k.html#id2653822">VdpDecoder</a></span></dt>
59 <dt><span class="section"><a href=
60 "appendix-k.html#id2654340">VdpVideoMixer</a></span></dt>
61 <dt><span class="section"><a href=
62 "appendix-k.html#id2654403">VdpPresentationQueue</a></span></dt>
63 </dl>
64 </dd>
65 <dt><span class="section"><a href=
66 "appendix-k-section-02.html">Performance Levels</a></span></dt>
67 <dt><span class="section"><a href=
68 "appendix-k-section-03.html">Getting the Best Performance from the
69 API</a></span></dt>
70 <dt><span class="section"><a href=
71 "appendix-k-section-04.html">Additional Notes</a></span></dt>
72 <dt><span class="section"><a href=
73 "appendix-k-section-05.html">Debugging and Tracing</a></span></dt>
74 </dl>
75 </div>
76 <p>This release includes support for the Video Decode and
77 Presentation API for Unix-like systems (VDPAU) on most GeForce 8
78 series and newer add-in cards, as well as motherboard chipsets with
79 integrated graphics that have PureVideo support based on these
80 GPUs.</p>
81 <div class="section" lang="en">
82 <div class="titlepage">
83 <div>
84 <div>
85 <h2 class="title" style="clear: both"><a name="id2652593" id=
86 "id2652593"></a>Implementation Limits</h2>
87 </div>
88 </div>
89 </div>
90 <p>VDPAU is specified as a generic API - the choice of which
91 features to support, and performance levels of those features, is
92 left up to individual implementations. The details of NVIDIA's
93 implementation are provided below.</p>
94 <div class="section" lang="en">
95 <div class="titlepage">
96 <div>
97 <div>
98 <h3 class="title"><a name="id2652600" id=
99 "id2652600"></a>VdpVideoSurface</h3>
100 </div>
101 </div>
102 </div>
103 <p>The maximum supported resolution is 4096x4096.</p>
104 <p>The following surface formats and get-/put-bits combinations are
105 supported:</p>
106 <div class="itemizedlist">
107 <ul type="disc">
108 <li>
109 <p>VDP_CHROMA_TYPE_420 (Supported get-/put-bits formats are
110 VDP_YCBCR_FORMAT_NV12, VDP_YCBCR_FORMAT_YV12)</p>
111 </li>
112 <li>
113 <p>VDP_CHROMA_TYPE_422 (Supported get-/put-bits formats are
114 VDP_YCBCR_FORMAT_UYVY, VDP_YCBCR_FORMAT_YUYV)</p>
115 </li>
116 </ul>
117 </div>
118 <p></p>
119 </div>
120 <div class="section" lang="en">
121 <div class="titlepage">
122 <div>
123 <div>
124 <h3 class="title"><a name="id2652625" id=
125 "id2652625"></a>VdpBitmapSurface</h3>
126 </div>
127 </div>
128 </div>
129 <p>The maximum supported resolution is 8192x8192.</p>
130 <p>The following surface formats are supported:</p>
131 <div class="itemizedlist">
132 <ul type="disc">
133 <li>
134 <p>VDP_RGBA_FORMAT_B8G8R8A8</p>
135 </li>
136 <li>
137 <p>VDP_RGBA_FORMAT_R8G8B8A8</p>
138 </li>
139 <li>
140 <p>VDP_RGBA_FORMAT_B10G10R10A2</p>
141 </li>
142 <li>
143 <p>VDP_RGBA_FORMAT_R10G10B10A2</p>
144 </li>
145 <li>
146 <p>VDP_RGBA_FORMAT_A8</p>
147 </li>
148 </ul>
149 </div>
150 <p></p>
151 <p>Note that VdpBitmapSurfaceCreate's frequently_accessed parameter
152 directly controls whether the bitmap data will be placed into video
153 RAM (VDP_TRUE) or system memory (VDP_FALSE). Note that if the
154 bitmap data cannot be placed into video RAM when requested due to
155 resource constraints, the implementation will automatically fall
156 back to placing the data into system RAM.</p>
157 </div>
158 <div class="section" lang="en">
159 <div class="titlepage">
160 <div>
161 <div>
162 <h3 class="title"><a name="id2652939" id=
163 "id2652939"></a>VdpOutputSurface</h3>
164 </div>
165 </div>
166 </div>
167 <p>The maximum supported resolution is 8192x8192.</p>
168 <p>The following surface formats are supported:</p>
169 <div class="itemizedlist">
170 <ul type="disc">
171 <li>
172 <p>VDP_RGBA_FORMAT_B8G8R8A8</p>
173 </li>
174 <li>
175 <p>VDP_RGBA_FORMAT_R10G10B10A2</p>
176 </li>
177 </ul>
178 </div>
179 <p></p>
180 <p>For all surface formats, the following get-/put-bits indexed
181 formats are supported:</p>
182 <div class="itemizedlist">
183 <ul type="disc">
184 <li>
185 <p>VDP_INDEXED_FORMAT_A4I4</p>
186 </li>
187 <li>
188 <p>VDP_INDEXED_FORMAT_I4A4</p>
189 </li>
190 <li>
191 <p>VDP_INDEXED_FORMAT_A8I8</p>
192 </li>
193 <li>
194 <p>VDP_INDEXED_FORMAT_I8A8</p>
195 </li>
196 </ul>
197 </div>
198 <p></p>
199 <p>For all surface formats, the following get-/put-bits YCbCr
200 formats are supported:</p>
201 <div class="itemizedlist">
202 <ul type="disc">
203 <li>
204 <p>VDP_YCBCR_FORMAT_Y8U8V8A8</p>
205 </li>
206 <li>
207 <p>VDP_YCBCR_FORMAT_V8U8Y8A8</p>
208 </li>
209 </ul>
210 </div>
211 <p></p>
212 </div>
213 <div class="section" lang="en">
214 <div class="titlepage">
215 <div>
216 <div>
217 <h3 class="title"><a name="id2653822" id=
218 "id2653822"></a>VdpDecoder</h3>
219 </div>
220 </div>
221 </div>
222 <p>In all cases, VdpDecoder objects solely support 8-bit 4:2:0
223 streams, and only support writing to VDP_CHROMA_TYPE_420
224 surfaces.</p>
225 <p>The exact set of supported VdpDecoderProfile values depends on
226 the hardware model in use.</p>
227 <div class="section" lang="en">
228 <div class="titlepage">
229 <div>
230 <div>
231 <h4 class="title"><a name="id2653833" id="id2653833"></a>G84, G86,
232 G92, G94, G96, GT200</h4>
233 </div>
234 </div>
235 </div>
236 <p>These chips support the following VdpDecoderProfile values:</p>
237 <div class="itemizedlist">
238 <ul type="disc">
239 <li>
240 <p>VDP_DECODER_PROFILE_MPEG1, VDP_DECODER_PROFILE_MPEG2_SIMPLE,
241 VDP_DECODER_PROFILE_MPEG2_MAIN:</p>
242 <div class="itemizedlist">
243 <ul type="circle">
244 <li>
245 <p>Partial acceleration.</p>
246 </li>
247 <li>
248 <p>Minimum width or height: 3 macroblocks (48 pixels).</p>
249 </li>
250 <li>
251 <p>Maximum width or height: 128 macroblocks (2048 pixels).</p>
252 </li>
253 <li>
254 <p>Maximum macroblocks: 8192</p>
255 </li>
256 </ul>
257 </div>
258 <p></p>
259 </li>
260 <li>
261 <p>VDP_DECODER_PROFILE_H264_MAIN,
262 VDP_DECODER_PROFILE_H264_HIGH:</p>
263 <div class="itemizedlist">
264 <ul type="circle">
265 <li>
266 <p>Complete acceleration.</p>
267 </li>
268 <li>
269 <p>Minimum width or height: 3 macroblocks (48 pixels).</p>
270 </li>
271 <li>
272 <p>Maximum width or height: 128 macroblocks (2048 pixels).</p>
273 </li>
274 <li>
275 <p>Maximum macroblocks: 8192</p>
276 </li>
277 </ul>
278 </div>
279 <p></p>
280 </li>
281 </ul>
282 </div>
283 <p></p>
284 </div>
285 <div class="section" lang="en">
286 <div class="titlepage">
287 <div>
288 <div>
289 <h4 class="title"><a name="id2654237" id="id2654237"></a>G98,
290 MCP77, MCP78, MCP79, MCP7A</h4>
291 </div>
292 </div>
293 </div>
294 <p>These chips support the following VdpDecoderProfile values:</p>
295 <div class="itemizedlist">
296 <ul type="disc">
297 <li>
298 <p>VDP_DECODER_PROFILE_MPEG1, VDP_DECODER_PROFILE_MPEG2_SIMPLE,
299 VDP_DECODER_PROFILE_MPEG2_MAIN:</p>
300 <div class="itemizedlist">
301 <ul type="circle">
302 <li>
303 <p>Complete acceleration.</p>
304 </li>
305 <li>
306 <p>Minimum width or height: 3 macroblocks (48 pixels).</p>
307 </li>
308 <li>
309 <p>Maximum width or height: 128 macroblocks (2048 pixels).</p>
310 </li>
311 <li>
312 <p>Maximum macroblocks: 8192</p>
313 </li>
314 </ul>
315 </div>
316 <p></p>
317 </li>
318 <li>
319 <p>VDP_DECODER_PROFILE_H264_MAIN,
320 VDP_DECODER_PROFILE_H264_HIGH:</p>
321 <div class="itemizedlist">
322 <ul type="circle">
323 <li>
324 <p>Complete acceleration.</p>
325 </li>
326 <li>
327 <p>Minimum width or height: 3 macroblocks (48 pixels).</p>
328 </li>
329 <li>
330 <p>Maximum width: 127 macroblocks (2032 pixels).</p>
331 </li>
332 <li>
333 <p>Maximum height: 128 macroblocks (2048 pixels).</p>
334 </li>
335 <li>
336 <p>Maximum macroblocks: 8190</p>
337 </li>
338 <li>
339 <p>Unsupported widths: 49, 54, 59, 64, 113, 118, 123 macroblocks
340 (784, 864, 944, 1024, 1808, 1888 pixels).</p>
341 </li>
342 </ul>
343 </div>
344 <p></p>
345 </li>
346 <li>
347 <p>VDP_DECODER_PROFILE_VC1_SIMPLE, VDP_DECODER_PROFILE_VC1_MAIN,
348 VDP_DECODER_PROFILE_VC1_ADVANCED:</p>
349 <div class="itemizedlist">
350 <ul type="circle">
351 <li>
352 <p>Complete acceleration.</p>
353 </li>
354 <li>
355 <p>Minimum width or height: 3 macroblocks (48 pixels).</p>
356 </li>
357 <li>
358 <p>Maximum width or height: 128 macroblocks (2048 pixels).</p>
359 </li>
360 <li>
361 <p>Maximum macroblocks: 8190</p>
362 </li>
363 </ul>
364 </div>
365 <p></p>
366 </li>
367 </ul>
368 </div>
369 <p></p>
370 </div>
371 </div>
372 <div class="section" lang="en">
373 <div class="titlepage">
374 <div>
375 <div>
376 <h3 class="title"><a name="id2654340" id=
377 "id2654340"></a>VdpVideoMixer</h3>
378 </div>
379 </div>
380 </div>
381 <p>The maximum supported resolution is 4096x4096.</p>
382 <p>The video mixer supports all video and output surface
383 resolutions and formats that the implementation supports.</p>
384 <p>The video mixer supports at most 4 auxiliary layers.</p>
385 <p>The following features are supported:</p>
386 <div class="itemizedlist">
387 <ul type="disc">
388 <li>
389 <p>VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL</p>
390 </li>
391 <li>
392 <p>VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL</p>
393 </li>
394 <li>
395 <p>VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE</p>
396 </li>
397 <li>
398 <p>VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION</p>
399 </li>
400 <li>
401 <p>VDP_VIDEO_MIXER_FEATURE_SHARPNESS</p>
402 </li>
403 <li>
404 <p>VDP_VIDEO_MIXER_FEATURE_LUMA_KEY</p>
405 </li>
406 </ul>
407 </div>
408 <p></p>
409 <p>In order for either VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL
410 or VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL to operate
411 correctly, the application must supply at least 2 past and 1 future
412 fields to each VdpMixerRender call. If those fields are not
413 provided, the VdpMixer will fall back to bob deinterlacing.</p>
414 <p>In order for VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE to have
415 any effect, one of VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL or
416 VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL must be
417 requested and enabled. Inverse telecine has the same requirement on
418 the minimum number of past/future fields that must be provided.</p>
419 </div>
420 <div class="section" lang="en">
421 <div class="titlepage">
422 <div>
423 <div>
424 <h3 class="title"><a name="id2654403" id=
425 "id2654403"></a>VdpPresentationQueue</h3>
426 </div>
427 </div>
428 </div>
429 <p>The resolution of VdpTime is approximately 10ns. At some
430 arbitrary point during system startup, the initial value of this
431 clock is synchronized to the system's real-time clock, as
432 represented by ns since since Jan 1, 1970. However, no attempt is
433 made to keep the two time-bases synchronized after this point.
434 Divergence can and will occur.</p>
435 <p>NVIDIA's VdpPresentationQueue supports two mechanisms for
436 displaying surfaces; overlay and blit-based. The overlay path will
437 be used wherever possible, with the blit path acting as a more
438 general fallback. At present, the selection of overlay v.s. blit
439 path is made at the time of presentation queue creation.</p>
440 <p>The following conditions or system configurations will prevent
441 usage of the overlay path:</p>
442 <div class="itemizedlist">
443 <ul type="disc">
444 <li>
445 <p>Overlay hardware already in use, e.g. by another VDPAU, GL, or
446 X11 application, or by SDI output.</p>
447 </li>
448 <li>
449 <p>SLI or Multi-GPU enabled on the given X screen.</p>
450 </li>
451 <li>
452 <p>Desktop rotation enabled on the given screen.</p>
453 </li>
454 <li>
455 <p>X composite extension enabled on the given screen. Note that
456 simply having the extension enabled is enough to prevent overlay
457 usage; running an actual compositing manager is not required.</p>
458 </li>
459 <li>
460 <p>The environment variable VDPAU_NVIDIA_NO_OVERLAY is set to a
461 string representation of a non-zero integer.</p>
462 </li>
463 </ul>
464 </div>
465 <p></p>
466 <p>At present, the overlay path always syncs to vblank, whereas the
467 blit path never syncs to vblank.</p>
468 </div>
469 </div>
470 </div>
471 <div class="navfooter">
472 <hr>
473 <table width="100%" summary="Navigation footer">
474 <tr>
475 <td width="40%" align="left"><a accesskey="p" href=
476 "appendix-j.html">Prev</a>&nbsp;</td>
477 <td width="20%" align="center"><a accesskey="u" href=
478 "part-02.html">Up</a></td>
479 <td width="40%" align="right">&nbsp;<a accesskey="n" href=
480 "appendix-k-section-02.html">Next</a></td>
481 </tr>
482 <tr>
483 <td width="40%" align="left" valign="top">
484 Appendix&nbsp;J.&nbsp;XvMC Support&nbsp;</td>
485 <td width="20%" align="center"><a accesskey="h" href=
486 "index.html">Home</a></td>
487 <td width="40%" align="right" valign="top">&nbsp;Performance
488 Levels</td>
489 </tr>
490 </table>
491 </div>
492 </body>
493 </html>