summaryrefslogtreecommitdiffstats
path: root/gles_builders.py
diff options
context:
space:
mode:
Diffstat (limited to 'gles_builders.py')
-rw-r--r--gles_builders.py60
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")