mirror of https://github.com/red-prig/fpPS4.git
VOP1?13 and etc
This commit is contained in:
parent
cdf89ba10e
commit
5edf682c81
|
@ -38,15 +38,20 @@ Var
|
||||||
rtype:TsrDataType;
|
rtype:TsrDataType;
|
||||||
f,i,p:DWORD;
|
f,i,p:DWORD;
|
||||||
|
|
||||||
|
push_count:DWORD;
|
||||||
begin
|
begin
|
||||||
//if (VM<>0) and (EXEC<>0) = set pixel else (if DONE=1) discard pixel /(PS only)
|
//if (VM<>0) and (EXEC<>0) = set pixel else (if DONE=1) discard pixel /(PS only)
|
||||||
|
|
||||||
|
push_count:=0;
|
||||||
|
|
||||||
pOpBlock:=nil;
|
pOpBlock:=nil;
|
||||||
if (FSPI.EXP.VM<>0) and (FSPI.EXP.DONE<>0) then
|
if (FSPI.EXP.VM<>0) and (FSPI.EXP.DONE<>0) then
|
||||||
begin
|
begin
|
||||||
pOpBlock:=AllocBlockOp;
|
pOpBlock:=AllocBlockOp;
|
||||||
pOpBlock^.SetInfo(btOther,Cursor.Adr,Cursor.Adr);
|
pOpBlock^.SetInfo(btOther,Cursor.Adr,Cursor.Adr);
|
||||||
|
|
||||||
PushBlockOp(line,pOpBlock,nil);
|
PushBlockOp(line,pOpBlock,nil);
|
||||||
|
Inc(push_count);
|
||||||
|
|
||||||
exc:=MakeRead(get_exec0,dtBool);
|
exc:=MakeRead(get_exec0,dtBool);
|
||||||
node:=AddSpirvOp(OpMakeExp);
|
node:=AddSpirvOp(OpMakeExp);
|
||||||
|
@ -57,16 +62,21 @@ begin
|
||||||
if (TpsslExportType(FSPI.EXP.TGT)=etNull) //only set kill mask
|
if (TpsslExportType(FSPI.EXP.TGT)=etNull) //only set kill mask
|
||||||
or (FSPI.EXP.EN=0) then //nop
|
or (FSPI.EXP.EN=0) then //nop
|
||||||
begin
|
begin
|
||||||
if (pOpBlock<>nil) then //is pushed
|
|
||||||
|
While (push_count<>0) do
|
||||||
begin
|
begin
|
||||||
Main^.PopBlock;
|
Main^.PopBlock;
|
||||||
|
Dec(push_count);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
pOpBlock:=AllocBlockOp; //down
|
pOpBlock:=AllocBlockOp; //down
|
||||||
pOpBlock^.SetInfo(btOther,Cursor.Adr,Cursor.Adr);
|
pOpBlock^.SetInfo(btOther,Cursor.Adr,Cursor.Adr);
|
||||||
|
|
||||||
PushBlockOp(line,pOpBlock,nil);
|
PushBlockOp(line,pOpBlock,nil);
|
||||||
|
Inc(push_count);
|
||||||
|
|
||||||
//output
|
//output
|
||||||
|
|
||||||
|
@ -172,10 +182,10 @@ begin
|
||||||
OpStore(line,dout,dst);
|
OpStore(line,dout,dst);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if (pOpBlock<>nil) then //is pushed
|
While (push_count<>0) do
|
||||||
begin
|
begin
|
||||||
Main^.PopBlock;
|
Main^.PopBlock;
|
||||||
Main^.PopBlock;
|
Dec(push_count);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,8 @@ type
|
||||||
function OpAndTo(src0,src1:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
function OpAndTo(src0,src1:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||||
function OpAndTo(src0:PsrRegNode;src1:QWORD;ppLine:PPspirvOp=nil):PsrRegNode;
|
function OpAndTo(src0:PsrRegNode;src1:QWORD;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||||
//
|
//
|
||||||
|
function OpBitCountTo(src:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||||
|
//
|
||||||
function OpImageSampleImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
function OpImageSampleImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
||||||
function OpImageSampleExplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
function OpImageSampleExplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
||||||
function OpImageSampleDrefImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord,pcf:PsrRegNode):PSpirvOp;
|
function OpImageSampleDrefImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord,pcf:PsrRegNode):PSpirvOp;
|
||||||
|
@ -1259,6 +1261,14 @@ end;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
function TEmitOp.OpBitCountTo(src:PsrRegNode;ppLine:PPspirvOp=nil):PsrRegNode;
|
||||||
|
begin
|
||||||
|
Result:=NewReg(src^.dtype);
|
||||||
|
_set_line(ppLine,_Op1(_get_line(ppLine),Op.OpBitCount,Result,src));
|
||||||
|
end;
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
function TEmitOp.OpImageSampleImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
function TEmitOp.OpImageSampleImplicitLod(pLine:PspirvOp;img:PsrNode;dst,coord:PsrRegNode):PSpirvOp;
|
||||||
Var
|
Var
|
||||||
node:PSpirvOp;
|
node:PSpirvOp;
|
||||||
|
|
|
@ -49,6 +49,8 @@ type
|
||||||
function OnNot1(node:PSpirvOp):Integer;
|
function OnNot1(node:PSpirvOp):Integer;
|
||||||
function OnBranchConditional1(node:PSpirvOp):Integer;
|
function OnBranchConditional1(node:PSpirvOp):Integer;
|
||||||
//
|
//
|
||||||
|
function OpBitCount1(node:PSpirvOp):Integer;
|
||||||
|
//
|
||||||
function OnSelect1(node:PSpirvOp):Integer;
|
function OnSelect1(node:PSpirvOp):Integer;
|
||||||
//
|
//
|
||||||
procedure MakeVecConst(rtype:TsrDataType;dst:PsrRegNode;src:PPsrRegNode);
|
procedure MakeVecConst(rtype:TsrDataType;dst:PsrRegNode;src:PPsrRegNode);
|
||||||
|
@ -103,6 +105,8 @@ begin
|
||||||
|
|
||||||
Op.OpBranchConditional:Result:=OnBranchConditional1(node);
|
Op.OpBranchConditional:Result:=OnBranchConditional1(node);
|
||||||
|
|
||||||
|
Op.OpBitCount :Result:=OpBitCount1(node);
|
||||||
|
|
||||||
else;
|
else;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -779,6 +783,39 @@ begin
|
||||||
Inc(Result);
|
Inc(Result);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TEmitPostOp.OpBitCount1(node:PSpirvOp):Integer;
|
||||||
|
var
|
||||||
|
dst,src:PsrRegNode;
|
||||||
|
data:QWORD;
|
||||||
|
|
||||||
|
procedure _SetConst(dtype:TsrDataType;value:QWORD);
|
||||||
|
begin
|
||||||
|
dst^.pWriter:=ConstList.Fetch(dtype,value);
|
||||||
|
node^.mark_not_used;
|
||||||
|
node^.pDst:=nil;
|
||||||
|
Inc(Result);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result:=0;
|
||||||
|
dst:=node^.pDst^.AsType(ntReg);
|
||||||
|
src:=RegDown(node^.ParamNode(0)^.AsReg);
|
||||||
|
|
||||||
|
if (dst=nil) or (src=nil) then Exit;
|
||||||
|
|
||||||
|
if src^.is_const then
|
||||||
|
begin
|
||||||
|
//need a const calc
|
||||||
|
data:=src^.AsConst^.GetData;
|
||||||
|
data:=PopCnt(data); //BitCount
|
||||||
|
|
||||||
|
_SetConst(dst^.dtype,data);
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
function try_get_comp_bridge(var src:PsrRegNode):Integer; forward;
|
function try_get_comp_bridge(var src:PsrRegNode):Integer; forward;
|
||||||
|
|
||||||
function TEmitPostOp.OpConvert1(node:PSpirvOp):Integer;
|
function TEmitPostOp.OpConvert1(node:PSpirvOp):Integer;
|
||||||
|
|
|
@ -21,6 +21,7 @@ type
|
||||||
procedure emit_V_CVT_F16_F32;
|
procedure emit_V_CVT_F16_F32;
|
||||||
procedure emit_V_CVT_F32_F16;
|
procedure emit_V_CVT_F32_F16;
|
||||||
procedure emit_V_CVT_OFF_F32_I4;
|
procedure emit_V_CVT_OFF_F32_I4;
|
||||||
|
procedure emit_V_CVT_FLR_I32_F32;
|
||||||
procedure emit_V_CVT_F32_UBYTE0;
|
procedure emit_V_CVT_F32_UBYTE0;
|
||||||
procedure emit_V_EXT_F32(OpId:DWORD);
|
procedure emit_V_EXT_F32(OpId:DWORD);
|
||||||
procedure emit_V_RSQ_CLAMP_F32;
|
procedure emit_V_RSQ_CLAMP_F32;
|
||||||
|
@ -109,6 +110,21 @@ begin
|
||||||
Op2(Op.OpFDiv,dtFloat32,dst,src,num_16);
|
Op2(Op.OpFDiv,dtFloat32,dst,src,num_16);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TEmit_VOP1.emit_V_CVT_FLR_I32_F32; //ConvertFloatToSignedInt(floor(vsrc.f))
|
||||||
|
Var
|
||||||
|
dst:PsrRegSlot;
|
||||||
|
src:PsrRegNode;
|
||||||
|
flr:PsrRegNode;
|
||||||
|
begin
|
||||||
|
dst:=get_vdst8(FSPI.VOP1.VDST);
|
||||||
|
src:=fetch_ssrc9(FSPI.VOP1.SRC0,dtFloat32);
|
||||||
|
|
||||||
|
flr:=NewReg(dtFloat32);
|
||||||
|
_OpGlsl1(line,GlslOp.Floor,flr,src);
|
||||||
|
|
||||||
|
Op1(Op.OpConvertFToS,dtInt32,dst,flr);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TEmit_VOP1.emit_V_CVT_F32_UBYTE0;
|
procedure TEmit_VOP1.emit_V_CVT_F32_UBYTE0;
|
||||||
Var
|
Var
|
||||||
dst:PsrRegSlot;
|
dst:PsrRegSlot;
|
||||||
|
@ -220,6 +236,8 @@ begin
|
||||||
|
|
||||||
V_CVT_OFF_F32_I4: emit_V_CVT_OFF_F32_I4;
|
V_CVT_OFF_F32_I4: emit_V_CVT_OFF_F32_I4;
|
||||||
|
|
||||||
|
V_CVT_FLR_I32_F32: emit_V_CVT_FLR_I32_F32;
|
||||||
|
|
||||||
V_CVT_F32_UBYTE0: emit_V_CVT_F32_UBYTE0;
|
V_CVT_F32_UBYTE0: emit_V_CVT_F32_UBYTE0;
|
||||||
|
|
||||||
V_FRACT_F32: emit_V_EXT_F32(GlslOp.Fract);
|
V_FRACT_F32: emit_V_EXT_F32(GlslOp.Fract);
|
||||||
|
|
|
@ -35,6 +35,7 @@ type
|
||||||
procedure emit_V_MAC_LEGACY_F32;
|
procedure emit_V_MAC_LEGACY_F32;
|
||||||
procedure emit_V_MADAK_F32;
|
procedure emit_V_MADAK_F32;
|
||||||
procedure emit_V_MADMK_F32;
|
procedure emit_V_MADMK_F32;
|
||||||
|
procedure emit_V_BCNT_U32_B32;
|
||||||
procedure emit_V_MMX(OpId:DWORD;rtype:TsrDataType);
|
procedure emit_V_MMX(OpId:DWORD;rtype:TsrDataType);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -374,6 +375,21 @@ begin
|
||||||
OpFmaF32(dst,src[0],src[1],src[2]);
|
OpFmaF32(dst,src[0],src[1],src[2]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TEmit_VOP2.emit_V_BCNT_U32_B32; //vdst = bit_count(vsrc0) + vsrc1.u
|
||||||
|
Var
|
||||||
|
dst:PsrRegSlot;
|
||||||
|
src:array[0..1] of PsrRegNode;
|
||||||
|
begin
|
||||||
|
dst:=get_vdst8(FSPI.VOP2.VDST);
|
||||||
|
|
||||||
|
src[0]:=fetch_ssrc9(FSPI.VOP2.SRC0 ,dtUint32);
|
||||||
|
src[1]:=fetch_vsrc8(FSPI.VOP2.VSRC1,dtUint32);
|
||||||
|
|
||||||
|
src[0]:=OpBitCountTo(src[0]);
|
||||||
|
|
||||||
|
Op2(Op.OpIAdd,dtUint32,dst,src[0],src[1]);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TEmit_VOP2.emit_V_MMX(OpId:DWORD;rtype:TsrDataType);
|
procedure TEmit_VOP2.emit_V_MMX(OpId:DWORD;rtype:TsrDataType);
|
||||||
Var
|
Var
|
||||||
dst:PsrRegSlot;
|
dst:PsrRegSlot;
|
||||||
|
@ -427,6 +443,8 @@ begin
|
||||||
V_MADAK_F32: emit_V_MADAK_F32;
|
V_MADAK_F32: emit_V_MADAK_F32;
|
||||||
V_MADMK_F32: emit_V_MADMK_F32;
|
V_MADMK_F32: emit_V_MADMK_F32;
|
||||||
|
|
||||||
|
V_BCNT_U32_B32: emit_V_BCNT_U32_B32;
|
||||||
|
|
||||||
V_MIN_LEGACY_F32: emit_V_MMX(GlslOp.NMin,dtFloat32);
|
V_MIN_LEGACY_F32: emit_V_MMX(GlslOp.NMin,dtFloat32);
|
||||||
V_MAX_LEGACY_F32: emit_V_MMX(GlslOp.NMax,dtFloat32);
|
V_MAX_LEGACY_F32: emit_V_MMX(GlslOp.NMax,dtFloat32);
|
||||||
|
|
||||||
|
|
|
@ -35,10 +35,10 @@ type
|
||||||
procedure emit_V_SUBREV_F32;
|
procedure emit_V_SUBREV_F32;
|
||||||
procedure emit_V_CVT_PKRTZ_F16_F32;
|
procedure emit_V_CVT_PKRTZ_F16_F32;
|
||||||
procedure emit_V_MMX_F32(OpId:DWORD);
|
procedure emit_V_MMX_F32(OpId:DWORD);
|
||||||
procedure emit_V_MUL_LO_I32;
|
procedure emit_V_MUL_LO(rtype:TsrDataType);
|
||||||
procedure emit_V_MUL_I32_I24;
|
procedure emit_V_MUL_I32_I24;
|
||||||
procedure emit_V_MUL_U32_U24;
|
procedure emit_V_MUL_U32_U24;
|
||||||
procedure emit_V_MUL_HI_U32;
|
procedure emit_V_MUL_HI(rtype:TsrDataType);
|
||||||
procedure emit_V_MAC_F32;
|
procedure emit_V_MAC_F32;
|
||||||
|
|
||||||
procedure emit_V_BFE_U32;
|
procedure emit_V_BFE_U32;
|
||||||
|
@ -303,7 +303,7 @@ begin
|
||||||
emit_dst_clamp_f(dst);
|
emit_dst_clamp_f(dst);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TEmit_VOP3.emit_V_MUL_LO_I32;
|
procedure TEmit_VOP3.emit_V_MUL_LO(rtype:TsrDataType);
|
||||||
Var
|
Var
|
||||||
dst:PsrRegSlot;
|
dst:PsrRegSlot;
|
||||||
src:array[0..1] of PsrRegNode;
|
src:array[0..1] of PsrRegNode;
|
||||||
|
@ -315,8 +315,8 @@ begin
|
||||||
Assert(FSPI.VOP3a.CLAMP=0,'FSPI.VOP3a.CLAMP');
|
Assert(FSPI.VOP3a.CLAMP=0,'FSPI.VOP3a.CLAMP');
|
||||||
Assert(FSPI.VOP3a.NEG =0,'FSPI.VOP3a.NEG');
|
Assert(FSPI.VOP3a.NEG =0,'FSPI.VOP3a.NEG');
|
||||||
|
|
||||||
src[0]:=fetch_ssrc9(FSPI.VOP3a.SRC0,dtInt32);
|
src[0]:=fetch_ssrc9(FSPI.VOP3a.SRC0,rtype);
|
||||||
src[1]:=fetch_ssrc9(FSPI.VOP3a.SRC1,dtInt32);
|
src[1]:=fetch_ssrc9(FSPI.VOP3a.SRC1,rtype);
|
||||||
|
|
||||||
OpIMul(dst,src[0],src[1]);
|
OpIMul(dst,src[0],src[1]);
|
||||||
end;
|
end;
|
||||||
|
@ -375,11 +375,12 @@ begin
|
||||||
OpIMul(dst,src[0],src[1]);
|
OpIMul(dst,src[0],src[1]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TEmit_VOP3.emit_V_MUL_HI_U32;
|
procedure TEmit_VOP3.emit_V_MUL_HI(rtype:TsrDataType);
|
||||||
Var
|
Var
|
||||||
dst:PsrRegSlot;
|
dst:PsrRegSlot;
|
||||||
src:array[0..1] of PsrRegNode;
|
src:array[0..1] of PsrRegNode;
|
||||||
tmp_r,dst_r:PsrRegNode;
|
tmp_r,dst_r:PsrRegNode;
|
||||||
|
tst:TsrDataType;
|
||||||
begin
|
begin
|
||||||
dst:=get_vdst8(FSPI.VOP3a.VDST);
|
dst:=get_vdst8(FSPI.VOP3a.VDST);
|
||||||
|
|
||||||
|
@ -388,13 +389,23 @@ begin
|
||||||
Assert(FSPI.VOP3a.CLAMP=0,'FSPI.VOP3a.CLAMP');
|
Assert(FSPI.VOP3a.CLAMP=0,'FSPI.VOP3a.CLAMP');
|
||||||
Assert(FSPI.VOP3a.NEG =0,'FSPI.VOP3a.NEG');
|
Assert(FSPI.VOP3a.NEG =0,'FSPI.VOP3a.NEG');
|
||||||
|
|
||||||
src[0]:=fetch_ssrc9(FSPI.VOP3a.SRC0,dtUInt32);
|
src[0]:=fetch_ssrc9(FSPI.VOP3a.SRC0,rtype);
|
||||||
src[1]:=fetch_ssrc9(FSPI.VOP3a.SRC1,dtUInt32);
|
src[1]:=fetch_ssrc9(FSPI.VOP3a.SRC1,rtype);
|
||||||
|
|
||||||
tmp_r:=NewReg(dtStruct2u);
|
tst:=rtype.AsStruct2;
|
||||||
_Op2(line,Op.OpUMulExtended,tmp_r,src[0],src[1]);
|
Assert(tst<>dtUnknow);
|
||||||
|
|
||||||
dst_r:=dst^.New(line,dtUInt32);
|
tmp_r:=NewReg(tst);
|
||||||
|
|
||||||
|
if (rtype.Sign=0) then
|
||||||
|
begin
|
||||||
|
_Op2(line,Op.OpUMulExtended,tmp_r,src[0],src[1]);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
_Op2(line,Op.OpSMulExtended,tmp_r,src[0],src[1]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
dst_r:=dst^.New(line,rtype);
|
||||||
|
|
||||||
OpExtract(line,dst_r,tmp_r,1);
|
OpExtract(line,dst_r,tmp_r,1);
|
||||||
end;
|
end;
|
||||||
|
@ -1025,8 +1036,11 @@ begin
|
||||||
|
|
||||||
//VOP3 only
|
//VOP3 only
|
||||||
|
|
||||||
V_MUL_LO_I32: emit_V_MUL_LO_I32;
|
V_MUL_LO_U32: emit_V_MUL_LO(dtUint32);
|
||||||
V_MUL_HI_U32: emit_V_MUL_HI_U32;
|
V_MUL_HI_U32: emit_V_MUL_HI(dtUint32);
|
||||||
|
|
||||||
|
V_MUL_LO_I32: emit_V_MUL_LO(dtInt32);
|
||||||
|
V_MUL_HI_I32: emit_V_MUL_HI(dtInt32);
|
||||||
|
|
||||||
V_BFE_U32: emit_V_BFE_U32;
|
V_BFE_U32: emit_V_BFE_U32;
|
||||||
V_BFI_B32: emit_V_BFI_B32;
|
V_BFI_B32: emit_V_BFI_B32;
|
||||||
|
|
|
@ -36,6 +36,7 @@ type
|
||||||
dtVec3b,
|
dtVec3b,
|
||||||
dtVec4b,
|
dtVec4b,
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u,
|
dtStruct2u,
|
||||||
|
|
||||||
dtVec2u8,
|
dtVec2u8,
|
||||||
|
@ -92,6 +93,7 @@ type
|
||||||
function BitSize:Byte;
|
function BitSize:Byte;
|
||||||
function High:QWORD;
|
function High:QWORD;
|
||||||
function AsVector(_count:Byte):TsrDataType;
|
function AsVector(_count:Byte):TsrDataType;
|
||||||
|
function AsStruct2:TsrDataType;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Pvec2f=^Tvec2f;
|
Pvec2f=^Tvec2f;
|
||||||
|
@ -163,6 +165,7 @@ begin
|
||||||
dtVec3b :Result:='bvec3';
|
dtVec3b :Result:='bvec3';
|
||||||
dtVec4b :Result:='bvec4';
|
dtVec4b :Result:='bvec4';
|
||||||
|
|
||||||
|
dtStruct2i :Result:='rec2i';
|
||||||
dtStruct2u :Result:='rec2u';
|
dtStruct2u :Result:='rec2u';
|
||||||
|
|
||||||
dtVec2u8 :Result:='u8vec2';
|
dtVec2u8 :Result:='u8vec2';
|
||||||
|
@ -233,6 +236,7 @@ begin
|
||||||
dtInt64,
|
dtInt64,
|
||||||
dtUint64,
|
dtUint64,
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u,
|
dtStruct2u,
|
||||||
|
|
||||||
dtVec2u8,
|
dtVec2u8,
|
||||||
|
@ -305,6 +309,7 @@ begin
|
||||||
dtVec3b,
|
dtVec3b,
|
||||||
dtVec4b,
|
dtVec4b,
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u,
|
dtStruct2u,
|
||||||
|
|
||||||
dtVec2u8,
|
dtVec2u8,
|
||||||
|
@ -369,6 +374,7 @@ begin
|
||||||
dtVec3u,
|
dtVec3u,
|
||||||
dtVec4u:Result:=dtUint32;
|
dtVec4u:Result:=dtUint32;
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
dtVec2i,
|
dtVec2i,
|
||||||
dtVec3i,
|
dtVec3i,
|
||||||
dtVec4i:Result:=dtInt32;
|
dtVec4i:Result:=dtInt32;
|
||||||
|
@ -396,6 +402,7 @@ begin
|
||||||
dtVec2i,
|
dtVec2i,
|
||||||
dtVec2h,
|
dtVec2h,
|
||||||
dtVec2f,
|
dtVec2f,
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u:Result:=2;
|
dtStruct2u:Result:=2;
|
||||||
|
|
||||||
dtVec3b,
|
dtVec3b,
|
||||||
|
@ -425,6 +432,8 @@ begin
|
||||||
dtInt32,
|
dtInt32,
|
||||||
dtInt64,
|
dtInt64,
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
|
|
||||||
dtHalf16,
|
dtHalf16,
|
||||||
dtFloat32,
|
dtFloat32,
|
||||||
dtFloat64,
|
dtFloat64,
|
||||||
|
@ -469,6 +478,7 @@ begin
|
||||||
dtVec4i16,
|
dtVec4i16,
|
||||||
dtVec2f,
|
dtVec2f,
|
||||||
dtVec4h,
|
dtVec4h,
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u:Result:=64;
|
dtStruct2u:Result:=64;
|
||||||
|
|
||||||
dtVec3u,
|
dtVec3u,
|
||||||
|
@ -559,6 +569,16 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TsrDataTypeHelper.AsStruct2:TsrDataType;
|
||||||
|
begin
|
||||||
|
Result:=dtUnknow;
|
||||||
|
Case Self of
|
||||||
|
dtInt32 :Result:=dtStruct2i;
|
||||||
|
dtUint32:Result:=dtStruct2u;
|
||||||
|
else;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function CompareType(rtype1,rtype2:TsrDataType):Boolean;
|
function CompareType(rtype1,rtype2:TsrDataType):Boolean;
|
||||||
begin
|
begin
|
||||||
Case rtype1 of
|
Case rtype1 of
|
||||||
|
|
|
@ -568,6 +568,7 @@ begin
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
dtStruct2i,
|
||||||
dtStruct2u:
|
dtStruct2u:
|
||||||
begin
|
begin
|
||||||
Result:=_FetchStruct2(dtype);
|
Result:=_FetchStruct2(dtype);
|
||||||
|
|
Loading…
Reference in New Issue