Skip to content

Commit 6353b18

Browse files
committed
Update pal from commit 48ad0c6e
* Update RDF * Update DevDriver to v23.11.22 * Update TraceSession::CollectTrace Result codes based on trace state * Update platform settings to devdriver settings * Update core settings to devdriver settings * Update amdgpu_drm.h * Make targets for settings generation. * Correct CreateGraphicsPipeline in DeviceDecorator derived classes * Relax the PipelineAbiProcessor and handle unnamed symbols * Do not cache symbols with type 'section' * Initialize GpuPerfExpTraceSource * Add setting to control DCC MIN_COMPRESSED_BLOCK_SIZE * Add ConvertWcharStringToUtf8 * Add a new function to Util::Thread class to assign a name to a thread * Add the support of setting VGT_STRMOUT_CONFIG.EN_PRIMS_NEEDED_CNT * Add missing L2 flush after early phase gfx blit. * CodeGen: Add default value for string size * Support for SQTT & SPM UberTrace chunks * Move settings source files from json to yaml * Prepare change for later WaitSync change * Totally remove the gfx9 P2P BAR workaround * Dump PM4 in Exe named directory * Conditional TraceSource activation * Suppress warning from [[unlikely]] on Clang 10/11 and gcc * VK_EXT_device_fault - Driver Implementation - Linux * Couple of barrier code cleanup * Generic Gang-Submit Cleanups * Change indirect dispatch/draw interfaces to take GPUVAs * Remove some deprecated references to addr1 defines that are no longer needed * Remove code referencing pre-Navi AddrLib enums * Remove CMake overrides for Gfx9 address-lib * Remove Validation v nonValidation Distinction from the independent layer * Remove Gfx9 classes and formats. * Remove CmdDispatchDynamic support * Navi3x: set sxblendopt to 0 for alphaToCoverage case * SX Blend optimization fix with alpha to coverage state * Fix double-free causing test stop during extended 3dmark testing * Fix hash size comments * Fix PAL decorator class missing variables like stackSizeInBytes * Fix various aspects of app profile-related string handling * Fix compiler warnings [NFC] * Fix hangs and crashes in few Vulkan applications * Fix AddrLib version check * Fix incorrect application of ppPbbPBBBreakBatchDifferenceWithPrimLimit_FpovLimit_DeallocLimit_A_ WAR * Fix incorrect usage of sizeof() * Fix typo PAL_CLIENT_INTERFACE_MAJOR_VERSION guard for CmdDrawIndexedIndirectMulti. * Fix the failures for dynamicDualSourceBlend also include fast link library cases * Fix incorrect function name in UberTraceService * Fix for missing SQTT detailed instruction tokes for some Navi3 GPUs * Fix Navi3 board power throttle during long time aging
1 parent 6bdc694 commit 6353b18

File tree

276 files changed

+205332
-195560
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

276 files changed

+205332
-195560
lines changed

cmake/PalBuildParameters.cmake

-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ pal_bp(PAL_BUILD_GPUUTIL ON)
4646
pal_bp(PAL_DEVELOPER_BUILD OFF)
4747
#endif
4848

49-
# Allows RPC in settings. The default is to use the URI path
50-
pal_bp(PAL_ENABLE_RPC_SETTINGS OFF)
51-
5249
# Build PAL with Operating System support
5350
pal_bp(PAL_BUILD_OSS ON)
5451
#if PAL_BUILD_OSS2_4

cmake/PalCodegen.cmake

+153-26
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ find_package(Python3 3.6 QUIET REQUIRED
3030
COMPONENTS Interpreter
3131
)
3232

33-
function(convert_pal_settings_name SETTINGS_FILE OUT_BASENAME_VAR)
33+
function(convert_pal_settings_name SETTINGS_FILE OUT_BASENAME_VAR FOR_FILE)
3434
# Convert input name convention to output.
3535
# eg, settings_core.json -> g_coreSettings
3636

