Don't use variable descriptor count
This commit is contained in:
@@ -50,7 +50,6 @@ skybox: Skybox,
|
||||
player: Player,
|
||||
font: Fonts.Id,
|
||||
|
||||
const max_textures = 1024;
|
||||
const max_point_lights = 1024;
|
||||
const max_directional_lights = 4;
|
||||
const chunk_descriptor_pool = 1024;
|
||||
@@ -138,9 +137,8 @@ pub fn init() !Game {
|
||||
.{
|
||||
.binding = 5,
|
||||
.descriptor_type = .sampled_image,
|
||||
.descriptor_count = max_textures,
|
||||
.descriptor_count = Textures.max_textures,
|
||||
.stage_flags = .{ .vertex_bit = true, .fragment_bit = true },
|
||||
.flags = .{ .variable_descriptor_count_bit = true }, // TODO Get rid of this AND somehow integrate with Textures module?
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -418,7 +416,7 @@ pub fn init() !Game {
|
||||
},
|
||||
.{
|
||||
.type = .sampled_image,
|
||||
.descriptor_count = max_textures,
|
||||
.descriptor_count = Textures.max_textures,
|
||||
},
|
||||
.{
|
||||
.type = .uniform_buffer,
|
||||
@@ -436,7 +434,6 @@ pub fn init() !Game {
|
||||
const global_descriptor_set = try engine.allocateDescriptorSet(.{
|
||||
.descriptor_pool = descriptor_pool,
|
||||
.set_layout = global_descriptor_set_layout,
|
||||
.variable_descriptor_count = @intCast(textures.array.items.len),
|
||||
});
|
||||
engine.setObjectName(global_descriptor_set, "DS Global", .{});
|
||||
|
||||
|
||||
@@ -275,7 +275,6 @@ pub fn init() !*Engine {
|
||||
.shader_float_16 = .true,
|
||||
.descriptor_indexing = .true,
|
||||
.descriptor_binding_partially_bound = .true,
|
||||
.descriptor_binding_variable_descriptor_count = .true,
|
||||
.runtime_descriptor_array = .true,
|
||||
.scalar_block_layout = .true,
|
||||
.imageless_framebuffer = .true,
|
||||
@@ -745,13 +744,11 @@ pub const DescriptorPoolCreateInfo = struct {
|
||||
pub const DescriptorSetAllocateInfo = struct {
|
||||
descriptor_pool: vk.DescriptorPool,
|
||||
set_layout: vk.DescriptorSetLayout,
|
||||
variable_descriptor_count: ?u32 = null,
|
||||
};
|
||||
|
||||
pub const DescriptorSetsAllocateInfo = struct {
|
||||
descriptor_pool: vk.DescriptorPool,
|
||||
set_layouts: []const vk.DescriptorSetLayout,
|
||||
variable_descriptor_counts: []const u32 = &.{},
|
||||
};
|
||||
|
||||
pub const DescriptorSetLayoutBinding = struct {
|
||||
@@ -969,28 +966,13 @@ pub fn allocateDescriptorSet(self: *Engine, allocate_info: DescriptorSetAllocate
|
||||
try self.allocateDescriptorSets(.{
|
||||
.descriptor_pool = allocate_info.descriptor_pool,
|
||||
.set_layouts = &.{allocate_info.set_layout},
|
||||
.variable_descriptor_counts = if (allocate_info.variable_descriptor_count) |x| &.{x} else &.{},
|
||||
}, &descriptor_sets);
|
||||
return descriptor_sets[0];
|
||||
}
|
||||
|
||||
pub fn allocateDescriptorSets(self: *Engine, allocate_info: DescriptorSetsAllocateInfo, descriptor_sets: []vk.DescriptorSet) !void {
|
||||
std.debug.assert(descriptor_sets.len >= allocate_info.set_layouts.len);
|
||||
|
||||
const has_variable_descriptor_counts = allocate_info.variable_descriptor_counts.len > 0;
|
||||
|
||||
var p_next: ?*const anyopaque = null;
|
||||
|
||||
if (has_variable_descriptor_counts) {
|
||||
p_next = &vk.DescriptorSetVariableDescriptorCountAllocateInfo{
|
||||
.p_next = p_next,
|
||||
.descriptor_set_count = @intCast(allocate_info.variable_descriptor_counts.len),
|
||||
.p_descriptor_counts = allocate_info.variable_descriptor_counts.ptr,
|
||||
};
|
||||
}
|
||||
|
||||
try self.device.allocateDescriptorSets(&.{
|
||||
.p_next = p_next,
|
||||
.descriptor_pool = allocate_info.descriptor_pool,
|
||||
.descriptor_set_count = @intCast(allocate_info.set_layouts.len),
|
||||
.p_set_layouts = allocate_info.set_layouts.ptr,
|
||||
|
||||
Reference in New Issue
Block a user