summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/build_gles2_cmd_buffer.py
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/build_gles2_cmd_buffer.py')
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py41
1 files changed, 34 insertions, 7 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index ae927d4..e9e18ff 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -84,6 +84,10 @@ _CAPABILITY_FLAGS = [
'state_flag': 'framebuffer_state_.clear_state_dirty'},
{'name': 'rasterizer_discard', 'es3': True},
{'name': 'primitive_restart_fixed_index', 'es3': True},
+ {'name': 'multisample_ext', 'default': True,
+ 'extension_flag': 'ext_multisample_compatibility'},
+ {'name': 'sample_alpha_to_one_ext',
+ 'extension_flag': 'ext_multisample_compatibility'},
]
_STATES = {
@@ -1087,9 +1091,11 @@ _NAMED_TYPE_INFO = {
'Capability': {
'type': 'GLenum',
'valid': ["GL_%s" % cap['name'].upper() for cap in _CAPABILITY_FLAGS
- if 'es3' not in cap or cap['es3'] != True],
+ if ('es3' not in cap or cap['es3'] != True)
+ and 'extension_flag' not in cap],
'valid_es3': ["GL_%s" % cap['name'].upper() for cap in _CAPABILITY_FLAGS
- if 'es3' in cap and cap['es3'] == True],
+ if ('es3' in cap and cap['es3'] == True)
+ and 'extension_flag' not in cap],
'invalid': [
'GL_CLIP_PLANE0',
'GL_POINT_SPRITE',
@@ -9892,6 +9898,8 @@ class GLGenerator(object):
f.write("struct EnableFlags {\n")
f.write(" EnableFlags();\n")
for capability in _CAPABILITY_FLAGS:
+ if 'extension_flag' in capability:
+ continue
f.write(" bool %s;\n" % capability['name'])
f.write("};\n\n")
self.generated_cpp_filenames.append(filename)
@@ -9997,6 +10005,9 @@ void ContextState::InitCapabilities(const ContextState* prev_state) const {
capability_es3 = 'es3' in capability and capability['es3'] == True
if capability_es3 and not es3_caps or not capability_es3 and es3_caps:
continue
+ if 'extension_flag' in capability:
+ f.write(" if (feature_info_->feature_flags().%s) {\n " %
+ capability['extension_flag'])
if test_prev:
f.write(""" if (prev_state->enable_flags.cached_%s !=
enable_flags.cached_%s) {\n""" %
@@ -10005,6 +10016,8 @@ void ContextState::InitCapabilities(const ContextState* prev_state) const {
(capability_name.upper(), capability_name))
if test_prev:
f.write(" }")
+ if 'extension_flag' in capability:
+ f.write(" }")
f.write(" if (prev_state) {")
WriteCapabilities(True, False)
@@ -10130,6 +10143,8 @@ void ContextState::InitState(const ContextState *prev_state) const {
with CHeaderWriter(filename, comment) as f:
code = []
for capability in _CAPABILITY_FLAGS:
+ if 'extension_flag' in capability:
+ continue
code.append("%s(%s)" %
(capability['name'],
('false', 'true')['default' in capability]))
@@ -10145,6 +10160,8 @@ bool ClientContextState::SetCapabilityState(
switch (cap) {
""")
for capability in _CAPABILITY_FLAGS:
+ if 'extension_flag' in capability:
+ continue
f.write(" case GL_%s:\n" % capability['name'].upper())
f.write(""" if (enable_flags.%(name)s != enabled) {
*changed = true;
@@ -10162,6 +10179,8 @@ bool ClientContextState::SetCapabilityState(
switch (cap) {
""")
for capability in _CAPABILITY_FLAGS:
+ if 'extension_flag' in capability:
+ continue
f.write(" case GL_%s:\n" % capability['name'].upper())
f.write(" *enabled = enable_flags.%s;\n" % capability['name'])
f.write(" return true;\n")
@@ -10259,11 +10278,17 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) {
bool es3_capable) {""")
for capability in _CAPABILITY_FLAGS:
capability_es3 = 'es3' in capability and capability['es3'] == True
- if not capability_es3:
- f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
- (capability['name'].upper(),
- ('false', 'true')['default' in capability]))
-
+ if capability_es3:
+ continue
+ if 'extension_flag' in capability:
+ f.write(" if (group_->feature_info()->feature_flags().%s) {\n" %
+ capability['extension_flag'])
+ f.write(" ")
+ f.write(" ExpectEnableDisable(GL_%s, %s);\n" %
+ (capability['name'].upper(),
+ ('false', 'true')['default' in capability]))
+ if 'extension_flag' in capability:
+ f.write(" }")
f.write(" if (es3_capable) {")
for capability in _CAPABILITY_FLAGS:
capability_es3 = 'es3' in capability and capability['es3'] == True
@@ -10909,6 +10934,8 @@ def main(argv):
if not item['enum'] in gl_state_valid:
gl_state_valid.append(item['enum'])
for capability in _CAPABILITY_FLAGS:
+ if 'extension_flag' in capability:
+ continue
valid_value = "GL_%s" % capability['name'].upper()
if not valid_value in gl_state_valid:
gl_state_valid.append(valid_value)