@@ -41,8 +41,12 @@ function(convert_pal_settings_name SETTINGS_FILE OUT_BASENAME_VAR)
4141
# 3. reverse
4242
list(REVERSE OUT_PARTS)
4343
# 4. first part goes in unmodified
44-
list(POP_FRONT OUT_PARTS OUT_BASENAME)
45-
string(PREPEND OUT_BASENAME "g_")
44+
if(FOR_FILE)
45+
list(POP_FRONT OUT_PARTS OUT_BASENAME)
46+
string(PREPEND OUT_BASENAME "g_")
47+
else()
48+
set(OUT_BASENAME "")
49+
endif()
4650
# 5. remaining parts get capitalized
4751
foreach(OUT_PART ${OUT_PARTS})
4852
string(SUBSTRING ${OUT_PART} 0 1 FIRST_LETTER)
@@ -57,7 +61,7 @@ endfunction()
5761
function(target_pal_settings TARGET)
5862
set(options NO_REGISTRY)
5963
set(singleValArgs MAGIC_BUF CLASS_NAME CODE_TEMPLATE OUT_DIR OUT_BASENAME ROOT_BINARY_DIR)
60-
set(multiValArgs SETTINGS ENSURE_DELETED)
64+
set(multiValArgs SETTINGS ENSURE_DELETED ADDL_NAMESPACES)
6165
cmake_parse_arguments(PARSE_ARGV 1 SETGEN "${options}" "${singleValArgs}" "${multiValArgs}")
6266

6367
# Asserts
@@ -105,6 +109,9 @@ function(target_pal_settings TARGET)
105109
if (SETGEN_CLASS_NAME)
106110
list(APPEND ADDL_ARGS "--classNameOverride" "${SETGEN_CLASS_NAME}")
107111
endif()
112+
if (SETGEN_ADDL_NAMESPACES)
113+
list(APPEND ADDL_ARGS "--additionalNamespaces" "${SETGEN_ADDL_NAMESPACES}")
114+
endif()
108115

109116
if (SETGEN_MAGIC_BUF)
110117
get_filename_component(SETGEN_MAGIC_BUF "${SETGEN_MAGIC_BUF}" ABSOLUTE)
@@ -120,7 +127,7 @@ function(target_pal_settings TARGET)
120127
if (SETGEN_OUT_BASENAME)
121128
set(OUT_BASENAME ${SETGEN_OUT_BASENAME})
122129
else()
123-
convert_pal_settings_name(${SETTINGS_FILE} OUT_BASENAME)
130+
convert_pal_settings_name(${SETTINGS_FILE} OUT_BASENAME TRUE)
124131
endif()
125132

126133
get_filename_component(SETTINGS_FILE "${SETTINGS_FILE}" ABSOLUTE)
@@ -147,18 +154,26 @@ function(target_pal_settings TARGET)
147154
)
148155
endif()
149156

