Implementation attempt for glInstanceID.
Related dEQP tests pass.
Change-Id: I6391699a127cc7c159a2a64e3ffeaa528b611f97
Reviewed-on: https://swiftshader-review.googlesource.com/3412
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
memcpy(&data->vs.b, VertexProcessor::b, sizeof(bool) * draw->vsDirtyConstB);
draw->vsDirtyConstB = 0;
}
+
+ if(context->vertexShader->instanceIdDeclared)
+ {
+ data->instanceID = context->instanceID;
+ }
}
else
{
reg = r.o[i + relativeAddress(r, src)];
}
break;
+ case Shader::PARAMETER_MISCTYPE:
+ reg.x = Float(r.instanceID);
+ return reg;
default:
ASSERT(false);
}
Registers r(shader);
r.data = data;
r.constants = *Pointer<Pointer<Byte> >(data + OFFSET(DrawData,constants));
+ if(shader->instanceIdDeclared)
+ {
+ r.instanceID = *Pointer<Int>(data + OFFSET(DrawData, instanceID));
+ }
Do
{
Int4 enableBreak;
Int4 enableContinue;
Int4 enableLeave;
+
+ Int instanceID;
};
public:
memcpy(input, vs->input, sizeof(input));
positionRegister = vs->positionRegister;
pointSizeRegister = vs->pointSizeRegister;
+ instanceIdDeclared = vs->instanceIdDeclared;
usedSamplers = vs->usedSamplers;
optimize();