Example #1
0
        private static void deactivate()
        {
            drawListQueue = null;

            if (setLogLevelThread != null)
            {
                setLogLevelThread.exit();
                setLogLevelThread = null;
            }

            CoreThread.exit();

            if (rendererThreads != null)
            {
                for (int i = 0; i < rendererThreads.Length; i++)
                {
                    rendererThreads[i].exit();
                }
                rendererThreads = null;
            }
        }
Example #2
0
        private static void activate()
        {
            drawListQueue = new ConcurrentLinkedQueue <PspGeList>();

            setLogLevelThread = new SetLogLevelThread();
            setLogLevelThread.setName("ExternelGE Set Log Level Thread");
            setLogLevelThread.setDaemon(true);
            setLogLevelThread.Start();

            if (numberRendererThread > 0)
            {
                rendererThreads = new RendererThread[numberRendererThread];
                int[] lineMasks = new int[numberRendererThread];
                switch (numberRendererThread)
                {
                case 1:
                    lineMasks[0] = unchecked ((int)0xFFFFFFFF);
                    break;

                case 2:
                    lineMasks[0] = unchecked ((int)0xFF00FF00);
                    lineMasks[1] = 0x00FF00FF;
                    break;

                case 3:
                    lineMasks[0] = unchecked ((int)0xF801F001);
                    lineMasks[1] = 0x07C00F80;
                    lineMasks[3] = 0x003E007E;
                    break;

                case 4:
                case 5:
                case 6:
                case 7:
                    lineMasks[0] = unchecked ((int)0xFF000000);
                    lineMasks[1] = 0x00FF0000;
                    lineMasks[2] = 0x0000FF00;
                    lineMasks[3] = 0x000000FF;
                    break;

                case 8:
                default:
                    lineMasks[0] = unchecked ((int)0xC000C000);
                    lineMasks[1] = 0x30003000;
                    lineMasks[2] = 0x0C000C00;
                    lineMasks[3] = 0x03000300;
                    lineMasks[4] = 0x00C000C0;
                    lineMasks[5] = 0x00300030;
                    lineMasks[6] = 0x000C000C;
                    lineMasks[7] = 0x00030003;
                    break;
                }

                int allLineMasks = 0;
                for (int i = 0; i < rendererThreads.Length; i++)
                {
                    int lineMask = lineMasks[i];
                    rendererThreads[i]      = new RendererThread(lineMask);
                    rendererThreads[i].Name = string.Format("Renderer Thread #{0:D}", i);
                    rendererThreads[i].Start();

                    if ((allLineMasks & lineMask) != 0)
                    {
                        Console.WriteLine(string.Format("Incorrect line masks for the renderer threads (number={0:D})", numberRendererThread));
                    }
                    allLineMasks |= lineMask;
                }
                if (allLineMasks != unchecked ((int)0xFFFFFFFF))
                {
                    Console.WriteLine(string.Format("Incorrect line masks for the renderer threads (number={0:D})", numberRendererThread));
                }

                rendererThreadsDone = new Semaphore(0);
            }
            NativeUtils.RendererAsyncRendering = numberRendererThread > 0;
            ScreenScale = sceDisplay.getResizedWidthPow2(1);
            lock (screenScaleLock)
            {
                NativeUtils.ScreenScale = ScreenScale;
            }

            // Used by HD Remaster
            int maxTextureSize     = Settings.Instance.readInt("maxTextureSize", 512);
            int maxTextureSizeLog2 = 31 - Integer.numberOfLeadingZeros(maxTextureSize);

            NativeUtils.MaxTextureSizeLog2 = maxTextureSizeLog2;
            bool doubleTexture2DCoords = Settings.Instance.readBool("doubleTexture2DCoords");

            NativeUtils.DoubleTexture2DCoords = doubleTexture2DCoords;
        }