1/**************************************************************************** 2 * Copyright (C) 2015 Intel Corporation. All Rights Reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 * IN THE SOFTWARE. 22 ***************************************************************************/ 23 24#pragma once 25 26void LoadHotTile( 27 const SWR_SURFACE_STATE *pSrcSurface, 28 SWR_FORMAT dstFormat, 29 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 30 UINT x, UINT y, uint32_t renderTargetArrayIndex, 31 uint8_t *pDstHotTile); 32 33void StoreHotTileToSurface( 34 SWR_SURFACE_STATE *pDstSurface, 35 SWR_FORMAT srcFormat, 36 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 37 UINT x, UINT y, uint32_t renderTargetArrayIndex, 38 uint8_t *pSrcHotTile); 39 40void StoreHotTileClear( 41 SWR_SURFACE_STATE *pDstSurface, 42 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 43 UINT x, 44 UINT y, 45 uint32_t renderTargetArrayIndex, 46 const float* pClearColor); 47 48INLINE void 49swr_LoadHotTile(HANDLE hPrivateContext, 50 SWR_FORMAT dstFormat, 51 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 52 UINT x, UINT y, 53 uint32_t renderTargetArrayIndex, uint8_t* pDstHotTile) 54{ 55 // Grab source surface state from private context 56 swr_draw_context *pDC = (swr_draw_context*)hPrivateContext; 57 SWR_SURFACE_STATE *pSrcSurface = &pDC->renderTargets[renderTargetIndex]; 58 59 LoadHotTile(pSrcSurface, dstFormat, renderTargetIndex, x, y, renderTargetArrayIndex, pDstHotTile); 60} 61 62INLINE void 63swr_StoreHotTile(HANDLE hPrivateContext, 64 SWR_FORMAT srcFormat, 65 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 66 UINT x, UINT y, 67 uint32_t renderTargetArrayIndex, uint8_t* pSrcHotTile) 68{ 69 // Grab destination surface state from private context 70 swr_draw_context *pDC = (swr_draw_context*)hPrivateContext; 71 SWR_SURFACE_STATE *pDstSurface = &pDC->renderTargets[renderTargetIndex]; 72 73 StoreHotTileToSurface(pDstSurface, srcFormat, renderTargetIndex, x, y, renderTargetArrayIndex, pSrcHotTile); 74} 75 76INLINE void 77swr_StoreHotTileClear(HANDLE hPrivateContext, 78 SWR_RENDERTARGET_ATTACHMENT renderTargetIndex, 79 UINT x, 80 UINT y, 81 uint32_t renderTargetArrayIndex, 82 const float* pClearColor) 83{ 84 // Grab destination surface state from private context 85 swr_draw_context *pDC = (swr_draw_context*)hPrivateContext; 86 SWR_SURFACE_STATE *pDstSurface = &pDC->renderTargets[renderTargetIndex]; 87 88 StoreHotTileClear(pDstSurface, renderTargetIndex, x, y, renderTargetArrayIndex, pClearColor); 89} 90 91void InitSimLoadTilesTable(); 92void InitSimStoreTilesTable(); 93void InitSimClearTilesTable(); 94 95/* Init Load/Store/ClearTiles Tables */ 96INLINE void swr_InitMemoryModule() 97{ 98 InitSimLoadTilesTable(); 99 InitSimStoreTilesTable(); 100 InitSimClearTilesTable(); 101} 102