Fix assertion failure with 'uniform texture2D'
Bug: oss-fuzz:48371 Change-Id: Ia92a652022985ea738791f3e2e57d360a04b05bd Reviewed-on: https://skia-review.googlesource.com/c/skia/+/554517 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: John Stiles <johnstiles@google.com>
This commit is contained in:
parent
02fd3fc63d
commit
26afe80a62
@ -307,6 +307,7 @@ sksl_metal_tests = [
|
|||||||
"/sksl/metal/NumericGlobals.sksl",
|
"/sksl/metal/NumericGlobals.sksl",
|
||||||
"/sksl/metal/OpaqueTypeInInterfaceBlock.sksl",
|
"/sksl/metal/OpaqueTypeInInterfaceBlock.sksl",
|
||||||
"/sksl/metal/OpaqueTypeInStruct.sksl",
|
"/sksl/metal/OpaqueTypeInStruct.sksl",
|
||||||
|
"/sksl/metal/Ossfuzz48371.sksl",
|
||||||
"/sksl/metal/OutParams.sksl",
|
"/sksl/metal/OutParams.sksl",
|
||||||
"/sksl/metal/OutVarsRequireLocation.sksl",
|
"/sksl/metal/OutVarsRequireLocation.sksl",
|
||||||
"/sksl/metal/SamplerGlobals.sksl",
|
"/sksl/metal/SamplerGlobals.sksl",
|
||||||
|
1
resources/sksl/metal/Ossfuzz48371.sksl
Normal file
1
resources/sksl/metal/Ossfuzz48371.sksl
Normal file
@ -0,0 +1 @@
|
|||||||
|
uniform texture2D s;
|
@ -2553,7 +2553,8 @@ void MetalCodeGenerator::writeUniformStruct() {
|
|||||||
const GlobalVarDeclaration& decls = e->as<GlobalVarDeclaration>();
|
const GlobalVarDeclaration& decls = e->as<GlobalVarDeclaration>();
|
||||||
const Variable& var = decls.declaration()->as<VarDeclaration>().var();
|
const Variable& var = decls.declaration()->as<VarDeclaration>().var();
|
||||||
if (var.modifiers().fFlags & Modifiers::kUniform_Flag &&
|
if (var.modifiers().fFlags & Modifiers::kUniform_Flag &&
|
||||||
var.type().typeKind() != Type::TypeKind::kSampler) {
|
var.type().typeKind() != Type::TypeKind::kSampler &&
|
||||||
|
var.type().typeKind() != Type::TypeKind::kTexture) {
|
||||||
int uniformSet = this->getUniformSet(var.modifiers());
|
int uniformSet = this->getUniformSet(var.modifiers());
|
||||||
// Make sure that the program's uniform-set value is consistent throughout.
|
// Make sure that the program's uniform-set value is consistent throughout.
|
||||||
if (-1 == fUniformBuffer) {
|
if (-1 == fUniformBuffer) {
|
||||||
|
11
tests/sksl/metal/Ossfuzz48371.metal
Normal file
11
tests/sksl/metal/Ossfuzz48371.metal
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include <metal_stdlib>
|
||||||
|
#include <simd/simd.h>
|
||||||
|
using namespace metal;
|
||||||
|
struct Inputs {
|
||||||
|
};
|
||||||
|
struct Outputs {
|
||||||
|
half4 sk_FragColor [[color(0)]];
|
||||||
|
};
|
||||||
|
struct Globals {
|
||||||
|
texture2d<half, access::read> s;
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user