blob: 042a20b52bb072c5f1807cd910912b2ff1556d97 [file] [log] [blame]
/*
* Copyright (c) 2017, Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
//!
//! \file cm_hal_g10.h
//! \brief Common HAL CM Gen10 functions
//!
#ifndef _CM_HAL_G10_H_
#define _CM_HAL_G10_H_
#include "cm_hal.h"
#include "mhw_render_hwcmd_g10_X.h"
#define CM_NUM_HW_POLYPHASE_TABLES_G10 17
#define CM_NUM_HW_POLYPHASE_EXTRA_TABLES_G10 15
#define CM_CNL_L3_CONFIG_NUM 9
#define CM_NS_PER_TICK_RENDER_G10_DEFAULT (83.333)
static const L3_CONFIG CNL_L3[CM_CNL_L3_CONFIG_NUM] =
{ //8k unit
{ 256, 128, 384, 0, 0, 0, 0, 0, 0 }
};
static const L3ConfigRegisterValues CNL_L3_PLANE[CM_CNL_L3_CONFIG_NUM] =
{ // SLM URB Rest DC RO Sum
{ 0x00000000, 0x00000000, 0x00000000, 0x80000080 }, // 0 128 128 0 0 256
{ 0x00000000, 0x00000000, 0x00000000, 0x00418080 }, // 0 128 0 32 96 256
{ 0x00000000, 0x00000000, 0x00000000, 0x00420060 }, // 0 96 0 32 128 256
{ 0x00000000, 0x00000000, 0x00000000, 0x00030040 }, // 0 64 0 0 192 256
{ 0x00000000, 0x00000000, 0x00000000, 0xC0000040 }, // 0 64 0 192 0 256
{ 0x00000000, 0x00000000, 0x00000000, 0x00428040 }, // 0 64 0 32 160 256
{ 0x00000000, 0x00000000, 0x00000000, 0xA0000021 }, // 64 32 160 0 0 256
{ 0x00000000, 0x00000000, 0x00000000, 0x01008021 }, // 64 32 0 128 32 256
{ 0x00000000, 0x00000000, 0x00000000, 0xC0000001 } // 64 0 192 0 0 256
};
#define CM_MAX_THREADSPACE_WIDTH_SKLUP_FOR_MW 2047
#define CM_MAX_THREADSPACE_HEIGHT_SKLUP_FOR_MW 2047
#define CM_L3_CACHE_CONFIG_CNTLREG_VALUE_G10 0x0x80000121
struct CM_HAL_G10_X:public CM_HAL_GENERIC
{
public:
CM_HAL_G10_X(PCM_HAL_STATE cmState):
CM_HAL_GENERIC(cmState) {}
~CM_HAL_G10_X() {}
MOS_STATUS GetCopyKernelIsa(void *&isa, uint32_t &isaSize);
MOS_STATUS GetInitKernelIsa(void *&isa, uint32_t &isaSize);
MOS_STATUS SetMediaWalkerParams(
CM_WALKING_PARAMETERS engineeringParams,
PCM_HAL_WALKER_PARAMS walkerParams);
MOS_STATUS HwSetSurfaceMemoryObjectControl(
uint16_t memObjCtl,
PRENDERHAL_SURFACE_STATE_PARAMS surfStateParams);
MOS_STATUS RegisterSampler8x8AVSTable(
PCM_HAL_SAMPLER_8X8_TABLE sampler8x8AvsTable,
PCM_AVS_TABLE_STATE_PARAMS avsTable);
MOS_STATUS RegisterSampler8x8(
PCM_HAL_SAMPLER_8X8_PARAM param);
MOS_STATUS SubmitCommands(
PMHW_BATCH_BUFFER batchBuffer,
int32_t taskId,
PCM_HAL_KERNEL_PARAM *kernelParam,
void **cmdBuffer);
#if (_RELEASE_INTERNAL || _DEBUG)
#if defined (CM_DIRECT_GUC_SUPPORT)
MOS_STATUS SubmitDummyCommands(
PMHW_BATCH_BUFFER batchBuffer,
int32_t taskId,
PCM_HAL_KERNEL_PARAM *kernelParam,
void **cmdBuffer);
#endif
#endif
uint32_t GetMediaWalkerMaxThreadWidth();
uint32_t GetMediaWalkerMaxThreadHeight();
MOS_STATUS GetHwSurfaceBTIInfo(
PCM_SURFACE_BTI_INFO btiInfo);
MOS_STATUS SetSuggestedL3Conf(
L3_SUGGEST_CONFIG l3Config);
MOS_STATUS AllocateSIPCSRResource();
MOS_STATUS GetGenStepInfo(char*& stepInfoStr);
int32_t ColorCountSanityCheck(uint32_t colorCount);
bool MemoryObjectCtrlPolicyCheck(uint32_t memCtrl);
int32_t GetConvSamplerIndex(
PMHW_SAMPLER_STATE_PARAM samplerParam,
char *samplerIndexTable,
int32_t nSamp8X8Num,
int32_t nSampConvNum);
MOS_STATUS SetL3CacheConfig(
const L3ConfigRegisterValues *values,
PCmHalL3Settings cmHalL3Setting );
MOS_STATUS GetSamplerParamInfoForSamplerType(
PMHW_SAMPLER_STATE_PARAM mhwSamplerParam,
SamplerParam &samplerParam);
MOS_STATUS GetExpectedGtSystemConfig(
PCM_EXPECTED_GT_SYSTEM_INFO expectedConfig);
uint64_t ConverTicksToNanoSecondsDefault(uint64_t ticks);
private:
MOS_STATUS UpdatePlatformInfoFromPower(
PCM_PLATFORM_INFO platformInfo,
bool euSaturated);
MOS_STATUS SetupHwDebugControl(
PRENDERHAL_INTERFACE renderHal,
PMOS_COMMAND_BUFFER cmdBuffer);
};
#endif // _CM_HAL_G10_H_