Skip to content

Commit

Permalink
Some refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
sergcpp committed Oct 12, 2024
1 parent d5327b4 commit 97762d5
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 27 deletions.
2 changes: 1 addition & 1 deletion Ray.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#endif // ENABLE_VK_IMPL

#if !(defined(ENABLE_DX_IMPL) && defined(_WIN32)) && !defined(ENABLE_VK_IMPL)
#pragma message("Compiling without GPU support")
#pragma message("Ray: Compiling without GPU support")
#endif

#include "internal/simd/detect.h"
Expand Down
4 changes: 2 additions & 2 deletions internal/Vk/ContextVK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,9 +261,9 @@ bool Ray::Vk::Context::Init(ILog *log, const char *preferred_device, const int v

for (int i = 0; i < MaxFramesInFlight; ++i) {
const int PoolStep = 8;
const int MaxImgSamplerCount = 16;
const int MaxImgCount = 16;
const int MaxSamplerCount = 16;
const int MaxImgSamplerCount = 16;
const int MaxStoreImgCount = 6;
const int MaxUBufCount = 8;
const int MaxSBufCount = 20;
Expand All @@ -272,7 +272,7 @@ bool Ray::Vk::Context::Init(ILog *log, const char *preferred_device, const int v
const int InitialSetsCount = 16;

default_descr_alloc_[i] = std::make_unique<DescrMultiPoolAlloc>(
this, PoolStep, MaxImgCount, MaxSamplerCount, MaxImgSamplerCount, MaxStoreImgCount, MaxUBufCount,
this, PoolStep, MaxImgSamplerCount, MaxImgCount, MaxSamplerCount, MaxStoreImgCount, MaxUBufCount,
MaxSBufCount, MaxTBufCount, MaxAccCount, InitialSetsCount);
}

Expand Down
34 changes: 17 additions & 17 deletions internal/Vk/DescriptorPoolVK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
namespace Ray {
namespace Vk {
const VkDescriptorType g_descr_types_vk[] = {
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // CombinedImageSampler
VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, // SampledImage
VK_DESCRIPTOR_TYPE_SAMPLER, // Sampler
VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // CombinedImageSampler
VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, // StorageImage
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // UniformBuffer
VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // StorageBuffer
Expand Down Expand Up @@ -40,9 +40,9 @@ Ray::Vk::DescrPool &Ray::Vk::DescrPool::operator=(DescrPool &&rhs) noexcept {
bool Ray::Vk::DescrPool::Init(const DescrSizes &sizes, const uint32_t sets_count) {
Destroy();

descr_counts_[int(eDescrType::CombinedImageSampler)] = sizes.img_sampler_count;
descr_counts_[int(eDescrType::SampledImage)] = sizes.img_count;
descr_counts_[int(eDescrType::Sampler)] = sizes.sampler_count;
descr_counts_[int(eDescrType::CombinedImageSampler)] = sizes.img_sampler_count;
descr_counts_[int(eDescrType::StorageImage)] = sizes.store_img_count;
descr_counts_[int(eDescrType::UniformBuffer)] = sizes.ubuf_count;
descr_counts_[int(eDescrType::StorageBuffer)] = sizes.sbuf_count;
Expand Down Expand Up @@ -138,29 +138,29 @@ bool Ray::Vk::DescrPoolAlloc::Reset() {

/////////////////////////////////////////////////////////////////////////////////////////////////

Ray::Vk::DescrMultiPoolAlloc::DescrMultiPoolAlloc(Context *ctx, const uint32_t pool_step, const uint32_t max_img_count,
const uint32_t max_sampler_count,
const uint32_t max_img_sampler_count,
const uint32_t max_store_img_count, const uint32_t max_ubuf_count,
const uint32_t max_sbuf_count, const uint32_t max_tbuf_count,
const uint32_t max_acc_count, const uint32_t initial_sets_count)
Ray::Vk::DescrMultiPoolAlloc::DescrMultiPoolAlloc(Context *ctx, const uint32_t pool_step,
const uint32_t max_img_sampler_count, const uint32_t max_img_count,
const uint32_t max_sampler_count, const uint32_t max_store_img_count,
const uint32_t max_ubuf_count, const uint32_t max_sbuf_count,
const uint32_t max_tbuf_count, const uint32_t max_acc_count,
const uint32_t initial_sets_count)
: pool_step_(pool_step) {
img_sampler_based_count_ = (max_img_sampler_count + pool_step - 1) / pool_step;
img_based_count_ = (max_img_count + pool_step - 1) / pool_step;
sampler_based_count_ = (max_sampler_count + pool_step - 1) / pool_step;
img_sampler_based_count_ = (max_img_sampler_count + pool_step - 1) / pool_step;
store_img_based_count_ = (max_store_img_count + pool_step - 1) / pool_step;
ubuf_based_count_ = (max_ubuf_count + pool_step - 1) / pool_step;
sbuf_based_count_ = (max_sbuf_count + pool_step - 1) / pool_step;
tbuf_based_count_ = (max_tbuf_count + pool_step - 1) / pool_step;
acc_based_count_ = (max_acc_count + pool_step - 1) / pool_step;
const uint32_t required_pools_count = img_based_count_ * sampler_based_count_ * img_sampler_based_count_ *
const uint32_t required_pools_count = img_sampler_based_count_ * img_based_count_ * sampler_based_count_ *
store_img_based_count_ * ubuf_based_count_ * sbuf_based_count_ *
tbuf_based_count_ * acc_based_count_;

// store rounded values
max_sampled_img_count_ = pool_step * img_based_count_;
max_sampler_count_ = pool_step * sampler_based_count_;
max_img_sampler_count_ = pool_step * img_sampler_based_count_;
max_img_count_ = pool_step * img_based_count_;
max_sampler_count_ = pool_step * sampler_based_count_;
max_store_img_count_ = pool_step * store_img_based_count_;
max_ubuf_count_ = pool_step * ubuf_based_count_;
max_sbuf_count_ = pool_step * sbuf_based_count_;
Expand Down Expand Up @@ -195,13 +195,13 @@ Ray::Vk::DescrMultiPoolAlloc::DescrMultiPoolAlloc(Context *ctx, const uint32_t p

VkDescriptorSet Ray::Vk::DescrMultiPoolAlloc::Alloc(const DescrSizes &sizes, const VkDescriptorSetLayout layout) {
assert(sizes.acc_count <= max_acc_count_);
assert(sizes.img_count <= max_sampled_img_count_);
assert(sizes.sampler_count <= max_sampler_count_);
assert(sizes.img_sampler_count <= max_img_sampler_count_);
assert(sizes.sbuf_count <= max_sbuf_count_);
assert(sizes.store_img_count <= max_store_img_count_);
assert(sizes.tbuf_count <= max_tbuf_count_);
assert(sizes.sbuf_count <= max_sbuf_count_);
assert(sizes.ubuf_count <= max_ubuf_count_);
assert(sizes.store_img_count <= max_store_img_count_);
assert(sizes.sampler_count <= max_sampler_count_);
assert(sizes.img_count <= max_img_count_);
assert(sizes.img_sampler_count <= max_img_sampler_count_);

const uint32_t img_sampler_based_index =
sizes.img_sampler_count ? ((sizes.img_sampler_count + pool_step_ - 1) / pool_step_ - 1) : 0;
Expand Down
12 changes: 6 additions & 6 deletions internal/Vk/DescriptorPoolVK.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ namespace Vk {
class Context;

enum class eDescrType : uint8_t {
CombinedImageSampler,
SampledImage,
Sampler,
CombinedImageSampler,
StorageImage,
UniformBuffer,
StorageBuffer,
Expand All @@ -20,9 +20,9 @@ enum class eDescrType : uint8_t {
};

struct DescrSizes {
uint32_t img_sampler_count = 0;
uint32_t img_count = 0;
uint32_t sampler_count = 0;
uint32_t img_sampler_count = 0;
uint32_t store_img_count = 0;
uint32_t ubuf_count = 0;
uint32_t sbuf_count = 0;
Expand Down Expand Up @@ -87,15 +87,15 @@ class DescrPoolAlloc {
//
class DescrMultiPoolAlloc {
uint32_t pool_step_ = 0;
uint32_t img_based_count_ = 0, sampler_based_count_ = 0, img_sampler_based_count_ = 0, store_img_based_count_ = 0,
uint32_t img_sampler_based_count_ = 0, img_based_count_ = 0, sampler_based_count_ = 0, store_img_based_count_ = 0,
ubuf_based_count_ = 0, sbuf_based_count_ = 0, tbuf_based_count_ = 0, acc_based_count_;
uint32_t max_sampled_img_count_ = 0, max_sampler_count_ = 0, max_img_sampler_count_ = 0, max_store_img_count_ = 0,
uint32_t max_img_sampler_count_ = 0, max_img_count_ = 0, max_sampler_count_ = 0, max_store_img_count_ = 0,
max_ubuf_count_ = 0, max_sbuf_count_ = 0, max_tbuf_count_ = 0, max_acc_count_ = 0;
SmallVector<DescrPoolAlloc, 16> pools_;

public:
DescrMultiPoolAlloc(Context *ctx, uint32_t pool_step, uint32_t max_img_count, uint32_t max_sampler_count,
uint32_t max_img_sampler_count, uint32_t max_store_img_count, uint32_t max_ubuf_count,
DescrMultiPoolAlloc(Context *ctx, uint32_t pool_step, uint32_t max_img_sampler_count, uint32_t max_img_count,
uint32_t max_sampler_count, uint32_t max_store_img_count, uint32_t max_ubuf_count,
uint32_t max_sbuf_count, uint32_t max_tbuf_count, uint32_t max_acc_count,
uint32_t initial_sets_count);

Expand Down
1 change: 0 additions & 1 deletion internal/Vk/DrawCallVK.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
VkDescriptorSet Ray::Vk::PrepareDescriptorSet(Context *ctx, VkDescriptorSetLayout layout, Span<const Binding> bindings,
DescrMultiPoolAlloc *descr_alloc, ILog *log) {
VkDescriptorImageInfo sampler_infos[16] = {};
// VkDescriptorImageInfo sampled_img_infos[16] = {};
VkDescriptorImageInfo img_sampler_infos[16] = {};
VkDescriptorImageInfo img_storage_infos[16] = {};
VkDescriptorBufferInfo ubuf_infos[16] = {};
Expand Down

0 comments on commit 97762d5

Please sign in to comment.