MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / IPUWorker

Function IPUWorker

pcsx2/IPU/IPU_MultiISA.cpp:1940–2006  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1938}
1939
1940__noinline void IPUWorker()
1941{
1942 pxAssert(ipuRegs.ctrl.BUSY);
1943
1944 switch (ipu_cmd.CMD)
1945 {
1946 // These are unreachable (BUSY will always be 0 for them)
1947 //case SCE_IPU_BCLR:
1948 //case SCE_IPU_SETTH:
1949 //break;
1950
1951 case SCE_IPU_IDEC:
1952 if (!mpeg2sliceIDEC()) return;
1953
1954 //ipuRegs.ctrl.OFC = 0;
1955 ipuRegs.topbusy = 0;
1956 ipuRegs.cmd.BUSY = 0;
1957 break;
1958
1959 case SCE_IPU_BDEC:
1960 if (!mpeg2_slice()) return;
1961
1962 ipuRegs.topbusy = 0;
1963 ipuRegs.cmd.BUSY = 0;
1964
1965 //if (ipuRegs.ctrl.SCD || ipuRegs.ctrl.ECD) hwIntcIrq(INTC_IPU);
1966 break;
1967
1968 case SCE_IPU_VDEC:
1969 if (!ipuVDEC(ipu_cmd.current)) return;
1970
1971 ipuRegs.topbusy = 0;
1972 ipuRegs.cmd.BUSY = 0;
1973 break;
1974
1975 case SCE_IPU_FDEC:
1976 if (!ipuFDEC(ipu_cmd.current)) return;
1977
1978 ipuRegs.topbusy = 0;
1979 ipuRegs.cmd.BUSY = 0;
1980 break;
1981
1982 case SCE_IPU_SETIQ:
1983 if (!ipuSETIQ(ipu_cmd.current)) return;
1984 break;
1985
1986 case SCE_IPU_SETVQ:
1987 if (!ipuSETVQ(ipu_cmd.current)) return;
1988 break;
1989
1990 case SCE_IPU_CSC:
1991 if (!ipuCSC(ipu_cmd.current)) return;
1992 break;
1993
1994 case SCE_IPU_PACK:
1995 if (!ipuPACK(ipu_cmd.current)) return;
1996 break;
1997

Callers 2

IPUProcessInterruptFunction · 0.85
IPUCMD_WRITEFunction · 0.85

Calls 9

mpeg2sliceIDECFunction · 0.85
mpeg2_sliceFunction · 0.85
ipuVDECFunction · 0.85
ipuFDECFunction · 0.85
ipuSETIQFunction · 0.85
ipuSETVQFunction · 0.85
ipuCSCFunction · 0.85
ipuPACKFunction · 0.85
hwIntcIrqFunction · 0.85

Tested by

no test coverage detected