const float rgbValues[] = { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f };
const float alphaValues[] = { 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f };
- const float r = rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
- const float g = rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
- const float b = rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
+ // \note Spec assumes premultiplied inputs.
const float a = rnd->choose<float>(DE_ARRAY_BEGIN(alphaValues), DE_ARRAY_END(alphaValues));
+ const float r = a * rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
+ const float g = a * rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
+ const float b = a * rnd->choose<float>(DE_ARRAY_BEGIN(rgbValues), DE_ARRAY_END(rgbValues));
return tcu::Vec4(r, g, b, a);
}
<< "\n"
<< " sb_out.values[globalOffs + localOffs] = globalOffs;\n"
<< " memoryBarrierBuffer();\n"
+ << " barrier();\n"
<< " sb_out.values[globalOffs + ((localOffs+1u)%localSize)] += localOffs;\n"
<< " memoryBarrierBuffer();\n"
+ << " barrier();\n"
<< " sb_out.values[globalOffs + ((localOffs+2u)%localSize)] += localOffs;\n"
<< "}\n";
const Vec2 ranges[] =
{
Vec2(-2.0f, 2.0f), // lowp
- Vec2(-1e3f, 1e3f), // mediump
+ Vec2(-127.f, 127.f), // mediump
Vec2(-1e7f, 1e7f) // highp
};