mirror of
				https://gitlab.winehq.org/wine/vkd3d.git
				synced 2025-09-12 18:50:22 -07:00 
			
		
		
		
	vkd3d-shader/hlsl: Forbid referring to typedefs with "struct".
This commit is contained in:
		
				
					committed by
					
						 Henri Verbeet
						Henri Verbeet
					
				
			
			
				
	
			
			
			
						parent
						
							8ca50a2f7e
						
					
				
				
					commit
					c1adf54a44
				
			
				
				Notes:
				
					Henri Verbeet
				
				2025-05-14 15:29:22 +02:00 
			
			Approved-by: Francisco Casas (@fcasas) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1500
| @@ -234,6 +234,8 @@ struct hlsl_type | ||||
|     /* Offset where the type's description starts in the output bytecode, in bytes. */ | ||||
|     size_t bytecode_offset; | ||||
|  | ||||
|     bool is_typedef; | ||||
|  | ||||
|     uint32_t is_minimum_precision : 1; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1183,6 +1183,7 @@ static bool add_typedef(struct hlsl_ctx *ctx, struct hlsl_type *const orig_type, | ||||
|  | ||||
|         vkd3d_free((void *)type->name); | ||||
|         type->name = v->name; | ||||
|         type->is_typedef = true; | ||||
|  | ||||
|         ret = hlsl_scope_add_type(ctx->cur_scope, type); | ||||
|         if (!ret) | ||||
| @@ -8219,7 +8220,7 @@ type_no_void: | ||||
|     | KW_STRUCT TYPE_IDENTIFIER | ||||
|         { | ||||
|             $$ = hlsl_get_type(ctx->cur_scope, $2, true, true); | ||||
|             if ($$->class != HLSL_CLASS_STRUCT) | ||||
|             if ($$->class != HLSL_CLASS_STRUCT || $$->is_typedef) | ||||
|                 hlsl_error(ctx, &@1, VKD3D_SHADER_ERROR_HLSL_REDEFINED, "\"%s\" is not a structure.", $2); | ||||
|             vkd3d_free($2); | ||||
|         } | ||||
|   | ||||
| @@ -33,7 +33,7 @@ | ||||
|         return 0; | ||||
|     } | ||||
|  | ||||
| [pixel shader fail todo(sm<6)] | ||||
| [pixel shader fail] | ||||
|     struct apple | ||||
|     { | ||||
|         float4 f; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user