mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	glasm: Implement SetAttribute ViewportMask
This commit is contained in:
		@@ -286,7 +286,8 @@ void SetupOptions(const IR::Program& program, const Profile& profile,
 | 
			
		||||
    if (info.uses_sparse_residency) {
 | 
			
		||||
        header += "OPTION EXT_sparse_texture2;";
 | 
			
		||||
    }
 | 
			
		||||
    if ((info.stores_viewport_index || info.stores_layer) && stage != Stage::Geometry) {
 | 
			
		||||
    if (((info.stores_viewport_index || info.stores_layer) && stage != Stage::Geometry) ||
 | 
			
		||||
        info.stores_viewport_mask) {
 | 
			
		||||
        if (profile.support_viewport_index_layer_non_geometry) {
 | 
			
		||||
            header += "OPTION NV_viewport_array2;";
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -157,6 +157,14 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, ScalarF32 value,
 | 
			
		||||
                        "Viewport stored outside of geometry shader not supported by device");
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    case IR::Attribute::ViewportMask:
 | 
			
		||||
        // NV_viewport_array2 is required to access result.viewportmask, regardless of shader stage.
 | 
			
		||||
        if (ctx.profile.support_viewport_index_layer_non_geometry) {
 | 
			
		||||
            ctx.Add("MOV.F result.viewportmask[0].x,{};", value);
 | 
			
		||||
        } else {
 | 
			
		||||
            LOG_WARNING(Shader_GLASM, "Device does not support storing to ViewportMask");
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    case IR::Attribute::PointSize:
 | 
			
		||||
        ctx.Add("MOV.F result.pointsize.x,{};", value);
 | 
			
		||||
        break;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user