anv/device: Store the default MOCS in the device

This commit is contained in:
Jason Ekstrand
2016-02-26 16:22:47 -08:00
parent d798762cdb
commit 4a9b805ce5
3 changed files with 15 additions and 7 deletions

View File

@@ -680,6 +680,8 @@ struct anv_device {
struct anv_block_pool scratch_block_pool;
uint32_t default_mocs;
pthread_mutex_t mutex;
};
@@ -859,19 +861,19 @@ __gen_combine_address(struct anv_batch *batch, void *location,
.L3CacheabilityControlL3CC = 1, \
}
#define GEN8_MOCS { \
.MemoryTypeLLCeLLCCacheabilityControl = WB, \
.TargetCache = L3DefertoPATforLLCeLLCselection, \
.AgeforQUADLRU = 0 \
#define GEN8_MOCS (struct GEN8_MEMORY_OBJECT_CONTROL_STATE) { \
.MemoryTypeLLCeLLCCacheabilityControl = WB, \
.TargetCache = L3DefertoPATforLLCeLLCselection, \
.AgeforQUADLRU = 0 \
}
/* Skylake: MOCS is now an index into an array of 62 different caching
* configurations programmed by the kernel.
*/
#define GEN9_MOCS { \
/* TC=LLC/eLLC, LeCC=WB, LRUM=3, L3CC=WB */ \
.IndextoMOCSTables = 2 \
#define GEN9_MOCS (struct GEN9_MEMORY_OBJECT_CONTROL_STATE) { \
/* TC=LLC/eLLC, LeCC=WB, LRUM=3, L3CC=WB */ \
.IndextoMOCSTables = 2 \
}
#define GEN9_MOCS_PTE { \

View File

@@ -37,6 +37,9 @@
VkResult
genX(init_device_state)(struct anv_device *device)
{
GENX(MEMORY_OBJECT_CONTROL_STATE_pack)(NULL, &device->default_mocs,
&GENX(MOCS));
struct anv_batch batch;
uint32_t cmds[64];

View File

@@ -37,6 +37,9 @@
VkResult
genX(init_device_state)(struct anv_device *device)
{
GENX(MEMORY_OBJECT_CONTROL_STATE_pack)(NULL, &device->default_mocs,
&GENX(MOCS));
struct anv_batch batch;
uint32_t cmds[64];