public ulong ComputeSurfaceAddrFromCoord(/*R600AddrLib *this, */ref _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT pIn, ref _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT pOut)
		{
			/* _AddrTileMode*/
			int v3; // ecx@4
			ulong v4 = 0; // qax@5
			ulong result; // qax@9
			/*_AddrTileMode*/
			int v6; // [sp+4h] [bp-4Ch]@1
			uint v7; // [sp+8h] [bp-48h]@2
			//uint /***/pBitPosition; // [sp+Ch] [bp-44h]@4
			uint bankSwizzle; // [sp+10h] [bp-40h]@4
			uint pipeSwizzle; // [sp+14h] [bp-3Ch]@4
			uint compBits; // [sp+18h] [bp-38h]@4
			uint tileBase; // [sp+1Ch] [bp-34h]@4
			bool isDepth; // [sp+20h] [bp-30h]@4
			/*_AddrTileMode*/
			int tileMode; // [sp+24h] [bp-2Ch]@4
			uint numSamples; // [sp+28h] [bp-28h]@4
			uint numSlices; // [sp+2Ch] [bp-24h]@1
			uint height; // [sp+30h] [bp-20h]@1
			uint pitch; // [sp+34h] [bp-1Ch]@1
			uint bpp; // [sp+38h] [bp-18h]@1
			uint sample; // [sp+3Ch] [bp-14h]@1
			uint slice; // [sp+40h] [bp-10h]@1
			uint y; // [sp+44h] [bp-Ch]@1
			uint x; // [sp+48h] [bp-8h]@1
			// AddrLib *thisa; // [sp+4Ch] [bp-4h]@1

			//memset(&v6, -858993460, 0x4Cu);
			// thisa = (AddrLib *)this;
			x = pIn.x;
			y = pIn.y;
			slice = pIn.slice;
			sample = pIn.sample;
			bpp = pIn.bpp;
			pitch = pIn.pitch;
			height = pIn.height;
			numSlices = pIn.numSlices;
			if (pIn.numSamples != 0)
				v7 = pIn.numSamples;
			else
				v7 = 1;
			numSamples = v7;
			tileMode = pIn.tileMode;
			isDepth = pIn.isDepth;
			tileBase = pIn.tileBase;
			compBits = pIn.compBits;
			pipeSwizzle = pIn.pipeSwizzle;
			bankSwizzle = pIn.bankSwizzle;
			//pBitPosition = &pOut->bitPosition;
			v6 = tileMode;
			v3 = tileMode;
			switch (tileMode)
			{
				case 0:
				case 1:
					/*v4 = ComputeSurfaceAddrFromCoordLinear(
						   thisa,
						   x,
						   y,
						   slice,
						   sample,
						   bpp,
						   pitch,
						   height,
						   numSlices,
						   pBitPosition);*/
					break;
				case 2:
				case 3:
					/* v4 = ComputeSurfaceAddrFromCoordMicroTiled(
							(R600AddrLib *)thisa,
							x,
							y,
							slice,
							bpp,
							pitch,
							height,
							tileMode,
							isDepth,
							tileBase,
							compBits,
							pBitPosition);*/
					break;
				case 4:
				case 5:
				case 6:
				case 7:
				case 8:
				case 9:
				case 10:
				case 11:
				case 12:
				case 13:
				case 14:
				case 15:
					v4 = ComputeSurfaceAddrFromCoordMacroTiled(
						//(R600AddrLib *)thisa,
						   x,
						   y,
						   slice,
						   sample,
						   bpp,
						   pitch,
						   height,
						   numSamples,
						   tileMode,
						   isDepth,
						   tileBase,
						   compBits,
						   pipeSwizzle,
						   bankSwizzle,
						   out pOut.bitPosition);// pBitPosition);
					break;
				default:
					v4 = 0;
					//HIDWORD(v4) = 0;
					break;
			}
			//LODWORD(result) = _RTC_CheckEsp(v3, HIDWORD(v4));
			//return result;
			return v4;
		}
