Bug 1241042 - save frag translated varying names into LinkedProgramInfo. r=jgilbert

Save the frag name info to the LinkedProgramInfo object. Then the fragment shader can be freely detached at any time.
This commit is contained in:
JerryShih
2016-07-18 20:19:04 +08:00
parent 4e8fe835e6
commit 9f084e9521
6 changed files with 59 additions and 2 deletions

View File

@@ -396,6 +396,10 @@ QueryProgramInfo(WebGLProgram* prog, gl::GLContext* gl)
}
}
// Frag outputs
prog->EnumerateFragOutputs(info->fragDataMap);
return info.forget();
}
@@ -632,9 +636,9 @@ WebGLProgram::GetFragDataLocation(const nsAString& userName_wide) const
}
const NS_LossyConvertUTF16toASCII userName(userName_wide);
nsCString mappedName;
if (!FindActiveOutputMappedNameByUserName(userName, &mappedName)) {
if (!LinkInfo()->FindFragData(userName, &mappedName)) {
mappedName = userName;
}
@@ -1309,6 +1313,14 @@ WebGLProgram::FindUniformBlockByMappedName(const nsACString& mappedName,
return false;
}
void
WebGLProgram::EnumerateFragOutputs(std::map<nsCString, const nsCString> &out_FragOutputs) const
{
MOZ_ASSERT(mFragShader);
mFragShader->EnumerateFragOutputs(out_FragOutputs);
}
////////////////////////////////////////////////////////////////////////////////
bool