From 4a9b805ce55b495576627465b7cca034b468653a Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 26 Feb 2016 16:22:47 -0800 Subject: [PATCH] anv/device: Store the default MOCS in the device --- src/intel/vulkan/anv_private.h | 16 +++++++++------- src/intel/vulkan/gen7_state.c | 3 +++ src/intel/vulkan/gen8_state.c | 3 +++ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 041ad87f75d..2f3a6597ac2 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -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 { \ diff --git a/src/intel/vulkan/gen7_state.c b/src/intel/vulkan/gen7_state.c index 5323c378d02..48c41faf57f 100644 --- a/src/intel/vulkan/gen7_state.c +++ b/src/intel/vulkan/gen7_state.c @@ -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]; diff --git a/src/intel/vulkan/gen8_state.c b/src/intel/vulkan/gen8_state.c index 2686bfa8f3c..6226eba43ec 100644 --- a/src/intel/vulkan/gen8_state.c +++ b/src/intel/vulkan/gen8_state.c @@ -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]; -- 2.30.2