Exemple #2
0
        public ulong ComputeSurfaceAddrFromCoord(/*R600AddrLib *this, */ ref _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUT pIn, ref _ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT pOut)
        {
            /* _AddrTileMode*/
            int   v3;           // ecx@4
            ulong v4 = 0;       // qax@5
            ulong result;       // qax@9
            /*_AddrTileMode*/
            int  v6;            // [sp+4h] [bp-4Ch]@1
            uint v7;            // [sp+8h] [bp-48h]@2
            //uint /***/pBitPosition; // [sp+Ch] [bp-44h]@4
            uint bankSwizzle;   // [sp+10h] [bp-40h]@4
            uint pipeSwizzle;   // [sp+14h] [bp-3Ch]@4
            uint compBits;      // [sp+18h] [bp-38h]@4
            uint tileBase;      // [sp+1Ch] [bp-34h]@4
            bool isDepth;       // [sp+20h] [bp-30h]@4
            /*_AddrTileMode*/
            int  tileMode;      // [sp+24h] [bp-2Ch]@4
            uint numSamples;    // [sp+28h] [bp-28h]@4
            uint numSlices;     // [sp+2Ch] [bp-24h]@1
            uint height;        // [sp+30h] [bp-20h]@1
            uint pitch;         // [sp+34h] [bp-1Ch]@1
            uint bpp;           // [sp+38h] [bp-18h]@1
            uint sample;        // [sp+3Ch] [bp-14h]@1
            uint slice;         // [sp+40h] [bp-10h]@1
            uint y;             // [sp+44h] [bp-Ch]@1
            uint x;             // [sp+48h] [bp-8h]@1

            // AddrLib *thisa; // [sp+4Ch] [bp-4h]@1

            //memset(&v6, -858993460, 0x4Cu);
            // thisa = (AddrLib *)this;
            x         = pIn.x;
            y         = pIn.y;
            slice     = pIn.slice;
            sample    = pIn.sample;
            bpp       = pIn.bpp;
            pitch     = pIn.pitch;
            height    = pIn.height;
            numSlices = pIn.numSlices;
            if (pIn.numSamples != 0)
            {
                v7 = pIn.numSamples;
            }
            else
            {
                v7 = 1;
            }
            numSamples  = v7;
            tileMode    = pIn.tileMode;
            isDepth     = pIn.isDepth;
            tileBase    = pIn.tileBase;
            compBits    = pIn.compBits;
            pipeSwizzle = pIn.pipeSwizzle;
            bankSwizzle = pIn.bankSwizzle;
            //pBitPosition = &pOut->bitPosition;
            v6 = tileMode;
            v3 = tileMode;
            switch (tileMode)
            {
            case 0:
            case 1:
                /*v4 = ComputeSurfaceAddrFromCoordLinear(
                 *         thisa,
                 *         x,
                 *         y,
                 *         slice,
                 *         sample,
                 *         bpp,
                 *         pitch,
                 *         height,
                 *         numSlices,
                 *         pBitPosition);*/
                break;

            case 2:
            case 3:
                /* v4 = ComputeSurfaceAddrFromCoordMicroTiled(
                 *              (R600AddrLib *)thisa,
                 *              x,
                 *              y,
                 *              slice,
                 *              bpp,
                 *              pitch,
                 *              height,
                 *              tileMode,
                 *              isDepth,
                 *              tileBase,
                 *              compBits,
                 *              pBitPosition);*/
                break;

            case 4:
            case 5:
            case 6:
            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 12:
            case 13:
            case 14:
            case 15:
                v4 = ComputeSurfaceAddrFromCoordMacroTiled(
                    //(R600AddrLib *)thisa,
                    x,
                    y,
                    slice,
                    sample,
                    bpp,
                    pitch,
                    height,
                    numSamples,
                    tileMode,
                    isDepth,
                    tileBase,
                    compBits,
                    pipeSwizzle,
                    bankSwizzle,
                    out pOut.bitPosition);                               // pBitPosition);
                break;

            default:
                v4 = 0;
                //HIDWORD(v4) = 0;
                break;
            }
            //LODWORD(result) = _RTC_CheckEsp(v3, HIDWORD(v4));
            //return result;
            return(v4);
        }