OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """code generator for GL/GLES extension wrangler.""" | 6 """code generator for GL/GLES extension wrangler.""" |
7 | 7 |
8 import optparse | 8 import optparse |
9 import os | 9 import os |
10 import collections | 10 import collections |
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 'names': ['glReadBuffer'], | 810 'names': ['glReadBuffer'], |
811 'arguments': 'GLenum src', }, | 811 'arguments': 'GLenum src', }, |
812 { 'return_type': 'void', | 812 { 'return_type': 'void', |
813 'names': ['glReadPixels'], | 813 'names': ['glReadPixels'], |
814 'arguments': | 814 'arguments': |
815 'GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, ' | 815 'GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, ' |
816 'GLenum type, void* pixels', }, | 816 'GLenum type, void* pixels', }, |
817 { 'return_type': 'void', | 817 { 'return_type': 'void', |
818 'names': ['glReleaseShaderCompiler'], | 818 'names': ['glReleaseShaderCompiler'], |
819 'arguments': 'void', }, | 819 'arguments': 'void', }, |
820 # Multisampling API is different in different GL versions, some require an | |
821 # explicit resolve step for renderbuffers and/or FBO texture attachments and | |
822 # some do not. Multiple alternatives might be present in a single | |
823 # implementation, which require different use of the API and may have | |
824 # different performance (explicit resolve performing worse, for example). | |
825 # So even though the function signature is the same across versions, we split | |
826 # their definitions so that the function to use can be chosen correctly at a | |
827 # higher level. | |
828 # TODO(oetuaho@nvidia.com): Some of these might still be possible to combine. | |
829 # This could also fix weirdness in the mock bindings that's caused by the same | |
830 # function name appearing multiple times. | |
831 # This is the ES3 function, which requires explicit resolve: | |
832 { 'return_type': 'void', | 820 { 'return_type': 'void', |
833 'names': ['glRenderbufferStorageEXT', 'glRenderbufferStorage'], | 821 'names': ['glRenderbufferStorageEXT', 'glRenderbufferStorage'], |
834 'arguments': | 822 'arguments': |
835 'GLenum target, GLenum internalformat, GLsizei width, GLsizei height', }, | 823 'GLenum target, GLenum internalformat, GLsizei width, GLsizei height', }, |
836 { 'return_type': 'void', | 824 { 'return_type': 'void', |
837 'names': ['glRenderbufferStorageMultisample'], | 825 'names': ['glRenderbufferStorageMultisample'], |
838 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' | 826 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' |
839 'GLsizei width, GLsizei height', }, | 827 'GLsizei width, GLsizei height', }, |
840 { 'return_type': 'void', | 828 { 'return_type': 'void', |
841 'names': ['glRenderbufferStorageMultisampleANGLE', | 829 'names': ['glRenderbufferStorageMultisampleANGLE'], |
842 'glRenderbufferStorageMultisample'], | |
843 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' | |
844 'GLsizei width, GLsizei height', }, | |
845 # In desktop GL, EXT and core versions both have an explicit resolve step, | |
846 # though desktop core GL implicitly resolves when drawing to a window. | |
847 # TODO(oetuaho@nvidia.com): Right now this function also doubles as ES2 EXT | |
848 # function, which has implicit resolve, and for which the fallback is wrong. | |
849 # Fix this. | |
850 { 'return_type': 'void', | |
851 'names': ['glRenderbufferStorageMultisampleEXT', | |
852 'glRenderbufferStorageMultisample'], | |
853 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' | 830 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' |
854 'GLsizei width, GLsizei height', }, | 831 'GLsizei width, GLsizei height', }, |
855 { 'return_type': 'void', | 832 { 'return_type': 'void', |
| 833 'names': ['glRenderbufferStorageMultisampleEXT'], |
| 834 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' |
| 835 'GLsizei width, GLsizei height', }, |
| 836 { 'return_type': 'void', |
856 'names': ['glRenderbufferStorageMultisampleIMG'], | 837 'names': ['glRenderbufferStorageMultisampleIMG'], |
857 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' | 838 'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, ' |
858 'GLsizei width, GLsizei height', }, | 839 'GLsizei width, GLsizei height', }, |
859 { 'return_type': 'void', | 840 { 'return_type': 'void', |
860 'versions': [{ 'name': 'glResumeTransformFeedback' }], | 841 'versions': [{ 'name': 'glResumeTransformFeedback' }], |
861 'arguments': 'void', }, | 842 'arguments': 'void', }, |
862 { 'return_type': 'void', | 843 { 'return_type': 'void', |
863 'names': ['glSampleCoverage'], | 844 'names': ['glSampleCoverage'], |
864 'arguments': 'GLclampf value, GLboolean invert', }, | 845 'arguments': 'GLclampf value, GLboolean invert', }, |
865 { 'return_type': 'void', | 846 { 'return_type': 'void', |
(...skipping 1703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2569 'gl_enums_implementation_autogen.h'), | 2550 'gl_enums_implementation_autogen.h'), |
2570 'wb') | 2551 'wb') |
2571 GenerateEnumUtils(header_file, enum_header_filenames) | 2552 GenerateEnumUtils(header_file, enum_header_filenames) |
2572 header_file.close() | 2553 header_file.close() |
2573 ClangFormat(header_file.name) | 2554 ClangFormat(header_file.name) |
2574 return 0 | 2555 return 0 |
2575 | 2556 |
2576 | 2557 |
2577 if __name__ == '__main__': | 2558 if __name__ == '__main__': |
2578 sys.exit(main(sys.argv[1:])) | 2559 sys.exit(main(sys.argv[1:])) |
OLD | NEW |