diff options
Diffstat (limited to 'gles_builders.py')
-rw-r--r-- | gles_builders.py | 60 |
1 files changed, 45 insertions, 15 deletions
diff --git a/gles_builders.py b/gles_builders.py index cde41a8f36..7b2d1ba7d5 100644 --- a/gles_builders.py +++ b/gles_builders.py @@ -509,6 +509,7 @@ class RDHeaderStruct: def __init__(self): self.vertex_lines = [] self.fragment_lines = [] + self.compute_lines = [] self.vertex_included_files = [] self.fragment_included_files = [] @@ -517,6 +518,7 @@ class RDHeaderStruct: self.line_offset = 0 self.vertex_offset = 0 self.fragment_offset = 0 + self.compute_offset = 0 def include_file_in_rd_header(filename, header_data, depth): @@ -539,6 +541,13 @@ def include_file_in_rd_header(filename, header_data, depth): header_data.fragment_offset = header_data.line_offset continue + if line.find("[compute]") != -1: + header_data.reading = "compute" + line = fs.readline() + header_data.line_offset += 1 + header_data.compute_offset = header_data.line_offset + continue + while line.find("#include ") != -1: includeline = line.replace("#include ", "").strip()[1:-1] @@ -553,6 +562,10 @@ def include_file_in_rd_header(filename, header_data, depth): header_data.fragment_included_files += [included_file] if include_file_in_rd_header(included_file, header_data, depth + 1) is None: print("Error in file '" + filename + "': #include " + includeline + "could not be found!") + elif not included_file in header_data.compute_included_files and header_data.reading == "compute": + header_data.compute_included_files += [included_file] + if include_file_in_rd_header(included_file, header_data, depth + 1) is None: + print("Error in file '" + filename + "': #include " + includeline + "could not be found!") line = fs.readline() @@ -563,6 +576,8 @@ def include_file_in_rd_header(filename, header_data, depth): header_data.vertex_lines += [line] if header_data.reading == "fragment": header_data.fragment_lines += [line] + if header_data.reading == "compute": + header_data.compute_lines += [line] line = fs.readline() header_data.line_offset += 1 @@ -572,7 +587,7 @@ def include_file_in_rd_header(filename, header_data, depth): return header_data def build_rd_header(filename): - header_data = LegacyGLHeaderStruct() + header_data = RDHeaderStruct() include_file_in_rd_header(filename, header_data, 0) out_file = filename + ".gen.h" @@ -598,24 +613,39 @@ def build_rd_header(filename): fd.write("\t"+out_file_class+"() {\n\n") + if (len(header_data.compute_lines)): - fd.write("\t\tstatic const char _vertex_code[]={\n") - for x in header_data.vertex_lines: - for c in x: - fd.write(str(ord(c)) + ",") + fd.write("\t\tstatic const char _compute_code[]={\n") + for x in header_data.compute_lines: + for c in x: + fd.write(str(ord(c)) + ",") - fd.write(str(ord('\n')) + ",") - fd.write("\t\t0};\n\n") + fd.write(str(ord('\n')) + ",") - fd.write("\t\tstatic const char _fragment_code[]={\n") - for x in header_data.fragment_lines: - for c in x: - fd.write(str(ord(c)) + ",") + fd.write("\t\t0};\n\n") + fd.write("\t\tsetup(nullptr,nullptr,_compute_code,\""+out_file_class+"\");\n") + fd.write("\t}\n") - fd.write(str(ord('\n')) + ",") - fd.write("\t\t0};\n\n") - fd.write("\t\tsetup(_vertex_code,_fragment_code,\""+out_file_class+"\");\n") - fd.write("\t}\n") + else: + + fd.write("\t\tstatic const char _vertex_code[]={\n") + for x in header_data.vertex_lines: + for c in x: + fd.write(str(ord(c)) + ",") + + fd.write(str(ord('\n')) + ",") + fd.write("\t\t0};\n\n") + + fd.write("\t\tstatic const char _fragment_code[]={\n") + for x in header_data.fragment_lines: + for c in x: + fd.write(str(ord(c)) + ",") + + fd.write(str(ord('\n')) + ",") + + fd.write("\t\t0};\n\n") + fd.write("\t\tsetup(_vertex_code,_fragment_code,nullptr,\""+out_file_class+"\");\n") + fd.write("\t}\n") fd.write("};\n\n") |