⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 services_test.cpp

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		
			auBltPacket[2] = MBX2D_BLIT_BH 
								| MBX2D_USE_FILL 
								| MBX2D_ROP3_PATCOPY;
								
			auBltPacket[3] = (x|y)|((x<<9)|(y<<9));/* change colour as we go*/
			
			auBltPacket[4] = (x << MBX2D_DST_XSTART_SHIFT) 
								| (y << MBX2D_DST_YSTART_SHIFT);
								
			auBltPacket[5] = ((x+100) << MBX2D_DST_XEND_SHIFT) 
								| ((y+100) << MBX2D_DST_YEND_SHIFT);
								
			auBltPacket[6] = MBX2D_FENCE_BH;

			eResult =  PVRSRVQueueBlt(	&asDevData[0], 
										psQueueInfo,
										psPrimarySurf->psMemInfo->psSyncInfo,
										0, 
										IMG_NULL, 
										7,
										auBltPacket);
			HostSleepus(100);							
			FAIL_IF_ERROR(eResult);
		}
	}

	/////printf("blits finished\n");	

#if 0	
	/* 
		because we don't have isr kicking in place in 
		the driver we need to flush the cmds manually 
		TODO: would be useful to deref sync pointers in UM
	*/
	for(i=0; i<1000; i++)
	{
		HostSleepus(10);
		/* use this as kicking function */
		PVRSRVUpdateQueue(&asDevData[0], psQueueInfo, 0);
	}
