PageRenderTime 44ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/doc/conformance.html

https://github.com/excid3/chromium
HTML | 243 lines | 215 code | 24 blank | 4 comment | 0 complexity | f8491e6dba692e278cf7eaf367ed7d47 MD5 | raw file
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <!-- Copyright (c) 2001, Stanford University
  3. All rights reserved.
  4. See the file LICENSE.txt for information on redistributing this software. -->
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  8. <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
  9. <meta name="ProgId" content="FrontPage.Editor.Document">
  10. <title>New Page 1</title>
  11. <base target="_self">
  12. <link rel="stylesheet" type="text/css" href="chromium.css">
  13. </head>
  14. <body bgcolor="#FFFFFF">
  15. <h1 class="PageHeading">Chromium OpenGL Conformance</h1>
  16. <p>
  17. Chromium strives to be a drop-in replacement for a conventional OpenGL
  18. implementation. In order to do so, Chromium must conform to the
  19. OpenGL specification. In some areas, this is very difficult or
  20. impossible to achieve. This section describes the ways in which
  21. Chromium differs from OpenGL.
  22. </p>
  23. <h2 class="PageSubHeading">Conformance Issues</h2>
  24. <p>
  25. The following OpenGL features are not implemented in Chromium at this
  26. time:
  27. </p>
  28. <ul>
  29. <li>OpenGL 1.2 imaging functions related to histogram, min/max,
  30. convolution and colortables.</li>
  31. <li>To support Feedback & Selection, you need to use the feedbackSPU.
  32. If you don't, these features won't work.</li>
  33. </ul>
  34. <p>
  35. Display lists aren't fully conformant. There are several issues:
  36. </p>
  37. <ul>
  38. <li>When using the tilesort SPU, glCopyTexImage (and similar) commands
  39. can't be implemented correctly since the framebuffer is tiled and the
  40. individual renderers can't access their peers.
  41. </li>
  42. <li>GL_COMPILE_AND_EXECUTE mode may not work reliably, specifically
  43. if there is a glGet* call between glNewList and glEndList which gets
  44. state that was set by a previous command compiled/executed inside the
  45. display list.
  46. </li>
  47. </ul>
  48. <p>
  49. glReadPixels and glCopyPixels may not work correctly when using a
  50. tilesort configuration. Since the mural size usually doesn't match
  51. the original window size, there may be any number of inconsistences
  52. between what's drawn with glDrawPixels and what's seen on-screen,
  53. for example.
  54. </p>
  55. <p>
  56. Similarly, glReadPixels may not return the expected results. For
  57. example, if the application window is 600x400 and you try to read
  58. back the entire 600x400 window, but you're using a tilesort config
  59. with a mural size of 2000x1500, you won't get back the whole image.
  60. </p>
  61. <h2 class="PageSubHeading">Conformance Test Results</h2>
  62. <p>
  63. Here are the results of running the OpenGL conformance tests with
  64. the tilesort SPU (1 tile, 100x100 pixels) with comments explaining
  65. some of the failures:
  66. </p>
  67. <pre>
  68. Viewport Clamp test (Test number #2) failed.
  69. Chromium extends the default viewport.
  70. DrawPixels test (Test number #29) failed.
  71. GL_DEPTH_COMPONENT test fails because of glRasterPos problem.
  72. CopyPixels test (Test number #30) failed.
  73. GL_DEPTH test fails because of glRasterPos problem.
  74. Bitmap Rasterization test (Test number #31) failed.
  75. Bitmap renders incorrectly due to glRasterPos problem.
  76. Display Lists test (Test number #72) failed.
  77. Known display list problem.
  78. Texture Edge Clamp test (Test number #75) not supported (not an error).
  79. Packed Pixels test (Test number #76) failed.
  80. Texture LOD test (Test number #77) failed.
  81. Color Table test (Test number #79) not supported (not an error).
  82. Convolution test (Test number #80) not supported (not an error).
  83. Convolution Border test (Test number #81) not supported (not an error).
  84. Histogram test (Test number #82) not supported (not an error).
  85. MinMax test (Test number #83) not supported (not an error).
  86. Texture Combine test (Test number #85) not supported (not an error).
  87. Texture Cube Map test (Test number #86) failed.
  88. Texture Add test (Test number #88) not supported (not an error).
  89. </pre>
  90. <p>
  91. To show the differences of the tilesort SPU failures, here are the
  92. results of running the OpenGL conformance tests with the tilesort SPU
  93. (2 tiles, 50x100 pixels each) again with comments explaining some
  94. of the failures:
  95. </p>
  96. <pre>
  97. Viewport Clamp test (Test number #2) failed.
  98. Chromium extends the default viewport.
  99. Viewport Transformation test (Test number #8) failed.
  100. This may never be fixed because of the way the tilesort SPU
  101. manipulates the OpenGL viewport.
  102. Buffer Clear test (Test number #9) failed.
  103. Buffer Invariance test (Test number #14) failed.
  104. This test happens to draw a point which exactly falls in the
  105. center of the mural and winds up getting culled. If the point is
  106. moved, the test passes.
  107. Scissor test (Test number #18) failed.
  108. Stencil Plane Operation test (Test number #22) failed.
  109. Blend test (Test number #26) failed.
  110. DrawPixels test (Test number #29) failed.
  111. (as per single tile above)
  112. CopyPixels test (Test number #30) failed.
  113. (as per single tile above)
  114. Bitmap Rasterization test (Test number #31) failed.
  115. (as per single tile above)
  116. Anti-aliased Point test (Test number #33) failed.
  117. Line Rasterization test (Test number #34) failed.
  118. Line Stipple test (Test number #35) failed.
  119. Line stipple can't be properly handled when lines cross tiles.
  120. Anti-aliased Line test (Test number #36) failed.
  121. Horizontal and Vertical Line test (Test number #37) failed.
  122. Triangle Rasterization test (Test number #38) failed.
  123. Triangle Tile test (Test number #39) failed.
  124. Triangle Stipple test (Test number #40) failed.
  125. Polygon stipples must be rotated if tile sizes aren't multiples of 32.
  126. Anti-aliased Triangles test (Test number #41) failed.
  127. Quad Rasterization test (Test number #42) failed.
  128. Polygon Face test (Test number #43) failed.
  129. Polygon Cull test (Test number #44) failed.
  130. Polygon Stipple test (Test number #45) failed.
  131. Polygon stipples must be rotated if tile sizes aren't multiples of 32.
  132. Polygon Edge test (Test number #46) failed.
  133. Texture Decal test (Test number #68) failed.
  134. Texture Border test (Test number #69) failed.
  135. Mipmaps Selection test (Test number #70) failed.
  136. Display Lists test (Test number #72) failed.
  137. Known display list problem.
  138. Texture Edge Clamp test (Test number #75) failed.
  139. Packed Pixels test (Test number #76) failed.
  140. Texture LOD test (Test number #77) failed.
  141. Rescale Normal test (Test number #78) failed.
  142. Color Table test (Test number #79) not supported (not an error).
  143. Convolution test (Test number #80) not supported (not an error).
  144. Convolution Border test (Test number #81) not supported (not an error).
  145. Histogram test (Test number #82) not supported (not an error).
  146. MinMax test (Test number #83) not supported (not an error).
  147. MultiTexture test (Test number #84) failed.
  148. Texture Combine test (Test number #85) not supported (not an error).
  149. Texture Cube Map test (Test number #86) failed.
  150. Texture Add test (Test number #88) not supported (not an error).
  151. </pre>
  152. <h2 class="PageSubHeading">GLX</h2>
  153. <p>
  154. The following GLX functions are not implemented by Chromium. Calling
  155. them will result in an error message. Zero will be returned if the
  156. function returns a value.
  157. </p>
  158. <ul>
  159. <li><code>glXCopyContext</code>
  160. <li><code>glXCreateGLXPixmap</code>
  161. <li><code>glXDestroyGLXPixmap</code>
  162. <li><code>glXWaitGL</code>
  163. <li><code>glXWaitX</code>
  164. </ul>
  165. <p>
  166. Additionally, none of the GLX 1.3 functions related to Pbuffers or
  167. visual configs are implemented.
  168. </p>
  169. <p>
  170. GLX visuals present a problem for Chromium. The basic problem is that
  171. the visuals available on the application host display may not match
  172. the visuals of the rendering host display(s). If the application
  173. queries the GLX visual attributes of the local host display it may
  174. find a visual that has no equal on the rendering hosts. It may even
  175. be the case that the local host display has no GLX capabilities at
  176. all. In a heterogeneous cluster, the rendering hosts themselves may
  177. have different visual capabilities.
  178. </p>
  179. <p>
  180. Ideally, when the application queries GLX visuals and their attributes
  181. it should get results which reflect the capabilities of the rendering
  182. host displays. The results should be the minimums of the union of the
  183. rendering hosts. For example, if there are four rendering hosts and
  184. three of them support accumulation buffers but one doesn't then the
  185. application should be told that no accumulation buffer exists.
  186. </p>
  187. <p>
  188. This level of sophistication does not yet exist in the Chromium GLX
  189. code. Therefore, it's possible for an application to determine that
  190. there are visual capabilities that don't really exist, causing the
  191. application to eventually abort. Luckily, all modern graphics
  192. hardware supports stencil buffers, alpha channels and accumulation
  193. buffers so this is seldom a problem. Trying to use stereo and
  194. multisample color buffers may be problematic, however.
  195. </p>
  196. <h2 class="PageSubHeading">WGL</h2>
  197. <p>
  198. The following WGL functions are not implemented by Chromium. Calling
  199. them will result in an error message. Zero will be returned if the
  200. function returns a value.
  201. </p>
  202. <ul>
  203. <li><code>wglShareLists</code>
  204. <li><code>wglCopyContext</code>
  205. <li><code>wglCreateLayerContext</code>
  206. <li><code>wglUseFontBitmapsA</code>
  207. <li><code>wglUseFontBitmapsW</code>
  208. <li><code>wglDescribeLayerPlane</code>
  209. <li><code>wglSetLayerPaletteEntries</code>
  210. <li><code>wglGetLayerPaletteEntries</code>
  211. <li><code>wglRealizeLayerPalette</code>
  212. <li><code>wglSwapMultipleBuffers</code>
  213. <li><code>wglUseFontOutlinesA</code>
  214. <li><code>wglUseFontOutlinesW</code>
  215. <li><code>wglSwapLayerBuffers</code>
  216. </ul>
  217. </body>
  218. </html>