GpuWarnlistManager.java
net.minecraft.client.renderer.GpuWarnlistManager
信息
- 全限定名:net.minecraft.client.renderer.GpuWarnlistManager
- 类型:public class
- 包:net.minecraft.client.renderer
- 源码路径:src/main/java/net/minecraft/client/renderer/GpuWarnlistManager.java
- 起始行号:L29
- 继承:SimplePreparableReloadListener<GpuWarnlistManager.Preparations>
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
GPU_WARNLIST_LOCATION- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
warnings- 类型:
ImmutableMap<String,String> - 修饰符:
private - 源码定位:
L32 - 说明:
TODO
- 类型:
-
showWarning- 类型:
boolean - 修饰符:
private - 源码定位:
L33 - 说明:
TODO
- 类型:
-
warningDismissed- 类型:
boolean - 修饰符:
private - 源码定位:
L34 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.renderer.GpuWarnlistManager.Preparations- 类型:
class - 修饰符:
protected static final - 源码定位:
L121 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public boolean hasWarnings() @ L36
- 方法名:hasWarnings
- 源码定位:L36
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean willShowWarning() @ L40
- 方法名:willShowWarning
- 源码定位:L40
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public void showWarning() @ L44
- 方法名:showWarning
- 源码定位:L44
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void dismissWarning() @ L48
- 方法名:dismissWarning
- 源码定位:L48
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean isShowingWarning() @ L52
- 方法名:isShowingWarning
- 源码定位:L52
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public void resetWarnings() @ L56
- 方法名:resetWarnings
- 源码定位:L56
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public String getRendererWarnings() @ L61
- 方法名:getRendererWarnings
- 源码定位:L61
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public String getVersionWarnings() @ L65
- 方法名:getVersionWarnings
- 源码定位:L65
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public String getVendorWarnings() @ L69
- 方法名:getVendorWarnings
- 源码定位:L69
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public String getAllWarnings() @ L73
- 方法名:getAllWarnings
- 源码定位:L73
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
protected GpuWarnlistManager.Preparations prepare(ResourceManager manager, ProfilerFiller profiler) @ L79
- 方法名:prepare
- 源码定位:L79
- 返回类型:GpuWarnlistManager.Preparations
- 修饰符:protected
参数:
- manager: ResourceManager
- profiler: ProfilerFiller
说明:
TODO
protected void apply(GpuWarnlistManager.Preparations preparations, ResourceManager manager, ProfilerFiller profiler) @ L95
- 方法名:apply
- 源码定位:L95
- 返回类型:void
- 修饰符:protected
参数:
- preparations: GpuWarnlistManager.Preparations
- manager: ResourceManager
- profiler: ProfilerFiller
说明:
TODO
private static void compilePatterns(JsonArray jsonArray, List<Pattern> patternList) @ L99
- 方法名:compilePatterns
- 源码定位:L99
- 返回类型:void
- 修饰符:private static
参数:
- jsonArray: JsonArray
- patternList: List
说明:
TODO
private static JsonObject parseJson(ResourceManager manager, ProfilerFiller profiler) @ L103
- 方法名:parseJson
- 源码定位:L103
- 返回类型:JsonObject
- 修饰符:private static
参数:
- manager: ResourceManager
- profiler: ProfilerFiller
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class GpuWarnlistManager extends SimplePreparableReloadListener<GpuWarnlistManager.Preparations> {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Identifier GPU_WARNLIST_LOCATION = Identifier.withDefaultNamespace("gpu_warnlist.json");
private ImmutableMap<String, String> warnings = ImmutableMap.of();
private boolean showWarning;
private boolean warningDismissed;
public boolean hasWarnings() {
return !this.warnings.isEmpty();
}
public boolean willShowWarning() {
return this.hasWarnings() && !this.warningDismissed;
}
public void showWarning() {
this.showWarning = true;
}
public void dismissWarning() {
this.warningDismissed = true;
}
public boolean isShowingWarning() {
return this.showWarning && !this.warningDismissed;
}
public void resetWarnings() {
this.showWarning = false;
this.warningDismissed = false;
}
public @Nullable String getRendererWarnings() {
return this.warnings.get("renderer");
}
public @Nullable String getVersionWarnings() {
return this.warnings.get("version");
}
public @Nullable String getVendorWarnings() {
return this.warnings.get("vendor");
}
public @Nullable String getAllWarnings() {
StringBuilder sb = new StringBuilder();
this.warnings.forEach((k, v) -> sb.append(k).append(": ").append(v));
return sb.isEmpty() ? null : sb.toString();
}
protected GpuWarnlistManager.Preparations prepare(ResourceManager manager, ProfilerFiller profiler) {
List<Pattern> rendererPatterns = Lists.newArrayList();
List<Pattern> versionPatterns = Lists.newArrayList();
List<Pattern> vendorPatterns = Lists.newArrayList();
JsonObject root = parseJson(manager, profiler);
if (root != null) {
try (Zone ignored = profiler.zone("compile_regex")) {
compilePatterns(root.getAsJsonArray("renderer"), rendererPatterns);
compilePatterns(root.getAsJsonArray("version"), versionPatterns);
compilePatterns(root.getAsJsonArray("vendor"), vendorPatterns);
}
}
return new GpuWarnlistManager.Preparations(rendererPatterns, versionPatterns, vendorPatterns);
}
protected void apply(GpuWarnlistManager.Preparations preparations, ResourceManager manager, ProfilerFiller profiler) {
this.warnings = preparations.apply();
}
private static void compilePatterns(JsonArray jsonArray, List<Pattern> patternList) {
jsonArray.forEach(e -> patternList.add(Pattern.compile(e.getAsString(), 2)));
}
private static @Nullable JsonObject parseJson(ResourceManager manager, ProfilerFiller profiler) {
try {
JsonObject var4;
try (
Zone ignored = profiler.zone("parse_json");
Reader resource = manager.openAsReader(GPU_WARNLIST_LOCATION);
) {
var4 = StrictJsonParser.parse(resource).getAsJsonObject();
}
return var4;
} catch (JsonSyntaxException | IOException var10) {
LOGGER.warn("Failed to load GPU warnlist", (Throwable)var10);
return null;
}
}
@OnlyIn(Dist.CLIENT)
protected static final class Preparations {
private final List<Pattern> rendererPatterns;
private final List<Pattern> versionPatterns;
private final List<Pattern> vendorPatterns;
private Preparations(List<Pattern> rendererPatterns, List<Pattern> versionPatterns, List<Pattern> vendorPatterns) {
this.rendererPatterns = rendererPatterns;
this.versionPatterns = versionPatterns;
this.vendorPatterns = vendorPatterns;
}
private static String matchAny(List<Pattern> patterns, String input) {
List<String> allMatches = Lists.newArrayList();
for (Pattern pattern : patterns) {
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
allMatches.add(matcher.group());
}
}
return String.join(", ", allMatches);
}
private ImmutableMap<String, String> apply() {
Builder<String, String> map = new Builder<>();
GpuDevice device = RenderSystem.getDevice();
if (device.getBackendName().equals("OpenGL")) {
String rendererFails = matchAny(this.rendererPatterns, device.getRenderer());
if (!rendererFails.isEmpty()) {
map.put("renderer", rendererFails);
}
String versionFails = matchAny(this.versionPatterns, device.getVersion());
if (!versionFails.isEmpty()) {
map.put("version", versionFails);
}
String vendorFails = matchAny(this.vendorPatterns, device.getVendor());
if (!vendorFails.isEmpty()) {
map.put("vendor", vendorFails);
}
}
return map.build();
}
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
RenderSystem.getDevice()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
SimplePreparableReloadListener
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
StrictJsonParser.parse()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
Pattern.compile()
- 引用位置: