package org.geogebra.web.geogebra3D.web.euclidian3D.openGL.shaders;
import com.googlecode.gwtgl.binding.WebGLRenderingContext;
/**
* Some GPUs cannot translated shaders, this class should provide information
* about the supported ones.
*/
public class GpuBlacklist {
/*
* This renderer is used by older chromebooks eg Samsung Chromebook
* XE500C21-H02US and probably similar models. If needed this can be
* extended to use a list or using more sophisticated methods to blacklist
* some gpus
*/
private static final String[] blacklistedRenderer = new String[] {
"Gallium 0.4 on i915 (chipset: Pineview M)", "NVIDIA Tegra 3" };
/**
* @param glContext
* gl context used
* @return True if the current gpu is blacklisted.
*/
public static boolean isCurrentGpuBlacklisted(
WebGLRenderingContext glContext) {
String unmaskedRenderer = getUnmaskedRendererWebgl(glContext);
for (String model : blacklistedRenderer) {
if (model.equals(unmaskedRenderer)) {
return true;
}
}
return false;
}
private static native String getUnmaskedRendererWebgl(
WebGLRenderingContext context) /*-{
var dbgRenderInfo = context.getExtension("WEBGL_debug_renderer_info");
if (dbgRenderInfo) {
return context.getParameter(dbgRenderInfo.UNMASKED_RENDERER_WEBGL);
}
return '';
}-*/;
}