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