150-
# Note this doesn't track imported python libs/exe (mostly system deps).
151-
add_custom_command(
152-
OUTPUT ${SETGEN_OUT_DIR}/${OUT_BASENAME}.cpp
153-
${SETGEN_OUT_DIR}/${OUT_BASENAME}.h
157+
convert_pal_settings_name(${SETTINGS_FILE} SETTING_TGT FALSE)
158+
add_custom_target(${SETTING_TGT}
154159
COMMAND ${Python3_EXECUTABLE} ${PAL_GEN_DIR}/genSettingsCode.py
155160
--settingsFile ${SETTINGS_FILE}
156161
--outFilename ${OUT_BASENAME}
157162
${ADDL_ARGS}
158163
COMMENT "Generating settings from ${SETTINGS_FILE}..."
159164
DEPENDS ${SETTINGS_FILE}
160165
${ADDL_DEPS}
166+
BYPRODUCTS ${SETGEN_OUT_DIR}/${OUT_BASENAME}.cpp
167+
${SETGEN_OUT_DIR}/${OUT_BASENAME}.h
168+
SOURCES ${SETGEN_OUT_DIR}/${OUT_BASENAME}.cpp
169+
${SETGEN_OUT_DIR}/${OUT_BASENAME}.h
161170
)
171+
add_dependencies(${TARGET} ${SETTING_TGT})
172+
set_target_properties(${SETTING_TGT}
173+
PROPERTIES
174+
FOLDER "${CMAKE_FOLDER}/Generate/Settings"
175+
)
176+
162177
if (SETGEN_ROOT_BINARY_DIR)
163178
source_group(
164179
TREE ${PAL_BINARY_DIR}
@@ -176,27 +191,139 @@ function(target_pal_settings TARGET)
176191
endforeach()
177192
endfunction()
178193

194+
function(pal_gen_settings)
195+
# INPUT_JSON:
196+
# Path to a JSON file describing all settings of a component.
197+
# GENERATED_FILENAME:
198+
# The name of the generated C++ files. The final name will be prefixed with 'g_' and
199+
# suffixed with '.h'/'.cpp'.
200+
# HEADER_FILE:
201+
# Path to the existing C++ header file that contains the class declaration (and its methods
202+
# declaration) for this settings component.
203+
# OUT_DIR:
204+
# Path to output directory.
205+
# CLASS_NAME:
206+
# The class name for this settings component.
207+
# NAMESPACES:
208+
# The C++ namespace(s) within which settings are defined.
209+
# INCLUDE_HEADERS:
210+
# Header files the generated settings file needs to '#include'. For example, a header file
211+
# that contains an existing enum definition.
212+
set(oneValueArgs INPUT_JSON GENERATED_FILENAME HEADER_FILE OUT_DIR CLASS_NAME)
213+
set(multiValArgs NAMESPACES INCLUDE_HEADERS)
214+
cmake_parse_arguments(PARSE_ARGV 0 SETTINGS "${options}" "${oneValueArgs}" "${multiValArgs}")
215+
216+
if (NOT SETTINGS_INPUT_JSON)
217+
message(FATAL_ERROR "No settings input json file provided.")
218+
endif()
219+
220+
set(GENERATED_HEADER_FILENAME "g_${SETTINGS_GENERATED_FILENAME}.h")
221+
set(GENERATED_SOURCE_FILENAME "g_${SETTINGS_GENERATED_FILENAME}.cpp")
222+
223+
file(MAKE_DIRECTORY ${SETTINGS_OUT_DIR})
224+
target_include_directories(pal PRIVATE ${SETTINGS_OUT_DIR})
225+
226+
target_sources(pal PRIVATE
227+
${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}
228+
${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}
229+
)
230+
231+
set_source_files_properties(
232+
${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}
233+
${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}
234+
TARGET_DIRECTORY pal
235+
PROPERTIES GENERATED ON
236+
)
237+
238+
if (${PAL_DEVDRIVER_PATH} STREQUAL "default")
239+
set(DEVDRIVER_PATH ${PAL_SOURCE_DIR}/shared/devdriver)
240+
else()
241+
set(DEVDRIVER_PATH ${PAL_DEVDRIVER_PATH})
242+
endif()
243+
244+
if (SETTINGS_CLASS_NAME)
245+
list(APPEND CODEGEN_OPTIONAL_ARGS "--classname" "${SETTINGS_CLASS_NAME}")
246+
endif()
247+
248+
if ((NOT EXISTS ${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}) OR
249+
(NOT EXISTS ${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}))
250+
# Generate these during configuration so that they are guaranteed to exist.
251+
execute_process(
252+
COMMAND ${Python3_EXECUTABLE} ${DEVDRIVER_PATH}/apis/settings/codegen/settings_codegen.py
253+
--input ${PAL_SOURCE_DIR}/${SETTINGS_INPUT_JSON}
254+
--generated-filename ${SETTINGS_GENERATED_FILENAME}
255+
--settings-filename ${SETTINGS_HEADER_FILE}
256+
--outdir ${SETTINGS_OUT_DIR}
257+
--namespaces ${SETTINGS_NAMESPACES}
258+
${CODEGEN_OPTIONAL_ARGS}
259+
COMMAND_ECHO STDOUT
260+
)
261+
endif()
262+
263+
convert_pal_settings_name(${SETTINGS_INPUT_JSON} SETTING_TGT FALSE)
264+
add_custom_target(${SETTING_TGT}
265+
COMMAND ${Python3_EXECUTABLE} ${DEVDRIVER_PATH}/apis/settings/codegen/settings_codegen.py
266+
--input ${PAL_SOURCE_DIR}/${SETTINGS_INPUT_JSON}
267+
--generated-filename ${SETTINGS_GENERATED_FILENAME}
268+
--settings-filename ${SETTINGS_HEADER_FILE}
269+
--outdir ${SETTINGS_OUT_DIR}
270+
--namespaces ${SETTINGS_NAMESPACES}
271+
--include-headers ${SETTINGS_INCLUDE_HEADERS}
272+
${CODEGEN_OPTIONAL_ARGS}
273+
COMMENT "Generating settings from ${SETTINGS_FILE}..."
274+
DEPENDS ${PAL_SOURCE_DIR}/${SETTINGS_INPUT_JSON}
275+
${DEVDRIVER_PATH}/apis/settings/codegen/settings_codegen.py
276+
${DEVDRIVER_PATH}/apis/settings/codegen/settings_schema.yaml
277+
${DEVDRIVER_PATH}/apis/settings/codegen/settings.cpp.jinja2
278+
${DEVDRIVER_PATH}/apis/settings/codegen/settings.h.jinja2
279+
BYPRODUCTS ${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}
280+
${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}
281+
SOURCES ${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}
282+
${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}
283+
)
284+
add_dependencies(pal ${SETTING_TGT})
285+
set_target_properties(${SETTING_TGT}
286+
PROPERTIES
287+
FOLDER "${CMAKE_FOLDER}/Generate/Settings"
288+
)
289+
290+
source_group(
291+
TREE ${PAL_BINARY_DIR}
292+
FILES
293+
${SETTINGS_OUT_DIR}/${GENERATED_HEADER_FILENAME}
294+
${SETTINGS_OUT_DIR}/${GENERATED_SOURCE_FILENAME}
295+
)
296+
endfunction()
297+
179298
function(pal_setup_generated_code)
180299
set(COMMON_ARGS "ROOT_BINARY_DIR" ${PAL_BINARY_DIR})
181-
target_pal_settings(pal SETTINGS src/core/settings_core.json
182-
OUT_DIR ${PAL_BINARY_DIR}/src/core
183-
${COMMON_ARGS}
184-
ENSURE_DELETED src/core/g_palSettings.h
185-
src/core/g_palSettings.cpp)
186-
target_pal_settings(pal SETTINGS src/core/settings_platform.json
187-
OUT_DIR ${PAL_BINARY_DIR}/src/core
188-
${COMMON_ARGS}
189-
CODE_TEMPLATE ${PAL_GEN_DIR}/platformSettingsCodeTemplates.py
190-
CLASS_NAME PlatformSettingsLoader
191-
ENSURE_DELETED src/core/g_palPlatformSettings.h
192-
src/core/g_palPlatformSettings.cpp)
300+
301+
pal_gen_settings(INPUT_JSON src/core/settings_core.json
302+
GENERATED_FILENAME coreSettings
303+
HEADER_FILE core/settingsLoader.h
304+
OUT_DIR ${PAL_BINARY_DIR}/src/core
305+
CLASS_NAME SettingsLoader
306+
NAMESPACES Pal)
307+
308+
pal_gen_settings(INPUT_JSON src/core/settings_platform.json
309+
GENERATED_FILENAME platformSettings
310+
HEADER_FILE core/platformSettingsLoader.h
311+
OUT_DIR ${PAL_BINARY_DIR}/src/core
312+
CLASS_NAME PlatformSettingsLoader
313+
NAMESPACES Pal
314+
INCLUDE_HEADERS palDevice.h
315+
palDbgPrint.h)
316+
193317
if (PAL_BUILD_GFX9)
194-
target_pal_settings(pal SETTINGS src/core/hw/gfxip/gfx9/settings_gfx9.json
195-
OUT_DIR ${PAL_BINARY_DIR}/src/core/hw/gfxip/gfx9
196-
${COMMON_ARGS}
197-
ENSURE_DELETED src/core/hw/gfxip/gfx9/g_gfx9PalSettings.h
198-
src/core/hw/gfxip/gfx9/g_gfx9PalSettings.cpp)
318+
pal_gen_settings(INPUT_JSON src/core/hw/gfxip/gfx9/settings_gfx9.json
319+
GENERATED_FILENAME gfx9Settings
320+
HEADER_FILE core/hw/gfxip/gfx9/gfx9SettingsLoader.h
321+
OUT_DIR ${PAL_BINARY_DIR}/src/core/hw/gfxip/gfx9
322+
CLASS_NAME SettingsLoader
323+
NAMESPACES Pal Gfx9
324+
INCLUDE_HEADERS core/hw/gfxip/gfxDevice.h)
199325
endif()
326+
200327
endfunction()
201328

202329
function(nongen_source_groups DIR)

cmake/PalCompileDefinitions.cmake

-4
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,6 @@ function(pal_compile_definitions TARGET)
192192
# Describe the client
193193
target_compile_definitions(${TARGET} PUBLIC PAL_CLIENT_${PAL_CLIENT}=1)
194194

195-
# This will be defined if we should get KMD headers from https://github.com/microsoft/libdxg
196-
# instead of the WDK
197-
target_compile_definitions(${TARGET} PUBLIC PAL_USE_LIBDXG=$<BOOL:${PAL_USE_LIBDXG}>)
198-
199195
target_compile_definitions(${TARGET} PRIVATE PAL_BUILD_CORE=$<BOOL:${PAL_BUILD_CORE}>)
200196

201197
if(PAL_AMDGPU_BUILD)

cmake/PalCompilerWarnings.cmake

+9
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ function(add_flag_if_exists TARGET flag cachevarname)
3939
endfunction()
4040

4141
function(pal_compiler_warnings_gnu_or_clang TARGET)
42+
43+
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
44+
if ("${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "12.0.0")
45+
# Clang largely supports C++20 from Clang 10, but the [[unlikely]] attribute is not supported
46+
# until Clang 12. Suppress the warning caused by the use of [[unlikely]] in palAssert.h.
47+
target_compile_options(${TARGET} PUBLIC -Wno-unknown-attributes)
48+
endif()
49+
endif()
50+
4251
target_compile_options(${TARGET}
4352
PRIVATE
4453
# This turns off a lot of warnings related to unused code

cmake/PalOverrides.cmake

-9
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,6 @@ include_guard()
3030
# GPU Overrides
3131

3232
if(PAL_BUILD_GFX9)
33-
# Generic support for GFX9 cards
34-
set(ADDR_GFX9_BUILD ON)
35-
set(ADDR_VEGA12_BUILD ON)
36-
set(ADDR_VEGA20_BUILD ON)
37-
set(ADDR_RAVEN1_BUILD ON)
38-
set(ADDR_RAVEN2_BUILD ON)
39-
set(ADDR_RENOIR_BUILD ON)
40-
41-
set(ADDR_GFX9_CHIP_DIR "${PROJECT_SOURCE_DIR}/src/core/hw/gfxip/gfx9/chip")
4233

4334
set(ADDR_GFX10_BUILD ON)
4435

0 commit comments

Comments
 (0)