private void Execute(NvGpuVmm Vmm, int[] Arguments) { StructUnpacker Unpacker = new StructUnpacker(Vmm, ConfigStructAddress + 0x20); SurfacePixelFormat PixelFormat = (SurfacePixelFormat)Unpacker.Read(7); int ChromaLocHoriz = Unpacker.Read(2); int ChromaLocVert = Unpacker.Read(2); int BlockLinearKind = Unpacker.Read(4); int BlockLinearHeightLog2 = Unpacker.Read(4); int Reserved0 = Unpacker.Read(3); int Reserved1 = Unpacker.Read(10); int SurfaceWidthMinus1 = Unpacker.Read(14); int SurfaceHeightMinus1 = Unpacker.Read(14); int GobBlockHeight = 1 << BlockLinearHeightLog2; int SurfaceWidth = SurfaceWidthMinus1 + 1; int SurfaceHeight = SurfaceHeightMinus1 + 1; SurfaceOutputConfig OutputConfig = new SurfaceOutputConfig( PixelFormat, SurfaceWidth, SurfaceHeight, GobBlockHeight, OutputSurfaceLumaAddress, OutputSurfaceChromaUAddress, OutputSurfaceChromaVAddress); Gpu.VideoDecoder.CopyPlanes(Vmm, OutputConfig); }
private void Execute(NvGpuVmm vmm, int[] arguments) { StructUnpacker unpacker = new StructUnpacker(vmm, _configStructAddress + 0x20); SurfacePixelFormat pixelFormat = (SurfacePixelFormat)unpacker.Read(7); int chromaLocHoriz = unpacker.Read(2); int chromaLocVert = unpacker.Read(2); int blockLinearKind = unpacker.Read(4); int blockLinearHeightLog2 = unpacker.Read(4); int reserved0 = unpacker.Read(3); int reserved1 = unpacker.Read(10); int surfaceWidthMinus1 = unpacker.Read(14); int surfaceHeightMinus1 = unpacker.Read(14); int gobBlockHeight = 1 << blockLinearHeightLog2; int surfaceWidth = surfaceWidthMinus1 + 1; int surfaceHeight = surfaceHeightMinus1 + 1; SurfaceOutputConfig outputConfig = new SurfaceOutputConfig( pixelFormat, surfaceWidth, surfaceHeight, gobBlockHeight, _outputSurfaceLumaAddress, _outputSurfaceChromaUAddress, _outputSurfaceChromaVAddress); _gpu.VideoDecoder.CopyPlanes(vmm, outputConfig); }
private void Execute(GpuContext gpu) { StructUnpacker unpacker = new StructUnpacker(gpu.MemoryAccessor, _configStructAddress + 0x20); SurfacePixelFormat pixelFormat = (SurfacePixelFormat)unpacker.Read(7); int chromaLocHoriz = unpacker.Read(2); int chromaLocVert = unpacker.Read(2); int blockLinearKind = unpacker.Read(4); int blockLinearHeightLog2 = unpacker.Read(4); int reserved0 = unpacker.Read(3); int reserved1 = unpacker.Read(10); int surfaceWidthMinus1 = unpacker.Read(14); int surfaceHeightMinus1 = unpacker.Read(14); int gobBlockHeight = 1 << blockLinearHeightLog2; int surfaceWidth = surfaceWidthMinus1 + 1; int surfaceHeight = surfaceHeightMinus1 + 1; SurfaceOutputConfig outputConfig = new SurfaceOutputConfig( pixelFormat, surfaceWidth, surfaceHeight, gobBlockHeight, _outputSurfaceLumaAddress, _outputSurfaceChromaUAddress, _outputSurfaceChromaVAddress); _vdec.CopyPlanes(gpu, outputConfig); }
public static ImgTex AllocateTempBuffer(uint _width, uint _height, SurfacePixelFormat _image_type) { var tempBuffer = new ImgTex(); // 0x88 / 136 tempBuffer.ImageData = new RenderSurface(); tempBuffer.ImageData.Create(_width, _height, _image_type, true); CustomTextureTable.Add(tempBuffer); return(tempBuffer); }
public RenderSurface(Texture texture) { _texture = texture; Width = texture.Width; Height = texture.Height; Format = texture.Format; Length = texture.Length; Data = texture.SourceData; DefaultPaletteID = texture.DefaultPaletteId; }
public RenderSurface(DatLoader.FileTypes.Texture renderSurface) { _renderSurface = renderSurface; Width = renderSurface.Width; Height = renderSurface.Height; Format = renderSurface.Format; Length = renderSurface.Length; Data = renderSurface.SourceData; DefaultPaletteID = renderSurface.DefaultPaletteId; }
// RenderSurfaceD3D.Create() public bool Create(uint width, uint height, SurfacePixelFormat format, bool localData) { Width = (int)width; Height = (int)height; Format = format; // get bits per pixel in PFDesc var bitsPerPixel = 32; Length = (int)(width * height * (bitsPerPixel / 8)); Data = new byte[Length]; return(true); }
public SurfaceOutputConfig( SurfacePixelFormat pixelFormat, int surfaceWidth, int surfaceHeight, int gobBlockHeight, ulong outputSurfaceLumaAddress, ulong outputSurfaceChromaUAddress, ulong outputSurfaceChromaVAddress) { PixelFormat = pixelFormat; SurfaceWidth = surfaceWidth; SurfaceHeight = surfaceHeight; GobBlockHeight = gobBlockHeight; SurfaceLumaAddress = outputSurfaceLumaAddress; SurfaceChromaUAddress = outputSurfaceChromaUAddress; SurfaceChromaVAddress = outputSurfaceChromaVAddress; }
public SurfaceOutputConfig( SurfacePixelFormat PixelFormat, int SurfaceWidth, int SurfaceHeight, int GobBlockHeight, long OutputSurfaceLumaAddress, long OutputSurfaceChromaUAddress, long OutputSurfaceChromaVAddress) { this.PixelFormat = PixelFormat; this.SurfaceWidth = SurfaceWidth; this.SurfaceHeight = SurfaceHeight; this.GobBlockHeight = GobBlockHeight; this.SurfaceLumaAddress = OutputSurfaceLumaAddress; this.SurfaceChromaUAddress = OutputSurfaceChromaUAddress; this.SurfaceChromaVAddress = OutputSurfaceChromaVAddress; }
public static SurfaceFormat GetSurfaceFormat(SurfacePixelFormat spf) { switch (spf) { case SurfacePixelFormat.PFID_INDEX16: return(SurfaceFormat.Color); case SurfacePixelFormat.PFID_A8: case SurfacePixelFormat.PFID_L8: return(SurfaceFormat.Alpha8); case SurfacePixelFormat.PFID_DXT1: return(SurfaceFormat.Dxt1); case SurfacePixelFormat.PFID_DXT3: return(SurfaceFormat.Dxt3); case SurfacePixelFormat.PFID_DXT5: return(SurfaceFormat.Dxt5); default: return(SurfaceFormat.Color); } }
public bool SetFormat(SurfacePixelFormat format) { if (format <= SurfacePixelFormat.PFID_P8) { if (format == SurfacePixelFormat.PFID_P8) { Flags = 64; BitsPerPixel = 8; CalcBitOffsets(); return(true); } switch (format) { case SurfacePixelFormat.PFID_A8R8G8B8: Flags = 3; BitsPerPixel = 32; AlphaBitMask = 0xFF000000; RedBitMask = 0xFF0000; GreenBitMask = 0xFF00; BlueBitMask = 0xFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_X8R8G8B8: Flags = 1; BitsPerPixel = 32; AlphaBitMask = 0xFF000000; RedBitMask = 0xFF0000; GreenBitMask = 0xFF00; BlueBitMask = 0xFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_R5G6B5: Flags = 1; BitsPerPixel = 16; RedBitMask = 0xF800; GreenBitMask = 0x7E0; BlueBitMask = 0x1F; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_X1R5G5B5: Flags = 1; BitsPerPixel = 16; RedBitMask = 0x7C00; GreenBitMask = 0x3E0; BlueBitMask = 0x1F; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A1R5G5B5: Flags = 3; BitsPerPixel = 16; AlphaBitMask = 0x8000; RedBitMask = 0x7C00; GreenBitMask = 0x3E0; BlueBitMask = 0x1F; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A4R4G4B4: Flags = 3; BitsPerPixel = 16; AlphaBitMask = 0xF000; RedBitMask = 0xF00; GreenBitMask = 0xF0; BlueBitMask = 0xF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_X4R4G4B4: Flags = 1; BitsPerPixel = 16; RedBitMask = 0xF00; GreenBitMask = 0xF0; BlueBitMask = 0xF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A2B10G10R10: Flags = 3; BitsPerPixel = 32; AlphaBitMask = 0xC0000000; BlueBitMask = 0x3FF00000; GreenBitMask = 0xFFC00; RedBitMask = 0x3FF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A8B8G8R8: Flags = 3; BitsPerPixel = 32; AlphaBitMask = 0xFF000000; BlueBitMask = 0xFF0000; GreenBitMask = 0xFF00; RedBitMask = 0xFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_X8B8G8R8: Flags = 1; BitsPerPixel = 32; BlueBitMask = 0xFF0000; GreenBitMask = 0xFF00; RedBitMask = 0xFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A2R10G10B10: Flags = 3; BitsPerPixel = 32; AlphaBitMask = 0xC0000000; RedBitMask = 0x3FF00000; GreenBitMask = 0xFFC00; BlueBitMask = 0x3FF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_R8G8B8: Flags = 1; BitsPerPixel = 24; RedBitMask = 0xFF0000; GreenBitMask = 0xFF00; BlueBitMask = 0xFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_A8: Flags = 2; BitsPerPixel = 8; AlphaBitMask = 0xFF; CalcBitOffsets(); return(true); default: return(false); } } if (format > SurfacePixelFormat.PFID_CUSTOM_A8B8G8R8) { if (format <= SurfacePixelFormat.PFID_DXT1) { if (format == SurfacePixelFormat.PFID_DXT1) { Flags = 4; FourCC = (uint)SurfacePixelFormat.PFID_DXT1; BitsPerPixel = 4; CalcBitOffsets(); return(true); } if (format > SurfacePixelFormat.PFID_CUSTOM_LSCAPE_ALPHA) { if (format == SurfacePixelFormat.PFID_CUSTOM_RAW_JPEG) { Flags = 17; CalcBitOffsets(); return(true); } return(false); } if (format == SurfacePixelFormat.PFID_CUSTOM_LSCAPE_ALPHA) { Flags = 2; AlphaBitMask = 0xFF; BitsPerPixel = 8; CalcBitOffsets(); return(true); } if (format == SurfacePixelFormat.PFID_CUSTOM_B8G8R8) { Flags = 1; BitsPerPixel = 24; RedBitMask = 0xFF; GreenBitMask = 0xFF00; BlueBitMask = 0xFF0000; CalcBitOffsets(); return(true); } if (format == SurfacePixelFormat.PFID_CUSTOM_LSCAPE_R8G8B8) { Flags = 1; BitsPerPixel = 24; RedBitMask = 0xFF0000; GreenBitMask = 0xFF00; BlueBitMask = 0xFF; CalcBitOffsets(); return(true); } return(false); } if (format > SurfacePixelFormat.PFID_DXT4) { if (format != SurfacePixelFormat.PFID_DXT5) { return(false); } FourCC = (uint)SurfacePixelFormat.PFID_DXT5; } else if (format == SurfacePixelFormat.PFID_DXT4) { FourCC = (uint)SurfacePixelFormat.PFID_DXT4; } else if (format == SurfacePixelFormat.PFID_DXT2) { FourCC = (uint)SurfacePixelFormat.PFID_DXT2; } else { if (format != SurfacePixelFormat.PFID_DXT3) { return(false); } FourCC = (uint)SurfacePixelFormat.PFID_DXT3; } Flags = 4; BitsPerPixel = 8; CalcBitOffsets(); return(true); } if (format == SurfacePixelFormat.PFID_CUSTOM_A8B8G8R8) { Flags = 3; BitsPerPixel = 32; RedBitMask = 0xFF; GreenBitMask = 0xFF00; BlueBitMask = 0xFF0000; AlphaBitMask = 0xFF000000; CalcBitOffsets(); return(true); } else { switch (format) { case SurfacePixelFormat.PFID_INDEX16: Flags = 64; BitsPerPixel = 16; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_V8U8: Flags = 9; BitsPerPixel = 16; RedBitMask = 0xFF00; GreenBitMask = 0xFF; BlueBitMask = 0; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_D32: Flags = 2; BitsPerPixel = 32; AlphaBitMask = UInt32.MaxValue; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_D15S1: Flags = 2; BitsPerPixel = 16; AlphaBitMask = 0xFFFE; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_D16_LOCKABLE: case SurfacePixelFormat.PFID_D16: Flags = 2; BitsPerPixel = 16; AlphaBitMask = 0xFFFF; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_D24S8: case SurfacePixelFormat.PFID_D24X8: case SurfacePixelFormat.PFID_D24X4S4: Flags = 2; BitsPerPixel = 32; AlphaBitMask = 0xFFFFFF00; CalcBitOffsets(); return(true); case SurfacePixelFormat.PFID_CUSTOM_R8G8B8A8: Flags = 3; BitsPerPixel = 32; RedBitMask = 0xFF000000; GreenBitMask = 0xFF0000; BlueBitMask = 0XFF00; AlphaBitMask = 0xFF; CalcBitOffsets(); return(true); default: return(false); } } }
public PixelFormatDesc(SurfacePixelFormat format) { SetFormat(format); }
public static ImgTex GetTempBuffer(uint _width, uint _height, SurfacePixelFormat _image_type) { // bunch of dictionary stuff return(AllocateTempBuffer(_width, _height, _image_type)); }
private void ThrowUnimplementedPixelFormat(SurfacePixelFormat pixelFormat) { throw new NotImplementedException("Pixel format \"" + pixelFormat + "\" is not supported!"); }