Merge pull request #1134 from KhronosGroup/fix-1117
Do not allow base expressions for non-native row-major matrices.
This commit is contained in:
commit
aec826222d
@ -23,7 +23,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant Block& _104 [[buffer(0
|
||||
{
|
||||
main0_out out = {};
|
||||
out.gl_Position = in.a_position;
|
||||
out.v_vtxResult = ((float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[0] - 2.0) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[1] - 6.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[2] - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[0]) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[1] - 5.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[2] - 5.0) < 0.0500000007450580596923828125));
|
||||
out.v_vtxResult = ((float(abs(_104.var[0][0][0][0] - 2.0) < 0.0500000007450580596923828125) * float(abs(_104.var[0][0][1][0] - 6.0) < 0.0500000007450580596923828125)) * float(abs(_104.var[0][0][2][0] - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(_104.var[0][0][0][1]) < 0.0500000007450580596923828125) * float(abs(_104.var[0][0][1][1] - 5.0) < 0.0500000007450580596923828125)) * float(abs(_104.var[0][0][2][1] - 5.0) < 0.0500000007450580596923828125));
|
||||
return out;
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,6 @@ struct SSBORow
|
||||
|
||||
kernel void main0(device SSBORow& _4 [[buffer(0)]])
|
||||
{
|
||||
_4.v = float4(_4.row_major0[0][1], _4.row_major0[1][1], _4.row_major0[2][1], _4.row_major0[3][1])[2];
|
||||
_4.v = _4.row_major0[2][1];
|
||||
}
|
||||
|
||||
|
@ -8265,6 +8265,11 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
|
||||
if (has_extended_decoration(ops[2], SPIRVCrossDecorationPhysicalTypePacked))
|
||||
allow_base_expression = false;
|
||||
|
||||
// Cannot use base expression for row-major matrix row-extraction since we need to interleave access pattern
|
||||
// into the base expression.
|
||||
if (is_non_native_row_major_matrix(ops[2]))
|
||||
allow_base_expression = false;
|
||||
|
||||
AccessChainMeta meta;
|
||||
SPIRExpression *e = nullptr;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user