Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ if(MSVC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
endif()
set(DIVE_REPO_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(THIRDPARTY_DIRECTORY "${CMAKE_SOURCE_DIR}/third_party")
# TODO: b/462767957 - remove set(CMAKE_INSTALL_PREFIX ...) once we fix search path and mac build.
set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install")
Expand Down Expand Up @@ -110,10 +111,6 @@ if(ANDROID)
message(CHECK_PASS "done")
endif()

# ------------------------------------------------------------------------------
# For generated headers
include_directories(${CMAKE_CURRENT_BINARY_DIR}/dive_core)

# ------------------------------------------------------------------------------
# Determine if third-party libraries should be built for the current target

Expand Down
5 changes: 4 additions & 1 deletion cli/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,10 @@ target_link_libraries(
)

add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_lib)
target_link_libraries(
${PROJECT_NAME}
PRIVATE ${PROJECT_NAME}_lib dive_src_includes
)

if(MSVC)
# 4100: unreferenced formal parameter
Expand Down
4 changes: 2 additions & 2 deletions cli/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@
#include <vector>

#include "commands.h"
#include "pm4_info.h"
#include "dive/isa/isa.h"

using namespace Dive::cli; // NOLINT

int main(int argc, char** argv)
{
Dive::cli::Init();
Pm4InfoInit();
Dive::InitPm4();

std::map<std::string, const Command*> commands;
std::vector<const Command*> commandlist = {
Expand Down
201 changes: 5 additions & 196 deletions dive_core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,106 +33,11 @@ endif() # MSVC
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

set(DIVE_CORE_GENERATED_FILE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(PM4_INFO_FILE "${DIVE_CORE_GENERATED_FILE_DIR}/pm4_info")
set(PM4_GENERATED_SRC_FILE "${DIVE_CORE_GENERATED_FILE_DIR}/pm4_info.cpp")
set(PM4_GENERATED_HDR_FILE "${DIVE_CORE_GENERATED_FILE_DIR}/pm4_info.h")
set(ADRENO_HDR_FILE "${DIVE_CORE_GENERATED_FILE_DIR}/adreno.h")
set(A6XX_PY_FILE "${DIVE_CORE_GENERATED_FILE_DIR}/a6xx.py")
set(FREEDRENO_ISA_DIRECTORY "${DIVE_CORE_GENERATED_FILE_DIR}/freedreno/isa")
set(FREEDRENO_DEVICES_HDR_FILE "${FREEDRENO_ISA_DIRECTORY}/freedreno_devices.h")
set(FREEDRENO_IR3_ISA_SRC_FILE "${FREEDRENO_ISA_DIRECTORY}/ir3-isa.c")
set(FREEDRENO_IR3_ISA_HDR_FILE "${FREEDRENO_ISA_DIRECTORY}/ir3-isa.h")

if(WIN32)
set(Python3_FIND_REGISTRY "NEVER")
endif() # WIN32
find_package(Python3 COMPONENTS Interpreter)

if(NOT Python3_EXECUTABLE)
message(FATAL_ERROR "python3 not found")
endif() # NOT Python3_EXECUTABLE

add_custom_command(
OUTPUT ${PM4_GENERATED_HDR_FILE} ${PM4_GENERATED_SRC_FILE}
COMMAND
${Python3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/generatePm4Info_adreno.py
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers" "adreno/a6xx.xml"
${PM4_INFO_FILE}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/generatePm4Info_adreno.py"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM
)
add_custom_target(
pm4_info
ALL
DEPENDS ${PM4_GENERATED_HDR_FILE} ${PM4_GENERATED_SRC_FILE}
)

add_custom_command(
OUTPUT ${ADRENO_HDR_FILE}
COMMAND
${Python3_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/generateAdrenoHeader.py
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers" "adreno/a6xx.xml"
${ADRENO_HDR_FILE}
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/generateAdrenoHeader.py"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
VERBATIM
)
add_custom_target(adreno_header ALL DEPENDS ${ADRENO_HDR_FILE})

add_custom_command(
OUTPUT ${A6XX_PY_FILE}
COMMAND
${Python3_EXECUTABLE}
${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers/gen_header.py
"--rnn" "${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers" "--xml"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers/adreno/a6xx.xml"
"py-defines" > ${A6XX_PY_FILE}
DEPENDS "${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers/gen_header.py"
WORKING_DIRECTORY ${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/registers
VERBATIM
)
add_custom_target(a6xx_py ALL DEPENDS ${A6XX_PY_FILE})

add_custom_command(
OUTPUT ${FREEDRENO_DEVICES_HDR_FILE}
COMMAND
${Python3_EXECUTABLE}
${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/common/freedreno_devices.py
"-p" "${DIVE_CORE_GENERATED_FILE_DIR}" > ${FREEDRENO_DEVICES_HDR_FILE}
DEPENDS
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/common/freedreno_devices.py"
"${A6XX_PY_FILE}"
VERBATIM
)
add_custom_target(
freedreno_devices_header
ALL
DEPENDS ${FREEDRENO_DEVICES_HDR_FILE}
)

if(MSVC)
set_target_properties(
freedreno_devices_header
PROPERTIES FOLDER "freedreno"
)
endif() # MSVC

set(FREEDRENO_SRC_FILES
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/common/freedreno_dev_info.c"
)

add_library(dive_core_includes INTERFACE)

target_include_directories(
dive_core_includes
INTERFACE
${CMAKE_SOURCE_DIR}
${DIVE_CORE_GENERATED_FILE_DIR}
${FREEDRENO_ISA_DIRECTORY}
${THIRDPARTY_DIRECTORY}/Vulkan-Headers/include
${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/common
${THIRDPARTY_DIRECTORY}/mesa/src/
Expand All @@ -149,9 +54,6 @@ add_library(
STATIC
# Platform specific:
$<$<PLATFORM_ID:Windows>:event_state.natvis>
# Generated
${PM4_GENERATED_SRC_FILE}
${FREEDRENO_SRC_FILES}
# Common
common/common.h
common/dive_capture_format.h
Expand Down Expand Up @@ -207,7 +109,6 @@ add_library(
shader_disassembly.h
sqtt_ids.cpp
sqtt_ids.h
stl_replacement.h
struct_of_arrays.h
)

Expand All @@ -216,110 +117,18 @@ add_dependencies(${PROJECT_NAME} adreno_header)
add_dependencies(${PROJECT_NAME} a6xx_py)
add_dependencies(${PROJECT_NAME} freedreno_devices_header)

target_link_libraries(
${PROJECT_NAME}
PUBLIC dive_core_includes absl::no_destructor absl::strings
)

make_directory("${FREEDRENO_ISA_DIRECTORY}")

add_custom_command(
OUTPUT ${FREEDRENO_IR3_ISA_SRC_FILE} ${FREEDRENO_IR3_ISA_HDR_FILE}
COMMAND
${Python3_EXECUTABLE}
${THIRDPARTY_DIRECTORY}/mesa/src/compiler/isaspec/decode.py "--xml"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/isa/ir3.xml" "--out-c"
${FREEDRENO_IR3_ISA_SRC_FILE} "--out-h" ${FREEDRENO_IR3_ISA_HDR_FILE}
DEPENDS
"${THIRDPARTY_DIRECTORY}/mesa/src/compiler/isaspec/decode.py"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/isa/ir3.xml"
VERBATIM
)

add_library(
freedreno_ir3
STATIC
${FREEDRENO_IR3_ISA_SRC_FILE}
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/ir3/disasm-a3xx.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/compiler/isaspec/isaspec.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/blob.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/half_float.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/hash_table.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/log.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/os_file.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/os_misc.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/ralloc.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/simple_mtx.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/softfloat.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_call_once.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_cpu_detect.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_debug.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_printf.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_process.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/util/u_thread.c"
)

target_include_directories(
freedreno_ir3
PRIVATE
"${THIRDPARTY_DIRECTORY}/mesa/include"
"${THIRDPARTY_DIRECTORY}/mesa/src"
"${THIRDPARTY_DIRECTORY}/mesa/src/compiler"
"${THIRDPARTY_DIRECTORY}/mesa/src/compiler/isaspec"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/common"
"${THIRDPARTY_DIRECTORY}/mesa/src/freedreno/isa"
)

if(MSVC)
target_compile_definitions(freedreno_ir3 PRIVATE -DHAVE_STRUCT_TIMESPEC)
set_property(TARGET freedreno_ir3 PROPERTY C_STANDARD 11) # To support alignas
target_sources(
freedreno_ir3
PRIVATE "${THIRDPARTY_DIRECTORY}/mesa/src/util/google_dive_ext.c"
)
set_target_properties(freedreno_ir3 PROPERTIES FOLDER "freedreno")
elseif(UNIX AND NOT APPLE)
#set_source_files_properties(PROPERTIES LANGUAGE CXX
target_compile_definitions(
freedreno_ir3
PRIVATE
-DHAVE_ENDIAN_H
-DHAVE_FUNC_ATTRIBUTE_PACKED
-DHAVE_STRUCT_TIMESPEC
-DHAVE_PTHREAD
-DHAVE_SYSCONF
-D_GNU_SOURCE
-DHAVE_SECURE_GETENV
)
elseif(APPLE)
target_compile_definitions(
freedreno_ir3
PRIVATE
-DHAVE_FUNC_ATTRIBUTE_PACKED
-DHAVE_STRUCT_TIMESPEC
-DHAVE_PTHREAD
-DHAVE_SYSCONF
-D_GNU_SOURCE
)
target_sources(
freedreno_ir3
PRIVATE
"${THIRDPARTY_DIRECTORY}/mesa/src/c11/impl/threads_posix.c"
"${THIRDPARTY_DIRECTORY}/mesa/src/c11/impl/time.c"
)
endif() # MSVC
target_link_libraries(${PROJECT_NAME} PUBLIC absl::no_destructor absl::strings)

target_compile_options(freedreno_ir3 PRIVATE -fPIC)
add_dependencies(${PROJECT_NAME} freedreno_ir3)
target_link_libraries(${PROJECT_NAME} PRIVATE freedreno_ir3)
target_link_libraries(${PROJECT_NAME} PUBLIC dive_freedreno dive_lib_isa)

# This is linked privately because gfxr contains X11 headers that contain preprocessor macros which cause collisions
# gfxr_decode_ext_lib itself can't link gfxrecon_decode privately because it's a dependency of a target (gfxrecon-replay) that doesn't specify PRIVATE/PUBLIC
target_link_libraries(${PROJECT_NAME} PRIVATE gfxr_decode_ext_lib)
target_include_directories(
${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/gfxreconstruct/framework
PUBLIC
"${DIVE_REPO_DIR}"
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/gfxreconstruct/framework
)

target_link_libraries(${PROJECT_NAME} PRIVATE string_utils)
Expand Down
4 changes: 2 additions & 2 deletions dive_core/capture_event_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "capture_event_info.h"
#include "dive_core/common/memory_manager_base.h"
#include "dive_core/common/pm4_packets/me_pm4_packets.h"
#include "pm4_info.h"
#include "dive/isa/pm4_info.h"

namespace Dive
{
Expand Down Expand Up @@ -538,4 +538,4 @@ std::optional<VkPrimitiveTopology> Util::GetTopology(const IMemoryManager &mem_m
};
}

} // namespace Dive
} // namespace Dive
2 changes: 1 addition & 1 deletion dive_core/command_hierarchy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include "pm4_capture_data.h"

#include "dive_strings.h"
#include "pm4_info.h"
#include "dive/isa/pm4_info.h"

namespace Dive
{
Expand Down
2 changes: 1 addition & 1 deletion dive_core/command_hierarchy.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
#include "dive_core/common/dive_capture_format.h"
#include "dive_core/common/emulate_pm4.h"
#include "dive_core/common/pm4_packets/pfp_pm4_packets.h"
#include "dive_core/stl_replacement.h"
#include "dive/container/stl_replacement.h"

// Forward declarations
struct PacketInfo;
Expand Down
6 changes: 3 additions & 3 deletions dive_core/common/emulate_pm4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@

#include <string.h> // memcpy

#include "adreno.h"
#include "dive/isa/adreno.h"
#include "common.h"
#include "dive_capture_format.h"
#include "dive_core/pm4_capture_data.h"
#include "dive_core/stl_replacement.h"
#include "dive/container/stl_replacement.h"
#include "emulate_pm4.h"
#include "memory_manager_base.h"
#include "pm4_info.h"
#include "dive/isa/pm4_info.h"

#include <stdarg.h>
#include <cerrno>
Expand Down
4 changes: 2 additions & 2 deletions dive_core/common/emulate_pm4.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
#pragma once
#include <stdint.h>
#include <optional>
#include "adreno.h"
#include "dive/isa/adreno.h"
#include "dive_core/common/pm4_packets/pfp_pm4_packets.h"
#include "dive_core/stl_replacement.h"
#include "dive/container/stl_replacement.h"
#include "gpudefs.h"

namespace Dive
Expand Down
2 changes: 1 addition & 1 deletion dive_core/data_core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include <optional>
#include "dive_core/command_hierarchy.h"
#include "dive_core/gfxr_vulkan_command_hierarchy.h"
#include "pm4_info.h"
#include "dive/isa/pm4_info.h"

namespace Dive
{
Expand Down
2 changes: 1 addition & 1 deletion dive_core/event_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

#pragma once

#include "adreno.h"
#include "dive/isa/adreno.h"
#include "common.h"
#include "dive_core/common/gpudefs.h"
#include "info_id.h"
Expand Down
4 changes: 2 additions & 2 deletions dive_core/pm4_capture_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
#include "archive.h"
#include "dive_core/command_hierarchy.h"
#include "dive_core/common/common.h"
#include "freedreno_dev_info.h"
#include "pm4_info.h"
#include "dive/isa/freedreno/dev_info.h"
#include "dive/isa/pm4_info.h"
#include "gfxr_ext/decode/dive_file_processor.h"
#include "third_party/gfxreconstruct/framework/generated/generated_vulkan_dive_consumer.h"
#include "third_party/gfxreconstruct/framework/generated/generated_vulkan_decoder.h"
Expand Down
2 changes: 1 addition & 1 deletion dive_core/shader_disassembly.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include <string_view>

#include "dive_core/common/memory_manager_base.h"
#include "pm4_info.h"
#include "dive/isa/pm4_info.h"

#ifdef _MSC_VER
# include <stdio.h>
Expand Down
2 changes: 1 addition & 1 deletion lrz_validator/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ include_directories(
)

add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} PRIVATE dive_core)
target_link_libraries(${PROJECT_NAME} PRIVATE dive_core dive_src_includes)
target_include_directories(
${PROJECT_NAME}
PRIVATE ${THIRDPARTY_DIRECTORY}/gfxreconstruct/framework
Expand Down
Loading
Loading