Cleanup: fix various Cycles build warnings with non-default options
* Float/double promotion warnings were mainly meant for avoiding slow operatiosn in the kernel. Limit it to that to avoid hard to fix warnings in Hydra. * Const warnings in Hydra iterators. * Unused variable warnings when building without glog. * Wrong camera enum comparisons in assert. * PASS_UNUSED is not a pass type, only for pass offsets.
This commit is contained in:
@@ -323,11 +323,7 @@ endif()
|
|||||||
|
|
||||||
# Warnings
|
# Warnings
|
||||||
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_cxxflag_float_conversion "-Werror=float-conversion")
|
|
||||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_cxxflag_double_promotion "-Werror=double-promotion")
|
|
||||||
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_no_error_unused_macros "-Wno-error=unused-macros")
|
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_no_error_unused_macros "-Wno-error=unused-macros")
|
||||||
unset(_has_cxxflag_float_conversion)
|
|
||||||
unset(_has_cxxflag_double_promotion)
|
|
||||||
unset(_has_no_error_unused_macros)
|
unset(_has_no_error_unused_macros)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -281,9 +281,12 @@ void HdCyclesCamera::ApplyCameraSettings(HdRenderParam *renderParam,
|
|||||||
auto data = dataUnconformedWindow;
|
auto data = dataUnconformedWindow;
|
||||||
CameraUtilConformWindow(&data, windowPolicy, width / height);
|
CameraUtilConformWindow(&data, windowPolicy, width / height);
|
||||||
|
|
||||||
static_assert(GfCamera::Perspective == CAMERA_PERSPECTIVE &&
|
if (data.GetProjection() == GfCamera::Orthographic) {
|
||||||
GfCamera::Orthographic == CAMERA_ORTHOGRAPHIC);
|
cam->set_camera_type(CAMERA_ORTHOGRAPHIC);
|
||||||
cam->set_camera_type(static_cast<CameraType>(data.GetProjection()));
|
}
|
||||||
|
else {
|
||||||
|
cam->set_camera_type(CAMERA_PERSPECTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
const float metersPerUnit = static_cast<HdCyclesSession *>(renderParam)->GetStageMetersPerUnit();
|
const float metersPerUnit = static_cast<HdCyclesSession *>(renderParam)->GetStageMetersPerUnit();
|
||||||
|
|
||||||
|
@@ -266,7 +266,7 @@ void HdCyclesMaterial::UpdateParameters(NodeDesc &nodeDesc,
|
|||||||
const std::map<TfToken, VtValue> ¶meters,
|
const std::map<TfToken, VtValue> ¶meters,
|
||||||
const SdfPath &nodePath)
|
const SdfPath &nodePath)
|
||||||
{
|
{
|
||||||
for (const std::pair<TfToken, VtValue> ¶m : parameters) {
|
for (const auto ¶m : parameters) {
|
||||||
VtValue value = param.second;
|
VtValue value = param.second;
|
||||||
|
|
||||||
// See if the parameter name is in USDPreviewSurface terms, and needs to be converted
|
// See if the parameter name is in USDPreviewSurface terms, and needs to be converted
|
||||||
@@ -313,7 +313,7 @@ void HdCyclesMaterial::UpdateParameters(const HdMaterialNetwork &network)
|
|||||||
|
|
||||||
void HdCyclesMaterial::UpdateParameters(const HdMaterialNetwork2 &network)
|
void HdCyclesMaterial::UpdateParameters(const HdMaterialNetwork2 &network)
|
||||||
{
|
{
|
||||||
for (const std::pair<SdfPath, HdMaterialNode2> &nodeEntry : network.nodes) {
|
for (const auto &nodeEntry : network.nodes) {
|
||||||
const SdfPath &nodePath = nodeEntry.first;
|
const SdfPath &nodePath = nodeEntry.first;
|
||||||
|
|
||||||
const auto nodeIt = _nodes.find(nodePath);
|
const auto nodeIt = _nodes.find(nodePath);
|
||||||
@@ -331,8 +331,7 @@ void HdCyclesMaterial::UpdateConnections(NodeDesc &nodeDesc,
|
|||||||
const SdfPath &nodePath,
|
const SdfPath &nodePath,
|
||||||
ShaderGraph *shaderGraph)
|
ShaderGraph *shaderGraph)
|
||||||
{
|
{
|
||||||
for (const std::pair<TfToken, std::vector<HdMaterialConnection2>> &connection :
|
for (const auto &connection : matNode.inputConnections) {
|
||||||
matNode.inputConnections) {
|
|
||||||
const TfToken &dstSocketName = connection.first;
|
const TfToken &dstSocketName = connection.first;
|
||||||
|
|
||||||
const UsdToCyclesMapping *inputMapping = nodeDesc.mapping;
|
const UsdToCyclesMapping *inputMapping = nodeDesc.mapping;
|
||||||
@@ -418,7 +417,7 @@ void HdCyclesMaterial::PopulateShaderGraph(const HdMaterialNetwork2 &networkMap)
|
|||||||
auto graph = new ShaderGraph();
|
auto graph = new ShaderGraph();
|
||||||
|
|
||||||
// Iterate all the nodes first and build a complete but unconnected graph with parameters set
|
// Iterate all the nodes first and build a complete but unconnected graph with parameters set
|
||||||
for (const std::pair<SdfPath, HdMaterialNode2> &nodeEntry : networkMap.nodes) {
|
for (const auto &nodeEntry : networkMap.nodes) {
|
||||||
NodeDesc nodeDesc = {};
|
NodeDesc nodeDesc = {};
|
||||||
const SdfPath &nodePath = nodeEntry.first;
|
const SdfPath &nodePath = nodeEntry.first;
|
||||||
|
|
||||||
@@ -465,7 +464,7 @@ void HdCyclesMaterial::PopulateShaderGraph(const HdMaterialNetwork2 &networkMap)
|
|||||||
|
|
||||||
// Now that all nodes have been constructed, iterate the network again and build up any
|
// Now that all nodes have been constructed, iterate the network again and build up any
|
||||||
// connections between nodes
|
// connections between nodes
|
||||||
for (const std::pair<SdfPath, HdMaterialNode2> &nodeEntry : networkMap.nodes) {
|
for (const auto &nodeEntry : networkMap.nodes) {
|
||||||
const SdfPath &nodePath = nodeEntry.first;
|
const SdfPath &nodePath = nodeEntry.first;
|
||||||
|
|
||||||
const auto nodeIt = _nodes.find(nodePath);
|
const auto nodeIt = _nodes.find(nodePath);
|
||||||
@@ -478,7 +477,7 @@ void HdCyclesMaterial::PopulateShaderGraph(const HdMaterialNetwork2 &networkMap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finally connect the terminals to the graph output (Surface, Volume, Displacement)
|
// Finally connect the terminals to the graph output (Surface, Volume, Displacement)
|
||||||
for (const std::pair<TfToken, HdMaterialConnection2> &terminalEntry : networkMap.terminals) {
|
for (const auto &terminalEntry : networkMap.terminals) {
|
||||||
const TfToken &terminalName = terminalEntry.first;
|
const TfToken &terminalName = terminalEntry.first;
|
||||||
const HdMaterialConnection2 &connection = terminalEntry.second;
|
const HdMaterialConnection2 &connection = terminalEntry.second;
|
||||||
|
|
||||||
|
@@ -647,8 +647,6 @@ void PathTrace::update_display(const RenderWork &render_work)
|
|||||||
|
|
||||||
void PathTrace::rebalance(const RenderWork &render_work)
|
void PathTrace::rebalance(const RenderWork &render_work)
|
||||||
{
|
{
|
||||||
static const int kLogLevel = 3;
|
|
||||||
|
|
||||||
if (!render_work.rebalance) {
|
if (!render_work.rebalance) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -656,33 +654,33 @@ void PathTrace::rebalance(const RenderWork &render_work)
|
|||||||
const int num_works = path_trace_works_.size();
|
const int num_works = path_trace_works_.size();
|
||||||
|
|
||||||
if (num_works == 1) {
|
if (num_works == 1) {
|
||||||
VLOG(kLogLevel) << "Ignoring rebalance work due to single device render.";
|
VLOG(3) << "Ignoring rebalance work due to single device render.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const double start_time = time_dt();
|
const double start_time = time_dt();
|
||||||
|
|
||||||
if (VLOG_IS_ON(kLogLevel)) {
|
if (VLOG_IS_ON(3)) {
|
||||||
VLOG(kLogLevel) << "Perform rebalance work.";
|
VLOG(3) << "Perform rebalance work.";
|
||||||
VLOG(kLogLevel) << "Per-device path tracing time (seconds):";
|
VLOG(3) << "Per-device path tracing time (seconds):";
|
||||||
for (int i = 0; i < num_works; ++i) {
|
for (int i = 0; i < num_works; ++i) {
|
||||||
VLOG(kLogLevel) << path_trace_works_[i]->get_device()->info.description << ": "
|
VLOG(3) << path_trace_works_[i]->get_device()->info.description << ": "
|
||||||
<< work_balance_infos_[i].time_spent;
|
<< work_balance_infos_[i].time_spent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool did_rebalance = work_balance_do_rebalance(work_balance_infos_);
|
const bool did_rebalance = work_balance_do_rebalance(work_balance_infos_);
|
||||||
|
|
||||||
if (VLOG_IS_ON(kLogLevel)) {
|
if (VLOG_IS_ON(3)) {
|
||||||
VLOG(kLogLevel) << "Calculated per-device weights for works:";
|
VLOG(3) << "Calculated per-device weights for works:";
|
||||||
for (int i = 0; i < num_works; ++i) {
|
for (int i = 0; i < num_works; ++i) {
|
||||||
VLOG(kLogLevel) << path_trace_works_[i]->get_device()->info.description << ": "
|
VLOG(3) << path_trace_works_[i]->get_device()->info.description << ": "
|
||||||
<< work_balance_infos_[i].weight;
|
<< work_balance_infos_[i].weight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!did_rebalance) {
|
if (!did_rebalance) {
|
||||||
VLOG(kLogLevel) << "Balance in path trace works did not change.";
|
VLOG(3) << "Balance in path trace works did not change.";
|
||||||
render_scheduler_.report_rebalance_time(render_work, time_dt() - start_time, false);
|
render_scheduler_.report_rebalance_time(render_work, time_dt() - start_time, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -733,6 +733,14 @@ if(CXX_HAS_AVX2)
|
|||||||
set_source_files_properties(device/cpu/kernel_avx2.cpp PROPERTIES COMPILE_FLAGS "${CYCLES_AVX2_KERNEL_FLAGS}")
|
set_source_files_properties(device/cpu/kernel_avx2.cpp PROPERTIES COMPILE_FLAGS "${CYCLES_AVX2_KERNEL_FLAGS}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Warnings to avoid using doubles in the kernel.
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_cxxflag_float_conversion "-Werror=float-conversion")
|
||||||
|
ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS _has_cxxflag_double_promotion "-Werror=double-promotion")
|
||||||
|
unset(_has_cxxflag_float_conversion)
|
||||||
|
unset(_has_cxxflag_double_promotion)
|
||||||
|
endif()
|
||||||
|
|
||||||
cycles_add_library(cycles_kernel "${LIB}"
|
cycles_add_library(cycles_kernel "${LIB}"
|
||||||
${SRC_KERNEL_DEVICE_CPU}
|
${SRC_KERNEL_DEVICE_CPU}
|
||||||
${SRC_KERNEL_DEVICE_CUDA}
|
${SRC_KERNEL_DEVICE_CUDA}
|
||||||
|
@@ -167,7 +167,7 @@ void BufferParams::reset_pass_offset()
|
|||||||
|
|
||||||
int BufferParams::get_pass_offset(PassType pass_type, PassMode mode) const
|
int BufferParams::get_pass_offset(PassType pass_type, PassMode mode) const
|
||||||
{
|
{
|
||||||
if (pass_type == PASS_NONE || pass_type == PASS_UNUSED) {
|
if (pass_type == PASS_NONE) {
|
||||||
return PASS_UNUSED;
|
return PASS_UNUSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user