From b288c4004e59b641df9d18e93c4ef426e645e0da Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 4 Apr 2023 20:00:56 +0200 Subject: [PATCH] Cleanup: fix various Cycles compilar warnings Mainly for the build configuration of the Hydra render delegate and standalone repo. --- intern/cycles/app/CMakeLists.txt | 6 ++++ intern/cycles/hydra/CMakeLists.txt | 6 ++++ intern/cycles/hydra/display_driver.cpp | 6 ++++ intern/cycles/hydra/node_util.cpp | 10 +++++++ intern/cycles/kernel/svm/tex_coord.h | 6 ++-- intern/cycles/scene/alembic.cpp | 17 ++++++----- intern/cycles/scene/hair.cpp | 2 +- intern/cycles/scene/image.cpp | 39 ++++++++++++++------------ intern/cycles/scene/image.h | 14 ++++----- intern/cycles/scene/light.cpp | 4 +-- intern/cycles/scene/mesh_displace.cpp | 2 +- intern/cycles/util/half.h | 2 +- 12 files changed, 74 insertions(+), 40 deletions(-) diff --git a/intern/cycles/app/CMakeLists.txt b/intern/cycles/app/CMakeLists.txt index 60f17589fac..89181b0eb7e 100644 --- a/intern/cycles/app/CMakeLists.txt +++ b/intern/cycles/app/CMakeLists.txt @@ -51,6 +51,12 @@ if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI) endif() if(WITH_USD) + # Silence warning from USD headers using deprecated TBB header. + add_definitions( + -D__TBB_show_deprecation_message_atomic_H + -D__TBB_show_deprecation_message_task_H + ) + list(APPEND INC_SYS ${USD_INCLUDE_DIRS} ) diff --git a/intern/cycles/hydra/CMakeLists.txt b/intern/cycles/hydra/CMakeLists.txt index 0dde44cf8a2..c608de1a108 100644 --- a/intern/cycles/hydra/CMakeLists.txt +++ b/intern/cycles/hydra/CMakeLists.txt @@ -80,6 +80,12 @@ if(EXISTS ${USD_INCLUDE_DIR}/pxr/imaging/hgiGL) list(APPEND SRC_HD_CYCLES_HEADERS display_driver.h) endif() +# Silence warning from USD headers using deprecated TBB header. +add_definitions( + -D__TBB_show_deprecation_message_atomic_H + -D__TBB_show_deprecation_message_task_H +) + include_directories(${INC}) include_directories(SYSTEM ${INC_SYS}) diff --git a/intern/cycles/hydra/display_driver.cpp b/intern/cycles/hydra/display_driver.cpp index df624637d8c..484d6ce06ba 100644 --- a/intern/cycles/hydra/display_driver.cpp +++ b/intern/cycles/hydra/display_driver.cpp @@ -4,6 +4,12 @@ #ifdef _WIN32 // Include first to avoid "NOGDI" definition set in Cycles headers +# ifndef NOMINMAX +# define NOMINMAX +# endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif # include #endif diff --git a/intern/cycles/hydra/node_util.cpp b/intern/cycles/hydra/node_util.cpp index 2fc16bba731..18eae5a2f8a 100644 --- a/intern/cycles/hydra/node_util.cpp +++ b/intern/cycles/hydra/node_util.cpp @@ -370,6 +370,16 @@ VtValue convertFromCyclesArray(const array &value) return VtValue(convertedValue); } +template<> VtValue convertFromCyclesArray(const array &value) +{ + VtVec2fArray convertedValue; + convertedValue.reserve(value.size()); + for (const auto &element : value) { + convertedValue.push_back(GfVec2f(element.x, element.y)); + } + return VtValue(convertedValue); +} + template<> VtValue convertFromCyclesArray(const array &value) { VtVec3fArray convertedValue; diff --git a/intern/cycles/kernel/svm/tex_coord.h b/intern/cycles/kernel/svm/tex_coord.h index b294616603d..826b8625fdb 100644 --- a/intern/cycles/kernel/svm/tex_coord.h +++ b/intern/cycles/kernel/svm/tex_coord.h @@ -18,7 +18,7 @@ ccl_device_noinline int svm_node_tex_coord(KernelGlobals kg, uint4 node, int offset) { - float3 data; + float3 data = zero_float3(); uint type = node.y; uint out_offset = node.z; @@ -100,7 +100,7 @@ ccl_device_noinline int svm_node_tex_coord_bump_dx(KernelGlobals kg, int offset) { #ifdef __RAY_DIFFERENTIALS__ - float3 data; + float3 data = zero_float3(); uint type = node.y; uint out_offset = node.z; @@ -185,7 +185,7 @@ ccl_device_noinline int svm_node_tex_coord_bump_dy(KernelGlobals kg, int offset) { #ifdef __RAY_DIFFERENTIALS__ - float3 data; + float3 data = zero_float3(); uint type = node.y; uint out_offset = node.z; diff --git a/intern/cycles/scene/alembic.cpp b/intern/cycles/scene/alembic.cpp index 672216341ba..3b88cd58f30 100644 --- a/intern/cycles/scene/alembic.cpp +++ b/intern/cycles/scene/alembic.cpp @@ -247,13 +247,16 @@ size_t CachedData::memory_used() const static M44d convert_yup_zup(const M44d &mtx, float scale_mult) { V3d scale, shear, rotation, translation; - extractSHRT(mtx, - scale, - shear, - rotation, - translation, - true, - IMATH_INTERNAL_NAMESPACE::Euler::XZY); + + if (!extractSHRT(mtx, + scale, + shear, + rotation, + translation, + true, + IMATH_INTERNAL_NAMESPACE::Euler::XZY)) { + return mtx; + } M44d rot_mat, scale_mat, trans_mat; rot_mat.setEulerAngles(V3d(rotation.x, -rotation.z, rotation.y)); diff --git a/intern/cycles/scene/hair.cpp b/intern/cycles/scene/hair.cpp index 47737baeff7..2dfa89344e3 100644 --- a/intern/cycles/scene/hair.cpp +++ b/intern/cycles/scene/hair.cpp @@ -531,7 +531,7 @@ PrimitiveType Hair::primitive_type() const /* Fill in coordinates for curve transparency shader evaluation on device. */ static int fill_shader_input(const Hair *hair, - const int object_index, + const size_t object_index, device_vector &d_input) { int d_input_size = 0; diff --git a/intern/cycles/scene/image.cpp b/intern/cycles/scene/image.cpp index 441ccafd83a..3fbfcdd2c24 100644 --- a/intern/cycles/scene/image.cpp +++ b/intern/cycles/scene/image.cpp @@ -86,7 +86,7 @@ ImageHandle::ImageHandle(const ImageHandle &other) : tile_slots(other.tile_slots), manager(other.manager) { /* Increase image user count. */ - foreach (const int slot, tile_slots) { + foreach (const size_t slot, tile_slots) { manager->add_image_user(slot); } } @@ -97,7 +97,7 @@ ImageHandle &ImageHandle::operator=(const ImageHandle &other) manager = other.manager; tile_slots = other.tile_slots; - foreach (const int slot, tile_slots) { + foreach (const size_t slot, tile_slots) { manager->add_image_user(slot); } @@ -111,7 +111,7 @@ ImageHandle::~ImageHandle() void ImageHandle::clear() { - foreach (const int slot, tile_slots) { + foreach (const size_t slot, tile_slots) { manager->remove_image_user(slot); } @@ -165,7 +165,7 @@ vector ImageHandle::get_svm_slots() const for (size_t i = 0; i < num_nodes; i++) { int4 node; - int slot = tile_slots[2 * i]; + size_t slot = tile_slots[2 * i]; node.x = manager->images[slot]->loader->get_tile_number(); node.y = slot; @@ -387,7 +387,7 @@ void ImageManager::load_image_metadata(Image *img) ImageHandle ImageManager::add_image(const string &filename, const ImageParams ¶ms) { - const int slot = add_image_slot(new OIIOImageLoader(filename), params, false); + const size_t slot = add_image_slot(new OIIOImageLoader(filename), params, false); ImageHandle handle; handle.tile_slots.push_back(slot); @@ -408,13 +408,13 @@ ImageHandle ImageManager::add_image(const string &filename, /* Since we don't have information about the exact tile format used in this code location, * just attempt all replacement patterns that Blender supports. */ if (tile != 0) { - string_replace(tile_filename, "", string_printf("%04d", tile)); + string_replace(tile_filename, "", string_printf("%04d", (int)tile)); int u = ((tile - 1001) % 10); int v = ((tile - 1001) / 10); string_replace(tile_filename, "", string_printf("u%d_v%d", u + 1, v + 1)); } - const int slot = add_image_slot(new OIIOImageLoader(tile_filename), params, false); + const size_t slot = add_image_slot(new OIIOImageLoader(tile_filename), params, false); handle.tile_slots.push_back(slot); } @@ -425,7 +425,7 @@ ImageHandle ImageManager::add_image(ImageLoader *loader, const ImageParams ¶ms, const bool builtin) { - const int slot = add_image_slot(loader, params, builtin); + const size_t slot = add_image_slot(loader, params, builtin); ImageHandle handle; handle.tile_slots.push_back(slot); @@ -438,7 +438,7 @@ ImageHandle ImageManager::add_image(const vector &loaders, { ImageHandle handle; for (ImageLoader *loader : loaders) { - const int slot = add_image_slot(loader, params, true); + const size_t slot = add_image_slot(loader, params, true); handle.tile_slots.push_back(slot); } @@ -446,9 +446,9 @@ ImageHandle ImageManager::add_image(const vector &loaders, return handle; } -int ImageManager::add_image_slot(ImageLoader *loader, - const ImageParams ¶ms, - const bool builtin) +size_t ImageManager::add_image_slot(ImageLoader *loader, + const ImageParams ¶ms, + const bool builtin) { Image *img; size_t slot; @@ -492,7 +492,7 @@ int ImageManager::add_image_slot(ImageLoader *loader, return slot; } -void ImageManager::add_image_user(int slot) +void ImageManager::add_image_user(size_t slot) { thread_scoped_lock device_lock(images_mutex); Image *image = images[slot]; @@ -501,7 +501,7 @@ void ImageManager::add_image_user(int slot) image->users++; } -void ImageManager::remove_image_user(int slot) +void ImageManager::remove_image_user(size_t slot) { thread_scoped_lock device_lock(images_mutex); Image *image = images[slot]; @@ -682,7 +682,7 @@ bool ImageManager::file_load_image(Image *img, int texture_limit) return true; } -void ImageManager::device_load_image(Device *device, Scene *scene, int slot, Progress *progress) +void ImageManager::device_load_image(Device *device, Scene *scene, size_t slot, Progress *progress) { if (progress->get_cancel()) { return; @@ -698,7 +698,7 @@ void ImageManager::device_load_image(Device *device, Scene *scene, int slot, Pro ImageDataType type = img->metadata.type; /* Name for debugging. */ - img->mem_name = string_printf("tex_image_%s_%03d", name_from_type(type), slot); + img->mem_name = string_printf("tex_image_%s_%03d", name_from_type(type), (int)slot); /* Free previous texture in slot. */ if (img->mem) { @@ -819,7 +819,7 @@ void ImageManager::device_load_image(Device *device, Scene *scene, int slot, Pro img->need_load = false; } -void ImageManager::device_free_image(Device *, int slot) +void ImageManager::device_free_image(Device *, size_t slot) { Image *img = images[slot]; if (img == NULL) { @@ -874,7 +874,10 @@ void ImageManager::device_update(Device *device, Scene *scene, Progress &progres need_update_ = false; } -void ImageManager::device_update_slot(Device *device, Scene *scene, int slot, Progress *progress) +void ImageManager::device_update_slot(Device *device, + Scene *scene, + size_t slot, + Progress *progress) { Image *img = images[slot]; assert(img != NULL); diff --git a/intern/cycles/scene/image.h b/intern/cycles/scene/image.h index 36bfe17a69d..e574c5acbf5 100644 --- a/intern/cycles/scene/image.h +++ b/intern/cycles/scene/image.h @@ -156,7 +156,7 @@ class ImageHandle { ImageManager *get_manager() const; protected: - vector tile_slots; + vector tile_slots; ImageManager *manager; friend class ImageManager; @@ -179,7 +179,7 @@ class ImageManager { ImageHandle add_image(const vector &loaders, const ImageParams ¶ms); void device_update(Device *device, Scene *scene, Progress &progress); - void device_update_slot(Device *device, Scene *scene, int slot, Progress *progress); + void device_update_slot(Device *device, Scene *scene, size_t slot, Progress *progress); void device_free(Device *device); void device_load_builtin(Device *device, Scene *scene, Progress &progress); @@ -223,17 +223,17 @@ class ImageManager { vector images; void *osl_texture_system; - int add_image_slot(ImageLoader *loader, const ImageParams ¶ms, const bool builtin); - void add_image_user(int slot); - void remove_image_user(int slot); + size_t add_image_slot(ImageLoader *loader, const ImageParams ¶ms, const bool builtin); + void add_image_user(size_t slot); + void remove_image_user(size_t slot); void load_image_metadata(Image *img); template bool file_load_image(Image *img, int texture_limit); - void device_load_image(Device *device, Scene *scene, int slot, Progress *progress); - void device_free_image(Device *device, int slot); + void device_load_image(Device *device, Scene *scene, size_t slot, Progress *progress); + void device_free_image(Device *device, size_t slot); friend class ImageHandle; }; diff --git a/intern/cycles/scene/light.cpp b/intern/cycles/scene/light.cpp index 974b2144a76..862c204ae35 100644 --- a/intern/cycles/scene/light.cpp +++ b/intern/cycles/scene/light.cpp @@ -264,9 +264,9 @@ void LightManager::device_update_distribution(Device *, /* Count emissive triangles. */ Mesh *mesh = static_cast(object->get_geometry()); - size_t mesh_num_triangles = mesh->num_triangles(); + int mesh_num_triangles = static_cast(mesh->num_triangles()); - for (size_t i = 0; i < mesh_num_triangles; i++) { + for (int i = 0; i < mesh_num_triangles; i++) { int shader_index = mesh->get_shader()[i]; Shader *shader = (shader_index < mesh->get_used_shaders().size()) ? static_cast(mesh->get_used_shaders()[shader_index]) : diff --git a/intern/cycles/scene/mesh_displace.cpp b/intern/cycles/scene/mesh_displace.cpp index cdd5a793530..a9f97f31df5 100644 --- a/intern/cycles/scene/mesh_displace.cpp +++ b/intern/cycles/scene/mesh_displace.cpp @@ -35,7 +35,7 @@ static float3 compute_face_normal(const Mesh::Triangle &t, float3 *verts) /* Fill in coordinates for mesh displacement shader evaluation on device. */ static int fill_shader_input(const Scene *scene, const Mesh *mesh, - const int object_index, + const size_t object_index, device_vector &d_input) { int d_input_size = 0; diff --git a/intern/cycles/util/half.h b/intern/cycles/util/half.h index 48c15872e31..9725ce509f6 100644 --- a/intern/cycles/util/half.h +++ b/intern/cycles/util/half.h @@ -40,7 +40,7 @@ ccl_device_inline float half_to_float(half h_in) * unsigned shorts. */ class half { public: - half() : v(0) {} + half() = default; half(const unsigned short &i) : v(i) {} operator unsigned short() {