Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor 12 10 #85

Merged
merged 1 commit into from
Oct 12, 2024
Merged
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
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
Loading