GLuint PACKSPU_APIENTRY packspu_CreateProgram(void) { GET_THREAD(thread); int writeback = 1; GLuint return_val = (GLuint) 0; if (!CRPACKSPU_IS_WDDM_CRHGSMI() && !(pack_spu.thread[pack_spu.idxThreadInUse].netServer.conn->actual_network)) { crError("packspu_CreateProgram doesn't work when there's no actual network involved!\nTry using the simplequery SPU in your chain!"); } if (pack_spu.swap) { crPackCreateProgramSWAP(&return_val, &writeback); } else { crPackCreateProgram(&return_val, &writeback); } packspuFlush((void *) thread); CRPACKSPU_WRITEBACK_WAIT(thread, writeback); if (pack_spu.swap) { return_val = (GLuint) SWAP32(return_val); } crStateCreateProgram(return_val); return return_val; }
GLuint SERVER_DISPATCH_APIENTRY crServerDispatchCreateProgram(void) { GLuint retval; retval = cr_server.head_spu->dispatch_table.CreateProgram(); crStateCreateProgram(retval); crServerReturnValue(&retval, sizeof(retval)); return retval; /* ignored */ }