示例#1
0
/**
 * Validate inputs against outputs in a program pipeline.
 */
extern "C" bool
_mesa_validate_pipeline_io(struct gl_pipeline_object *pipeline)
{
   struct gl_shader_program **shProg =
      (struct gl_shader_program **) pipeline->CurrentProgram;

   /* Find first active stage in pipeline. */
   unsigned idx, prev = 0;
   for (idx = 0; idx < ARRAY_SIZE(pipeline->CurrentProgram); idx++) {
      if (shProg[idx]) {
         prev = idx;
         break;
      }
   }

   for (idx = prev + 1; idx < ARRAY_SIZE(pipeline->CurrentProgram); idx++) {
      if (shProg[idx]) {
         /* Pipeline might include both non-compute and a compute program, do
          * not attempt to validate varyings between non-compute and compute
          * stage.
          */
         if (shProg[idx]->_LinkedShaders[idx]->Stage == MESA_SHADER_COMPUTE)
            break;

         if (!validate_io(shProg[prev], shProg[idx]))
            return false;

         prev = idx;
      }
   }
   return true;
}
示例#2
0
std::size_t ConsoleWriteChannel::write(const byte_buffer& buffer)
{
	DWORD result = 0;
	BOOL succeeded = peer_(hCons_,
	                vpos(buffer),
	                buffer.length() / charSize_,
	                &result,
	                NULL);
	validate_io(succeeded,"Write console error.");
	result = result * charSize_;
	return result;
}