#endif

	/* We are going to deinit the display soon, so give us 2 secs to look at the results */
	HostSleepus(2000000);
	    
	/////printf("Attempt to create parameter buffer\n");	

	eResult =  PVRSRVCreateParameterBuffer ( &asDevData[0], 4 * 1024 * 1024);
	
	FAIL_IF_ERROR(eResult);

	/////printf("Attempt to alloc device mem\n");	

	eResult = PVRSRVAllocDeviceMem (&asDevData[0],
									PVRSRV_MEMFLG_RENDERABLE, 
									320*240*2,
									2,
									&psMemInfo);
	FAIL_IF_ERROR(eResult);
	/////printf("Attempt to look inside meminfo\n");	

	/////printf("psMemInfo->ui32AllocSize = %ld\n",psMemInfo->ui32AllocSize);
	/////printf("psMemInfo->uiDevAddr = %lx\n",psMemInfo->uiDevAddr);
	/////printf("psMemInfo->pvLinAddr = %p\n",psMemInfo->pvLinAddr);
	/////printf("psMemInfo->pvLinAddr[50] = %lx\n",((IMG_UINT32 *)psMemInfo->pvLinAddr)[50]);

	/////printf("Attempt to add render target\n");	

	eResult = PVRSRVAddRenderTarget(&asDevData[0],
									320,
									240,
									&psTARenderInfo);

	FAIL_IF_ERROR(eResult);
	
	/////printf("Attempt to look inside render target\n");	

	/////printf("psTARenderInfo->psTARenderInfoKM = %p\n",psTARenderInfo->psTARenderInfoKM);
	/////printf("psTARenderInfo->psSharedData = %p\n",psTARenderInfo->psSharedData);
	/////printf("psSharedData->ui32TilesX = %lx\n",psTARenderInfo->psSharedData->ui32TilesX);
	/////printf("psSharedData->ui32TilesY = %lx\n",psTARenderInfo->psSharedData->ui32TilesY);
	/////printf("psSharedData->asRgnHeaderDevVAddr[0] = %lx\n",psTARenderInfo->psSharedData->asRgnHeaderDevVAddr[0].uiAddr);
	/////printf("psSharedData->asRgnHeaderDevVAddr[1] = %lx\n",psTARenderInfo->psSharedData->asRgnHeaderDevVAddr[1].uiAddr);
	/////printf("psSharedData->EVMContextDevVAddr = %lx\n",psTARenderInfo->psSharedData->EVMContextDevVAddr.uiAddr);
	/////printf("psSharedData->TAContextDevVAddr = %lx\n",psTARenderInfo->psSharedData->TAContextDevVAddr.uiAddr);
	/////printf("psSharedData->TailPtrDevVAddr = %lx\n",psTARenderInfo->psSharedData->TailPtrDevVAddr.uiAddr);

	/* FIXME: need a setmode - for now just flip to primary address */
	WriteHWReg (psTARenderInfo->pvRegBase, 
				JDISPLAY_GLOBREG_LCD_FBBASE, 
				psPrimarySurf->psMemInfo->uiDevAddr);
	
	/////printf("Acquiring the TA\n");
	eResult = PVRSRVAcquireTA (asDevData[0].psDevInfoUM,
										   psTARenderInfo,
									   	   IMG_TRUE,/*bFirstTAInScene*/	
									   	   IMG_TRUE,/*bBlock,*/
									   	   &bHasContextSwitched);
	FAIL_IF_ERROR(eResult);

	eResult = PVRSRVAcquireSlavePort (asDevData[0].psDevInfoUM, PVRSRV_SLAVEPORT_3D, IMG_TRUE);
	FAIL_IF_ERROR(eResult);

	/////printf("setup TA regs and start TA \n");

	WriteHWReg (psTARenderInfo->pvRegBase, 
				MBX1_TAGLOBREG_REGION_BASE, 
				psTARenderInfo->psSharedData->asRgnHeaderDevVAddr[psTARenderInfo->psSharedData->ui32CurrentRenderData].uiAddr);
	WriteHWReg (psTARenderInfo->pvRegBase, 
				MBX1_TAGLOBREG_TAILPTRBASE, 
				psTARenderInfo->psSharedData->TailPtrDevVAddr.uiAddr);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_CONFIG, 0x01303421);

	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_XCLIP, 0x013E0000);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_YCLIP, 0x00D70000);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_RHWCLAMP, 0x0DA24260);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_RHWCLAMP, 0x0DA24260);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_GLOBAL_LIST_CTRL, 0x00640040);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_3DSCREENSIZE, 0x10);
	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_START, 0x00000001);
	
	/////printf("Writing TA Data stream\n");

	pvSPData = asDevData[0].psUserDevInfo->sDeviceSpecific.sMBX.pvSPData;
	pvSPControl = asDevData[0].psUserDevInfo->sDeviceSpecific.sMBX.pvSPControl;

	eResult = PVRSRVAcquireFifoSpace (&asDevData[0], IMG_TRUE, PVRSRV_SLAVEPORT_3D, 64*4, NULL);
	FAIL_IF_ERROR(eResult);

	PVRSRVWriteSlavePort(pvSPData, 0x1000004F);
	PVRSRVWriteSlavePort(pvSPData, 0x22620E80);
	PVRSRVWriteSlavePort(pvSPData, 0xE01FFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x92000000);
	PVRSRVWriteSlavePort(pvSPData, 0xC6086610);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0xC6086610);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x10000010);
	PVRSRVWriteSlavePort(pvSPData, 0x2004C00D);
	PVRSRVWriteSlavePort(pvSPData, 0x10000003);
	PVRSRVWriteSlavePort(pvSPData, 0x22207F80);
	PVRSRVWriteSlavePort(pvSPData, 0xE0000000);
	PVRSRVWriteSlavePort(pvSPData, 0x40100000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x43E00000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0x44200000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);

	/* terminate block */
	PVRSRVWriteSlavePort(pvSPControl, 1);

	eResult = PVRSRVAcquireFifoSpace (&asDevData[0], IMG_TRUE, PVRSRV_SLAVEPORT_3D, 64*4, NULL);
	FAIL_IF_ERROR(eResult);

	PVRSRVWriteSlavePort(pvSPData, 0x10000005);
	PVRSRVWriteSlavePort(pvSPData, 0x22220F00);
	PVRSRVWriteSlavePort(pvSPData, 0xA8804000);
	PVRSRVWriteSlavePort(pvSPData, 0x00500F20);
	PVRSRVWriteSlavePort(pvSPData, 0xD6087610);
	PVRSRVWriteSlavePort(pvSPData, 0x40100000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x43600000);
	PVRSRVWriteSlavePort(pvSPData, 0x47C35000);
	PVRSRVWriteSlavePort(pvSPData, 0x00800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFFFFFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x3DE00000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x47C35000);
	PVRSRVWriteSlavePort(pvSPData, 0x00800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFFFFFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x43A00000);
	PVRSRVWriteSlavePort(pvSPData, 0x43600000);
	PVRSRVWriteSlavePort(pvSPData, 0x47C35000);
	PVRSRVWriteSlavePort(pvSPData, 0x00800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFFFFFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x3E200000);
	PVRSRVWriteSlavePort(pvSPData, 0x3DE00000);
	PVRSRVWriteSlavePort(pvSPData, 0x43A00000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x47C35000);
	PVRSRVWriteSlavePort(pvSPData, 0x00800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFFFFFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x3E200000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);

	/* terminate block */
	PVRSRVWriteSlavePort(pvSPControl, 1);

	eResult = PVRSRVAcquireFifoSpace (&asDevData[0], IMG_TRUE, PVRSRV_SLAVEPORT_3D, 64*4, NULL);
	FAIL_IF_ERROR(eResult);
	
	PVRSRVWriteSlavePort(pvSPData, 0x10000001);
	PVRSRVWriteSlavePort(pvSPData, 0x22200E80);
	PVRSRVWriteSlavePort(pvSPData, 0x40100000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x43E00000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFF404040);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFF404040);
	PVRSRVWriteSlavePort(pvSPData, 0x44200000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0x3F800000);
	PVRSRVWriteSlavePort(pvSPData, 0xFF404040);

	/* terminate block */
	PVRSRVWriteSlavePort(pvSPControl, 1);

	eResult = PVRSRVAcquireFifoSpace (&asDevData[0], IMG_TRUE, PVRSRV_SLAVEPORT_3D, 64*4, NULL);
	FAIL_IF_ERROR(eResult);
 
	PVRSRVWriteSlavePort(pvSPData, 0x10000007);
	PVRSRVWriteSlavePort(pvSPData, 0x22620E80);
	PVRSRVWriteSlavePort(pvSPData, 0xE01FFFFF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x92000000);
	PVRSRVWriteSlavePort(pvSPData, 0xC6086610);
	PVRSRVWriteSlavePort(pvSPData, 0x700A0000);
	PVRSRVWriteSlavePort(pvSPData, 0x431F0000);
	PVRSRVWriteSlavePort(pvSPData, 0x431B471C);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x000000FF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x434EC71D);
	PVRSRVWriteSlavePort(pvSPData, 0x426EE390);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x0000FF00);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x42DE71C8);
	PVRSRVWriteSlavePort(pvSPData, 0x426EE390);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x00FF0000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x42DE71C8);
	PVRSRVWriteSlavePort(pvSPData, 0x426EE390);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x00FF0000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x434EC71D);
	PVRSRVWriteSlavePort(pvSPData, 0x426EE390);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x0000FF00);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x431F0000);
	PVRSRVWriteSlavePort(pvSPData, 0x431B471C);
	PVRSRVWriteSlavePort(pvSPData, 0x3ED55556);
	PVRSRVWriteSlavePort(pvSPData, 0x3E088889);
	PVRSRVWriteSlavePort(pvSPData, 0x000000FF);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	PVRSRVWriteSlavePort(pvSPData, 0x00000000);
	
	/* terminate block */
	PVRSRVWriteSlavePort(pvSPControl, 1);

	WriteHWReg(psTARenderInfo->pvRegBase, MBX1_TAGLOBREG_CONFIG, 0x013034A1);

	PVRSRVWriteSlavePort(pvSPData, 0xF0000000);

	eResult = PVRSRVReleaseSlavePort (asDevData[0].psDevInfoUM, PVRSRV_SLAVEPORT_3D);
	FAIL_IF_ERROR(eResult);

	/////printf("Releasing the TA\n");
	eResult = PVRSRVReleaseTA (asDevData[0].psDevInfoUM);
	FAIL_IF_ERROR(eResult);

	/////printf("poll for TA complete\n");

	/* wait for TAcomplete ISR as we have no re-try right now */
	eResult = PollForValue ((IMG_UINT32*)&asDevData[0].psDevInfoUM->sDeviceSpecific.s3D.bTAIdle,
							IMG_TRUE,
							0xFFFFFFFF,
							1000,
							1000);
	FAIL_IF_ERROR(eResult);

	/////printf("setup 3D regs and start 3D \n");
	
	ps3DRegs = s3DRegs;
	
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_3D_RENDER_ID;
	ps3DRegs->ui32RegVal = psTARenderInfo->psSharedData->ui32HWContextID;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_RGNBASE;
	ps3DRegs->ui32RegVal = psTARenderInfo->psSharedData->asRgnHeaderDevVAddr[psTARenderInfo->psSharedData->ui32CurrentRenderData].uiAddr;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_ZLOADSTORE;
	ps3DRegs->ui32RegVal = 0;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FPUPERPVAL;
	ps3DRegs->ui32RegVal = 0x1E3CE508;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FPUCULLVAL;
	ps3DRegs->ui32RegVal = 0x1E3CE508;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_3DPIXSAMP;
	ps3DRegs->ui32RegVal = 0x00020004;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FOGCOLVERT;
	ps3DRegs->ui32RegVal = 0x01000000;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_SCALERCTL;
	ps3DRegs->ui32RegVal = 0;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_BLENDCTL;
	ps3DRegs->ui32RegVal = 0x00010001;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FBCTL;
	ps3DRegs->ui32RegVal = MBX1_FBCTL_PACKMODE565;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FBXCLIP;
	ps3DRegs->ui32RegVal = 0x013D0000;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FBYCLIP;
	ps3DRegs->ui32RegVal = 0x00D60000;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FBSTART;
	ps3DRegs->ui32RegVal = psPrimarySurf->psMemInfo->uiDevAddr;/* primary address */
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_FBLINESTRIDE;
	ps3DRegs->ui32RegVal = 0x000000A0;/* primary stride */
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_3DFLATSHADEDCS;
	ps3DRegs->ui32RegVal = 0x1;
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_3D_ZL_BACKGROUND_TAG;
	ps3DRegs->ui32RegVal = 0x09000000; /* FIXME: */
	ps3DRegs++;
	ps3DRegs->ui32RegAddr = MBX1_GLOBREG_STARTRENDER;
	ps3DRegs->ui32RegVal = 1;

	sBGObj.ui32TexFormatStride = MBX1_TSPPL1_TPIXFORM565 | 0;
	sBGObj.ui32TexAddrStride = (psPrimarySurf->psMemInfo->uiDevAddr >> MBX1_TSPPL2_TEXADDRALIGNSHIFT) | 
								((0xA0 >> MBX1_TSPPL2_TEXSTRIDEUNITSHIFT) << MBX1_TSPPL2_TEXSTRIDESHIFT); 

	eResult = PVRSRVQueueRender (&asDevData[0], 
								psQueueInfo,
								psTARenderInfo,
								&sBGObj,
								psPrimarySurf->psMemInfo->psSyncInfo,
					  			0, 
					  			NULL, 
					  			17, 
					  			s3DRegs);
	FAIL_IF_ERROR(eResult);

	/* We are going to deinit the display soon, so give us 2 secs to look at the results */
	HostSleepus(2000000);
	
	/////printf("Attempt to remove render target\n");	

	eResult = PVRSRVRemoveRenderTarget(&asDevData[0], psTARenderInfo);

	FAIL_IF_ERROR(eResult);

	/////printf("Attempt to free device mem\n");	

	eResult =  PVRSRVFreeDeviceMem (&asDevData[0],
									psMemInfo);
	FAIL_IF_ERROR(eResult);

	/////printf("Attempt to destroy parameter buffer\n");	

	eResult =  PVRSRVDestroyParameterBuffer(&asDevData[0]);

	FAIL_IF_ERROR(eResult);

	/////printf("Attempt to destroy command queue");

	eResult = PVRSRVDestroyCommandQueue(&asDevData[0], psQueueInfo);

	FAIL_IF_ERROR(eResult);

	/////printf("Attempt to destroy primary");

	eResult = PVRSRVDestroyPrimary(&asDevData[0], psPrimarySurf);

	FAIL_IF_ERROR(eResult);

	for (ui32Count = 0; ui32Count < uiNumDevices; ui32Count++)
	{
		IMG_UINT32 uiDeviceIndex = uiNumDevices - ui32Count - 1;
		PVRSRV_DEV_DATA* pDevData = asDevData + uiDeviceIndex;
		
		/////printf("Release device %d :-", (int) uiDeviceIndex);
		eResult = PVRSRVReleaseDeviceData(pDevData);
		FAIL_IF_ERROR(eResult);

	}

	//eResult = PVRSRVDisconnect(hServices);

	FAIL_IF_ERROR(eResult);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -