spirv: Add fixed pipeline point size
This commit is contained in:
		@@ -495,7 +495,7 @@ void EmitContext::DefineOutputs(const Info& info) {
 | 
			
		||||
    if (info.stores_position || stage == Stage::VertexB) {
 | 
			
		||||
        output_position = DefineOutput(*this, F32[4], spv::BuiltIn::Position);
 | 
			
		||||
    }
 | 
			
		||||
    if (info.stores_point_size) {
 | 
			
		||||
    if (info.stores_point_size || profile.fixed_state_point_size) {
 | 
			
		||||
        if (stage == Stage::Fragment) {
 | 
			
		||||
            throw NotImplementedException("Storing PointSize in Fragment stage");
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,10 @@ void EmitPrologue(EmitContext& ctx) {
 | 
			
		||||
                ctx.OpStore(generic_id, default_vector);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (ctx.profile.fixed_state_point_size) {
 | 
			
		||||
            const float point_size{*ctx.profile.fixed_state_point_size};
 | 
			
		||||
            ctx.OpStore(ctx.output_point_size, ctx.Constant(ctx.F32[1], point_size));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,6 +5,7 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <array>
 | 
			
		||||
#include <optional>
 | 
			
		||||
 | 
			
		||||
#include "common/common_types.h"
 | 
			
		||||
 | 
			
		||||
@@ -41,6 +42,8 @@ struct Profile {
 | 
			
		||||
 | 
			
		||||
    std::array<AttributeType, 32> generic_input_types{};
 | 
			
		||||
    bool convert_depth_mode{};
 | 
			
		||||
 | 
			
		||||
    std::optional<float> fixed_state_point_size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Shader
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user