Skip Gamma and Gamut conversions for BT.709->SRGB
This introduces a new field 'doYuvToRgbConversionOnly' in ExternalTextureParams to have the WGSL only do yuv->rgb conversion for better performance. User studies shows that users don't really care about the Gamma difference between 2.4 and 2.2. https://source.chromium.org/chromium/chromium/src/+/main:ui/gfx/color_space.cc;l=1022;drc=a1dbb594a6741a400db35fe3678e77bad2504ea4 Bug: dawn:1082 Bug: dawn:1466 Change-Id: I61c0fe65c5969d8a61c267c202c8dd64c259ed8a Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/92901 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
This commit is contained in:
parent
797f0f82e0
commit
ef62b58cf9
|
@ -1330,6 +1330,7 @@
|
||||||
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true},
|
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true},
|
||||||
{"name": "plane 0", "type": "texture view"},
|
{"name": "plane 0", "type": "texture view"},
|
||||||
{"name": "plane 1", "type": "texture view", "optional": true},
|
{"name": "plane 1", "type": "texture view", "optional": true},
|
||||||
|
{"name": "do yuv to rgb conversion only", "type": "bool", "default": "false"},
|
||||||
{"name": "yuv to rgb conversion matrix", "type": "float", "annotation": "const*",
|
{"name": "yuv to rgb conversion matrix", "type": "float", "annotation": "const*",
|
||||||
"length": 12, "optional": true},
|
"length": 12, "optional": true},
|
||||||
{"name": "src transfer function parameters", "type": "float", "annotation": "const*",
|
{"name": "src transfer function parameters", "type": "float", "annotation": "const*",
|
||||||
|
|
|
@ -152,6 +152,8 @@ MaybeError ExternalTextureBase::Initialize(DeviceBase* device,
|
||||||
ExternalTextureParams params;
|
ExternalTextureParams params;
|
||||||
params.numPlanes = descriptor->plane1 == nullptr ? 1 : 2;
|
params.numPlanes = descriptor->plane1 == nullptr ? 1 : 2;
|
||||||
|
|
||||||
|
params.doYuvToRgbConversionOnly = descriptor->doYuvToRgbConversionOnly ? 1 : 0;
|
||||||
|
|
||||||
// YUV-to-RGB conversion is performed by multiplying the source YUV values with a 4x3 matrix
|
// YUV-to-RGB conversion is performed by multiplying the source YUV values with a 4x3 matrix
|
||||||
// passed from Chromium. The matrix was originally sourced from /skia/src/core/SkYUVMath.cpp.
|
// passed from Chromium. The matrix was originally sourced from /skia/src/core/SkYUVMath.cpp.
|
||||||
// This matrix is only used in multiplanar scenarios.
|
// This matrix is only used in multiplanar scenarios.
|
||||||
|
|
|
@ -28,7 +28,9 @@ class TextureViewBase;
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint32_t numPlanes;
|
uint32_t numPlanes;
|
||||||
std::array<uint32_t, 3> padding;
|
// TODO(crbug.com/dawn/1466): Only go as few steps as necessary.
|
||||||
|
uint32_t doYuvToRgbConversionOnly;
|
||||||
|
std::array<uint32_t, 2> padding;
|
||||||
std::array<float, 12> yuvToRgbConversionMatrix;
|
std::array<float, 12> yuvToRgbConversionMatrix;
|
||||||
std::array<float, 8> gammaDecodingParams = {};
|
std::array<float, 8> gammaDecodingParams = {};
|
||||||
std::array<float, 8> gammaEncodingParams = {};
|
std::array<float, 8> gammaEncodingParams = {};
|
||||||
|
|
|
@ -251,6 +251,7 @@ struct MultiplanarExternalTexture::State {
|
||||||
// Create ExternalTextureParams struct.
|
// Create ExternalTextureParams struct.
|
||||||
ast::StructMemberList ext_tex_params_member_list = {
|
ast::StructMemberList ext_tex_params_member_list = {
|
||||||
b.Member("numPlanes", b.ty.u32()),
|
b.Member("numPlanes", b.ty.u32()),
|
||||||
|
b.Member("doYuvToRgbConversionOnly", b.ty.u32()),
|
||||||
b.Member("yuvToRgbConversionMatrix", b.ty.mat3x4(b.ty.f32())),
|
b.Member("yuvToRgbConversionMatrix", b.ty.mat3x4(b.ty.f32())),
|
||||||
b.Member("gammaDecodeParams", b.ty.type_name("GammaTransferParams")),
|
b.Member("gammaDecodeParams", b.ty.type_name("GammaTransferParams")),
|
||||||
b.Member("gammaEncodeParams", b.ty.type_name("GammaTransferParams")),
|
b.Member("gammaEncodeParams", b.ty.type_name("GammaTransferParams")),
|
||||||
|
@ -340,14 +341,20 @@ struct MultiplanarExternalTexture::State {
|
||||||
b.Mul(b.vec4<f32>(b.MemberAccessor(plane_0_call, "r"),
|
b.Mul(b.vec4<f32>(b.MemberAccessor(plane_0_call, "r"),
|
||||||
b.MemberAccessor(plane_1_call, "rg"), 1_f),
|
b.MemberAccessor(plane_1_call, "rg"), 1_f),
|
||||||
b.MemberAccessor("params", "yuvToRgbConversionMatrix")))))),
|
b.MemberAccessor("params", "yuvToRgbConversionMatrix")))))),
|
||||||
// color = gammaConversion(color, gammaDecodeParams);
|
// if (params.doYuvToRgbConversionOnly == 0u)
|
||||||
b.Assign("color", b.Call("gammaCorrection", "color",
|
b.If(b.create<ast::BinaryExpression>(
|
||||||
b.MemberAccessor("params", "gammaDecodeParams"))),
|
ast::BinaryOp::kEqual, b.MemberAccessor("params", "doYuvToRgbConversionOnly"),
|
||||||
// color = (params.gamutConversionMatrix * color);
|
b.Expr(0_u)),
|
||||||
b.Assign("color", b.Mul(b.MemberAccessor("params", "gamutConversionMatrix"), "color")),
|
b.Block(
|
||||||
// color = gammaConversion(color, gammaEncodeParams);
|
// color = gammaConversion(color, gammaDecodeParams);
|
||||||
b.Assign("color", b.Call("gammaCorrection", "color",
|
b.Assign("color", b.Call("gammaCorrection", "color",
|
||||||
b.MemberAccessor("params", "gammaEncodeParams"))),
|
b.MemberAccessor("params", "gammaDecodeParams"))),
|
||||||
|
// color = (params.gamutConversionMatrix * color);
|
||||||
|
b.Assign("color",
|
||||||
|
b.Mul(b.MemberAccessor("params", "gamutConversionMatrix"), "color")),
|
||||||
|
// color = gammaConversion(color, gammaEncodeParams);
|
||||||
|
b.Assign("color", b.Call("gammaCorrection", "color",
|
||||||
|
b.MemberAccessor("params", "gammaEncodeParams"))))),
|
||||||
// return vec4<f32>(color, 1.f);
|
// return vec4<f32>(color, 1.f);
|
||||||
b.Return(b.vec4<f32>("color", 1_f))};
|
b.Return(b.vec4<f32>("color", 1_f))};
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,10 @@ struct BindingPoints {
|
||||||
/// textureSampleLevel that contain a texture_external parameter will be
|
/// textureSampleLevel that contain a texture_external parameter will be
|
||||||
/// transformed into a newly generated version of the function, which can
|
/// transformed into a newly generated version of the function, which can
|
||||||
/// perform the desired operation on a single RGBA plane or on seperate Y and UV
|
/// perform the desired operation on a single RGBA plane or on seperate Y and UV
|
||||||
/// planes.
|
/// planes, and do colorspace conversions including yuv->rgb conversion, gamma
|
||||||
|
/// decoding, gamut conversion, and gamma encoding steps. Specifically
|
||||||
|
// for BT.709 to SRGB conversion, it takes the fast path only doing the yuv->rgb
|
||||||
|
// step and skipping all other steps.
|
||||||
class MultiplanarExternalTexture : public Castable<MultiplanarExternalTexture, Transform> {
|
class MultiplanarExternalTexture : public Castable<MultiplanarExternalTexture, Transform> {
|
||||||
public:
|
public:
|
||||||
/// BindingsMap is a map where the key is the binding location of a
|
/// BindingsMap is a map where the key is the binding location of a
|
||||||
|
|
|
@ -118,6 +118,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -172,6 +173,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -225,6 +227,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -253,9 +256,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -298,6 +303,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -322,9 +328,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,6 +378,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -396,9 +405,11 @@ fn textureLoadExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, coord
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,6 +451,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -464,9 +476,11 @@ fn textureLoadExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, coord
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -512,6 +526,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -540,9 +555,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,9 +570,11 @@ fn textureLoadExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, coord
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,6 +618,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -623,9 +643,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -636,9 +658,11 @@ fn textureLoadExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, coord
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureLoad(plane0, coord, 0i).r, textureLoad(plane1, coord, 0i).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -688,6 +712,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -734,9 +759,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -788,6 +815,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -812,9 +840,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -870,6 +900,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -899,9 +930,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -952,6 +985,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -976,9 +1010,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1036,6 +1072,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1064,9 +1101,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1129,6 +1168,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1162,9 +1202,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1223,6 +1265,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1247,9 +1290,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1313,6 +1358,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1337,9 +1383,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1391,6 +1439,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1441,6 +1490,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1467,9 +1517,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1526,6 +1578,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
numPlanes : u32,
|
numPlanes : u32,
|
||||||
|
doYuvToRgbConversionOnly : u32,
|
||||||
yuvToRgbConversionMatrix : mat3x4<f32>,
|
yuvToRgbConversionMatrix : mat3x4<f32>,
|
||||||
gammaDecodeParams : GammaTransferParams,
|
gammaDecodeParams : GammaTransferParams,
|
||||||
gammaEncodeParams : GammaTransferParams,
|
gammaEncodeParams : GammaTransferParams,
|
||||||
|
@ -1555,9 +1608,11 @@ fn textureSampleExternal(plane0 : texture_2d<f32>, plane1 : texture_2d<f32>, smp
|
||||||
} else {
|
} else {
|
||||||
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (vec4<f32>(textureSampleLevel(plane0, smp, coord, 0.0f).r, textureSampleLevel(plane1, smp, coord, 0.0f).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return vec4<f32>(color, 1.0f);
|
return vec4<f32>(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -21,6 +22,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -61,6 +63,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -69,6 +72,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -103,6 +107,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -111,6 +116,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
|
|
@ -14,6 +14,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
|
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %textureDimensions_ba1481 "textureDimensions_ba1481"
|
OpName %textureDimensions_ba1481 "textureDimensions_ba1481"
|
||||||
|
@ -43,10 +44,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 1
|
OpDecorate %ext_tex_plane_1 Binding 1
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -55,10 +57,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 2
|
OpDecorate %ext_tex_params Binding 2
|
||||||
|
@ -80,7 +82,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct GammaTransferParams {
|
||||||
};
|
};
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -36,9 +37,11 @@ float4 textureLoadExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, i
|
||||||
} else {
|
} else {
|
||||||
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = mul(color, params.gamutConversionMatrix);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = mul(color, params.gamutConversionMatrix);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +74,8 @@ float3x3 tint_symbol_7(uint4 buffer[11], uint offset) {
|
||||||
|
|
||||||
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
||||||
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
||||||
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
const uint scalar_offset_15 = ((offset + 4u)) / 4;
|
||||||
|
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
||||||
return tint_symbol_10;
|
return tint_symbol_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
/* 0x0000 */ uint numPlanes;
|
/* 0x0000 */ uint numPlanes;
|
||||||
/* 0x0004 */ int8_t tint_pad[12];
|
/* 0x0004 */ uint doYuvToRgbConversionOnly;
|
||||||
|
/* 0x0008 */ int8_t tint_pad[8];
|
||||||
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
||||||
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
||||||
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -35,9 +36,11 @@ float4 textureLoadExternal(texture2d<float, access::sample> plane0, texture2d<fl
|
||||||
} else {
|
} else {
|
||||||
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 129
|
; Bound: 134
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%27 = OpExtInstImport "GLSL.std.450"
|
%27 = OpExtInstImport "GLSL.std.450"
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %gammaCorrection "gammaCorrection"
|
OpName %gammaCorrection "gammaCorrection"
|
||||||
|
@ -52,10 +53,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 1
|
OpDecorate %ext_tex_plane_1 Binding 1
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -64,10 +66,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 2
|
OpDecorate %ext_tex_params Binding 2
|
||||||
|
@ -89,7 +91,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
@ -105,11 +107,12 @@
|
||||||
%78 = OpConstantNull %int
|
%78 = OpConstantNull %int
|
||||||
%v2float = OpTypeVector %float 2
|
%v2float = OpTypeVector %float 2
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
|
%92 = OpConstantNull %uint
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%105 = OpTypeFunction %void
|
%110 = OpTypeFunction %void
|
||||||
%112 = OpConstantNull %v2int
|
%117 = OpConstantNull %v2int
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%116 = OpTypeFunction %v4float
|
%121 = OpTypeFunction %v4float
|
||||||
%gammaCorrection = OpFunction %v3float None %21
|
%gammaCorrection = OpFunction %v3float None %21
|
||||||
%v = OpFunctionParameter %v3float
|
%v = OpFunctionParameter %v3float
|
||||||
%params = OpFunctionParameter %GammaTransferParams
|
%params = OpFunctionParameter %GammaTransferParams
|
||||||
|
@ -170,59 +173,66 @@
|
||||||
%85 = OpCompositeExtract %float %84 0
|
%85 = OpCompositeExtract %float %84 0
|
||||||
%86 = OpCompositeExtract %float %84 1
|
%86 = OpCompositeExtract %float %84 1
|
||||||
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
||||||
%89 = OpCompositeExtract %mat3v4float %params_0 1
|
%89 = OpCompositeExtract %mat3v4float %params_0 2
|
||||||
%90 = OpVectorTimesMatrix %v3float %88 %89
|
%90 = OpVectorTimesMatrix %v3float %88 %89
|
||||||
OpStore %color %90
|
OpStore %color %90
|
||||||
OpBranch %74
|
OpBranch %74
|
||||||
%74 = OpLabel
|
%74 = OpLabel
|
||||||
%92 = OpLoad %v3float %color
|
%91 = OpCompositeExtract %uint %params_0 1
|
||||||
%93 = OpCompositeExtract %GammaTransferParams %params_0 2
|
%93 = OpIEqual %bool %91 %92
|
||||||
%91 = OpFunctionCall %v3float %gammaCorrection %92 %93
|
OpSelectionMerge %94 None
|
||||||
OpStore %color %91
|
OpBranchConditional %93 %95 %94
|
||||||
%94 = OpCompositeExtract %mat3v3float %params_0 4
|
%95 = OpLabel
|
||||||
%95 = OpLoad %v3float %color
|
%97 = OpLoad %v3float %color
|
||||||
%96 = OpMatrixTimesVector %v3float %94 %95
|
%98 = OpCompositeExtract %GammaTransferParams %params_0 3
|
||||||
|
%96 = OpFunctionCall %v3float %gammaCorrection %97 %98
|
||||||
OpStore %color %96
|
OpStore %color %96
|
||||||
%98 = OpLoad %v3float %color
|
%99 = OpCompositeExtract %mat3v3float %params_0 5
|
||||||
%99 = OpCompositeExtract %GammaTransferParams %params_0 3
|
|
||||||
%97 = OpFunctionCall %v3float %gammaCorrection %98 %99
|
|
||||||
OpStore %color %97
|
|
||||||
%100 = OpLoad %v3float %color
|
%100 = OpLoad %v3float %color
|
||||||
%101 = OpCompositeExtract %float %100 0
|
%101 = OpMatrixTimesVector %v3float %99 %100
|
||||||
%102 = OpCompositeExtract %float %100 1
|
OpStore %color %101
|
||||||
%103 = OpCompositeExtract %float %100 2
|
%103 = OpLoad %v3float %color
|
||||||
%104 = OpCompositeConstruct %v4float %101 %102 %103 %float_1
|
%104 = OpCompositeExtract %GammaTransferParams %params_0 4
|
||||||
OpReturnValue %104
|
%102 = OpFunctionCall %v3float %gammaCorrection %103 %104
|
||||||
|
OpStore %color %102
|
||||||
|
OpBranch %94
|
||||||
|
%94 = OpLabel
|
||||||
|
%105 = OpLoad %v3float %color
|
||||||
|
%106 = OpCompositeExtract %float %105 0
|
||||||
|
%107 = OpCompositeExtract %float %105 1
|
||||||
|
%108 = OpCompositeExtract %float %105 2
|
||||||
|
%109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
|
||||||
|
OpReturnValue %109
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%textureLoad_8acf41 = OpFunction %void None %105
|
%textureLoad_8acf41 = OpFunction %void None %110
|
||||||
%108 = OpLabel
|
%113 = OpLabel
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %5
|
%res = OpVariable %_ptr_Function_v4float Function %5
|
||||||
%110 = OpLoad %11 %arg_0
|
%115 = OpLoad %11 %arg_0
|
||||||
%111 = OpLoad %11 %ext_tex_plane_1
|
%116 = OpLoad %11 %ext_tex_plane_1
|
||||||
%113 = OpLoad %ExternalTextureParams %ext_tex_params
|
%118 = OpLoad %ExternalTextureParams %ext_tex_params
|
||||||
%109 = OpFunctionCall %v4float %textureLoadExternal %110 %111 %112 %113
|
%114 = OpFunctionCall %v4float %textureLoadExternal %115 %116 %117 %118
|
||||||
OpStore %res %109
|
OpStore %res %114
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main_inner = OpFunction %v4float None %116
|
%vertex_main_inner = OpFunction %v4float None %121
|
||||||
%118 = OpLabel
|
%123 = OpLabel
|
||||||
%119 = OpFunctionCall %void %textureLoad_8acf41
|
%124 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturnValue %5
|
OpReturnValue %5
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main = OpFunction %void None %105
|
%vertex_main = OpFunction %void None %110
|
||||||
%121 = OpLabel
|
%126 = OpLabel
|
||||||
%122 = OpFunctionCall %v4float %vertex_main_inner
|
%127 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
OpStore %value %122
|
OpStore %value %127
|
||||||
OpStore %vertex_point_size %float_1
|
OpStore %vertex_point_size %float_1
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%fragment_main = OpFunction %void None %105
|
%fragment_main = OpFunction %void None %110
|
||||||
%124 = OpLabel
|
%129 = OpLabel
|
||||||
%125 = OpFunctionCall %void %textureLoad_8acf41
|
%130 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%compute_main = OpFunction %void None %105
|
%compute_main = OpFunction %void None %110
|
||||||
%127 = OpLabel
|
%132 = OpLabel
|
||||||
%128 = OpFunctionCall %void %textureLoad_8acf41
|
%133 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct GammaTransferParams {
|
||||||
};
|
};
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -37,9 +38,11 @@ float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1,
|
||||||
} else {
|
} else {
|
||||||
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, coord, 0.0f).r, plane1.SampleLevel(smp, coord, 0.0f).rg, 1.0f));
|
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, coord, 0.0f).r, plane1.SampleLevel(smp, coord, 0.0f).rg, 1.0f));
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = mul(color, params.gamutConversionMatrix);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = mul(color, params.gamutConversionMatrix);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +75,8 @@ float3x3 tint_symbol_7(uint4 buffer[11], uint offset) {
|
||||||
|
|
||||||
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
||||||
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
||||||
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
const uint scalar_offset_15 = ((offset + 4u)) / 4;
|
||||||
|
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
||||||
return tint_symbol_10;
|
return tint_symbol_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
/* 0x0000 */ uint numPlanes;
|
/* 0x0000 */ uint numPlanes;
|
||||||
/* 0x0004 */ int8_t tint_pad[12];
|
/* 0x0004 */ uint doYuvToRgbConversionOnly;
|
||||||
|
/* 0x0008 */ int8_t tint_pad[8];
|
||||||
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
||||||
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
||||||
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -35,9 +36,11 @@ float4 textureSampleExternal(texture2d<float, access::sample> plane0, texture2d<
|
||||||
} else {
|
} else {
|
||||||
color = (float4(plane0.sample(smp, coord, level(0.0f))[0], float4(plane1.sample(smp, coord, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (float4(plane0.sample(smp, coord, level(0.0f))[0], float4(plane1.sample(smp, coord, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 135
|
; Bound: 140
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%30 = OpExtInstImport "GLSL.std.450"
|
%30 = OpExtInstImport "GLSL.std.450"
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %arg_1 "arg_1"
|
OpName %arg_1 "arg_1"
|
||||||
|
@ -54,10 +55,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 2
|
OpDecorate %ext_tex_plane_1 Binding 2
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -66,10 +68,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 3
|
OpDecorate %ext_tex_params Binding 3
|
||||||
|
@ -93,7 +95,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
@ -110,11 +112,12 @@
|
||||||
%uint_1 = OpConstant %uint 1
|
%uint_1 = OpConstant %uint 1
|
||||||
%81 = OpTypeSampledImage %11
|
%81 = OpTypeSampledImage %11
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
|
%97 = OpConstantNull %uint
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%110 = OpTypeFunction %void
|
%115 = OpTypeFunction %void
|
||||||
%118 = OpConstantNull %v2float
|
%123 = OpConstantNull %v2float
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%122 = OpTypeFunction %v4float
|
%127 = OpTypeFunction %v4float
|
||||||
%gammaCorrection = OpFunction %v3float None %24
|
%gammaCorrection = OpFunction %v3float None %24
|
||||||
%v = OpFunctionParameter %v3float
|
%v = OpFunctionParameter %v3float
|
||||||
%params = OpFunctionParameter %GammaTransferParams
|
%params = OpFunctionParameter %GammaTransferParams
|
||||||
|
@ -179,60 +182,67 @@
|
||||||
%90 = OpCompositeExtract %float %89 0
|
%90 = OpCompositeExtract %float %89 0
|
||||||
%91 = OpCompositeExtract %float %89 1
|
%91 = OpCompositeExtract %float %89 1
|
||||||
%93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1
|
%93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1
|
||||||
%94 = OpCompositeExtract %mat3v4float %params_0 1
|
%94 = OpCompositeExtract %mat3v4float %params_0 2
|
||||||
%95 = OpVectorTimesMatrix %v3float %93 %94
|
%95 = OpVectorTimesMatrix %v3float %93 %94
|
||||||
OpStore %color %95
|
OpStore %color %95
|
||||||
OpBranch %77
|
OpBranch %77
|
||||||
%77 = OpLabel
|
%77 = OpLabel
|
||||||
%97 = OpLoad %v3float %color
|
%96 = OpCompositeExtract %uint %params_0 1
|
||||||
%98 = OpCompositeExtract %GammaTransferParams %params_0 2
|
%98 = OpIEqual %bool %96 %97
|
||||||
%96 = OpFunctionCall %v3float %gammaCorrection %97 %98
|
OpSelectionMerge %99 None
|
||||||
OpStore %color %96
|
OpBranchConditional %98 %100 %99
|
||||||
%99 = OpCompositeExtract %mat3v3float %params_0 4
|
%100 = OpLabel
|
||||||
%100 = OpLoad %v3float %color
|
%102 = OpLoad %v3float %color
|
||||||
%101 = OpMatrixTimesVector %v3float %99 %100
|
%103 = OpCompositeExtract %GammaTransferParams %params_0 3
|
||||||
|
%101 = OpFunctionCall %v3float %gammaCorrection %102 %103
|
||||||
OpStore %color %101
|
OpStore %color %101
|
||||||
%103 = OpLoad %v3float %color
|
%104 = OpCompositeExtract %mat3v3float %params_0 5
|
||||||
%104 = OpCompositeExtract %GammaTransferParams %params_0 3
|
|
||||||
%102 = OpFunctionCall %v3float %gammaCorrection %103 %104
|
|
||||||
OpStore %color %102
|
|
||||||
%105 = OpLoad %v3float %color
|
%105 = OpLoad %v3float %color
|
||||||
%106 = OpCompositeExtract %float %105 0
|
%106 = OpMatrixTimesVector %v3float %104 %105
|
||||||
%107 = OpCompositeExtract %float %105 1
|
OpStore %color %106
|
||||||
%108 = OpCompositeExtract %float %105 2
|
%108 = OpLoad %v3float %color
|
||||||
%109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
|
%109 = OpCompositeExtract %GammaTransferParams %params_0 4
|
||||||
OpReturnValue %109
|
%107 = OpFunctionCall %v3float %gammaCorrection %108 %109
|
||||||
|
OpStore %color %107
|
||||||
|
OpBranch %99
|
||||||
|
%99 = OpLabel
|
||||||
|
%110 = OpLoad %v3float %color
|
||||||
|
%111 = OpCompositeExtract %float %110 0
|
||||||
|
%112 = OpCompositeExtract %float %110 1
|
||||||
|
%113 = OpCompositeExtract %float %110 2
|
||||||
|
%114 = OpCompositeConstruct %v4float %111 %112 %113 %float_1
|
||||||
|
OpReturnValue %114
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%textureSampleLevel_979816 = OpFunction %void None %110
|
%textureSampleLevel_979816 = OpFunction %void None %115
|
||||||
%113 = OpLabel
|
%118 = OpLabel
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %5
|
%res = OpVariable %_ptr_Function_v4float Function %5
|
||||||
%115 = OpLoad %11 %arg_0
|
%120 = OpLoad %11 %arg_0
|
||||||
%116 = OpLoad %11 %ext_tex_plane_1
|
%121 = OpLoad %11 %ext_tex_plane_1
|
||||||
%117 = OpLoad %23 %arg_1
|
%122 = OpLoad %23 %arg_1
|
||||||
%119 = OpLoad %ExternalTextureParams %ext_tex_params
|
%124 = OpLoad %ExternalTextureParams %ext_tex_params
|
||||||
%114 = OpFunctionCall %v4float %textureSampleExternal %115 %116 %117 %118 %119
|
%119 = OpFunctionCall %v4float %textureSampleExternal %120 %121 %122 %123 %124
|
||||||
OpStore %res %114
|
OpStore %res %119
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main_inner = OpFunction %v4float None %122
|
%vertex_main_inner = OpFunction %v4float None %127
|
||||||
%124 = OpLabel
|
%129 = OpLabel
|
||||||
%125 = OpFunctionCall %void %textureSampleLevel_979816
|
%130 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturnValue %5
|
OpReturnValue %5
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main = OpFunction %void None %110
|
%vertex_main = OpFunction %void None %115
|
||||||
%127 = OpLabel
|
%132 = OpLabel
|
||||||
%128 = OpFunctionCall %v4float %vertex_main_inner
|
%133 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
OpStore %value %128
|
OpStore %value %133
|
||||||
OpStore %vertex_point_size %float_1
|
OpStore %vertex_point_size %float_1
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%fragment_main = OpFunction %void None %110
|
%fragment_main = OpFunction %void None %115
|
||||||
%130 = OpLabel
|
%135 = OpLabel
|
||||||
%131 = OpFunctionCall %void %textureSampleLevel_979816
|
%136 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%compute_main = OpFunction %void None %110
|
%compute_main = OpFunction %void None %115
|
||||||
%133 = OpLabel
|
%138 = OpLabel
|
||||||
%134 = OpFunctionCall %void %textureSampleLevel_979816
|
%139 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -13,6 +13,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -21,6 +22,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -61,6 +63,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -69,6 +72,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -103,6 +107,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -111,6 +116,7 @@ struct ExternalTextureParams {
|
||||||
|
|
||||||
layout(binding = 2) uniform ExternalTextureParams_1 {
|
layout(binding = 2) uniform ExternalTextureParams_1 {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
mat3x4 yuvToRgbConversionMatrix;
|
mat3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
|
|
@ -14,6 +14,7 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
|
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %textureDimensions_ba1481 "textureDimensions_ba1481"
|
OpName %textureDimensions_ba1481 "textureDimensions_ba1481"
|
||||||
|
@ -43,10 +44,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 1
|
OpDecorate %ext_tex_plane_1 Binding 1
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -55,10 +57,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 2
|
OpDecorate %ext_tex_params Binding 2
|
||||||
|
@ -80,7 +82,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct GammaTransferParams {
|
||||||
};
|
};
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -36,9 +37,11 @@ float4 textureLoadExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, i
|
||||||
} else {
|
} else {
|
||||||
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = mul(color, params.gamutConversionMatrix);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = mul(color, params.gamutConversionMatrix);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +74,8 @@ float3x3 tint_symbol_7(uint4 buffer[11], uint offset) {
|
||||||
|
|
||||||
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
||||||
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
||||||
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
const uint scalar_offset_15 = ((offset + 4u)) / 4;
|
||||||
|
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
||||||
return tint_symbol_10;
|
return tint_symbol_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
/* 0x0000 */ uint numPlanes;
|
/* 0x0000 */ uint numPlanes;
|
||||||
/* 0x0004 */ int8_t tint_pad[12];
|
/* 0x0004 */ uint doYuvToRgbConversionOnly;
|
||||||
|
/* 0x0008 */ int8_t tint_pad[8];
|
||||||
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
||||||
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
||||||
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -35,9 +36,11 @@ float4 textureLoadExternal(texture2d<float, access::sample> plane0, texture2d<fl
|
||||||
} else {
|
} else {
|
||||||
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 132
|
; Bound: 137
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%27 = OpExtInstImport "GLSL.std.450"
|
%27 = OpExtInstImport "GLSL.std.450"
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %gammaCorrection "gammaCorrection"
|
OpName %gammaCorrection "gammaCorrection"
|
||||||
|
@ -53,10 +54,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 1
|
OpDecorate %ext_tex_plane_1 Binding 1
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -65,10 +67,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 2
|
OpDecorate %ext_tex_params Binding 2
|
||||||
|
@ -90,7 +92,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
@ -106,12 +108,13 @@
|
||||||
%78 = OpConstantNull %int
|
%78 = OpConstantNull %int
|
||||||
%v2float = OpTypeVector %float 2
|
%v2float = OpTypeVector %float 2
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
|
%92 = OpConstantNull %uint
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%105 = OpTypeFunction %void
|
%110 = OpTypeFunction %void
|
||||||
%109 = OpConstantNull %v2int
|
%114 = OpConstantNull %v2int
|
||||||
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
%_ptr_Function_v2int = OpTypePointer Function %v2int
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%119 = OpTypeFunction %v4float
|
%124 = OpTypeFunction %v4float
|
||||||
%gammaCorrection = OpFunction %v3float None %21
|
%gammaCorrection = OpFunction %v3float None %21
|
||||||
%v = OpFunctionParameter %v3float
|
%v = OpFunctionParameter %v3float
|
||||||
%params = OpFunctionParameter %GammaTransferParams
|
%params = OpFunctionParameter %GammaTransferParams
|
||||||
|
@ -172,62 +175,69 @@
|
||||||
%85 = OpCompositeExtract %float %84 0
|
%85 = OpCompositeExtract %float %84 0
|
||||||
%86 = OpCompositeExtract %float %84 1
|
%86 = OpCompositeExtract %float %84 1
|
||||||
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
||||||
%89 = OpCompositeExtract %mat3v4float %params_0 1
|
%89 = OpCompositeExtract %mat3v4float %params_0 2
|
||||||
%90 = OpVectorTimesMatrix %v3float %88 %89
|
%90 = OpVectorTimesMatrix %v3float %88 %89
|
||||||
OpStore %color %90
|
OpStore %color %90
|
||||||
OpBranch %74
|
OpBranch %74
|
||||||
%74 = OpLabel
|
%74 = OpLabel
|
||||||
%92 = OpLoad %v3float %color
|
%91 = OpCompositeExtract %uint %params_0 1
|
||||||
%93 = OpCompositeExtract %GammaTransferParams %params_0 2
|
%93 = OpIEqual %bool %91 %92
|
||||||
%91 = OpFunctionCall %v3float %gammaCorrection %92 %93
|
OpSelectionMerge %94 None
|
||||||
OpStore %color %91
|
OpBranchConditional %93 %95 %94
|
||||||
%94 = OpCompositeExtract %mat3v3float %params_0 4
|
%95 = OpLabel
|
||||||
%95 = OpLoad %v3float %color
|
%97 = OpLoad %v3float %color
|
||||||
%96 = OpMatrixTimesVector %v3float %94 %95
|
%98 = OpCompositeExtract %GammaTransferParams %params_0 3
|
||||||
|
%96 = OpFunctionCall %v3float %gammaCorrection %97 %98
|
||||||
OpStore %color %96
|
OpStore %color %96
|
||||||
%98 = OpLoad %v3float %color
|
%99 = OpCompositeExtract %mat3v3float %params_0 5
|
||||||
%99 = OpCompositeExtract %GammaTransferParams %params_0 3
|
|
||||||
%97 = OpFunctionCall %v3float %gammaCorrection %98 %99
|
|
||||||
OpStore %color %97
|
|
||||||
%100 = OpLoad %v3float %color
|
%100 = OpLoad %v3float %color
|
||||||
%101 = OpCompositeExtract %float %100 0
|
%101 = OpMatrixTimesVector %v3float %99 %100
|
||||||
%102 = OpCompositeExtract %float %100 1
|
OpStore %color %101
|
||||||
%103 = OpCompositeExtract %float %100 2
|
%103 = OpLoad %v3float %color
|
||||||
%104 = OpCompositeConstruct %v4float %101 %102 %103 %float_1
|
%104 = OpCompositeExtract %GammaTransferParams %params_0 4
|
||||||
OpReturnValue %104
|
%102 = OpFunctionCall %v3float %gammaCorrection %103 %104
|
||||||
|
OpStore %color %102
|
||||||
|
OpBranch %94
|
||||||
|
%94 = OpLabel
|
||||||
|
%105 = OpLoad %v3float %color
|
||||||
|
%106 = OpCompositeExtract %float %105 0
|
||||||
|
%107 = OpCompositeExtract %float %105 1
|
||||||
|
%108 = OpCompositeExtract %float %105 2
|
||||||
|
%109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
|
||||||
|
OpReturnValue %109
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%textureLoad_8acf41 = OpFunction %void None %105
|
%textureLoad_8acf41 = OpFunction %void None %110
|
||||||
%108 = OpLabel
|
%113 = OpLabel
|
||||||
%arg_1 = OpVariable %_ptr_Function_v2int Function %109
|
%arg_1 = OpVariable %_ptr_Function_v2int Function %114
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %5
|
%res = OpVariable %_ptr_Function_v4float Function %5
|
||||||
OpStore %arg_1 %109
|
OpStore %arg_1 %114
|
||||||
%113 = OpLoad %11 %arg_0
|
%118 = OpLoad %11 %arg_0
|
||||||
%114 = OpLoad %11 %ext_tex_plane_1
|
%119 = OpLoad %11 %ext_tex_plane_1
|
||||||
%115 = OpLoad %v2int %arg_1
|
%120 = OpLoad %v2int %arg_1
|
||||||
%116 = OpLoad %ExternalTextureParams %ext_tex_params
|
%121 = OpLoad %ExternalTextureParams %ext_tex_params
|
||||||
%112 = OpFunctionCall %v4float %textureLoadExternal %113 %114 %115 %116
|
%117 = OpFunctionCall %v4float %textureLoadExternal %118 %119 %120 %121
|
||||||
OpStore %res %112
|
OpStore %res %117
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main_inner = OpFunction %v4float None %119
|
%vertex_main_inner = OpFunction %v4float None %124
|
||||||
%121 = OpLabel
|
%126 = OpLabel
|
||||||
%122 = OpFunctionCall %void %textureLoad_8acf41
|
%127 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturnValue %5
|
OpReturnValue %5
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main = OpFunction %void None %105
|
%vertex_main = OpFunction %void None %110
|
||||||
%124 = OpLabel
|
%129 = OpLabel
|
||||||
%125 = OpFunctionCall %v4float %vertex_main_inner
|
%130 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
OpStore %value %125
|
OpStore %value %130
|
||||||
OpStore %vertex_point_size %float_1
|
OpStore %vertex_point_size %float_1
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%fragment_main = OpFunction %void None %105
|
%fragment_main = OpFunction %void None %110
|
||||||
%127 = OpLabel
|
%132 = OpLabel
|
||||||
%128 = OpFunctionCall %void %textureLoad_8acf41
|
%133 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%compute_main = OpFunction %void None %105
|
%compute_main = OpFunction %void None %110
|
||||||
%130 = OpLabel
|
%135 = OpLabel
|
||||||
%131 = OpFunctionCall %void %textureLoad_8acf41
|
%136 = OpFunctionCall %void %textureLoad_8acf41
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct GammaTransferParams {
|
||||||
};
|
};
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -37,9 +38,11 @@ float4 textureSampleExternal(Texture2D<float4> plane0, Texture2D<float4> plane1,
|
||||||
} else {
|
} else {
|
||||||
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, coord, 0.0f).r, plane1.SampleLevel(smp, coord, 0.0f).rg, 1.0f));
|
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.SampleLevel(smp, coord, 0.0f).r, plane1.SampleLevel(smp, coord, 0.0f).rg, 1.0f));
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = mul(color, params.gamutConversionMatrix);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = mul(color, params.gamutConversionMatrix);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +75,8 @@ float3x3 tint_symbol_7(uint4 buffer[11], uint offset) {
|
||||||
|
|
||||||
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
ExternalTextureParams tint_symbol_1(uint4 buffer[11], uint offset) {
|
||||||
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
||||||
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
const uint scalar_offset_15 = ((offset + 4u)) / 4;
|
||||||
|
const ExternalTextureParams tint_symbol_10 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_3(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 64u)), tint_symbol_5(buffer, (offset + 96u)), tint_symbol_7(buffer, (offset + 128u))};
|
||||||
return tint_symbol_10;
|
return tint_symbol_10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
/* 0x0000 */ uint numPlanes;
|
/* 0x0000 */ uint numPlanes;
|
||||||
/* 0x0004 */ int8_t tint_pad[12];
|
/* 0x0004 */ uint doYuvToRgbConversionOnly;
|
||||||
|
/* 0x0008 */ int8_t tint_pad[8];
|
||||||
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
||||||
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
||||||
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -35,9 +36,11 @@ float4 textureSampleExternal(texture2d<float, access::sample> plane0, texture2d<
|
||||||
} else {
|
} else {
|
||||||
color = (float4(plane0.sample(smp, coord, level(0.0f))[0], float4(plane1.sample(smp, coord, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (float4(plane0.sample(smp, coord, level(0.0f))[0], float4(plane1.sample(smp, coord, level(0.0f))).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 138
|
; Bound: 143
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%30 = OpExtInstImport "GLSL.std.450"
|
%30 = OpExtInstImport "GLSL.std.450"
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %arg_1 "arg_1"
|
OpName %arg_1 "arg_1"
|
||||||
|
@ -55,10 +56,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 2
|
OpDecorate %ext_tex_plane_1 Binding 2
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -67,10 +69,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 3
|
OpDecorate %ext_tex_params Binding 3
|
||||||
|
@ -94,7 +96,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
@ -111,12 +113,13 @@
|
||||||
%uint_1 = OpConstant %uint 1
|
%uint_1 = OpConstant %uint 1
|
||||||
%81 = OpTypeSampledImage %11
|
%81 = OpTypeSampledImage %11
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
|
%97 = OpConstantNull %uint
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%110 = OpTypeFunction %void
|
%115 = OpTypeFunction %void
|
||||||
%114 = OpConstantNull %v2float
|
%119 = OpConstantNull %v2float
|
||||||
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%125 = OpTypeFunction %v4float
|
%130 = OpTypeFunction %v4float
|
||||||
%gammaCorrection = OpFunction %v3float None %24
|
%gammaCorrection = OpFunction %v3float None %24
|
||||||
%v = OpFunctionParameter %v3float
|
%v = OpFunctionParameter %v3float
|
||||||
%params = OpFunctionParameter %GammaTransferParams
|
%params = OpFunctionParameter %GammaTransferParams
|
||||||
|
@ -181,63 +184,70 @@
|
||||||
%90 = OpCompositeExtract %float %89 0
|
%90 = OpCompositeExtract %float %89 0
|
||||||
%91 = OpCompositeExtract %float %89 1
|
%91 = OpCompositeExtract %float %89 1
|
||||||
%93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1
|
%93 = OpCompositeConstruct %v4float %86 %90 %91 %float_1
|
||||||
%94 = OpCompositeExtract %mat3v4float %params_0 1
|
%94 = OpCompositeExtract %mat3v4float %params_0 2
|
||||||
%95 = OpVectorTimesMatrix %v3float %93 %94
|
%95 = OpVectorTimesMatrix %v3float %93 %94
|
||||||
OpStore %color %95
|
OpStore %color %95
|
||||||
OpBranch %77
|
OpBranch %77
|
||||||
%77 = OpLabel
|
%77 = OpLabel
|
||||||
%97 = OpLoad %v3float %color
|
%96 = OpCompositeExtract %uint %params_0 1
|
||||||
%98 = OpCompositeExtract %GammaTransferParams %params_0 2
|
%98 = OpIEqual %bool %96 %97
|
||||||
%96 = OpFunctionCall %v3float %gammaCorrection %97 %98
|
OpSelectionMerge %99 None
|
||||||
OpStore %color %96
|
OpBranchConditional %98 %100 %99
|
||||||
%99 = OpCompositeExtract %mat3v3float %params_0 4
|
%100 = OpLabel
|
||||||
%100 = OpLoad %v3float %color
|
%102 = OpLoad %v3float %color
|
||||||
%101 = OpMatrixTimesVector %v3float %99 %100
|
%103 = OpCompositeExtract %GammaTransferParams %params_0 3
|
||||||
|
%101 = OpFunctionCall %v3float %gammaCorrection %102 %103
|
||||||
OpStore %color %101
|
OpStore %color %101
|
||||||
%103 = OpLoad %v3float %color
|
%104 = OpCompositeExtract %mat3v3float %params_0 5
|
||||||
%104 = OpCompositeExtract %GammaTransferParams %params_0 3
|
|
||||||
%102 = OpFunctionCall %v3float %gammaCorrection %103 %104
|
|
||||||
OpStore %color %102
|
|
||||||
%105 = OpLoad %v3float %color
|
%105 = OpLoad %v3float %color
|
||||||
%106 = OpCompositeExtract %float %105 0
|
%106 = OpMatrixTimesVector %v3float %104 %105
|
||||||
%107 = OpCompositeExtract %float %105 1
|
OpStore %color %106
|
||||||
%108 = OpCompositeExtract %float %105 2
|
%108 = OpLoad %v3float %color
|
||||||
%109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
|
%109 = OpCompositeExtract %GammaTransferParams %params_0 4
|
||||||
OpReturnValue %109
|
%107 = OpFunctionCall %v3float %gammaCorrection %108 %109
|
||||||
|
OpStore %color %107
|
||||||
|
OpBranch %99
|
||||||
|
%99 = OpLabel
|
||||||
|
%110 = OpLoad %v3float %color
|
||||||
|
%111 = OpCompositeExtract %float %110 0
|
||||||
|
%112 = OpCompositeExtract %float %110 1
|
||||||
|
%113 = OpCompositeExtract %float %110 2
|
||||||
|
%114 = OpCompositeConstruct %v4float %111 %112 %113 %float_1
|
||||||
|
OpReturnValue %114
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%textureSampleLevel_979816 = OpFunction %void None %110
|
%textureSampleLevel_979816 = OpFunction %void None %115
|
||||||
%113 = OpLabel
|
%118 = OpLabel
|
||||||
%arg_2 = OpVariable %_ptr_Function_v2float Function %114
|
%arg_2 = OpVariable %_ptr_Function_v2float Function %119
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %5
|
%res = OpVariable %_ptr_Function_v4float Function %5
|
||||||
OpStore %arg_2 %114
|
OpStore %arg_2 %119
|
||||||
%118 = OpLoad %11 %arg_0
|
%123 = OpLoad %11 %arg_0
|
||||||
%119 = OpLoad %11 %ext_tex_plane_1
|
%124 = OpLoad %11 %ext_tex_plane_1
|
||||||
%120 = OpLoad %23 %arg_1
|
%125 = OpLoad %23 %arg_1
|
||||||
%121 = OpLoad %v2float %arg_2
|
%126 = OpLoad %v2float %arg_2
|
||||||
%122 = OpLoad %ExternalTextureParams %ext_tex_params
|
%127 = OpLoad %ExternalTextureParams %ext_tex_params
|
||||||
%117 = OpFunctionCall %v4float %textureSampleExternal %118 %119 %120 %121 %122
|
%122 = OpFunctionCall %v4float %textureSampleExternal %123 %124 %125 %126 %127
|
||||||
OpStore %res %117
|
OpStore %res %122
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main_inner = OpFunction %v4float None %125
|
%vertex_main_inner = OpFunction %v4float None %130
|
||||||
%127 = OpLabel
|
%132 = OpLabel
|
||||||
%128 = OpFunctionCall %void %textureSampleLevel_979816
|
%133 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturnValue %5
|
OpReturnValue %5
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main = OpFunction %void None %110
|
%vertex_main = OpFunction %void None %115
|
||||||
%130 = OpLabel
|
%135 = OpLabel
|
||||||
%131 = OpFunctionCall %v4float %vertex_main_inner
|
%136 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
OpStore %value %131
|
OpStore %value %136
|
||||||
OpStore %vertex_point_size %float_1
|
OpStore %vertex_point_size %float_1
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%fragment_main = OpFunction %void None %110
|
%fragment_main = OpFunction %void None %115
|
||||||
%133 = OpLabel
|
%138 = OpLabel
|
||||||
%134 = OpFunctionCall %void %textureSampleLevel_979816
|
%139 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%compute_main = OpFunction %void None %110
|
%compute_main = OpFunction %void None %115
|
||||||
%136 = OpLabel
|
%141 = OpLabel
|
||||||
%137 = OpFunctionCall %void %textureSampleLevel_979816
|
%142 = OpFunctionCall %void %textureSampleLevel_979816
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
|
@ -10,6 +10,7 @@ struct GammaTransferParams {
|
||||||
};
|
};
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
uint numPlanes;
|
uint numPlanes;
|
||||||
|
uint doYuvToRgbConversionOnly;
|
||||||
float3x4 yuvToRgbConversionMatrix;
|
float3x4 yuvToRgbConversionMatrix;
|
||||||
GammaTransferParams gammaDecodeParams;
|
GammaTransferParams gammaDecodeParams;
|
||||||
GammaTransferParams gammaEncodeParams;
|
GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -36,9 +37,11 @@ float4 textureLoadExternal(Texture2D<float4> plane0, Texture2D<float4> plane1, i
|
||||||
} else {
|
} else {
|
||||||
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
color = mul(params.yuvToRgbConversionMatrix, float4(plane0.Load(int3(coord, 0)).r, plane1.Load(int3(coord, 0)).rg, 1.0f));
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = mul(color, params.gamutConversionMatrix);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = mul(color, params.gamutConversionMatrix);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +78,8 @@ float3x3 tint_symbol_8(uint4 buffer[11], uint offset) {
|
||||||
|
|
||||||
ExternalTextureParams tint_symbol_2(uint4 buffer[11], uint offset) {
|
ExternalTextureParams tint_symbol_2(uint4 buffer[11], uint offset) {
|
||||||
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
const uint scalar_offset_14 = ((offset + 0u)) / 4;
|
||||||
const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u))};
|
const uint scalar_offset_15 = ((offset + 4u)) / 4;
|
||||||
|
const ExternalTextureParams tint_symbol_11 = {buffer[scalar_offset_14 / 4][scalar_offset_14 % 4], buffer[scalar_offset_15 / 4][scalar_offset_15 % 4], tint_symbol_4(buffer, (offset + 16u)), tint_symbol_6(buffer, (offset + 64u)), tint_symbol_6(buffer, (offset + 96u)), tint_symbol_8(buffer, (offset + 128u))};
|
||||||
return tint_symbol_11;
|
return tint_symbol_11;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ struct GammaTransferParams {
|
||||||
|
|
||||||
struct ExternalTextureParams {
|
struct ExternalTextureParams {
|
||||||
/* 0x0000 */ uint numPlanes;
|
/* 0x0000 */ uint numPlanes;
|
||||||
/* 0x0004 */ int8_t tint_pad[12];
|
/* 0x0004 */ uint doYuvToRgbConversionOnly;
|
||||||
|
/* 0x0008 */ int8_t tint_pad[8];
|
||||||
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
/* 0x0010 */ float3x4 yuvToRgbConversionMatrix;
|
||||||
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
/* 0x0040 */ GammaTransferParams gammaDecodeParams;
|
||||||
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
/* 0x0060 */ GammaTransferParams gammaEncodeParams;
|
||||||
|
@ -35,9 +36,11 @@ float4 textureLoadExternal(texture2d<float, access::sample> plane0, texture2d<fl
|
||||||
} else {
|
} else {
|
||||||
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
color = (float4(plane0.read(uint2(coord), 0)[0], float4(plane1.read(uint2(coord), 0)).rg, 1.0f) * params.yuvToRgbConversionMatrix);
|
||||||
}
|
}
|
||||||
color = gammaCorrection(color, params.gammaDecodeParams);
|
if ((params.doYuvToRgbConversionOnly == 0u)) {
|
||||||
color = (params.gamutConversionMatrix * color);
|
color = gammaCorrection(color, params.gammaDecodeParams);
|
||||||
color = gammaCorrection(color, params.gammaEncodeParams);
|
color = (params.gamutConversionMatrix * color);
|
||||||
|
color = gammaCorrection(color, params.gammaEncodeParams);
|
||||||
|
}
|
||||||
return float4(color, 1.0f);
|
return float4(color, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
; SPIR-V
|
; SPIR-V
|
||||||
; Version: 1.3
|
; Version: 1.3
|
||||||
; Generator: Google Tint Compiler; 0
|
; Generator: Google Tint Compiler; 0
|
||||||
; Bound: 137
|
; Bound: 142
|
||||||
; Schema: 0
|
; Schema: 0
|
||||||
OpCapability Shader
|
OpCapability Shader
|
||||||
%27 = OpExtInstImport "GLSL.std.450"
|
%27 = OpExtInstImport "GLSL.std.450"
|
||||||
|
@ -16,8 +16,9 @@
|
||||||
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
OpName %ext_tex_plane_1 "ext_tex_plane_1"
|
||||||
OpName %ExternalTextureParams "ExternalTextureParams"
|
OpName %ExternalTextureParams "ExternalTextureParams"
|
||||||
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
OpMemberName %ExternalTextureParams 0 "numPlanes"
|
||||||
OpMemberName %ExternalTextureParams 1 "yuvToRgbConversionMatrix"
|
OpMemberName %ExternalTextureParams 1 "doYuvToRgbConversionOnly"
|
||||||
OpMemberName %ExternalTextureParams 2 "gammaDecodeParams"
|
OpMemberName %ExternalTextureParams 2 "yuvToRgbConversionMatrix"
|
||||||
|
OpMemberName %ExternalTextureParams 3 "gammaDecodeParams"
|
||||||
OpName %GammaTransferParams "GammaTransferParams"
|
OpName %GammaTransferParams "GammaTransferParams"
|
||||||
OpMemberName %GammaTransferParams 0 "G"
|
OpMemberName %GammaTransferParams 0 "G"
|
||||||
OpMemberName %GammaTransferParams 1 "A"
|
OpMemberName %GammaTransferParams 1 "A"
|
||||||
|
@ -27,8 +28,8 @@
|
||||||
OpMemberName %GammaTransferParams 5 "E"
|
OpMemberName %GammaTransferParams 5 "E"
|
||||||
OpMemberName %GammaTransferParams 6 "F"
|
OpMemberName %GammaTransferParams 6 "F"
|
||||||
OpMemberName %GammaTransferParams 7 "padding"
|
OpMemberName %GammaTransferParams 7 "padding"
|
||||||
OpMemberName %ExternalTextureParams 3 "gammaEncodeParams"
|
OpMemberName %ExternalTextureParams 4 "gammaEncodeParams"
|
||||||
OpMemberName %ExternalTextureParams 4 "gamutConversionMatrix"
|
OpMemberName %ExternalTextureParams 5 "gamutConversionMatrix"
|
||||||
OpName %ext_tex_params "ext_tex_params"
|
OpName %ext_tex_params "ext_tex_params"
|
||||||
OpName %arg_0 "arg_0"
|
OpName %arg_0 "arg_0"
|
||||||
OpName %gammaCorrection "gammaCorrection"
|
OpName %gammaCorrection "gammaCorrection"
|
||||||
|
@ -57,10 +58,11 @@
|
||||||
OpDecorate %ext_tex_plane_1 Binding 1
|
OpDecorate %ext_tex_plane_1 Binding 1
|
||||||
OpDecorate %ExternalTextureParams Block
|
OpDecorate %ExternalTextureParams Block
|
||||||
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
OpMemberDecorate %ExternalTextureParams 0 Offset 0
|
||||||
OpMemberDecorate %ExternalTextureParams 1 Offset 16
|
OpMemberDecorate %ExternalTextureParams 1 Offset 4
|
||||||
OpMemberDecorate %ExternalTextureParams 1 ColMajor
|
OpMemberDecorate %ExternalTextureParams 2 Offset 16
|
||||||
OpMemberDecorate %ExternalTextureParams 1 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 2 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 2 Offset 64
|
OpMemberDecorate %ExternalTextureParams 2 MatrixStride 16
|
||||||
|
OpMemberDecorate %ExternalTextureParams 3 Offset 64
|
||||||
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
OpMemberDecorate %GammaTransferParams 0 Offset 0
|
||||||
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
OpMemberDecorate %GammaTransferParams 1 Offset 4
|
||||||
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
OpMemberDecorate %GammaTransferParams 2 Offset 8
|
||||||
|
@ -69,10 +71,10 @@
|
||||||
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
OpMemberDecorate %GammaTransferParams 5 Offset 20
|
||||||
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
OpMemberDecorate %GammaTransferParams 6 Offset 24
|
||||||
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
OpMemberDecorate %GammaTransferParams 7 Offset 28
|
||||||
OpMemberDecorate %ExternalTextureParams 3 Offset 96
|
OpMemberDecorate %ExternalTextureParams 4 Offset 96
|
||||||
OpMemberDecorate %ExternalTextureParams 4 Offset 128
|
OpMemberDecorate %ExternalTextureParams 5 Offset 128
|
||||||
OpMemberDecorate %ExternalTextureParams 4 ColMajor
|
OpMemberDecorate %ExternalTextureParams 5 ColMajor
|
||||||
OpMemberDecorate %ExternalTextureParams 4 MatrixStride 16
|
OpMemberDecorate %ExternalTextureParams 5 MatrixStride 16
|
||||||
OpDecorate %ext_tex_params NonWritable
|
OpDecorate %ext_tex_params NonWritable
|
||||||
OpDecorate %ext_tex_params DescriptorSet 1
|
OpDecorate %ext_tex_params DescriptorSet 1
|
||||||
OpDecorate %ext_tex_params Binding 2
|
OpDecorate %ext_tex_params Binding 2
|
||||||
|
@ -94,7 +96,7 @@
|
||||||
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
%GammaTransferParams = OpTypeStruct %float %float %float %float %float %float %float %uint
|
||||||
%v3float = OpTypeVector %float 3
|
%v3float = OpTypeVector %float 3
|
||||||
%mat3v3float = OpTypeMatrix %v3float 3
|
%mat3v3float = OpTypeMatrix %v3float 3
|
||||||
%ExternalTextureParams = OpTypeStruct %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
%ExternalTextureParams = OpTypeStruct %uint %uint %mat3v4float %GammaTransferParams %GammaTransferParams %mat3v3float
|
||||||
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
%_ptr_Uniform_ExternalTextureParams = OpTypePointer Uniform %ExternalTextureParams
|
||||||
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
%ext_tex_params = OpVariable %_ptr_Uniform_ExternalTextureParams Uniform
|
||||||
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
%arg_0 = OpVariable %_ptr_UniformConstant_11 UniformConstant
|
||||||
|
@ -110,12 +112,13 @@
|
||||||
%78 = OpConstantNull %int
|
%78 = OpConstantNull %int
|
||||||
%v2float = OpTypeVector %float 2
|
%v2float = OpTypeVector %float 2
|
||||||
%float_1 = OpConstant %float 1
|
%float_1 = OpConstant %float 1
|
||||||
%105 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int
|
%92 = OpConstantNull %uint
|
||||||
|
%110 = OpTypeFunction %v4float %11 %11 %ExternalTextureParams %v2int
|
||||||
%void = OpTypeVoid
|
%void = OpTypeVoid
|
||||||
%113 = OpTypeFunction %void
|
%118 = OpTypeFunction %void
|
||||||
%121 = OpConstantNull %v2int
|
%126 = OpConstantNull %v2int
|
||||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||||
%124 = OpTypeFunction %v4float
|
%129 = OpTypeFunction %v4float
|
||||||
%gammaCorrection = OpFunction %v3float None %21
|
%gammaCorrection = OpFunction %v3float None %21
|
||||||
%v = OpFunctionParameter %v3float
|
%v = OpFunctionParameter %v3float
|
||||||
%params = OpFunctionParameter %GammaTransferParams
|
%params = OpFunctionParameter %GammaTransferParams
|
||||||
|
@ -176,68 +179,75 @@
|
||||||
%85 = OpCompositeExtract %float %84 0
|
%85 = OpCompositeExtract %float %84 0
|
||||||
%86 = OpCompositeExtract %float %84 1
|
%86 = OpCompositeExtract %float %84 1
|
||||||
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
%88 = OpCompositeConstruct %v4float %81 %85 %86 %float_1
|
||||||
%89 = OpCompositeExtract %mat3v4float %params_0 1
|
%89 = OpCompositeExtract %mat3v4float %params_0 2
|
||||||
%90 = OpVectorTimesMatrix %v3float %88 %89
|
%90 = OpVectorTimesMatrix %v3float %88 %89
|
||||||
OpStore %color %90
|
OpStore %color %90
|
||||||
OpBranch %74
|
OpBranch %74
|
||||||
%74 = OpLabel
|
%74 = OpLabel
|
||||||
%92 = OpLoad %v3float %color
|
%91 = OpCompositeExtract %uint %params_0 1
|
||||||
%93 = OpCompositeExtract %GammaTransferParams %params_0 2
|
%93 = OpIEqual %bool %91 %92
|
||||||
%91 = OpFunctionCall %v3float %gammaCorrection %92 %93
|
OpSelectionMerge %94 None
|
||||||
OpStore %color %91
|
OpBranchConditional %93 %95 %94
|
||||||
%94 = OpCompositeExtract %mat3v3float %params_0 4
|
%95 = OpLabel
|
||||||
%95 = OpLoad %v3float %color
|
%97 = OpLoad %v3float %color
|
||||||
%96 = OpMatrixTimesVector %v3float %94 %95
|
%98 = OpCompositeExtract %GammaTransferParams %params_0 3
|
||||||
|
%96 = OpFunctionCall %v3float %gammaCorrection %97 %98
|
||||||
OpStore %color %96
|
OpStore %color %96
|
||||||
%98 = OpLoad %v3float %color
|
%99 = OpCompositeExtract %mat3v3float %params_0 5
|
||||||
%99 = OpCompositeExtract %GammaTransferParams %params_0 3
|
|
||||||
%97 = OpFunctionCall %v3float %gammaCorrection %98 %99
|
|
||||||
OpStore %color %97
|
|
||||||
%100 = OpLoad %v3float %color
|
%100 = OpLoad %v3float %color
|
||||||
%101 = OpCompositeExtract %float %100 0
|
%101 = OpMatrixTimesVector %v3float %99 %100
|
||||||
%102 = OpCompositeExtract %float %100 1
|
OpStore %color %101
|
||||||
%103 = OpCompositeExtract %float %100 2
|
%103 = OpLoad %v3float %color
|
||||||
%104 = OpCompositeConstruct %v4float %101 %102 %103 %float_1
|
%104 = OpCompositeExtract %GammaTransferParams %params_0 4
|
||||||
OpReturnValue %104
|
%102 = OpFunctionCall %v3float %gammaCorrection %103 %104
|
||||||
|
OpStore %color %102
|
||||||
|
OpBranch %94
|
||||||
|
%94 = OpLabel
|
||||||
|
%105 = OpLoad %v3float %color
|
||||||
|
%106 = OpCompositeExtract %float %105 0
|
||||||
|
%107 = OpCompositeExtract %float %105 1
|
||||||
|
%108 = OpCompositeExtract %float %105 2
|
||||||
|
%109 = OpCompositeConstruct %v4float %106 %107 %108 %float_1
|
||||||
|
OpReturnValue %109
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%textureLoad2d = OpFunction %v4float None %105
|
%textureLoad2d = OpFunction %v4float None %110
|
||||||
%texture = OpFunctionParameter %11
|
%texture = OpFunctionParameter %11
|
||||||
%ext_tex_plane_1_1 = OpFunctionParameter %11
|
%ext_tex_plane_1_1 = OpFunctionParameter %11
|
||||||
%ext_tex_params_1 = OpFunctionParameter %ExternalTextureParams
|
%ext_tex_params_1 = OpFunctionParameter %ExternalTextureParams
|
||||||
%coords = OpFunctionParameter %v2int
|
%coords = OpFunctionParameter %v2int
|
||||||
%111 = OpLabel
|
|
||||||
%112 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1
|
|
||||||
OpReturnValue %112
|
|
||||||
OpFunctionEnd
|
|
||||||
%doTextureLoad = OpFunction %void None %113
|
|
||||||
%116 = OpLabel
|
%116 = OpLabel
|
||||||
|
%117 = OpFunctionCall %v4float %textureLoadExternal %texture %ext_tex_plane_1_1 %coords %ext_tex_params_1
|
||||||
|
OpReturnValue %117
|
||||||
|
OpFunctionEnd
|
||||||
|
%doTextureLoad = OpFunction %void None %118
|
||||||
|
%121 = OpLabel
|
||||||
%res = OpVariable %_ptr_Function_v4float Function %5
|
%res = OpVariable %_ptr_Function_v4float Function %5
|
||||||
%118 = OpLoad %11 %arg_0
|
%123 = OpLoad %11 %arg_0
|
||||||
%119 = OpLoad %11 %ext_tex_plane_1
|
%124 = OpLoad %11 %ext_tex_plane_1
|
||||||
%120 = OpLoad %ExternalTextureParams %ext_tex_params
|
%125 = OpLoad %ExternalTextureParams %ext_tex_params
|
||||||
%117 = OpFunctionCall %v4float %textureLoad2d %118 %119 %120 %121
|
%122 = OpFunctionCall %v4float %textureLoad2d %123 %124 %125 %126
|
||||||
OpStore %res %117
|
OpStore %res %122
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main_inner = OpFunction %v4float None %124
|
%vertex_main_inner = OpFunction %v4float None %129
|
||||||
%126 = OpLabel
|
%131 = OpLabel
|
||||||
%127 = OpFunctionCall %void %doTextureLoad
|
%132 = OpFunctionCall %void %doTextureLoad
|
||||||
OpReturnValue %5
|
OpReturnValue %5
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%vertex_main = OpFunction %void None %113
|
%vertex_main = OpFunction %void None %118
|
||||||
%129 = OpLabel
|
%134 = OpLabel
|
||||||
%130 = OpFunctionCall %v4float %vertex_main_inner
|
%135 = OpFunctionCall %v4float %vertex_main_inner
|
||||||
OpStore %value %130
|
OpStore %value %135
|
||||||
OpStore %vertex_point_size %float_1
|
OpStore %vertex_point_size %float_1
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%fragment_main = OpFunction %void None %113
|
%fragment_main = OpFunction %void None %118
|
||||||
%132 = OpLabel
|
%137 = OpLabel
|
||||||
%133 = OpFunctionCall %void %doTextureLoad
|
%138 = OpFunctionCall %void %doTextureLoad
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
%compute_main = OpFunction %void None %113
|
%compute_main = OpFunction %void None %118
|
||||||
%135 = OpLabel
|
%140 = OpLabel
|
||||||
%136 = OpFunctionCall %void %doTextureLoad
|
%141 = OpFunctionCall %void %doTextureLoad
|
||||||
OpReturn
|
OpReturn
|
||||||
OpFunctionEnd
|
OpFunctionEnd
|
||||||
|
|
Loading…
Reference in New Issue