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) { |     if (info.uses_sparse_residency) { | ||||||
|         header += "OPTION EXT_sparse_texture2;"; |         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) { |         if (profile.support_viewport_index_layer_non_geometry) { | ||||||
|             header += "OPTION NV_viewport_array2;"; |             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"); |                         "Viewport stored outside of geometry shader not supported by device"); | ||||||
|         } |         } | ||||||
|         break; |         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: |     case IR::Attribute::PointSize: | ||||||
|         ctx.Add("MOV.F result.pointsize.x,{};", value); |         ctx.Add("MOV.F result.pointsize.x,{};", value); | ||||||
|         break; |         break; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user