+dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_fragment
dEQP-GLES3.functional.texture.format.sized.2d.srgb_rg8_pot
dEQP-GLES3.functional.texture.format.sized.2d.srgb_rg8_npot
dEQP-GLES3.functional.texture.format.sized.cube.srgb_rg8_pot
dEQP-GLES3.functional.shaders.switch.no_default_label_uniform_fragment
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_static_vertex
dEQP-GLES3.functional.shaders.switch.fall_through_static_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_uniform_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_uniform_fragment
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_static_vertex
dEQP-GLES3.functional.shaders.switch.fall_through_static_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_uniform_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_uniform_fragment
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_static_vertex
dEQP-GLES3.functional.shaders.switch.fall_through_static_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_uniform_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_uniform_fragment
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_static_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_static_fragment
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.default_only_uniform_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_static_fragment
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_vertex
+dEQP-GLES3.functional.shaders.switch.empty_case_default_uniform_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_static_vertex
dEQP-GLES3.functional.shaders.switch.fall_through_static_fragment
dEQP-GLES3.functional.shaders.switch.fall_through_uniform_vertex
type == SWITCHTYPE_DYNAMIC ? evalSwitchDynamic : (ShaderEvalFunc)DE_NULL);
}
-static void makeSwitchCases (TestCaseGroup* group, const char* name, const char* desc, const LineStream& switchBody)
+static void makeSwitchCases (TestCaseGroup* group, const char* name, const char* desc, const LineStream& switchBody, const bool skipDynamicType = false)
{
static const char* switchTypeNames[] = { "static", "uniform", "dynamic" };
DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(switchTypeNames) == SWITCHTYPE_LAST);
for (int type = 0; type < SWITCHTYPE_LAST; type++)
{
+ if (skipDynamicType && (type == SWITCHTYPE_DYNAMIC))
+ continue;
+
group->addChild(makeSwitchCase(group->getContext(), (string(name) + "_" + switchTypeNames[type] + "_vertex").c_str(), desc, (SwitchType)type, true, switchBody));
group->addChild(makeSwitchCase(group->getContext(), (string(name) + "_" + switchTypeNames[type] + "_fragment").c_str(), desc, (SwitchType)type, false, switchBody));
}
<< " case 3: res = coords.zyx; break;"
<< "}");
+ makeSwitchCases(this, "default_only", "Default case only",
+ LineStream(1)
+ << "switch (${CONDITION})"
+ << "{"
+ << " default:"
+ << " res = coords.yzw;"
+ << "}", true);
+
+ makeSwitchCases(this, "empty_case_default", "Empty case and default",
+ LineStream(1)
+ << "switch (${CONDITION})"
+ << "{"
+ << " case 2:"
+ << " default:"
+ << " res = coords.yzw;"
+ << "}", true);
+
makeSwitchCases(this, "fall_through", "Fall-through",
LineStream(1)
<< "switch (${CONDITION})"