Skip to content

Commit

Permalink
Merge pull request #1188 from kenrussell/transform-feedback-fixes
Browse files Browse the repository at this point in the history
Fixed bugs affecting transform feedback test.
  • Loading branch information
kenrussell committed Sep 5, 2015
2 parents 7884b1c + 8866bda commit 040e856
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 16 deletions.
9 changes: 8 additions & 1 deletion sdk/tests/deqp/framework/opengl/gluShaderProgram.js
Expand Up @@ -214,6 +214,13 @@ gluShaderProgram.Program.prototype.link = function() {
this.info.infoLog = this.gl.getProgramInfoLog(this.program);
};

/**
* return {boolean}
*/
gluShaderProgram.Program.prototype.getLinkStatus = function() {
return this.info.linkOk;
};

/**
* @param {Array<string>} varyings
* @param {number} bufferMode
Expand Down Expand Up @@ -285,7 +292,7 @@ gluShaderProgram.ShaderProgram.prototype.getProgramInfo = function() {
};

gluShaderProgram.ShaderProgram.prototype.isOk = function() {
return this.shadersOK;
return this.shadersOK && this.program.getLinkStatus();
};

gluShaderProgram.containerTypes = {
Expand Down
42 changes: 27 additions & 15 deletions sdk/tests/deqp/functional/gles3/es3fTransformFeedbackTests.js
Expand Up @@ -212,7 +212,7 @@ goog.scope(function() {
);

for (var i = 0; i < spec.getVaryings().length; ++i) {
for (var v_iter = new gluVarTypeUtil.VectorTypeIterator(spec.getVaryings()[i]); !v_iter.end(); v_iter.next()) {
for (var v_iter = new gluVarTypeUtil.VectorTypeIterator(spec.getVaryings()[i].type); !v_iter.end(); v_iter.next()) {
totalVertexAttribs += 1;
}
}
Expand Down Expand Up @@ -868,6 +868,18 @@ goog.scope(function() {

setParentClass(es3fTransformFeedbackTests.TransformFeedbackCase, tcuTestCase.DeqpTest);

es3fTransformFeedbackTests.TransformFeedbackCase.prototype.dumpShaderText = function() {
var dbgext = gl.getExtension('WEBGL_debug_shaders');
for (var ii = 0; ii < this.m_program.shaders.length; ++ii) {
debug('Shader source ' + ii + ' before translation:')
debug(this.m_program.shaders[ii].info.source);
debug('');
debug('Shader source ' + ii + ' after translation:');
debug(dbgext.getTranslatedShaderSource(this.m_program.shaders[ii].shader));
}
};


es3fTransformFeedbackTests.TransformFeedbackCase.prototype.init = function() {
this.m_program = es3fTransformFeedbackTests.createVertexCaptureProgram(
this.m_progSpec,
Expand All @@ -876,6 +888,7 @@ goog.scope(function() {
);

if (!this.m_program.isOk()) {
// this.dumpShaderText();

var linkFail = this.m_program.shadersOK &&
!this.m_program.getProgramInfo().linkOk;
Expand All @@ -886,20 +899,15 @@ goog.scope(function() {
} else if (es3fTransformFeedbackTests.hasArraysInTFVaryings(this.m_progSpec)) {
throw new Error('Capturing arrays is not supported (undefined in specification)');
} else {
throw new Error('Link failed');
throw new Error('Link failed: ' + this.m_program.getProgramInfo().infoLog);
}
} else {
throw new Error('Compile failed');
}
} else {
// var dbgext = gl.getExtension('WEBGL_debug_shaders');
// for (var ii = 0; ii < this.m_program.shaders.length; ++ii) {
// debug('Shader source ' + ii + ' before translation:')
// debug(this.m_program.shaders[ii].info.source);
// debug('');
// debug('Shader source ' + ii + ' after translation:');
// debug(dbgext.getTranslatedShaderSource(this.m_program.shaders[ii].shader));
// }
// debug('Program is ' +
// (gl.getProgramParameter(this.m_program.getProgram(), gl.LINK_STATUS) ? 'linked' : 'not linked'));
// this.dumpShaderText();
}

// bufferedLogToConsole('Transform feedback varyings: ' + tcu.formatArray(this.m_progSpec.getTransformFeedbackVaryings()));
Expand Down Expand Up @@ -994,6 +1002,8 @@ goog.scope(function() {
// fail the test
testFailedOptions('Result comparison failed', false);
// this.m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, 'Result comparison failed');
} else {
testPassedOptions('Result comparison succeeded', true);
}

this.m_iterNdx += 1;
Expand Down Expand Up @@ -1121,12 +1131,12 @@ goog.scope(function() {

gl.drawArrays(gluDrawUtil.getPrimitiveGLType(gl, this.m_primitiveType), offset, call.numElements);
offset += call.numElements;

// Resume feedback before finishing it.
if (!tfEnabled)
gl.resumeTransformFeedback();
}

// Resume feedback before finishing it.
if (!tfEnabled)
gl.resumeTransformFeedback();

gl.endTransformFeedback();

gl.endQuery(gl.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
Expand Down Expand Up @@ -1318,7 +1328,9 @@ goog.scope(function() {
var tfVar = spec.getTransformFeedbackVaryings()[i];
var varName = gluVarTypeUtil.parseVariableName(tfVar);

if (es3fTransformFeedbackTests.findAttributeNameEquals(spec.getVaryings(), varName)) return true;
var attr = es3fTransformFeedbackTests.findAttributeNameEquals(spec.getVaryings(), varName);
if (attr && attr.type.isArrayType())
return true;
}
return false;

Expand Down

0 comments on commit 040e856

Please sign in to comment.